[CODE]

多 Agent 編碼流程實驗:PM → Architect → Engineer → QA

設定了一套多 Agent 協作流程,讓不同的 Claude Agent 分別負責需求、架構、實作、測試各個階段。這篇記錄什麼有用、什麼爆了、下次會怎麼調整。

2 min read
claude-code ai workflow software-engineering

Code & Cast 這個專案我是用多 Agent 工作流程在開發的。不是那種「叫 Claude 幫我寫程式」的方式,而是真的設計了一個分階段的 pipeline,每個階段有專屬的 Agent,沒有我明確核准就不能進下一階段。

這篇記錄實際發生的事情。

Pipeline 架構

整個流程分五個階段,每個階段基本上都有一對 Agent 互相辯論:

PM (alpha + beta 辯論)
  → Architect (alpha + beta 辯論)
    → Designer
      → Engineer (alpha=domain, beta=infra, gamma=presentation)
        → QA (alpha=UX, beta=技術)

每個階段結束後強制停下來。我看輸出。我說「approved」或者「這邊不對」。然後才進下一階段。

這個人工審查關卡,最後證明是整個流程裡最重要的設計。

為什麼每個階段要兩個 Agent?

這個是意外發現的。一開始我讓 pm-alpha 寫了一份 PRD,看起來沒問題,然後讓 pm-beta 獨立寫一份。結果兩個 Agent 對「核心使用者問題是什麼」這件事根本意見不同。

辯論過程迫使兩個 Agent 都要替自己的邏輯辯護。合併後的輸出明顯比任何一份草稿更嚴謹 — 邊界情況被挖出來,假設被質疑。現在凡是需要推理判斷的階段,我都跑配對 Agent。

工程師這一層的分法不太一樣。engineer-alpha 負責 domain 層,beta 負責 infra 和 queries,gamma 負責 presentation。開始之前,alpha 先做依賴分析 — 每個工程師實際上需要哪些檔案?這樣才能避免兩個 Agent 互踩或者因為缺少型別定義而卡住。

engineer-alpha: 先分析依賴關係
  → domain layer(types、entities、zod schemas)
engineer-beta: infra + queries
  → 依賴 alpha 的 domain types
engineer-gamma: pages + components
  → 依賴 beta 的 query 回傳型別

沒有這個前置分析步驟的時候,我一直遇到 gamma 在 import alpha 還沒寫完的型別這種競態問題。

人工關卡不能省

早期試過把 PM 和 Architect 之間的關卡拿掉,想說加速一下。結果很慘。

兩個 Architect Agent 在一份 PRD 的一個模糊細節上,各自做了不同的假設,然後把整個 context 預算都燒在根本上不相容的兩套架構設計。那個模糊的地方是關於 session 怎麼識別的 — 我大概三十秒就能在 PRD 審查時抓到,但我跳過了那個關卡。

兩個 Agent 辯論、收斂、然後一起走錯方向,比一個 Agent 走錯方向還糟糕。因為「它們都同意了」讓問題更難被察覺。

關卡存在是有原因的:下游階段是建立在上游決策之上的。PM 錯了 10%,Architect 會放大這個錯誤,到 Engineering 的時候就在實作一個根本不是我要的東西。

QA 找到測試沒抓到的問題

Engineering 完成的判定條件是 npm run buildnpm run test 都過。兩個都過了。然後 QA 開始跑使用者旅程,找到了真實問題 — zh-TW 路由上的頁面標題還是英文、精選文章卡片根據語系顯示了不同格式的日期。

這些都不是型別錯誤。都不會讓 build 失敗。是那種你真的用瀏覽器逛過網站才會發現的問題。

qa-alpha 負責 UX 和使用者旅程測試 — 它會像一個真實使用者一樣走過每個流程。qa-beta 負責架構合規和邏輯 bug。兩個互相審查對方的發現,再合寫最終的 QA 報告。這個組合找出了任何一個單獨測試都抓不到的東西。

會怎麼調整

這個 pipeline 比直接叫 Claude 實作慢多了。跑完一整個完整迭代 — 從 PM 到 QA — 大概要花 3-4 倍的時間。值不值得,完全取決於你有多在意第一次就做對。

對 Code & Cast 來說,我在意。我在公開寫這個專案,不想花週末修一個當初倉促決定的架構問題。

真正有差的不是 Agent 的數量,而是辯論結構加上人工關卡的組合。一個 Agent 寫完 PRD 直接開始 coding,產出的東西就是普通。兩個 Agent 辯論 PRD,我審查,再讓兩個 Agent 在上面辯論架構 — 複利效應是真實存在的。

整套設定我已經抽成了一個可重用的模板(my_ai-coding-template),下次開新專案可以直接用同樣的結構,不用從頭重建 Agent 定義。光這一步,下個專案大概就省了幾個小時。