feat: solve-issue workflow should use git worktree for isolation #464

Closed
opened 2026-05-24 10:19:48 +00:00 by xiaoju · 0 comments
Owner

问题

当前 solve-issue workflow 的 agent 直接在 main 分支的 working directory 里改代码。导致:

  1. 自毁 — 改坏了 CLI 函数名,自己的 uwf 命令跑不了了(#463 实际发生)
  2. 污染 main — 未完成的改动留在 working tree
  3. 不能并行 — 多个 thread 共用同一个 working directory

方案

使用 git worktree 隔离开发环境:

~/repos/workflow/                    ← main,永远干净,CLI 从这里跑
~/repos/workflow-worktrees/
  fix/463-cli-refactor/              ← agent 在 worktree 里开发
  fix/464-xxx/                       ← 另一个 thread 并行开发

改动点

在 solve-issue workflow 中,developer role 执行前:

  1. 创建分支:git branch fix/<issue>-<slug>
  2. 创建 worktree:git worktree add ~/repos/workflow-worktrees/fix/<issue>-<slug> fix/<issue>-<slug>
  3. 在 worktree 中安装依赖:bun install
  4. agent 的 cwd 切到 worktree 目录

committer role 完成后:
5. 清理 worktree:git worktree remove ~/repos/workflow-worktrees/fix/<issue>-<slug>

需要决定

  • worktree 创建由谁做?选项:
    • (a) planner 在 plan 里指定分支名,developer 自己创建 worktree
    • (b) workflow 框架层支持 workdir 配置,自动管理 worktree 生命周期
    • (c) 加一个 setup role 专门做环境准备

推荐 (a),最简单,在 CLAUDE.md 或 developer prompt 里加指令即可。

好处

  • main 永远干净,CLI 始终可用
  • 多 thread 可并行开发
  • 崩了直接删 worktree 重来
  • 天然防止 agent 自毁

涉及文件

  • workflows/solve-issue.yml — developer/reviewer/tester/committer 的 prompt 需要加 worktree 指令
  • CLAUDE.md — 加全局 worktree 开发规范
## 问题 当前 solve-issue workflow 的 agent 直接在 main 分支的 working directory 里改代码。导致: 1. **自毁** — 改坏了 CLI 函数名,自己的 `uwf` 命令跑不了了(#463 实际发生) 2. **污染 main** — 未完成的改动留在 working tree 3. **不能并行** — 多个 thread 共用同一个 working directory ## 方案 使用 `git worktree` 隔离开发环境: ``` ~/repos/workflow/ ← main,永远干净,CLI 从这里跑 ~/repos/workflow-worktrees/ fix/463-cli-refactor/ ← agent 在 worktree 里开发 fix/464-xxx/ ← 另一个 thread 并行开发 ``` ### 改动点 在 solve-issue workflow 中,developer role 执行前: 1. 创建分支:`git branch fix/<issue>-<slug>` 2. 创建 worktree:`git worktree add ~/repos/workflow-worktrees/fix/<issue>-<slug> fix/<issue>-<slug>` 3. 在 worktree 中安装依赖:`bun install` 4. agent 的 cwd 切到 worktree 目录 committer role 完成后: 5. 清理 worktree:`git worktree remove ~/repos/workflow-worktrees/fix/<issue>-<slug>` ### 需要决定 - worktree 创建由谁做?选项: - (a) planner 在 plan 里指定分支名,developer 自己创建 worktree - (b) workflow 框架层支持 `workdir` 配置,自动管理 worktree 生命周期 - (c) 加一个 `setup` role 专门做环境准备 推荐 (a),最简单,在 CLAUDE.md 或 developer prompt 里加指令即可。 ## 好处 - main 永远干净,CLI 始终可用 - 多 thread 可并行开发 - 崩了直接删 worktree 重来 - 天然防止 agent 自毁 ## 涉及文件 - `workflows/solve-issue.yml` — developer/reviewer/tester/committer 的 prompt 需要加 worktree 指令 - 或 `CLAUDE.md` — 加全局 worktree 开发规范
Sign in to join this conversation.
No Label
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: uncaged/workflow#464