AI Sandwich——工作流整合的正確姿勢

一句話總結:Human Decision → AI Execution → Human Review。永遠不要反過來——讓 AI 做決策、人做執行。那樣你就只是 AI 的打字員。

結論先講:需求理解自己做、核心邏輯自己寫、Review 自己來。AI 處理中間那些機械性的工作:boilerplate、測試骨架、文檔初版。

日常開發中 AI 的正確定位

一個健康的 AI 輔助開發流程:

需求理解 [人] → 方案設計 [人+AI] → 核心邏輯 [人] → 樣板程式碼 [AI] → 測試 [AI+人] → 文檔 [AI+人] → Review [人]

需求理解 [人]: AI 不應該參與。需求涉及業務邏輯、stakeholder 的隱含期待、組織政治、歷史 context——這些都不是 AI 能處理的。你可以用 AI 整理需求文件的格式,但理解本身必須是你做的。

方案設計 [人 + AI]: AI 是 brainstorming 的夥伴。但給它 context:「我在設計 rate limiter,考慮 token bucket、sliding window、fixed window 三種方案,使用場景是 API gateway 每用戶限速,列出 trade-offs。」——不是「幫我設計一個 rate limiter」,後者你會得到一個不考慮你具體約束的通用方案。

核心邏輯 [人]: 你系統中最重要、最複雜的邏輯,自己寫。理由:這是你最需要深度理解的部分、出 bug 影響最大、AI 最容易在邊界條件犯錯、你需要在凌晨三點被叫起來時立刻看懂這段 code。

樣板程式碼 [AI]: CRUD endpoint、migration file、config boilerplate、DTO 定義——模式固定、AI 正確率高、review 成本低、手動寫價值低。

測試 [AI + 人]: AI 很擅長生成測試骨架和 happy path。但你需要人工補充邊界條件、錯誤路徑、併發場景、業務規則的特殊情況。

// AI 生成的測試(通常只有 happy path)
test('should create user', async () => {
  const result = await createUser({ name: 'John', email: 'john@test.com' });
  expect(result.name).toBe('John');
});
 
// 你需要手動補充的
test('should reject duplicate email', async () => { /* ... */ });
test('should handle concurrent creation with same email', async () => { /* ... */ });
test('should validate email format', async () => { /* ... */ });
test('should sanitize XSS in name field', async () => { /* ... */ });

AI 生成了一個測試,你需要補四個。那個比例大概就是這樣——AI 給你 20%,你補 80%,但那 20% 的骨架幫你省了設定 test suite 的時間。

文檔 [AI + 人]: AI 根據 code 生成初版文檔。你確認準確性、補充「為什麼」的部分、加入使用範例和注意事項。AI 只能描述「是什麼」,不能解釋「為什麼」。

Review [人]: Code review 在 AI 時代不是變得不重要,是變得更重要。AI 的 code 可能通過所有表面檢查(語法正確、格式統一、測試通過)但在架構合理性或安全性上有問題。

The AI Sandwich

Human Decision → AI Execution → Human Review
  (人做決策)     (AI 執行)      (人做審查)
  1. 你決定要做什麼、為什麼做、怎麼做
  2. AI 執行機械性的部分——寫 code、跑測試、生成文檔
  3. 你審查結果是否正確、是否符合預期

永遠不要反過來。讓 AI 做決策、人做執行?那你就是 AI 的打字員。

AI 失敗的真實案例

沒有領域知識就使用 AI 所造成的真實失敗:

情境發生了什麼根本原因
用 AI 寫 Terraformsecurity group 開了 0.0.0.0/0 inbound使用者不懂 networking
用 AI 設計 DB schema所有資料塞一張表不懂資料庫設計
用 AI 寫前端元件沒有 keyboard navigation 和 ARIA不懂 accessibility
用 AI 寫效能優化在不需要的地方加 useMemo,反而更慢不懂 React rendering
用 AI 寫單元測試只測 happy path不懂測試策略

每個案例的共同點:AI 產出了表面上合理的結果,但實際上是錯的或不完整的,而使用者缺乏判斷能力。

這篇的重點回顧

AI Sandwich:人做決策、AI 執行、人做審查。需求理解和核心邏輯自己來,boilerplate 和測試骨架讓 AI 生成。Review 在 AI 時代更重要不是更不重要。沒有領域知識用 AI 等於加速製造問題。

系列文章:

「AI 是副駕駛不是正駕駛——你可以讓它幫你看路,但方向盤必須握在你手上。」