
2026/03/30
Multi-Agent Worktree 是 Git Worktree 么?
是的,就是把 git worktree 用在 Agent 协作上:同一个仓库,多份工作目录,尽量别让并行改动互相踩文件。
是的,本质上就是 git worktree。
在多 Agent 架构里,之所以要用它,是因为它非常适合解决一个核心问题:多个 Agent 并行修改同一个仓库时的文件冲突。
真正的问题是共享工作区
如果所有 Agent 都直接在同一个工作区里改代码,问题会很快出现:
项目目录: /project
└── src/server.py
Agent A 修 bug: 改第 41 行
Agent B 加功能: 改第 55 行
两个 Agent 同时操作同一个工作区副本
最终就会面临覆盖、脏状态、难以回滚等问题
Worktree 改变的是什么
git worktree 允许同一个仓库在不同目录下同时 checkout 多个分支。
主仓库: /project
git worktree add ../project-agent-a agent-a-branch
git worktree add ../project-agent-b agent-b-branch
结果:
/project/ -> 主控制器使用
/project-agent-a/ -> Agent A 独占
/project-agent-b/ -> Agent B 独占这些目录共享同一个 Git 数据库,但每个目录都有自己的:
- 工作区文件
- 分支
- 暂存区
也就是说,Agent A 和 Agent B 可以并行工作,但不会直接踩到彼此的工作区文件。

为什么不直接 clone 仓库?
如果你用 git clone,每复制一次仓库,就会复制一整份 .git 数据库。
而 git worktree add 只是给你额外开出一个工作目录,它仍然依附于同一个仓库。
git clone:
/project-copy-1/.git
/project-copy-2/.git
git worktree:
/project/.git -> 唯一一份 Git 数据库
/project-agent-a/ -> 额外工作目录
/project-agent-b/ -> 额外工作目录这也是它特别适合“一个仓库,多条并行工作流”的原因。

放到多 Agent 架构里,流程通常是这样
- Orchestrator 收到一个可以拆分的任务
- 为每个子任务创建独立 worktree 和分支
- 把不同 Agent 分派到不同目录
- 各自完成修改并提交
- 回到主仓库统一合并
- 任务结束后删除这些 worktree
git worktree add ../task-refactor -b refactor-user
git worktree add ../task-fix-pay -b fix-payment
Agent A -> ../task-refactor
Agent B -> ../task-fix-pay
完成后:
git merge refactor-user
git merge fix-payment
git worktree remove ../task-refactor
git worktree remove ../task-fix-pay
说到底,它就是把 git worktree 当成隔离层来用:一个仓库,几份互不干扰的工作目录,最后再统一合并。


