本日核心價值 (Core Focus): 把 30 天工作流收成一張地圖,並標出模型普及之後仍無法外包的能力:問題拆解、驗證、安全邊界、架構品味;最後給一頁團隊 playbook,定義 AI 產生程式碼的 Definition of Done。
概念說明與實戰情境 (Overview)
當 ChatGPT 能寫函式、Codex 能跑測試、Local LLM 能在內網摘要文件,開發者的差異不再是「會不會叫模型」,而是能不能把模糊需求拆成可驗證步驟、能不能拒絕沒有證據的 diff、能不能守住密鑰與執行邊界、以及能不能在一堆能跑的方案裡選出可維護的那個。本系列從 Prompt 契約走到 Sandbox、整合、維運與選型,目的不是證明 AI 會寫程式,而是證明沒有閘門的生成不叫工作流。完賽之後,真正要帶走的是可放進 repo 的模組,而不是 30 篇聊天紀錄。
關鍵操作與範例 (Implementation & Example)
| 叢集 | 天數 | 要留下的模組 |
|---|---|---|
| Prompt / API | 01–04, 06–07 | 角色與 Context 設計、JSON Schema、可複用 Prompt、Function Calling 錯誤處理 |
| Codex / 驗證 | 05, 11–13, 16 | Sandbox 執行、單元測試與 Edge Case、Review、Debug 對齊 stack、Self-Correction Loop |
| 整合 | 08–10, 14–15, 18–20, 23–24 | 前後端與 SQL、OpenAPI 文件、Multi-Agent 邊界、RAG 檢索、Git 訊息 |
| 維運 / 資安 / 選型 | 17, 21–22, 25–29 | CI 閘門、Prompt Injection 防禦、成本、排程、效能假設、環境模組、五坑、工具槽位 |
| 收斂 | 30 | Definition of Done 與團隊 playbook |
讀這張表時不要當成目錄回憶,而當成「要進 repo 的資產清單」。前半強調「輸出必須可被機器執行」:沒有 Structured Output,後面的 API、Chatbot、排程都會在解析層失敗。中段強調「執行必須可被環境約束」:沒有 Sandbox 與測試,Codex 只是比較快的複製貼上。後半強調「系統在真實世界會漏資料、會燒錢、會被注入」:RAG、CI、效能指標、.env.example 都是同一件事——工作流要可重現、可回滾、可審計。若只帶走聊天技巧、沒有帶走 schema、AGENTS.md、eval fixture 與 CI 閘門,30 天結束後團隊能力不會留下。
1. 問題拆解(Problem decomposition)
模型擅長在目標清楚時補齊實作。不清楚的是:誰是使用者、成功長什麼樣子、哪一段可以自動、哪一段必須人工閘門。Day 02 的 Context、Day 15 的 Agent 邊界、Day 26 的「先假設再量測」,都是拆解。寫得出「最小可驗證步驟」的人,才能指揮 agent;只會說「幫我做完」的人,會得到無法 Review 的大 diff。
2. 驗證(Verification)
Day 05、11、16、17 反覆同一句:沒有測試與觀測,就沒有完成。AI 產生的測試也要被抽查——它會寫出永遠通過的斷言。驗證包含行為(測試)、結構(Review)、效能(指標與 profiler)、資料(EXPLAIN、影響列數)。開發者的工作從「先寫出來」轉成「定義什麼叫對,並檢查模型有沒有碰到」。
3. 安全邊界(Security boundaries)
Day 10、21、28:模型輸出預設不可信。SQL/shell 不能直接對正式環境執行;密鑰不進 Prompt 與 git;Prompt Injection 當成輸入驗證問題,而不是道德規勸。Local LLM(Day 29)只解決資料出網,不解決應用自己把結果拿去執行。邊界寫在帳號權限、Sandbox、允許清單,不寫在「請當一個安全的助手」。
4. 架構品味(Taste in architecture)
模型可以在一天內產出三種都能 demo 的結構。選哪一種會在六個月後讓團隊痛,仍然是人的判斷:邊界在哪、一致性在哪、何時不引入新中間件。Day 22 的模型選擇、Day 23 的「先檢索再生成」、Day 27 的「環境可複製」,都是品味——用約束換可維護性,而不是用生成速度換倉庫膨脹。
把下面這頁放進 repo(例如 docs/ai-dod.md),並在 PR 範本勾選。這是完賽後唯一必須留下的操作文件。DoD 不是給模型看的禮貌用語,而是合併條件:缺測試、diff 無法解釋、密鑰進庫、SQL 直接打正式環境、或無法 revert,都等於未完成。人可以不同意某一條的寬嚴,但不能在沒有替代閘門的情況下刪掉整類檢查。
# Definition of Done — AI-generated changes
## 1. Scope
- [ ] 任務有書面完成條件(行為、非目標、最大 diff 範圍)
- [ ] Context 只含必要檔案;未提供的路徑不得當已存在
## 2. Tests
- [ ] 新增或更新自動化測試,涵蓋主路徑與至少一個失敗路徑
- [ ] 測試在 Sandbox 或 CI 執行通過(指令見 AGENTS.md)
- [ ] 禁止只新增永遠為真的 assertion
## 3. Review
- [ ] 人讀完 diff:錯誤處理、並發、I/O、授權
- [ ] 不明瞭的生成程式碼:刪除或改寫到可解釋,不合併「先過再說」
## 4. Secrets & data
- [ ] 無真實密鑰、token、連線字串進入 git 或 Prompt 紀錄
- [ ] `.env` 未提交;`.env.example` 已同步變數名
- [ ] 產出的 SQL/shell 未對 production 自動執行
## 5. Security
- [ ] 外部輸入視為不可信(含使用者貼進 LLM 的文字)
- [ ] 新增的工具呼叫有允許清單與逾時
- [ ] 依賴與授權變更有人確認
## 6. Rollback
- [ ] 可透過單一 git revert 或 feature flag 撤回
- [ ] migration 有向下/向前說明;資料變更可停損
- [ ] 監控:至少知道失敗會出現在哪裡(log / 指標)
未勾完 = 未完成。模型說「應該可以」不算證據。
配套最小目錄(呼應 Day 04、27、28):
| 路徑 | 用途 |
|---|---|
AGENTS.md |
如何建置、測試、何謂完成 |
prompts/ |
版本化 Prompt 與 schema |
eval/ |
金樣例;改 Prompt 必跑 |
.env.example |
可提交的變數清單 |
docs/ai-dod.md |
上面這份 DoD |
開發者核心競爭力因此變得很具體:你能不能寫出這份 DoD、能不能在 Review 時執行它、能不能在模型換廠商後仍然成立。工具槽位會變(Day 29),契約與閘門不應該變。
注意事項與常見失敗 (Pitfalls)
AGENTS.md 進 repo。本日總結 (Takeaways)
明日預告 (Next)
系列完結,後續可把 Workflow 模組放進團隊 repo 持續迭代。