整理自實際運行多 Agent 系統數個月的經驗。每個 pattern 都是因為「少了它就出事」才被加進來的。
有了一個 AI Agent,它很好用。於是加了第二個、第三個,事情開始失控:
- Agent A 和 Agent B 同時改了同一個檔案
- 一個 API 掛了,三個 Agent 同時瘋狂重試,帳單爆炸
- Sub-agent 做完事,靜靜消失,沒人知道它到底成功還是失敗
問題核心多半在協作這一層,不在 AI 本身。
下面這 5 個 pattern 都是在生產環境中反覆驗證過的,能讓 AI 團隊真正一起工作。
先看全局:多 Agent 系統長什麼樣?
一個典型的多 Agent 系統長這樣:
🎯 指揮者 Orchestrator
│
┌───────┼───────┬─────────┐
▼ ▼ ▼ ▼
🔧 執行者 A 🔧 執行者 B 🔍 審查者 📁 共享檔案系統
│ │ │
└───────┴───────────┴──→ 📁 共享檔案系統
關鍵架構特性:
| 特性 | 說明 |
|---|---|
| 階層式管理 | 一個指揮者統籌一切 |
| 無狀態的執行者 | 收到任務、執行、回報、結束 |
| 檔案即通訊 | 所有狀態都存在檔案裡 |
| 禁止橫向對話 | 執行者之間不直接溝通 |
為什麼是這個形狀?目前大多數 AI 工具給的 sub-agent 是無狀態的。它們沒有持久記憶,也沒有跟其他 agent 對話的能力。檔案系統是唯一可靠的協作機制。
Pattern 1:檔案白板(File Blackboard)

所有 Agent 透過檔案溝通,不透過訊息。檔案系統就是訊息匯流排。
問題
三個 Agent 需要協作,但它們:
- 沒有記憶:每次被喚起都是全新的
- 彼此隔離:沒有內建的通訊管道
- 隨時可能消失:session 說斷就斷
解法:把檔案系統當白板
workspace/
status.md ← 專案狀態(只有指揮者能改)
tasks/
task-001.md ← 任務信封(給執行者的指示)
task-002.md
artifacts/
task-001-out.md ← 執行者的產出
task-002-out.md
checkpoints/
checkpoint.json ← 當機復原用
存取規則
核心規則就一條:只有指揮者能寫全域狀態。 執行者只能寫自己被指定的輸出位置。
為什麼是檔案?
| 替代方案 | 問題 |
|---|---|
| 記憶體共享 | Agent 一當機就全沒了 |
| 訊息佇列 | 單機環境殺雞用牛刀 |
| 資料庫 | 多數 AI 工具操作文字檔更順手 |
| Agent 對 Agent API | 目前幾乎沒有平台支援 |
檔案的好處:可檢視(直接打開看)、耐久(不怕 session 斷掉)、可版控(放 git 就有完整歷史)。
Pattern 2:任務信封(Task Envelope)

不要只跟 sub-agent 說「做 X」。給它結構化的任務包。
問題
spawn 一個 sub-agent 然後說「幫忙分析這個資料」,它可能會:
- 分析錯誤的欄位
- 跑了 50 次工具呼叫(實際上只需要 5 次)
- 做完後只回一句「分析完了」,沒有要求的格式
解法:每個任務都包成信封
## 任務:analyze-q1-data
- **目標**:摘要 Q1 營收趨勢
- **驗收標準**:產出包含趨勢方向、前 3 大驅動因素、信心等級
- **輸入**:data/q1-revenue.csv(按產品線的季度營收)
- **輸出位置**:artifacts/analyze-q1-data.md
- **預算**:最多 5 次工具呼叫
- **停止條件**:如果資料檔不存在或格式錯誤,停下並回報
信封裡該有什麼?
| 欄位 | 沒有它會怎樣 |
|---|---|
| 目標 | Agent 自己猜要什麼 |
| 驗收標準 | 產出品質不可控 |
| 輸入 | Agent 可能讀錯檔案,或把整個目錄都讀一遍 |
| 輸出位置 | 結果不知道寫到哪裡去了 |
| 預算 | Agent 無限探索,帳單爆炸 |
| 停止條件 | 遇到問題卡住不動,也不回報 |
輕量版 vs 完整版
不是每個任務都需要完整信封。簡單規則:
- 3 步以內就能做完 → 口頭交代就好
- 有外部 API 或多檔案 → 用輕量信封(目標 + 輸入 + 輸出)
- 高風險或高成本 → 完整信封(含預算和停止條件)
Pattern 3:熔斷機制(Circuit Breaker)

追蹤每個 API 的連續失敗次數。三次就斷電,等一等,再試一次。
問題
Agent 打 API 碰到 429(速率限制)。它重試,再重試。同時第二個 Agent 也在重試,現在兩個都在瘋狂打同一個 API,讓速率限制更嚴重。第三個 Agent 切換到備用供應商,結果備用也被打爆了。
這就是重試風暴(Retry Storm),多 Agent 系統中最快燒光預算的方式。
解法:三態熔斷器
| 狀態 | 行為 | 轉換條件 |
|---|---|---|
| CLOSED(正常) | 所有呼叫正常進行 | 60 秒內連續失敗 3 次 → OPEN |
| OPEN(斷路) | 所有呼叫立即失敗,不實際執行 | 等 5 分鐘 → HALF-OPEN |
| HALF-OPEN(試探) | 只放行一個呼叫 | 成功 → CLOSED;失敗 → OPEN(冷卻加倍) |
什麼錯誤該觸發熔斷?
不是所有錯誤都一樣:
| 錯誤類型 | 觸發熔斷? | 原因 |
|---|---|---|
| 429(速率限制) | ✅ | 繼續打只會更糟 |
| 503(服務不可用) | ✅ | 對方掛了 |
| 網路逾時 | ✅ | 連線問題不會下一秒就好 |
| 401(認證失敗) | ❌ | 是設定問題,修 token 而不是等 |
| 400(請求錯誤) | ❌ | 是 bug,重試沒用 |
實際踩過的坑
沉默的 Proxy 當機: API proxy 掛了,每個請求都回一樣的 generic error。Agent 不停重試,因為錯誤看起來像暫時性的。
教訓: 連續多次以上收到一模一樣的錯誤,不管錯誤碼是什麼,直接觸發熔斷。一模一樣的連續錯誤等於系統性故障。
Pattern 4:人機升級(HITL Escalation)

知道什麼時候該問人,是 AI 系統最重要的能力之一。
三層升級制度
| 層級 | 風險 | Agent 行為 | 範例 |
|---|---|---|---|
| 🟢 自主 | 低,可回復 | 直接做 | 讀檔、寫草稿、跑測試 |
| 🟡 通知 | 中,重要節點 | 做完再通知人 | commit 程式碼、更新狀態 |
| 🔴 閘門 | 高,不可逆 | 停下來等人說好 | push 到 production、發送訊息、刪除資料 |
關鍵指標:升級率
理想的升級率是 10-15%:
- 太低(< 5%)→ AI 在做高風險的事情卻沒有通知,危險。
- 太高(> 30%)→ 人變成瓶頸,自動化失去意義。
- 10-15% → 大部分事情自動化,重要的事情有人把關。
升級時的資訊格式
當 Agent 升級到人類時,不要只說「不確定」,給決策所需的完整資訊:
## 需要決策
**情境**:正在部署新版本到生產環境
**問題**:測試全過,但有一個 warning 跟記憶體使用有關
**選項**:
A. 照常部署(warning 歷史上沒有造成問題)
B. 先修 warning 再部署(預估延遲 2 小時)
C. 部署到 staging 先觀察一天
**建議**:選 A,因為 [原因]
**等待回覆中……**
Pattern 5:模型選擇(Model Selection)

貴的模型用來思考,便宜的模型用來執行,反過來就是浪費錢。
二分法則
多 Agent 成本控制最核心的一條規則:
- 需要判斷力(策略 / 分析 / 審查)→ 貴的模型
- 不需要判斷力(寫 code / 格式化 / 抓資料)→ 便宜的模型
常見配置
| 角色 | 模型等級 | 理由 |
|---|---|---|
| 指揮者 | 貴 | 它做所有重要決策。省這裡虧全局 |
| 寫 code | 便宜 | 產出可以跑測試驗證 |
| 審 code | 貴 | 需要抓到別人漏掉的問題 |
| 收集資料 | 便宜 | 機械式抓取 + 格式化 |
| 分析資料 | 貴 | 解讀、找 pattern、下判斷 |
| 跑測試 | 便宜 | 結果是 pass/fail,不需要創意 |
| 格式轉換 | 最便宜 | 純粹的資料轉換 |
省錢的 80/20 法則
四個改動就能省下大部分多 Agent 成本:
- 模型分級(貴的思考,便宜的執行)→ 影響最大
- 傳路徑不傳內容(讓 agent 自己讀檔)→ 省 token
- 壓縮已完成的階段(只留一句話摘要)→ 省 token
- 任務信封裡設預算上限 → 避免異常值
總結:5 個 Pattern 的關係
這些 pattern 不是各自獨立的,它們組成一個完整的運作體系:
| Pattern | 解決的問題 | 沒有它會怎樣 |
|---|---|---|
| 檔案白板 | Agent 之間怎麼溝通 | 狀態衝突、資料遺失 |
| 任務信封 | 怎麼清楚交代任務 | 產出品質不可控、預算爆炸 |
| 熔斷機制 | API 故障怎麼辦 | 重試風暴、帳單炸裂 |
| 人機升級 | 什麼時候該問人 | 高風險操作沒人把關 |
| 模型選擇 | 用哪個模型 | 全用貴的白花錢,全用便宜的品質崩 |
開始動手
最小可行的順序:
- 建一個共享目錄(
workspace/status.md+tasks/+artifacts/) - 第一個任務用信封包(不需要完整版,目標 + 輸入 + 輸出就夠)
- 加熔斷機制(用 JSON 檔追蹤 API 失敗次數)
- 決定哪些操作需要人批准(先從「會影響外部系統」的開始)
這四步做完,就有一個可運作的多 Agent 協作系統了。
想要完整的 pattern 文件、程式碼範本和更多實戰案例,整理成了開源 repo:
👉 Orchestration Playbook on GitHub
MIT 授權,歡迎取用。
延伸閱讀
小企鵝的經驗
OpenClaw 跑的 Opus / Sonnet / ChatGPT 三 agent 系統,這 5 個 pattern 是踩坑後一條一條長出來的。最初幾版兩個 agent 同時改同一個檔,狀態就花了;API 失敗時三個 agent 一起重試,帳單馬上跳。後來把共享狀態收斂到檔案系統、任務都包成信封、API 加熔斷、重要操作走人工 gate,整個系統才穩下來。模型分級(指揮用貴的,執行用便宜的)是後期才放上去,省下來的 token 比想像中多。
常見問題
Q: 什麼是 AI Agent 的 Orchestration?
Orchestration 是指一個主要的 Agent(指揮者)負責分配任務、收集結果、處理失敗,而其他 Agent 專心執行各自被分配的工作。就像樂團指揮一樣,確保每個樂手在對的時間演奏對的樂曲。
Q: 為什麼 AI Agent 不能直接互相對話?
目前大多數 AI 工具(Claude Code、Codex 等)的 Sub-agent 是無狀態的。它們被生出來、執行任務、回報結果後就消失了。沒有持久的記憶,也沒有內建的通訊機制。所以需要透過檔案系統來間接溝通。
Q: Circuit Breaker 在 AI 系統中的作用是什麼?
Circuit Breaker(熔斷機制)會追蹤 API 呼叫的連續失敗次數。當連續失敗達到閾值時,自動停止呼叫一段時間,避免所有 Agent 同時重試造成的『重試風暴』,這是多 Agent 系統中最燒錢的故障模式。
整理:Penna|小企鵝 Penchan