worktree-isolation.mdx 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. ---
  2. title: "Worktree 隔离"
  3. description: "给子 Agent 一个独立的工作空间,互不污染"
  4. ---
  5. {/* 本章目标:解释 git worktree 在多 Agent 协作中的作用 */}
  6. ## 问题:多个 Agent 改同一份代码
  7. 当多个 Agent 同时修改项目文件时,冲突在所难免:
  8. - Agent A 修改了 `config.ts`,Agent B 也在改同一个文件
  9. - Agent A 的测试需要某个状态,Agent B 的修改破坏了它
  10. - 半完成的修改混在一起,无法分辨哪些是哪个 Agent 做的
  11. ## 解决方案:Git Worktree
  12. Git 原生支持 **worktree**(工作树)——在同一个仓库中创建多个独立的工作目录,每个目录在自己的分支上独立工作。
  13. Claude Code 利用这个特性为子 Agent 提供隔离的工作空间:
  14. | | 共享工作目录 | Worktree 隔离 |
  15. |---|---|---|
  16. | 文件冲突 | 多个 Agent 可能互相覆盖 | 每个 Agent 在自己的目录中工作 |
  17. | 分支 | 都在同一个分支上 | 每个 Agent 有自己的分支 |
  18. | 测试 | 互相干扰 | 完全独立 |
  19. | 合并 | 需要手动处理冲突 | 通过 git merge 有序合并 |
  20. ## 工作流程
  21. <Steps>
  22. <Step title="创建 Worktree">
  23. AI 启动带隔离模式的子 Agent,系统自动在 `.claude/worktrees/` 下创建新的工作目录
  24. </Step>
  25. <Step title="独立工作">
  26. 子 Agent 在自己的 worktree 中自由修改文件、执行命令
  27. </Step>
  28. <Step title="完成任务">
  29. 子 Agent 完成后,变更留在 worktree 的分支上
  30. </Step>
  31. <Step title="合并或丢弃">
  32. 主 Agent(或用户)决定:合并这些变更到主分支,还是丢弃
  33. </Step>
  34. <Step title="清理">
  35. 不再需要的 worktree 会被自动清理
  36. </Step>
  37. </Steps>
  38. ## 安全网
  39. Worktree 还充当了一个安全网:
  40. - 子 Agent 的实验性修改不会影响主分支
  41. - 如果方案不可行,整个 worktree 可以直接丢弃
  42. - 多个方案可以在不同 worktree 中并行尝试,最后选最好的