两个 agent 同时改一个仓库,最常见的死法是:A 在改路由,B 顺手重构了同一个文件,两边都以为自己是对的。
git worktree 是干净的解法:同一个仓库、不同工作目录、不同分支,互不干扰。
git worktree add ../proj-agent-a -b feat/a
git worktree add ../proj-agent-b -b feat/b然后在两个目录里各起一个 agent 会话,各自的 CLAUDE.md 里写清楚:只允许改本目录,禁止 git checkout 其他分支。
合并阶段按顺序来,别同时 rebase:先合体量小的,跑一遍测试,再合大的。冲突基本只出现在两端都改过的公共文件上,而这个信息在合并前就能用 git diff --name-only 提前看到。
踩坑两点:
- node_modules 每个 worktree 都要装一遍,磁盘会翻倍。pnpm 用 store 硬链接能省不少,npm 没办法。
- 有些工具把绝对路径写进缓存(.tsbuildinfo 之类),跨 worktree 复用会出错,记得放进 .gitignore 各建各的。
这套跑了两周,最大的收益不是快,是心理负担小:不用再担心 agent 在你没看的时候把别的东西改了。
主楼worktree 这招我用来跑 n8n 的 workflow 版本对比,两个分支各跑一份,结果能直接 diff。
继续逛逛