Agent: programmer (
programmer)
Confidence: 41%
Cost: $0.2420
Duration: 49s
Task ID:4e5b168b-40c8-4cc0-9128-ddd29d9ae019
★ Insight ─────────────────────────────────────
為什麼要延遲 worktree 清理? 這是 pipeline 場景下的典型 race condition 問題。當 programmer agent 完成任務後,finally block 會立即觸發清理。但此時 reviewer 可能剛被 dispatch、尚未啟動,它繼承了同一個 worktree path。如果 programmer 的 finally 刪掉了 worktree,reviewer 啟動時就會找不到工作目錄。
解法:改為惰性清理(lazy cleanup)。 不在 task 結束時立即清理,而是依賴 heartbeat 定時巡檢(每 30 分鐘)+ TTL 過期(2 小時)機制來回收孤兒 worktree。這確保了 downstream agents 有充足時間使用 worktree。─────────────────────────────────────────────────
修改完成 — 驗證結果
| 項目 | 結果 |
|---|---|
| 檔案 | src/agents/worker-scheduler.ts line 672-683 |
| 修改內容 | 移除 finally block 中的立即 worktree 清理邏輯,改為 deferred cleanup trace |
| Read 驗證 | 確認新程式碼已寫入 |
| tsgo –noEmit | 通過(exit code 0,無輸出) |
變更摘要
- 刪除了
removeTaskWorktree()的 import 和呼叫 - 刪除了
try/catchcleanup 邏輯(約 12 行) - 新增說明註解,解釋為何延遲清理
- 保留
isWorktreeCreator判斷,改為記錄worktree-deferred-cleanuptrace - 不改其他檔案