Architecture Journal
Codex Subagent Delivery Demo
這個 repo 的主角不是圖書館 CRUD,而是 AI 參與軟體交付時,規格、責任和驗證證據怎麼被固定下來。它用一個小型 Library Admin Console,示範如何把 scenario、需求、架構、API contract、程式碼、測試與 handoff 串成一條可重現的 delivery workflow。
整個設計可以先看成四個目錄之間的關係:
AGENTS.md
+ .codex/agents/ 角色與責任邊界
+ .codex/skills/ 每個階段的工作方法與檢查清單
+ docs/workflows/ 執行中的狀態、阻塞點與 handoff
AGENTS.md 是 repo-level contract;角色檔決定誰負責什麼;skill 決定工作怎麼做;workflow state 則保存這次流程走到哪裡。這四層放在一起,Agent 才能在換角色、換 session 或中斷後繼續工作。
Subagent:把交付責任拆成角色
.codex/config.toml 負責註冊 subagent,.codex/agents/*.toml 則設定每個角色的 prompt 與 context routing。角色檔不包辦完整實作,只定義責任邊界;真正的工程規範交給對應的 skill。
| Role | 主要責任 | 主要交付物 |
|---|---|---|
orchestrator | 判斷目前 stage、安排下一個角色、維護 workflow state、管理 rework loop | workflow state、handoff、next action |
SA | 從 scenario 整理 FR、NFR 與 acceptance criteria | REQ-LIB-001 |
Archi | 做 MVP architecture、NFR trade-off 與系統邊界決策 | ARCH-LIB-001 |
SD | 產出 implementation-ready 的 OpenAPI、schema 與 API flow | docs/openapi.yaml、docs/schema/*、docs/api/* |
PG | 拆任務、凍結 FE/BE 邊界、定義交付 gate | delivery task、FE/BE parallel plan |
FE / BE | 依 frozen contract 平行完成前後端實作 | apps/web/*、apps/api/* |
QA | 執行 E2E/NFR 驗證,必要時把缺陷送回上游 | QA report、defect feedback |
這種拆法讓每個 Agent 只處理自己該做的決策。orchestrator 也不是萬能 Agent,而是根據上游 artifact 和 workflow state 協調下一步的 workflow coordinator。
Skill:把工程方法寫成可重用規範
.codex/skills/ 放的是可重用的工作方法,不是另一組角色名稱。Skill 會定義角色開始前要讀哪些 artifact、可以修改哪些目錄、要產出什麼格式,以及離開這一階段前要執行哪些驗證。
repo 內的 skill 覆蓋幾個主要階段:
workflow-orchestration:讀取狀態、判斷 stage、處理 handoff 與 rework。scenario-requirements-writer、architecture-planner:把 scenario 轉成需求、驗收條件與架構決策。sd-docs-producer:產出 OpenAPI、schema、API flow 與 SD handoff。be-development、fe-development、qa-e2e-verifier:分別規範前後端實作、generated code、測試與 E2E 驗證。
這裡的重點是把團隊方法寫成 Agent 可以遵循的 contract。角色設定回答「誰來做」,skill 回答「怎麼做、做到哪裡才算完成」。
Workflow State:讓交接不依賴聊天紀錄
每條 scenario 都有對應的 workflow state,例如 docs/workflows/WF-LIB-001.md。它記錄 workflow metadata、current stage、current objective、各階段狀態、blockers、open questions、FE/BE 平行計畫、QA loop 與 session handoff notes。
流程形狀如下:
S0 Scenario Discovery
-> S1 SA
-> S2 Archi
-> S3 SD
-> S4 PG
-> S5A FE || S5B BE
-> S6 QA
-> S7 Done
這個 repo 可以用三種方式閱讀同一條流程:逐角色觀察每一站的輸入與輸出,由 orchestrator 根據 state 自動推進,或在 session 中斷後靠 workflow file resume/handoff。source of truth 是 artifact 和 workflow state,不是某一段聊天上下文。
從規格到實作,再回到 QA
SA、Archi 與 SD 先把 requirements、acceptance criteria、architecture、OpenAPI、schema 與 API flow 做成可交接的規格。PG 再凍結 FE/BE 的 task boundary,讓前後端從同一份 contract 平行實作:
Requirements + AC
-> SA / Archi / SD artifacts
-> OpenAPI + generator config
-> spec-ready commit
-> FE || BE implementation
-> Unit / Integration tests + API response
-> QA verification
Backend Skill 讀取凍結的 OpenAPI,產生 Java interface 與 DTO,再在 handwritten 區域完成 Controller、Service、repository adapter、validation 與 error mapping。Frontend 則使用 generated client/model 開發畫面與互動;最後由 unit、integration、API 與 E2E test 提供交付證據。
demo/20260908-qa 已將這條流程完成為可操作的 Library Mini Admin MVP,包含 Java 21、Spring Boot、H2、Liquibase、Vue 3、OpenAPI Generator、Playwright fixture/Page Object/E2E,以及 workflow state、delivery summary 和 QA report。
QA 報告記錄 AC-001~AC-009 全數通過、Chromium 完整 suite 6/6 通過,並在 2 workers 下驗證沒有跨測試資料污染。過程中曾發現多複本借還問題;後端修正 CK_BOOKS_STATUS_MAPPING 後,兩筆借閱可以逐筆歸還,庫存從 1 / 2 回到 2 / 2,狀態恢復為可借閱。這就是 workflow 裡的 rework loop:缺陷證據回到實作角色,修正後再用 targeted test、integration coverage 與完整 E2E 回歸。
QA 判定為 Pass with limitations;pixel-diff、axe/contrast audit、loading/submit-disabled 的獨立斷言與完整 server-log correlation 未納入本次核心 scenario gate。
如何閱讀這個 repo
main 保留學員起始材料、scenario、AGENTS.md、agent/skill 設定與文件模板;demo/20260908-qa 則提供完整規格、實作、測試與 QA 結果。閱讀時先理解角色與 skill,再追 WF-LIB-001 如何串起各階段,最後用 demo branch 對照完整交付物。