狀態: 實驗性。於 2026.1.9 新增。僅限 WhatsApp(網頁通道)。
概覽
廣播群組會在同一則傳入訊息上執行多個代理。每個代理都會在自己的隔離工作階段中處理訊息並發布自己的回覆,因此一個 WhatsApp 號碼可以在單一群組聊天或私訊中承載一組專門化代理團隊。 廣播群組會在通道允許清單與群組啟用規則之後評估。在 WhatsApp 群組中,當 OpenClaw 通常會回覆時(例如:依你的群組設定,在被提及時)就會進行廣播。它們只會改變哪些代理會執行,絕不改變訊息是否符合處理資格。 即時 WhatsApp QA 跑道包含whatsapp-broadcast-group-fanout,它會驗證一則被提及的群組訊息可以從兩個已設定的代理產生不同的可見回覆。
設定
基本設定
新增一個頂層broadcast 區段(與 bindings 並列)。鍵是 WhatsApp 對等方 ID,值是代理 ID 陣列:
- 群組聊天:群組 JID(例如
120363403215116621@g.us) - 私訊:傳送者 E.164 電話號碼(例如
+15551234567)
agents.list:設定驗證會回報未知 ID,執行階段會略過它們並發出 Broadcast agent <id> not found in agents.list; skipping 警告。
處理策略
broadcast.strategy 設定代理如何處理訊息:
| 策略 | 行為 |
|---|---|
parallel(預設) | 所有代理同時處理;回覆會以任意順序抵達。 |
sequential | 代理依陣列順序處理;每個代理都會等待前一個完成。 |
完整範例
運作方式
訊息流程
如果套用廣播
- 所有列出的代理都會處理該訊息。
- 每個代理都有自己的工作階段鍵與隔離的情境。
- 代理會平行(預設)或循序處理。
- 音訊附件會在展開傳送前轉錄一次,因此代理會共用一份轉錄,而不是分別發出 STT 呼叫。
廣播群組不會繞過通道允許清單或群組啟用規則(提及/命令等)。它們只會在訊息符合處理資格時改變_哪些代理會執行_。
工作階段隔離
廣播群組中的每個代理都會維護完全分離的:- 工作階段鍵(
agent:alfred:whatsapp:group:120363...與agent:baerbel:whatsapp:group:120363...) - 對話歷史(代理看不到其他代理的回覆)
- 工作區(如有設定,則為分離的沙箱)
- 工具存取(不同的允許/拒絕清單)
- 記憶/情境(分離的
IDENTITY.md、SOUL.md等)
範例:隔離的工作階段
在群組120363403215116621@g.us 中搭配代理 ["alfred", "baerbel"]:
- Alfred 的情境
- Baerbel 的情境
使用案例
- 專門化代理團隊:在開發群組中,
code-reviewer、security-auditor、test-generator和docs-checker各自從自己的角度回答同一則訊息。 - 多語言支援:一個支援聊天中有
support-en、support-de、support-es以各自語言回應。 - 品質保證:
support-agent回答,同時qa-agent進行審查,且只在發現問題時回應。 - 任務自動化:
task-tracker、time-logger和report-generator都會處理同一則狀態更新。
最佳實務
1. 讓代理保持專注
1. 讓代理保持專注
給每個代理一個單一且明確的職責(
formatter、linter、tester),而不是一個泛用的「dev-helper」代理。2. 使用描述性的 ID 與名稱
2. 使用描述性的 ID 與名稱
3. 設定不同的工具存取權
3. 設定不同的工具存取權
reviewer 是唯讀。fixer 可以讀取與寫入。4. 監控效能
4. 監控效能
若有許多代理,偏好使用
"strategy": "parallel"(預設)、將廣播群組限制在少數幾個代理,並為較簡單的代理使用較快的模型。5. 失敗保持隔離
5. 失敗保持隔離
代理會獨立失敗。某個代理的錯誤會被記錄(
Broadcast agent <id> failed: ...),且不會阻擋其他代理。相容性
提供者
廣播群組目前僅實作於 WhatsApp(網頁通道)。其他通道會忽略broadcast 設定。
路由
廣播群組可與現有路由並行運作:GROUP_A:只有 alfred 回應(一般路由)。GROUP_B:agent1 和 agent2 都會回應(廣播)。
優先順序:
broadcast 優先於一般路由繫結。已設定的 ACP 繫結(bindings[].type="acp")是排他的:當其中一個符合時,OpenClaw 會分派到已設定的 ACP 工作階段,而不是展開傳送廣播。疑難排解
代理未回應
代理未回應
檢查:成功展開傳送會記錄
- 代理 ID 存在於
agents.list(設定驗證會拒絕未知 ID)。 - 對等方 ID 格式正確(群組 JID 如
120363403215116621@g.us,或私訊使用 E.164 如+15551234567)。 - 訊息通過一般閘門(提及/啟用規則仍然適用)。
Broadcasting message to <n> agents (<strategy>)。只有一個代理回應
只有一個代理回應
原因: 對等方 ID 可能位於一般路由繫結中但不在
broadcast,或可能符合排他的已設定 ACP 繫結。修正: 將一般路由繫結的對等方新增到廣播設定,或如果想要展開傳送廣播,請移除/變更已設定的 ACP 繫結。效能問題
效能問題
如果許多代理導致速度變慢:減少每個群組的代理數量、使用較輕量的模型,並檢查沙箱啟動時間。
範例
範例 1:程式碼審查團隊
範例 1:程式碼審查團隊
範例 2:多語言管線
範例 2:多語言管線
API 參考
設定結構描述
欄位
如何處理代理。
parallel 會同時執行所有代理;sequential 會依陣列順序執行。WhatsApp 群組 JID 或 E.164 電話號碼。值是應全部處理來自該對等方訊息的代理 ID 陣列。
限制
- 代理數上限: 沒有硬性限制,但許多代理(10+)可能會變慢。
- 共用情境: 代理看不到彼此的回應(依設計如此)。
- 訊息順序: 平行回應可能會以任意順序抵達。
- 速率限制: 所有回覆都來自一個 WhatsApp 帳號,因此每個代理的回覆都會計入相同的 WhatsApp 速率限制。