Worktree Isolation — 各干各的,互不干扰

各干各的目录, 互不干扰" — 任务管目标, worktree 管目录, 按 ID 绑定。

Github 原文:shareAI-lab/learn-claude-code

如果你用过 codex 和 cc 的工作树,我想你已经知道这篇文章我们要讲什么了。

问题

之前的 Agent 任务中,Alice 和 Bob 都在同一个目录下工作。Alice 的任务是”重构认证模块”,Bob 的任务是”重构 UI 登录页”。

但是万一他们同时在运行过程中都要改某一个文件,那不炸了吗?没错,这就是隔离工作空间,就是工作树!之前我们在当前版本新神 codex,你需要的都在这!也做过详细的介绍!

解决方案

Worktree Isolation — 各干各的,互不干扰

Git worktree 让你在同一仓库中创建多个独立的工作目录,每个有自己的分支。Alice 在 .worktrees/auth-refactor/ 下工作,Bob 在 .worktrees/ui-login/ 下工作——互不干扰。

能力作用
create_worktree为任务创建独立目录 + 独立分支
bind_task_to_worktree把任务和工作目录绑定(不改状态)
remove_worktree / keep_worktree完成后清理或保留
validate_worktree_name拒绝路径穿越和非法字符

工作原理

创建:任务和工作树绑定

一个任务绑定一个 worktree。绑定不改任务状态——任务仍是 pending,队友自动认领时才推进到 in_progress。这样 Lead 可以提前创建任务和 worktree,队友 idle 时自然认领带 worktree 的任务。在 CC 中,如果在工作树中创建 Subagent,subagent 的工作空间也是在 worktree。

工具路径切换

教学版给每个队友维护一个 wt_ctx 字典,记录当前 worktree 路径。队友认领带 worktree 的任务时,wt_ctx 自动设置为 worktree 路径;队友的 bashread_filewrite_file 在 worktree 目录下执行。这个也是老生常谈了,不再过多说明,几乎所有关于工作树介绍的都有讲。

收尾:保留还是拒绝

当这个任务完成后,有两个选择:

  • Keep = 留着分支,等人工 review 后合并到主分支。

  • Remove = 有改动时默认拒绝,需要 discard_changes=true 确认。

也就是说,工作树里面 Agent不会像之前一样,完成了提交一下 inbox 就跑去干别的去了,自动 complete task,而是完成由队友的 complete_task 显式触发。