SpecFlow,讓 Agent 開發變成可控流程
概述
最近這一年,我開始大量使用 AI(目前主要用 Claude Code)來寫程式碼。
老實說,現在我幾乎已經不太親自下去寫 code 了。
在工作上的 task 通常都比較小:
- 下 prompt
- 看結果
- 確認有沒有符合預期
但當我開始做 side project(從 0 到 1) 的時候,事情就完全不一樣了。
你會需要:
- 訂 spec
- 做 UI 設計
- 設計資料結構
- 測試功能
- Review 成千上萬行 code
問題是:
人類的 review 速度,根本追不上 AI 的產出速度
於是我開始思考一件事:
有沒有可能讓 AI 不只是寫 code,而是「幫我完成整個開發流程」?
開發發想
一開始在做 side project 時,我也試過一些 spec-driven 工具,例如:
- openspec
- get-shit-done
但都會遇到一個狀況就是:
手動的東西實在太多了
每個開發階段都要驗證 AI 的產出,get-shit-done 光是一個 phase 我就需要手動給指令 3 次,我根本不想做這些,結果最後是好的就好了,但我又不能不驗證,怎麼辦呢?
好像可以請另外一個 agent 來幫我 QA 測 e2e 跟瀏覽器交互的狀況,並在測出問題時可以回報給開發 agent 處理。
有個大概輪廓了,於是就開始設計開發流程。
設計
在最初期我覺得至少要有這些角色:
- PM:用來跟我確認要開發什麼專案,大致的方向是如何
- UI Designer:設計產品的設計語言,讓後續前端開發的產出視覺上保持一致性
- Tech Lead:負責規劃產品開發,要把太大的 task 切成多個 sub task,分散下去做
- Engineer:就碼農
- QA:負責驗證 engineer 的產出是否有符合預期
參考 openspec 的做法,我選擇把 spec 存在 repo 中,讓所有 agent 以 GitHub 作為協作中心:
- spec → 定義要做的事情
- issue → 任務分配
- comment → agent 溝通
- PR → 結果驗證
流程大致如下:
- PM 定義需求 → 撰寫 spec
- Tech Lead 拆解 feature → 建立 issue
- Engineer 根據 issue 開發
- QA 同步設計測試項目
- Engineer 完成後 → QA 開始測試
- QA 發現問題 → 開 bug issue
- Engineer 修復
為什麼用 GitHub?
除了 workflow 清楚之外,還有幾個額外好處:
- 可以透過 API 做可視化管理
- 可以串接 auto review(例如 OpenAI Codex 類型工具)
- 所有紀錄都是 persistent,可追蹤
- 整體的可靠性變高
使用心得
後來用這套開發了幾個專案的感想:
我需要手動介入的部分真的變少了
他會分派 agent 去平行的幫我處理任務,而這帶來了另一個好處:主要的 context 不會消耗,個別 agent 的 context 獨立。
不過需要搭配 Claude Code 新出的 auto mode 或是把 permission 全開,不然還是要常常手動按 yes 是也滿麻煩的。
未來方向
目前 SpecFlow 還在 early stage,現在部署 infra 還需要手動處理,希望可以用簡單交互的方式完成它。