022 · 先把規格寫好,再讓 AI 動手
AWS 的 Erik Hanchett 說明 spec-driven development 怎麼用需求、設計與測試文件,讓 AI 寫出的程式碼更可靠、更好維護。
原標題:Using Spec-Driven Development for Production Workflows - Erik Hanchett, AWS
重點摘要
- 規格先行的核心動作在寫任何程式碼之前,先把需求與設計文件寫成 markdown,這套流程跟大型語言模型搭配得特別好。
- AI 是需要帶的實習生coding assistant 就像 AI 實習生,沒給清楚方向就會自己亂跑,講者拿自己剛出社會當實習生的經驗來比喻。
- 脈絡要抓剛剛好寫 agents.md 或 CLAUDE.md 這類檔案時,資訊量不能太多也不能太少,只要給足夠的規則與方向就好。
- 人要留在迴圈裡使用者才是這套流程裡的 code reviewer,設計文件與需求文件都要自己看過,出包責任算在人身上。
- Kiro 的由來AWS 看到客戶自己土法煉鋼做這整套流程但成效不佳,因此做出 Kiro 這套 IDE 加 CLI,去年底正式 GA,同時有 vibe 與 spec 兩種模式。
- 產出要能被驗證需求文件用 EARS 格式,設計文件有 mermaid 圖,任務清單還會搭配 property-based tests,確認實作真的符合需求與設計。
時間軸
時碼點下去會跳到影片的那一段。
| 時碼 | 段落 | 重點 |
|---|---|---|
| 00:00 | 開場 | Erik Hanchett 說明這場要談 spec-driven development 是什麼,以及怎麼用它寫出更快、品質更好的程式碼。 |
| 00:35 | 核心定義 | spec-driven development 的定義是在寫任何程式碼之前,先把需求與設計文件寫成 markdown,這套流程跟大型語言模型搭配得很好。 |
| 01:09 | AI 實習生比喻 | coding assistant 像 AI 實習生,沒有清楚指引就會自己亂跑,講者拿自己剛出社會當實習生的經驗當例子。 |
| 04:06 | 拿捏脈絡份量 | agents.md 或 CLAUDE.md 這類檔案的資訊量要抓在剛剛好,太多太少都不好,只要給足夠的規則與方向。 |
| 04:41 | 搭配 skills 使用 | skills 是可依關鍵字或指令啟動的說明文件,建立設計文件或執行任務時都能派上用場。 |
| 05:13 | 人是最終審查者 | 使用者才是流程裡的 human in the loop,設計文件與需求文件都要自己看過,出包責任算在人身上而不是 agent。 |
| 06:21 | Kiro 的由來 | AWS 看到客戶自己土法煉鋼做這整套流程但成效不佳,因此做出 Kiro 這套 IDE 加 CLI,去年底正式 GA。 |
| 08:19 | 不靠 Kiro 也能做 | 也可以手動叫大型語言模型依序產出需求、設計、任務清單三份文件,講者也提到 GitHub 開源的 SpecKit。 |
| 09:43 | 舊專案一樣適用 | 破解「spec 只適合全新專案」的說法,講者看過用了幾十份 spec 檔案的既有舊專案,深度功能與需要前期規劃的專案最適合,連 bug 修正都支援。 |
| 10:49 | 需求與設計文件長相 | 需求文件用 EARS 格式並先問澄清問題,設計文件含 mermaid 圖與 ASCII art,講者建議自己進去修改後再往下走。 |
| 12:09 | 任務清單與驗證 | 進入實作階段後,任務清單會搭配 property-based tests 驗證是否符合需求與設計,講者也習慣先挑前幾項任務做出 MVP。 |
| 12:42 | 談 MCP | 提到 model context protocol 能把模型跟外部資料源串起來,也能藉此把 Jira、Asana 這類票券資訊拉進 spec 流程。 |
| 14:45 | Kiro 實機示範 | 講者用 Kiro 示範一個電影網站專案,從設計文件的 mermaid 圖開始,接著產出需求文件與 property-based tests,最後依任務清單做出 MVP。 |
| 17:16 | 結尾 | 講者請大家去看 kiro.dev、加入 Discord,也歡迎在 LinkedIn 上找他聊聊。 |
值得記的話
名詞與人物
| Erik Hanchett | AWS 資深 developer advocate,這場的講者,有 15 年以上軟體開發經驗。 |
|---|---|
| Kiro | AWS 推出的 AI IDE 與 CLI 工具,去年底正式 GA,主打 vibe 與 spec 兩種模式。 |
| SpecKit | GitHub 推出的開源 spec-driven development 工具,可以裝進不同的 coding assistant 使用。 |
| EARS format | Kiro 產生需求文件時用的格式,文件會有 introduction、使用者故事等段落。 |
| steering docs | Kiro 裡對應 agents.md 或 CLAUDE.md 的說法,用來放專案規則與方向給 coding assistant 參考。 |
| model context protocol(MCP) | 讓模型串接外部資料來源的協定,講者提到可以拿它把 Jira、Asana 這類票券資訊接進 spec 流程。 |
| property-based tests | 針對需求文件與設計文件產生的測試,用 fast-check 在 TypeScript、node 專案裡跑上百次不同數值驗證邏輯。 |
| skills | 可依關鍵字或指令啟動的說明文件,建立設計文件或執行任務時都能派上用場。 |
延伸
- MCP 的安全性議題,講者只說「還有一段長路要走」,沒有進一步展開細節。
- Kiro 的 CLI 版本只提到跟 IDE 一樣受歡迎,沒有進一步介紹功能。
- 把 Jira、Asana 這類票券資訊拉進 spec 流程的具體做法,這場只點到為止,沒有實際示範步驟。