第四天終於碰到最燒腦的部分。什麼是規範驅動開發?為什麼 Coding Agent 需要三種模型跑完同一套流程?上下文炸裂了怎麼辦?這堂課塞了太多東西。

Coding Agent - 自動化 PR 流程

你有一個 GitHub Issue,想讓 Copilot 自動寫 PR?指派給 Coding Agent 就行。Agent 會:

  • 建立獨立 Branch
  • 產出 Draft PR(給人類 Review)
  • 支援 Issue 和 PR 整合

真香的是同一個 Issue 可以指派多個 Agent,比如 Claude + Codex 各跑一遍,看哪個方案更讚。這樣就不用擲骰子決定用哪個模型了。

與 SDD 結合時威力倍增:把一個 50 個 Task 的大功能拆進 SpecKit,自動生成 50 個 GitHub Issue,然後批量指派給 Coding Agent。每個 Agent 獨立工作,最後由人類收兵。整個流程變成準自動化,當然 Code Review 還是得真人親自來。

SDD 規範驅動開發與 SpecKit 框架

TDD(測試驅動)講究 Red→Green→Refactor。SDD 則更重:它不只寫程式,還制定遊戲規則。

六步驟流程(循環式)

  1. Constitution:全局唯一公約。定義命名規範、設計原則、DI 規則等。一個專案就一份,SpecKit 內建。

  2. Specify:需求定義。建 Feature Branch,寫清楚要做什麼。

  3. Plan:需求轉實現計畫。這步會 Check 一遍 Constitution,看計畫是否違反公約。

  4. Task:拆解成可編碼的任務。細化到工程師能寫程式的程度。

  5. Implement:逐項編碼。用 Coding Agent 批量執行也行。

  6. Sync/Analyze:檢測程式碼與 Constitution 衝突。刻意不自動修復,改由人類判斷修不修。

流程不是線性的。Sync 發現問題時,往往要回頭更新 Constitution 或重新 Plan。

三份核心記憶文件

1
2
3
4
project/
├── constitution.md ← 系統預置,不動
├── architecture-map.md ← 自訂,描述系統架構
└── lessons.md ← 自訂,記錄踩過的坑

為什麼不把所有規範都丟進 Instructions?因為會佔爆上下文窗口,牽扯不相關的內容反而亂了判斷。Knowledge Base 支援用 # 符號顯式引用,需要再拉,才是聰明做法。

Sync 的設計哲學

Sync 不會自動修復。它產出:

  • 衝突清單
  • 嚴重程度評級
  • 修復建議

然後靜靜等人類決策。微軟在觀察:工程師怎麼決策?模式出現後,未來版本才可能進化到半自動。現在就是刻意留著人類判斷權。

Business vs Enterprise:Knowledge Base 差異

Enterprise 版比 Business 多了兩個東西:

  1. Knowledge Base:跨 Repo 的結構化知識庫。存全局規範、內部 API、開發規範。場景:公司 50 套系統,每個 Repo 只用一部分規範。用 KB 就不用每個專案複製一份。

  2. 模型微調:針對公司內部代碼風格微調模型。

TDD 代理流程(輕量版本)

有人覺得完整 SDD 太重?試試 TDD 代理流程。

Red Phase → Green Phase → Refactor Phase,各指派一個 Agent。Handoff 是 Hint 而非自動跳轉,Agent 會看前一步的提示再動作。

  • Red:寫會失敗的測試
  • Green:最小實現讓測試過
  • Refactor:改善程式碼品質

輕量化,適合快速迭代。不過如果要確保全局一致性,還是得上 SDD。

上下文管理與模型選擇

中等 Feature 用 SDD 跑一遍,上下文基本爆掉。真的爆了怎麼辦?

先跑 Analyze 定位問題。壓縮前先找出瓶頸在哪,才不會亂砍。

關於模型選擇:SpecKit 流程建議同一個模型走完。不滿意的話從 Constitution 重來,不是中途換馬。

非框架場景下呢?Claude 擅長規劃和理解需求,Codex 擅長排 Bug 和實作細節。各展所長。

舊專案導入 SDD

手上有個老專案要導入?步驟很簡單:

  1. 安裝 SpecKit(純檔案拷貝,沒依賴)
  2. 生成 Constitution
  3. 生成 Architecture Map(重構專案一定要建這個)
  4. 開始新功能

提示技巧:提供目錄導向、指定 Gold Standard 範例、用挑戰式互動讓 AI 解釋設計。

Code Spaces 與自訂擴展

雲端開發環境 Code Spaces 用 devcontainer.json 設定:

1
2
3
4
5
6
{
"image": "...",
"features": {...},
"extensions": [...],
"postCreateCommand": "npm install"
}

SpecKit 可自訂擴展。改 Agent 提示詞、Templates、Scripts、自訂 Skill 都行。注意:升級 SpecKit 會覆蓋 Agent 目錄,改動要留備份。

SpecKit vs OpenSpec

兩套框架都能用,選擇取決於功能大小:

  • SpecKit:中大型 Feature、全量重構。反覆 Sync 的工作量可能超過 1/5。
  • OpenSpec:小功能、快速迭代。架構輕薄。

SDD 流程踩坑最多的是定義 Constitution 時過度設計。記得,Constitution 是指南針,不是法律。


第四天最大收穫:規範 + Agent + 記憶系統三合一,才是真正的「自動化開發」。不是 AI 完全自主,而是人類制訂遊戲規則,AI 在規則內執行,衝突時人類仲裁。這套流程爽度真香。

下一堂課會不會更炸?敬請期待。