如何并行运行 Claude Code、Codex 等多个 AI agent
用 git worktree 同时跑多个 AI 编码 agent 的工作流:每个任务一个分支、环境准备、及时发现哪个 agent 在等你,以及把成果落地。
一句话回答:给每个 agent 一个独立的 git worktree 和分支,从最新的 main 创建。在每个目录里安装依赖、复制被 ignore 的配置,然后在各自目录里启动 agent。每个分支通过 PR 审查和合并,合并后清理掉对应的 worktree。
为什么每个 agent 要有自己的目录
Claude Code、Codex、Gemini CLI、Aider、Cursor Agent 这类 AI 编码 agent 会直接修改工作区并执行 git 命令。两个放在同一个目录里,会互相覆盖文件,把不相关的改动混进同一个 diff,还会抢 index.lock。每个 agent 一个 git worktree,既各有独立的目录和分支,又共用同一个仓库。
第 1 步:每个任务建一个 worktree
git fetch origin
git worktree add -b feat/search ../app-search origin/main
git worktree add -b fix/login-loop ../app-login origin/main
git worktree add -b chore/vite-6 ../app-vite origin/main
按任务建分支,而不是按 agent。分支名写清楚任务,比 agent-1、agent-2 好审查,也好清理。
第 2 步:让每个 worktree 能跑起来
- 在每个目录里安装依赖(
npm install、bundle install等)。pnpm 这类有全局共享存储的包管理器会快很多。 - 复制项目需要的被 ignore 的文件,比如
.env。新 worktree 里只有被跟踪的文件。 - 给每个开发服务器分配不同端口,让各个 agent 能同时跑测试和预览。
第 3 步:启动 agent
每个 worktree 开一个终端标签页,在目录里启动 agent,比如 cd ../app-search && claude 或 cd ../app-login && codex。每个 agent 只看得到自己的分支。Claude Code 也可以用 claude --worktree <名字> 自动帮你建 worktree,见 Claude Code worktree 用法,以及 Codex 和 Cursor 的对比。原来的主目录保持在 main,不在里面跑 agent,这样你总有一个干净的地方来审查和测试。
第 4 步:及时发现哪个 agent 在等你
agent 一多,瓶颈就变成了你。agent 会停下来请求权限、等你回答,或者悄悄做完,很容易过十分钟才发现。这些做法有帮助:
- 定期扫一眼每个标签页,或打开终端的响铃、命令完成通知。
- 留意文件变化:一个 agent 好一阵没改任何文件,往往是在等你输入。
- 并行的 agent 数量,控制在你审得过来的范围内。
第 5 步:把成果落地
agent 做完后,在它的 worktree 里审查 diff,提交、push 并开 PR:git push -u origin feat/search,然后 gh pr create。特别留意 agent 改了没提交、或提交了没 push 的工作,以后清理 worktree 时丢的就是这些。
第 6 步:清理已经落地的
PR 合并后,删掉对应的 worktree 和分支。如果仓库用 squash 合并,git branch --merged 看不到这些分支,要改为查 PR。worktree 清理清单覆盖了所有情况。
给并行 agent 的总览面板
Orchard 就是为这种工作流做的 Mac 应用。它把所有项目的所有 worktree 放进一个窗口,并通过每个进程所在的目录识别 Claude Code、Codex、Aider、Gemini CLI、Cursor Agent、opencode、Amp 和 Goose。你能看到哪个 agent 还在干活、哪个好一阵没改文件可能在等你、哪些工作还没落地、哪些 worktree 已经进了 main 可以清理。后台检查全部只读,不会妨碍 agent 工作。
常见问题
可以同时跑多少个 AI 编码 agent?
上限通常是你的注意力,而不是电脑性能。很多开发者觉得同时跑 3 到 5 个比较合适。再多的话,审查和合并会成为瓶颈,没人照看的 worktree 也会堆积越来越多没落地的工作。
Claude Code 和 Codex 能同时改同一个仓库吗?
可以,只要它们各自在自己的 git worktree 和分支上运行。它们共享仓库的历史,但文件、暂存区和分支都是分开的,不会互相覆盖改动。
可以在主目录里跑 agent 吗?
最好不要。让主目录始终停在 main,你就有一个干净的地方来拉取、审查和测试,也能避免把 agent 的实验性改动直接提交到 main。