name: ai-auto-dev description: "AI全自動化程式設計,Claude Code作為專案經理指揮Builder自動完成程式設計任務(需求對齊→指令生成→自動執行→驗收→文件歸檔暫存)"
Claude Code 作為專案經理,Builder 作為執行者的全自動化程式設計流程。
v2.2 更新(2026-02-22):新增中斷恢復機制(FlowPilot 啟發)、依賴圖自動分析(替代手動 [P] 標記)
選擇一個 Builder(AI 程式設計執行工具),推薦以下任一:
| Builder | 安裝 | 執行命令 |
|---|---|---|
| Codex CLI | npm i -g @openai/codex |
codex exec --skip-git-repo-check "$(cat spec.md)" |
| Claude Code | 已內建 | 直接在對話中執行 |
| Aider | pip install aider-chat |
aider --message "$(cat spec.md)" |
關鍵要求:Builder 必須有完整檔案系統訪問許可權,能執行 npx/node/tsc 等命令。
以 Codex 為例,~/.codex/config.toml 需配置:
ask_for_approval = "never"
sandbox_mode = "danger-full-access"
⚠️ 重要:必須使用完整訪問許可權模式,受限模式會阻止 npx/node/tsc 等命令,導致三重糾錯無法執行,Token 浪費 60%。
目的:建立 Claude Code 會話信任,避免後續 Bash 後臺任務需要確認
操作:
echo "Warmup at $(date '+%Y-%m-%d %H:%M:%S')" && sleep 2 && echo "Ready"
要求:
- 每次呼叫 /ai-auto-dev 都必須先執行暖場
- 使用 run_in_background: true 引數
- 等待完成通知(約 2-3 秒)
- 完成後進入第一步
原理: - Claude Code 的會話信任機制儲存在記憶體中 - 重啟電腦後會清除,需要重新建立 - 首次後臺任務需要確認,後續任務無需確認 - 暖場任務快速完成(<5 秒),建立信任後一整天無需確認
使用新模板(v2.0 核心改進):
specs/SPEC-TEMPLATE.md 為 specs/TASK-{id}-{name}.mdspecs/SPEC-TEMPLATE-GUIDE.md 填寫## Assumptions 章節[假設: 具體內容]### US1: 功能名稱 (Priority: P1)
作為[角色],我需要[功能],以便[價值]。
**Acceptance Scenarios:**
- **Given** [前置條件],**When** [操作],**Then** [預期結果]
**Test Criteria:**
- [ ] {具體可測試的標準}
[P] = 可與其他 [P] 步驟並行執行[US1][US2] = 關聯到對應使用者故事### Step 1: 建立模組 [P] [US1]Spec 中必須包含此章節,Builder 執行後強制執行:
## Self-Check Requirements (MANDATORY)
### Check 1: Static Analysis
```bash
npx tsc --noEmit --strict --skipLibCheck
npm test # 或 jest / vitest --run
npm run build
建立 {output-dir}/self-check-report.md,包含: - Static Analysis: PASS/FAIL + 錯誤數 - Tests: PASS/FAIL + 通過/失敗數 - Build: PASS/FAIL - Files Created: 列表 - Issues Found: 列表 - Overall: PASS/FAIL
如果任何檢查失敗: 1. 分析失敗原因 2. 生成修復建議 3. 報告給 PM
#### 改進 5:Verification Checklist
```markdown
## Verification Checklist
### Code Quality
- [ ] TypeScript 編譯無錯誤
- [ ] 所有測試通過
- [ ] 無 console.log 殘留
### Functional Requirements (US1)
- [ ] {US1 的具體需求}
### Functional Requirements (US2)
- [ ] {US2 的具體需求}
### Edge Cases
- [ ] 空輸入處理
- [ ] 邊界值處理
### Security & Performance
- [ ] 無安全漏洞
- [ ] 無效能瓶頸
任務拆解原則: - 每個任務 3-5 個相關函式 - 單個檔案不超過 200 行 - 任務間無依賴 - 使用英文編寫 Spec(Builder 對英文理解更精確)
展示 Spec 給使用者確認後進入第三步。
目的:如果上次會話中途中斷(compact、崩潰、關視窗),自動從斷點續接。
狀態檔案:{專案目錄}/.codex-progress.json
{
"session_id": "2026-02-22-001",
"tasks": [
{"id": "001", "spec": "specs/TASK-001.md", "status": "done", "token": 125000},
{"id": "002", "spec": "specs/TASK-002.md", "status": "active", "token": 0},
{"id": "003", "spec": "specs/TASK-003.md", "status": "pending", "token": 0}
],
"updated_at": "2026-02-22 10:30:00"
}
檢測邏輯(PM 在第三步開始前執行):
# 檢查是否有未完成的進度檔案
if [ -f ".codex-progress.json" ]; then
echo "檢測到中斷的任務進度:"
cat .codex-progress.json
fi
恢復規則:
1. 狀態為 done 的任務:跳過,不重複執行
2. 狀態為 active 的任務:重置為 pending,重新執行(active 表示執行中被中斷,結果不可信)
3. 狀態為 pending 的任務:正常執行
4. 狀態為 failed 的任務:分析原因後決定重試或跳過
更新時機:
- 每個任務啟動前:設為 active,寫入檔案
- 每個任務完成後:設為 done,記錄 token,寫入檔案
- 每個任務失敗後:設為 failed,記錄錯誤,寫入檔案
- 全部完成後:刪除進度檔案
PM 更新進度的命令:
# 用 Python 更新進度檔案(比 jq 可靠)
python3 -c "
import json
with open('.codex-progress.json', 'r') as f: data = json.load(f)
for t in data['tasks']:
if t['id'] == '${TASK_ID}': t['status'] = '${NEW_STATUS}'
data['updated_at'] = '$(date '+%Y-%m-%d %H:%M:%S')'
with open('.codex-progress.json', 'w') as f: json.dump(data, f, indent=2)
"
目的:PM 不再手動標記 [P],而是自動分析任務間依賴關係,生成並行分組。
分析規則(PM 在生成所有 Spec 後執行):
Files to Create/Modify 列表依賴分析結果:
Layer 1 (並行): TASK-001, TASK-003, TASK-005 ← 無依賴,同時啟動
Layer 2 (並行): TASK-002, TASK-004 ← 依賴 Layer 1 的輸出
Layer 3 (序列): TASK-006 ← 整合任務,依賴全部
PM 執行依賴分析的命令:
# 從所有 Spec 中提取檔案目標,分析依賴
for spec in specs/TASK-*.md; do
TASK_ID=$(basename "$spec" .md | sed 's/TASK-//')
# 提取 Files to Create/Modify 章節中的檔案路徑
FILES=$(grep -A 20 "Files to Create\|Files to Modify" "$spec" | grep '^\s*-\s*`' | sed 's/.*`\(.*\)`.*/\1/')
echo "TASK-$TASK_ID: $FILES"
done
與分層引爆模型的關係:
- 舊方式:PM 手動標記 [P] → 分組 → 分層引爆
- 新方式:PM 自動分析依賴 → 自動分層 → 分層引爆
- 分層引爆模型(A→B→C)不變,只是分組不再需要人工判斷
builder exec --skip-git-repo-check "$(cat specs/TASK-{id}-{name}.md)" > logs/task-{id}.log 2>&1 &
分層引爆模型(A→B→C):
A1(主引線):暖場 + 任務分組
↓ 串聯觸發(快速,<5秒)
B1 ── B2 ── B3(二級引線,各組並行啟動)
↓ ↓ ↓
C1 C2 C3(組內任務,並行執行)
execute_batch 並行呼叫)builder exec ... &)分組原則: - 同組任務:操作不同檔案、無依賴 → 可完全並行(C層) - 跨組依賴:B1 組完成後才啟動 B2 組 → 串聯 - 組內上限:每組最多 15 個任務
併發規則(15 併發標準): - 標準配置:每批 15 個任務並行執行 - 核心原則:一次串流不超過 15 個 - 執行模式:真·並行(所有任務同時啟動) - 效能保證:~30 秒/15 任務,100% 成功率,無 API 限流
並行執行前提條件: 1. 會話信任已建立(第零步暖場完成) 2. 任務間無依賴(每個任務可獨立完成) 3. 資源不衝突(不同任務操作不同檔案) 4. 併發數量控制(最多 15 個任務同時執行)
執行指令碼模板:
# 15併發真·並行模式
BATCH_SIZE=15
TOTAL_TASKS=<任務總數>
BATCH_COUNT=$(( (TOTAL_TASKS + BATCH_SIZE - 1) / BATCH_SIZE ))
mkdir -p logs
execute_batch() {
local BATCH_ID=$1
local START_TASK=$2
local END_TASK=$3
echo "[批次${BATCH_ID}] 啟動任務 ${START_TASK}-${END_TASK}"
for i in $(seq $START_TASK $END_TASK); do
TASK_NUM=$(printf '%03d' $i)
builder exec --skip-git-repo-check "$(cat specs/TASK-${TASK_NUM}.md)" \
> "logs/task-${TASK_NUM}.log" 2>&1 &
done
wait
echo "[批次${BATCH_ID}] 完成"
}
TASK_ID=1
for batch in $(seq 1 $BATCH_COUNT); do
START_TASK=$TASK_ID
END_TASK=$((TASK_ID + BATCH_SIZE - 1))
if [ $END_TASK -gt $TOTAL_TASKS ]; then
END_TASK=$TOTAL_TASKS
fi
execute_batch $batch $START_TASK $END_TASK &
TASK_ID=$((END_TASK + 1))
done
wait
擴充套件策略: - 任務數 ≤ 15:單批次執行(最快) - 任務數 16-50:分批執行,每批 15 個(推薦) - 任務數 > 50:分批執行,每批 15 個(穩定)
主動監控機制:
monitor_codex_execution() {
local LOG_FILE=$1
local TARGET_FILE=$2
local STABLE_COUNT=0
local LAST_SIZE=0
while true; do
if [ -f "$LOG_FILE" ]; then
CURRENT_SIZE=$(stat -f%z "$LOG_FILE" 2>/dev/null || stat -c%s "$LOG_FILE" 2>/dev/null)
if [ "$CURRENT_SIZE" -eq "$LAST_SIZE" ]; then
STABLE_COUNT=$((STABLE_COUNT + 1))
if [ $STABLE_COUNT -ge 4 ]; then
echo "✅ 日誌穩定,任務可能已完成"
if [ -f "$TARGET_FILE" ]; then
FILE_TIME=$(stat -f%m "$TARGET_FILE" 2>/dev/null || stat -c%Y "$TARGET_FILE" 2>/dev/null)
CURRENT_TIME=$(date +%s)
TIME_DIFF=$((CURRENT_TIME - FILE_TIME))
if [ $TIME_DIFF -lt 300 ]; then
echo "✅ 目標檔案已更新,觸發驗證"
return 0
fi
fi
fi
else
STABLE_COUNT=0
LAST_SIZE=$CURRENT_SIZE
fi
fi
sleep 30
done
}
監控策略: - 檢查頻率:每 2 分鐘(經驗證為最優頻率) - 監控成本:約佔總 Token 的 0.9%(極低,不是最佳化重點) - 監控目的:發現"卡死"或"完全無法執行",不是催促進度
Builder 完成後,Claude Code 自動執行以下檢查(無需使用者確認):
cat {output-dir}/self-check-report.md
報告包含: - Static Analysis: PASS/FAIL + 錯誤數 - Test Results: PASS/FAIL + 通過/失敗數 - Build Results: PASS/FAIL - Files Created/Modified: 列表 - Issues Found: 列表 - Overall Assessment: PASS/FAIL
ls -lh [目標路徑]find [目標路徑] -name "*.ts" -size 0wc -l [目標路徑]/*.ts⚠️ 必須用 ls 實際確認檔案存在,不能只看 Builder 輸出
程式碼質量(抽查)
讀取 1-2 個關鍵檔案,檢查:型別註解、文件字串、錯誤處理
Verification Checklist 驗證
分類:語法錯誤、型別錯誤、測試失敗、構建失敗、許可權問題
生成修復建議
環境問題(許可權/依賴)→ 修復環境,重新執行
決策
繼續信任 Builder 的標誌: - Builder 還在嘗試不同方案(輸出中可以看到不同的思考和嘗試) - Token 使用量穩定增長(說明 Builder 在工作,不是卡死) - 錯誤型別在變化(說明 Builder 在調整策略) - 執行時間在合理範圍內(簡單任務 <5 分鐘,複雜任務 <30 分鐘)
需要介入的標誌: - Builder 陷入迴圈報錯(相同錯誤重複出現 3 次以上) - Builder 完全卡死(超過 5 分鐘無任何輸出) - Token 使用量異常增長(單任務超過 500 萬 tokens) - 執行時間明顯異常(簡單任務超過 30 分鐘)
介入方式: 1. 先檢查 Builder 的最新輸出,確認是否真的需要介入 2. 如果確認需要介入,停止任務並分析原因 3. 修改 Spec 或指令,重新執行 4. 記錄踩坑經驗,更新記憶庫
訪問小蔥技能站7w4.net,解鎖更多實用的AI技能外掛。
| 級別 | 預期時間 | 預期 Token | 介入次數 | 典型場景 |
|---|---|---|---|---|
| 簡單 | ≤5 分鐘 | ≤500K | 0 | 單檔案修改、配置調整、小功能 |
| 複雜 | ≤30 分鐘 | ≤5M | 0-1 | 多檔案功能、重構、新模組 |
超閾值判定:實際值 > 2× 預期值 → 標記異常,寫入實驗日誌,分析原因。
| 狀態 | 判斷依據 |
|---|---|
| 正常思考 | 輸出內容在變化 OR 錯誤型別在變化 OR Token 穩定增長 |
| 死迴圈 | 相同錯誤 ≥3 次 AND Token 持續增長但無新進展 |
| 完全卡死 | 超過 5 分鐘無任何輸出 |
數學條件:相同錯誤出現次數 ≥ 3 → 立即介入,不等待。
## 驗收報告
### 執行統計
**時間消耗:**
- 實際執行時間:X 分鐘
- 總牆上時鐘時間:Y 分鐘
- 序列預估時間:Z 小時(如適用)
- 效率提升:N%(如適用)
**Token 消耗:**
- Spec 生成(PM):XXK tokens
- Builder 執行(Builder):XXM tokens
- PM 驗證:XXK tokens
- **總計:X.XM tokens**
**成本效益:**
- 人工開發預估:X-Y 天
- 自動化完成:Z 分鐘
### Builder Self-Check 結果
- Static Analysis: ✅ PASS / ❌ FAIL (X errors)
- Test Results: ✅ PASS / ❌ FAIL (X/Y passed)
- Build Results: ✅ PASS / ❌ FAIL
- Overall: ✅ PASS / ❌ FAIL
### PM 驗證結果
- 檔案完整性: ✅ / ❌
- 程式碼質量: ✅ / ❌
- Verification Checklist: X/Y 項通過
### 檔案清單
| 檔案 | 大小 | 行數 | 狀態 |
|------|------|------|------|
### 判定:✅ 通過 / ❌ 不通過
- 不通過原因(如有)
- 修復建議(如有)
_archive_staging.md 暫存檔案暫存檔案格式:
# 文件歸檔暫存
> 建立日期:YYYY-MM-DD
> 專案:[專案名稱]
> 任務:[任務描述]
> 狀態:待使用者審閱
---
## 蒸餾內容
[本次工作中值得提煉的方法論、認知、經驗]
---
## 日誌內容
[本次工作的完整記錄,按學習研究日誌的會話格式編寫]
---
## 踩坑記錄
[遇到的問題和解決方案]
---
## 記憶庫更新建議
[如有新的操作習慣或規則需要記錄]
在第六步交付前,自動完成以下工作:
更新 API 配置指南或其他相關文件
呼叫 dev-log skill
v0.9.4)dev-log 自動完成:分析程式碼修改、生成 commit message、提交程式碼、打版本標籤、推送到 GitHub
驗證同步結果
注意:此步驟在第五步之後、第六步之前自動執行,無需使用者確認。如果 GitHub 同步失敗,記錄錯誤但繼續交付流程。
同時交付三樣東西(全部內聯顯示在對話中,不要只給檔案連結):
問題清單(如有)
歸檔暫存檔案(第五步生成的)
說明每部分建議寫入哪個正式文件
GitHub 同步結果(第五步半完成的)
GitHub Release 連結
使用者審閱後決定:
/distill 或手動寫入正式文件# 提取單個任務的 Token 消耗
extract_tokens() {
local LOG_FILE=$1
grep "Usage:" "$LOG_FILE" | tail -1 | \
sed -E 's/.*input=([0-9]+) output=([0-9]+) total=([0-9]+).*/\1 \2 \3/'
}
# 統計所有任務的 Token 消耗
total_input=0; total_output=0; total_tokens=0
for log in logs/task-*.log; do
read input output total <<< $(extract_tokens "$log")
total_input=$((total_input + input))
total_output=$((total_output + output))
total_tokens=$((total_tokens + total))
done
echo "Total Input: ${total_input}"
echo "Total Output: ${total_output}"
echo "Total Tokens: ${total_tokens}"
| 現象 | 原因 | 修復 |
|---|---|---|
| 單任務 >500K tokens | 許可權不足,陷入探測迴圈 | 改為 danger-full-access |
| 單任務 >500K tokens | Spec 不清晰,反覆猜測 | 補充 Assumptions,明確需求 |
| PM Token 過高 | 讀取了不必要的檔案 | 遵守"PM 不讀程式碼"原則 |
| 總 Token 超預期 | 重複執行失敗任務 | 先修復 Spec 再重新執行 |
specs/SPEC-TEMPLATE.md,包含 5 個核心改進_archive_staging.md 暫存檔案,絕對不能直接寫入正式文件ls 實際確認檔案存在,不能只看 Builder 輸出就報告成功self-check-report.md、ls 輸出、日誌檔案。不讀原始碼(.ts/.js/.py)。"不讀程式碼"= 不讀原始碼,不等於不讀報告。現象:Builder 無法執行 npx/node/tsc,Token 消耗異常高(60% 浪費在許可權探測)
原因:config.toml 中 sandbox_mode = "workspace-write"
修復:改為 sandbox_mode = "danger-full-access"
驗證:builder exec "echo hello" 輸出顯示 sandbox: danger-full-access
現象:PM 在中途停下等待使用者指示,導致大量時間浪費 原因:誤解了"全自動化"含義,認為需要在每個階段詢問使用者確認 修復:執行完所有 6 步才交付,只有遇到無法解決的錯誤時才停下來 資料:錯誤做法導致 455 分鐘空閒 vs 85 分鐘工作,浪費比例 84%
現象:PM 報告任務成功,但檔案根本不存在
原因:讀取了錯誤的輸出檔案,沒有實際驗證檔案是否存在
修復:必須用 ls 實際確認檔案存在,必須執行編譯檢查才能聲稱編譯通過
現象:使用者反饋"不好找",閱讀體驗差 原因:PM 過度關注 Token 成本最佳化 修復:預設內聯顯示所有報告 決策標準:成本差異 <1 元/100 輪 → 優先使用者體驗,內聯顯示
現象:PM 在 Builder 還在工作時停止任務,導致成本翻倍 原因:PM 用自己的時間預估判斷 Builder 是否卡死 修復:按照"PM-Builder 信任原則"判斷,只有滿足"需要介入的標誌"才介入
/distill 寫入正式蒸餾文件/sop-generator 生成 SOP/dev-log 記錄版本現實約束:當前沒有 Gemini/向量資料庫,Memory 角色由 PM 用檔案檢索替代。
| 需求 | 實際操作 | 命令 |
|---|---|---|
| 查詢相關檔案 | Glob 模式匹配 | Glob("src/**/*.ts") |
| 搜尋歷史決策 | Grep 關鍵詞 | Grep("pattern", path) |
| 讀取基線資料 | Read 檔案 | Read("windtunnel/baselines/...") |
| 查詢踩坑記錄 | Read 暫存檔案 | Read("_archive_staging.md") |
❌ 錯誤:直接讀 src/ 下的原始碼檔案來"理解"專案
✅ 正確:讀 self-check-report.md、CLAUDE.md、_archive_staging.md 獲取上下文
✅ 正確:用 Glob/Grep 定位檔案路徑,把路徑寫進 Spec,讓 Builder 去讀
## 上下文(PM 查詢 Memory 後填入)
- 相關檔案:`src/taskManager.ts`(通過 Glob 定位)
- 歷史決策:使用 danger-full-access(見 _archive_staging.md 許可權進化歷程)
- 已知問題:activationEvents 缺失(見 CLAUDE.md Section 6)
specs/SPEC-TEMPLATE.mdspecs/SPEC-TEMPLATE-GUIDE.mdCLAUDE.md(Section 3: Spec MD Format)automated-comparison-test/FINAL-COMPARISON-REPORT.md(61.4% 效率提升資料)核心原則:重要資訊必須立即落盤,不能只存在上下文中。 上下文壓縮會導致風洞資料失真——壓縮後的"記憶"不等於真實發生的事情。
每次新會話開始,PM 必須讀取以下檔案(按順序):
1. ~/.claude/windtunnel/baselines/ai-auto-dev-baseline.md ← 基線資料
2. ~/.claude/windtunnel/experiments/{今日日期}-summary.md ← 今日實驗記錄(如存在)
3. {專案目錄}/CLAUDE.md ← 專案約束
目的:從檔案恢復上下文,而不是依賴對話歷史(對話歷史可能已被壓縮)。
以下資料必須在產生時立即寫入檔案,不能只存在對話中:
| 資料型別 | 寫入位置 | 觸發時機 |
|---|---|---|
| 任務開始記錄 | windtunnel/experiments/{日期}-log.md |
第三步執行前 |
| 驗收結果 | windtunnel/experiments/{日期}-log.md |
第四步完成後 |
| 基線對比 | windtunnel/baselines/ai-auto-dev-baseline.md |
每次任務完成後 |
| 踩坑記錄 | _archive_staging.md |
發現問題時立即記錄 |
實驗日誌格式(追加寫入,不覆蓋):
## {時間戳} | 任務:{任務名} | 難度:簡單/複雜
**輸入**:{需求一句話描述}
**執行時間**:X 分鐘
**Token 消耗**:X.XM
**介入次數**:X
**結果**:✅ PASS / ❌ FAIL
**偏差**:與基線相比 +/-X%(如有)
**備註**:{關鍵發現,一句話}
寫入命令(PM 在第四步後執行):
cat >> ~/.claude/windtunnel/experiments/$(date '+%Y-%m-%d')-log.md << 'EOF'
{上述格式內容}
EOF
禁止:將以下內容只放在對話中: - 實驗資料和測量結果 - 與基線的對比結論 - 決策記錄(為什麼選 A 不選 B) - 踩坑經驗
要求:每次任務完成後,PM 必須確認以上內容已寫入檔案,才能進入第六步交付。
每次任務完成後,PM 自動計算與基線的偏差並寫入日誌:
偏差計算:
- 時間偏差 = (實際時間 - 基線時間) / 基線時間 × 100%
- Token 偏差 = (實際Token - 基線Token) / 基線Token × 100%
- 偏差 > +50%:標記為異常,分析原因
- 偏差 < -20%:標記為改進,記錄原因
| 版本 | 日期 | 變更 |
|---|---|---|
| v1.0 | 2026-02-15 | 初始版本,建立基礎流程 |
| v2.0 | 2026-02-19 | 新增 Spec-Kit 改進(5 個核心機制)、三重糾錯、PM-Builder 信任原則、Token 統計、常見錯誤修復方案 |
| v2.1 | 2026-02-21 | 新增記憶保護協議:立即落盤原則、實驗日誌格式、上下文壓縮防護、基線自動對比 |
| v2.2 | 2026-02-22 | 新增中斷恢復機制(.codex-progress.json 狀態檔案,active→pending 重置)、依賴圖自動分析(替代手動 [P] 標記,自動拓撲排序分層) |
質量中等偏上。優點是流程完整、驗證機制嚴格,大型任務也能穩定跑完。缺點是太複雜了,光是看完文件就要很久,每次用還要先暖場、配環境,步驟繁瑣。而且這工具主要針對特定 AI 工具最佳化,換個環境就不靈了。適合有耐心的專業使用者,普通使用者可能會覺得門檻太高。