同一项目运行多个智能体:Git worktree 使用指南
Neaptide · 2026年9月20日 · 8 分钟阅读 · 更新于: 2026年10月3日
使用 Git worktree 为 AI 编程任务分离目录、分支与环境,并检查和合并修改。
本文目录

两个智能体同时改同一个工作目录,很快就会互相干扰:一个在修表单,另一个在重构组件,测试跑到的却是一堆还没做完的混合改动。Git worktree 把文件分开,每项任务都有自己的目录和分支。
Worktree 是同一 Git 仓库的额外工作副本。各副本共用一份历史记录,检出的分支和工作文件各归各的,所以几项改动可以同时进行。具体机制和命令见 Git 手册。
哪些任务适合并行
先从两项独立改动开始,例如一个智能体修复表单错误处理,另一个更新帮助文案。如果两者都要改数据结构或同一个公共组件,先确定共同接口,再按依赖顺序处理。
| 适合分开执行 | 应先明确顺序 |
|---|---|
| 表单修复与文档更新 | API 改动与依赖它的界面 |
| 独立模块的测试 | 同一组件的两次重构 |
| 排查错误与无关文案修改 | 数据迁移与适配新结构的代码 |
独立目录能避免未完成文件混在一起,却解决不了逻辑上的矛盾。两项改动在 Git 里合并得毫无冲突,合在一起照样可能把应用弄坏。
创建两个工作副本
示例假设仓库已经存在且至少有一个提交。请在主目录执行命令,确保分支名和相邻目录名尚未使用。
git status --short
git worktree add -b ai/form-fix ../project-form HEAD
git worktree add -b ai/docs-update ../project-docs HEAD
git worktree list两个副本都从当前 HEAD 提交开始,原目录中尚未提交的改动不会被带过去。如果两项任务都依赖这些改动,应先准备一致的起始版本;不要只为照做示例就提交他人尚未完成的工作。
在两个独立终端分别进入新目录并启动智能体。使用 Claude Code 时:
cd ../project-form
claude第二个终端打开 `../project-docs`。Claude Code 也能自己创建工作副本:`claude --worktree <名称>` 会把它放在仓库内的 `.claude/worktrees/` 下,细节见并行会话指南。手动方式的好处是,无论用哪个客户端,目录和分支都一目了然。
给每个智能体明确边界
说明预期结果和修改范围。例如给第一个智能体:
修复表单提交失败时的提示。在当前 worktree 中工作,找到表单及其测试,保留成功提交行为。不要修改 API 结构或文档。展示 diff 和检查结果,不要合并分支。
给第二个智能体安排文档任务,并明确要求不碰表单代码。这两份任务只是示例,路径、命令和验收条件请换成自己项目里的。
检查每个副本的运行环境。依赖多半要重新安装,Git 不跟踪的个人配置文件(例如 `.env`)得手动复制过去。两个开发服务器要用不同端口。如果它们共用一个测试数据库,就把数据隔开,或者不要同时运行会修改数据的场景。
如何验收结果
分别查看每项任务的 diff,先判断是否符合要求,再检查测试结果。随后在各自分支中提交审核通过的改动。
把分支逐个合并到选定的集成分支。第二次合并之后,把完整的用户流程再走一遍:两条分支各自通过测试,说明不了合在一起还能正常工作。
出现冲突时,先确定必须保留的行为。不要让智能体机械地接受某一方的全部改动,这可能丢掉另一项任务的一部分。
何时删除 worktree
先确认需要的改动已经保存并验收,目录中没有未保存文件,然后在主工作副本执行:
git worktree remove ../project-form
git worktree remove ../project-docs不加 `--force` 时,Git 会拒绝删除仍有未提交改动或未跟踪文件的 worktree。不要只为了让报错消失就加上这个选项。删除工作副本后分支还在,怎么处理它们另行决定。