← 返回 Director Mode Lite
/auto-loop 核心功能
Auto-Loop
由 Stop hook 輔助的 TDD 循環。定義驗收標準與迭代上限;檢查點仍在進行中時,系統會要求 Claude 繼續。
運作原理
1
定義驗收標準
以 - [ ] 核取方塊記錄工作狀態,並逐項實際驗證
2
Auto-Loop 迭代
每次迭代要求 Claude 對未完成 AC 套用 Red-Green-Refactor
3
Stop Hook 重新注入
狀態有效時,Stop hook 以 reason 阻止退出並要求下一輪
✓
記錄完成或達上限時退出
狀態標記完成、收到停止要求,或達到最大迭代數時退出
請驗證結果:驗收標準核取方塊與檢查點狀態由模型維護,不能當作獨立證明。 判定完成前,請檢查 diff,並實際執行專案的測試、lint 與 build。
TDD 循環
內附指示要求每次 Auto-Loop 迭代遵循這個 TDD 循環:
| 階段 | 動作 | 建議支援 |
|---|---|---|
| RED | 為下一個 AC 撰寫失敗測試 | /test-first 指引 |
| GREEN | 撰寫最小程式碼通過測試 | 專案測試指令 |
| REFACTOR | 改善程式碼品質 | 可選 code-reviewer agent |
| VALIDATE | 執行完整測試套件 + lint | test-runner + 專案指令 |
| COMMIT | 儲存進度 | 取得授權後用 /smart-commit |
| DECIDE | 檢查是否完成,繼續或退出 | 檢查點狀態 + 實際驗證 |
使用範例
基本使用
/auto-loop "建立計算機模組
驗收標準:
- [ ] add(a, b) 函式
- [ ] subtract(a, b) 函式
- [ ] multiply(a, b) 函式
- [ ] divide(a, b) 含除零檢查
- [ ] 所有函式的單元測試" 設定迭代上限
/auto-loop "實作使用者認證" --max-iterations 15 從檢查點恢復
# 中斷或重啟後
/auto-loop --resume 檢查點系統
Auto-Loop 將狀態保存在 .auto-loop/checkpoint.json:
{
"request": "建立計算機模組",
"current_iteration": 5,
"max_iterations": 20,
"status": "in_progress",
"acceptance_criteria": [
{ "id": 1, "description": "add(a, b) 函式", "done": true },
{ "id": 2, "description": "subtract(a, b) 函式", "done": true },
{ "id": 3, "description": "multiply(a, b) 函式", "done": false }
],
"files_changed": ["calculator.js", "calculator.test.js"]
} 檢查點存在且有效時可恢復中斷的執行。記錄的檔案與狀態只供審查參考,不代表變更或測試正確。
停止與控制
停止循環
# 在另一個終端機
touch .auto-loop/stop 當前迭代完成後優雅地停止循環。
恢復循環
# 從保留的檢查點恢復
/auto-loop --resume
Hook 會消耗停止信號;檢查點仍保留給 --resume 使用。
Stop Hook 如何運作
Auto-Loop 使用 Claude Code 的 Stop hook 機制。 安裝程式會把設定合併到專案的本機 settings。
# .claude/settings.local.json(由 install.sh 合併)
{
"hooks": {
"Stop": [{
"hooks": [{
"type": "command",
"command": "\"$CLAUDE_PROJECT_DIR\"/.claude/hooks/auto-loop-stop.sh"
}]
}]
}
}
Claude 嘗試停止時,hook 會檢查本機檢查點。循環有效且未達上限時,輸出
{"decision": "block", "reason": "..."} 要求下一輪。
已完成、已停止、達上限或沒有有效中的檢查點時,則成功退出且不輸出 decision payload。