问题:三个 Agent 同时改一个仓库,灾难现场
你已经试过 Claude Code、Codex、Aider,觉得单个 Agent 干活太慢。于是你想:能不能同时开 3 个 Agent,一个写功能、一个修 bug、一个写测试?
想法很美好,现实很骨感:
- 三个 Agent 都在同一个目录里改文件,互相覆盖
- 你忘了哪个终端对应哪个 Agent
- CI 挂了,你要手动看是哪个 Agent 的代码出了问题
- Review 评论回来了,你要自己判断该丢给谁
- Merge 冲突了,你得手动协调
并行 Agent 最大的问题不是"能不能跑",而是"跑完之后你怎么收拾残局"。
Agent Orchestrator 是什么
Agent Orchestrator(简称 AO)是一个开源的 Agent 指挥层。它不写代码——它管着那些写代码的 Agent。
一句话:给你的 Agent 大军配一个项目经理。
它解决了什么问题
| 场景 | 手动管理 | 用 AO |
|---|---|---|
| 并行工作区隔离 | 手动创建目录/分支,经常搞混 | 每个 Agent 自动分配 git worktree |
| Agent 会话状态 | 开一堆终端窗口,自己记 | Dashboard 实时显示每个会话状态 |
| CI 失败反馈 | 自己看 CI 日志,猜是哪个 Agent 的 | 自动路由回对应的 Agent 会话 |
| Review 评论处理 | 手动复制评论到正确的终端 | Reviewer Agent 直接把意见送到 Worker |
| Merge 冲突 | 自己解决,或者放弃并行 | 冲突自动通知对应 Agent 处理 |
怎么做到的
AO 的架构分三层:
1. 隔离层:git worktree
每个 Agent 会话启动时,AO 自动创建一个 git worktree。Worktree 是 Git 的原生功能——同一个仓库可以有多个工作目录,每个目录有自己的分支,互不干扰。
这就解决了"三个 Agent 同时改同一个文件"的问题。它们改的是同一个仓库的不同分支。
2. 调度层:Session Daemon
AO 跑一个本地守护进程,监控所有会话的状态。它知道:
- 哪个 Agent 在干活、哪个在等、哪个卡住了
- 哪个会话的 PR 提交了、CI 是成功还是失败
- Review 评论回来了没有、有没有 Request Changes
- 有没有 Merge 冲突
3. 反馈层:自动路由
这是 AO 最值钱的部分。当 CI 失败时,AO 把失败日志送回对应的 Agent 会话,让 Agent 自己修。当 Reviewer 提了修改意见,AO 把意见路由回 Worker Agent。当有 Merge 冲突,AO 通知对应的 Agent 去解决。
你不需要手动当传话筒。
支持 23 种 Agent
AO 不挑 Agent。只要它能跑在终端里,AO 就能管它:
| 类型 | 支持的 Agent |
|---|---|
| 主流 Agent | Claude Code, Codex, Cursor, Copilot, Aider |
| 国产 Agent | Qwen, Kimi, Kiro |
| 开源 Agent | Goose, OpenCode, Cline, Continue |
| 其他 | Grok, Devin, Amp, Crush, Droid, Vibe, Pi, Autohand... |
Reviewer Agent 目前支持 Claude Code、Codex、OpenCode 三种。
怎么用
安装
# 最快的方式
npm install -g @aoagents/ao
# 在你的项目目录下启动
cd your-project
ao start
桌面应用
AO 有 Electron 桌面应用,支持 Windows、macOS、Linux。桌面应用是主要控制面:
- 左侧:项目列表
- 中间:活跃会话
- 右侧:选中会话的终端、PR 状态、Review 结果、浏览器预览
典型工作流
# 1. 启动 AO
ao start
# 2. 在 Dashboard 里创建会话,选择 Agent 类型
# 比如:Session A 用 Claude Code 写功能
# Session B 用 Codex 修 bug
# Session C 用 Aider 写测试
# 3. AO 自动创建 worktree,启动 Agent
# 4. 你在 Dashboard 上看着就行
# CI 挂了?AO 自动把日志送回去
# Review 有意见?AO 自动路由
# 冲突了?AO 通知对应 Agent
# 5. 每个 Agent 完成后,你 review 一下,merge
跟同类工具比
| 工具 | Star | 定位 | 核心差异 |
|---|---|---|---|
| Agent Orchestrator | 8K | Agent 指挥部 | 自动反馈路由,支持 23 种 Agent |
| Claude Squad | 8K | tmux + worktree | 纯终端,轻量但没有反馈循环 |
| Orca | 10K | Agent IDE | 有移动端,侧重 UI 体验 |
| OpenHands | 50K+ | 单 Agent 平台 | 不做并行编排 |
AO 的独特之处:它不管 Agent 怎么写代码,它管的是"写完之后的事"——CI、Review、Merge 这些反馈循环。其他工具要么只管并行启动(Claude Squad),要么只管 UI(Orca),没人认真做反馈路由。
坑和注意事项
- 依赖 Node.js:AO 是 Electron 应用,npm 安装。如果你不用 Node 生态,这多了一个依赖
- Telemetry 默认开启:Electron 端会向 PostHog 发匿名使用数据,包括本地路径(已脱敏)。可以在构建时设空 key 关闭
- Reviewer Agent 种类有限:目前只有 Claude Code、Codex、OpenCode 能当 Reviewer
- 桌面应用体积大:Electron 通病,下载包不小
- 反馈路由需要 CI 集成:如果你的项目没有 CI,那反馈循环的核心价值就打折扣了
- 不是所有人都需要并行:如果你的项目小、任务简单,单 Agent 就够了,AO 反而增加复杂度
什么时候该用 AO
如果你:
- 同时用多个 Agent 处理同一个项目的不同任务
- 项目有 CI/CD 流水线,想自动把 CI 失败送回 Agent
- 团队用 PR + Review 工作流,想让 Agent 也参与
- 受够了手动在终端之间切换、传话
那 AO 值得一试。它不是让你的 Agent 变得更聪明,而是让多个 Agent 协作时不乱套。
快速上手
# 安装
npm install -g @aoagents/ao
# 进入项目目录
cd your-project
# 启动 AO
ao start
# 打开 Dashboard(默认 http://localhost:3000)
# 创建会话 → 选择 Agent → 开始并行工作
项目:AgentWrapper/agent-orchestrator
Star:8,093 ⭐
语言:Go + TypeScript
协议:Apache-2.0
文档:aoagents.dev/docs