Skip to content

Repository files navigation

EasyAgent Logo

EasyAgent

部署在自己服务器上的远程 AI Agent 工作台。

通过浏览器或个人微信,把研发、测试和运维任务交给服务器持续执行。

EasyAgent 能做什么

场景 可以交给 Agent 的任务
研发 理解代码库、实现需求、修改文件、代码审查、API 设计、查询依赖文档
测试 编写测试、执行回归、浏览器 E2E、复现问题、验证修复结果
运维 检查服务和日志、定位故障、整理 RCA、核对发布流程与风险
远程协作 从浏览器或微信提交任务、查看状态、停止任务并接收结果

它主要解决这些问题:

  • 任务不必绑在个人电脑上:Agent 在团队服务器运行,关闭浏览器也可以继续执行。
  • 多个任务可控并发:默认同时运行 4 个任务;Git 项目可用 worktree 隔离,共享目录自动排队,避免互相覆盖。
  • 长任务有记录、可恢复:会话、队列和运行状态写入 SQLite;服务重启后恢复排队任务,并明确标记被中断的任务。
  • 过程看得见:通过 SSE 实时显示模型、Tool、Skill、MCP、Token、缓存、耗时和错误,网络重连后可继续 Trace。
  • 团队共用一套能力:模型配置、服务器项目、Skills 和 MCP 统一管理,同时提供给 EasyAgent 与 Codex Runtime。

EasyAgent 对话工作区

快速体验

前往 Releases,按系统和架构下载:

系统 x64 / Intel ARM64 / Apple Silicon
Windows easyagent_*_windows_amd64.zip easyagent_*_windows_arm64.zip
macOS easyagent_*_darwin_amd64.tar.gz easyagent_*_darwin_arm64.tar.gz
Linux easyagent_*_linux_amd64.tar.gz easyagent_*_linux_arm64.tar.gz

解压后运行 easyagent.exe(Windows)或 ./easyagent(macOS/Linux)。发布包是包含 Web UI 的单个二进制,不需要安装 Go、Node.js 或 SQLite。

服务默认监听 0.0.0.0:8080。启动后访问 http://服务器IP:8080,使用默认账号 admin / admin 登录,并立即在 设置 → 账户安全 修改密码,然后到 模型配置 添加模型。

macOS 和 Windows 发布包暂未代码签名;如果首次运行被系统拦截,请在系统安全设置中确认。

Linux x64 下载并后台启动

进入准备存放 EasyAgent 的目录后执行:

(
set -euo pipefail
release_url="$(curl -fsSL -o /dev/null -w '%{url_effective}' \
  https://github.com/lakernote/easy-agent/releases/latest)"
tag="${release_url##*/}"
version="${tag#v}"
curl -fL "https://github.com/lakernote/easy-agent/releases/download/${tag}/easyagent_${version}_linux_amd64.tar.gz" \
  | tar -xz --strip-components=1
nohup ./easyagent >easyagent.log 2>&1 </dev/null &
printf '%s\n' "$!" >easyagent.pid
)
tail -f easyagent.log       # 查看日志
kill "$(cat easyagent.pid)" # 停止服务

发布包已带可执行权限。数据库、默认工作区和运行状态保存在 ~/.easyagent/。

发布流程会为每个归档生成 SHA-256 校验和和 GitHub 构建来源证明。下载后可校验文件完整性,并确认产物确实由本仓库的发布工作流构建:

sha256sum --check checksums.txt --ignore-missing
gh attestation verify easyagent_* -R lakernote/easy-agent

Docker

容器以固定的非 root 用户(UID/GID 10001)运行。/data 是唯一需要持久化的目录,包含 SQLite 数据库、默认工作区、Runtime 依赖以及 Codex 配置:

docker build -t easyagent:local .
docker volume create easyagent-data
docker run -d --name easyagent \
  -p 8080:8080 \
  -v easyagent-data:/data \
  --restart unless-stopped \
  easyagent:local

启动后访问 http://服务器IP:8080。使用 bind mount 时,宿主目录必须允许 UID/GID 10001 写入。升级镜像时保留同一个 volume 即可;不要只备份 easyagent.db,工作区、MCP Runtime 和 Codex 登录状态也位于 /data。

两种 Runtime

Runtime 适合场景 要求
EasyAgent 使用原生 Ollama、Anthropic,或 OpenAI Chat/Responses 服务和 EasyAgent 工具循环 模型必须支持协议原生 Function Calling;四种协议均使用流式 API
Codex 使用 Codex thread、原生工具、Skill 和沙箱处理代码任务 服务器安装 Codex CLI

请在运行 EasyAgent 的服务器终端中手动安装 Codex CLI:

curl -fsSL https://chatgpt.com/codex/install.sh | sh

安装命令会下载并执行 OpenAI 官方安装脚本,请在执行前核对官方安装说明。EasyAgent 只检测 Codex CLI,不会下载安装或执行该脚本。app-server 是 Codex CLI 自带的子命令,不需要单独安装。两个 Runtime 共用任务队列、项目目录、worktree、Skills 和 MCP;设置中心的 Runtime 权限支持只读、工作区写入、完全访问和自定义模式,默认仍为完全访问以兼容已有安装。

无论选择哪个 Runtime,都使用相同的项目和任务系统:

  • 项目可包含多个服务器源文件夹,第一个目录作为默认工作目录。
  • 支持排队、暂停、继续、停止和重启恢复;默认并发 4、单轮最长 12 小时,均可在设置中调整。
  • Git 项目可按会话创建 worktree;源仓库有未提交修改时不会自动隔离。Codex 会话还支持 thread 继续、读取和分支。

开发环境可以用同一套原生 Function Calling 门禁比较多个模型。命令会按通过率、平均 Token、总耗时和首个可见输出时间排序;API Key 只允许通过指定环境变量读取,不接受命令行明文:

go run ./cmd/easyagent-eval \
  -models qwen3:14b-16k,qwen2.5-coder:14b \
  -runs 3

这是一项模型/Provider 资格测试,不等同于完整 coding-agent 排行榜;真实 Agent 质量还应使用固定仓库任务、隔离工作区和可验证断言评测。

EasyAgent 运行时与模型设置

内置能力

内置 Skills 聚焦项目理解、问题分析、代码审查、API 设计、测试与 E2E、事故 RCA、发布工程、文档维护、Git worktree 和网页研究。GitHub、Context7、Playwright、OpenAI Docs 等 MCP 可在设置页启用,供两个 Runtime 共用。

默认工具面参考 PI 保持为 read、shell、edit、write 小核心;只读模式改用文件探索核心。Skill 入口直接可用,其余内置工具和大型工具组按需加载,减少中小模型的无关 Schema 与往返。网页研究会先发现候选,再读取原始来源后回答。

设计取舍和后续测试建设见 PI 对照复审:搜索边界与 Agent 测试版图。

web_research 是模型唯一可见的联网入口。模型根据语义填写数据类型、查询对象、时间范围和研究深度;复杂问题还可给出 2–4 条互补检索式。Runtime 负责限制查询预算,并执行结构化数据读取、多源搜索、安全抓取、去重和引用整理。Tavily、SearXNG、Brave Search、Firecrawl、Reader 与 GitHub Token 可在 设置 → 工具与 MCP → Web Research 配置并执行真实连接测试,保存后下一轮立即生效;也可以继续使用环境变量部署。

GitHub、GitLab 与 Git 凭据

  • 查询公开 GitHub 仓库指标不要求登录。若要提高 web_research 的 GitHub API 限额,可在 设置 → 工具与 MCP → Web Research 填写 GitHub Token,或为服务进程设置 GITHUB_TOKEN / GH_TOKEN。页面配置优先于环境变量,保存后下一轮立即生效。
  • 访问私有仓库、Issue、Pull Request 和 Actions,优先到 设置 → 工具与 MCP → GitHub 配置官方 GitHub MCP。Bearer Token 保存在 ~/.easyagent/easyagent.db,接口和页面只返回已配置状态,不回传明文;数据库本身不是独立的密钥保险库,应继续依赖目录权限、磁盘加密和低权限服务账号。
  • 本地 clone、diff、commit 等操作直接使用服务器的 git。HTTPS 凭据、SSH Key 和 gh/glab 登录态属于运行 EasyAgent 的系统账号,不属于模型配置;请以同一个服务账号执行 gh auth login 或 glab auth login。GitHub/GitLab CLI 未安装时,EasyAgent 不会自动安装。
  • HTTP/Streamable HTTP MCP 支持 OAuth:设置页会把浏览器授权回调落到 EasyAgent 服务,EasyAgent Runtime 将 access/refresh token 保存到 SQLite 独立的 ea_mcp_oauth_credentials 表;Codex Runtime 通过 app-server 原生 OAuth 登录,并由 Codex 自己保存凭证。远程 Linux 不需要公网 callback,只要浏览器能访问服务地址(例如 http://10.224.58.180:8080);生产环境应使用 HTTPS 内网域名,并在 OAuth provider 注册最终显示的完整 callback URL。

Shell、Codex 和 stdio MCP 继承服务账号的系统权限,服务进程环境变量也会传给子进程。不要使用个人全权限 PAT;生产环境应使用专用账号、最小权限和可轮换凭据。

EasyAgent Skills 能力库

微信远程

  • 支持多人扫码绑定,并为每个人选择新会话的默认项目。
  • 文字、图片、PDF、代码文件和带微信文字的语音进入与 Web 相同的任务队列;语音没有文字时提示补发说明,不下载音频,也不运行语音识别。
  • “新会话”“状态”“停止”“项目列表”等控制指令不调用模型;微信回传状态和结果,完整 Trace 保留在 Web。

部署前注意

  • 默认监听所有网卡,请立即修改默认密码;不要直接暴露到公网,建议使用防火墙、VPN 和 HTTPS。
  • 当前是单机团队共享模式:一个管理员账号、一个 SQLite 数据库,不提供 RBAC 或多租户隔离。
  • Shell、Codex 和 stdio MCP 使用 EasyAgent 服务进程的系统权限运行;建议使用专用的低权限账号。
  • 只有任务需要调用 Git、Python、Node.js 等命令时,服务器才需要安装对应工具。

License

MIT

About

面向研发、测试与运维团队的自托管 AI Agent 工作台:在服务器运行长任务,共享 Skills/MCP,以 Git worktree 隔离并发任务,并保留可审计 Trace。

Topics

Resources

Contributing

Security policy

Stars

2 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages