名称: ctx-worktree 描述: “管理git工作树以实现并行代理开发。当需要在独立任务轨道上拆分工作时使用。” 允许工具: Bash(git:), Bash(ls:), Read
管理git工作树以在独立任务轨道上并行化代理工作。支持创建、列出和拆除工作树,并具有上下文感知的防护措施。
何时使用
- 用户希望跨多个代理并行处理积压任务
- 具有不重叠文件的多个独立任务轨道
- 用户说“创建工作树”、“让我们并行化”、“拆分工作”
- 3个以上可以并发工作的独立任务
何时不使用
- 单个任务或紧密耦合的任务
- 涉及重叠文件的任务(高合并冲突风险)
- 少于3个独立任务(开销超过收益)
- 已位于工作树内(仅从主检出点管理)
- 用户只想在同一树中并发使用Claude Code会话
操作
create <名称>
创建一个新的工作树作为同级目录,并带有work/分支。
流程:
-
检查数量 — 如果已存在4个工作树则拒绝:
git worktree list统计行数。如果>=5(1个主分支+4个工作树),停止并解释限制。
-
确定项目名称 从当前目录的基本名称:
basename "$(git rev-parse --show-toplevel)" -
创建工作树 作为同级目录:
git worktree add "../<项目>-<名称>" -b "work/<名称>" -
验证 工作树已创建:
ls "../<项目>-<名称>" -
提醒用户:
请勿在工作树中运行
ctx init。.context/目录已在git中跟踪并会存在。 在那里启动单独的Claude Code会话并正常工作。
list
显示所有活动工作树:
git worktree list
teardown <名称>
合并已完成的工作树并清理。
流程:
-
检查未提交的更改 在工作树中:
git -C "../<项目>-<名称>" status --porcelain如果输出非空,警告并停止。用户必须先提交或丢弃更改。
-
合并工作分支 到当前分支:
git merge "work/<名称>"如果存在冲突,停止并帮助用户解决。TASKS.md冲突很常见 — 参见以下指南。
-
移除工作树:
git worktree remove "../<项目>-<名称>" -
删除分支:
git branch -d "work/<名称>" -
验证 清理:
git worktree list git branch | grep "work/<名称>"
防护措施
- 最多4个工作树 — 超过4个并行轨道会使合并复杂性超过生产力收益
- 仅同级目录 — 工作树放在
../<项目>-<名称>中,绝不在项目树内部 work/分支前缀 — 所有工作树分支使用work/<名称>以便于识别和清理- 不在工作树中运行
ctx init—.context/在git中跟踪;运行init会覆盖共享的上下文文件 - 仅从主检出点管理 — 从主工作树创建和拆除工作树,而不是从工作树内部
- TASKS.md冲突解决 — 合并时,TASKS.md通常会冲突,因为多个代理将不同的任务标记为完成。解决方案:接受双方的所有
[x]完成。任何任务都不应从[x]变回[ ]。
任务分组指南
在创建工作树之前,分析积压任务以将任务分组到不重叠的轨道中:
- 阅读TASKS.md 并识别所有待处理任务
- 估计影响范围 — 每个任务涉及哪些文件/目录?
- 按不重叠的目录分组 — 涉及相同包或文件的任务必须放在同一轨道中
- 在创建工作树之前向用户展示分组:
建议的工作树分组:
work/docs — 配方更新、博客文章、入门指南
(涉及:docs/)
work/crypto — P3.1-P3.3加密便签基础设施
(涉及:internal/crypto/, internal/config/)
work/pad-cli — P3.4-P3.9 pad CLI命令
(涉及:internal/cli/pad/)
让用户在继续之前批准或调整。
质量检查清单
在任何操作之前,验证:
- [ ] 工作树数量已检查(最多4个)
- [ ] 分支使用
work/前缀 - [ ] 工作树是同级目录(
../) - [ ] 已提醒用户不要在工作树中运行
ctx init - [ ] 在拆除前检查未提交的更改
- [ ] 在工作树移除前完成合并
- [ ] 工作树移除后删除分支