ステータス: 実験的。2026.1.9 で追加。WhatsApp(Webチャネル)のみ。
概要
ブロードキャストグループは、同じ受信メッセージに対して複数のエージェントを実行します。各エージェントは独自の分離されたセッションでメッセージを処理し、独自の返信を投稿するため、1つの WhatsApp 番号で、1つのグループチャットまたは DM 内に専門化されたエージェントのチームをホストできます。 ブロードキャストグループは、チャネル許可リストとグループ有効化ルールの後に評価されます。WhatsApp グループでは、OpenClaw が通常返信する場面(例: メンション時。グループ設定に依存)でブロードキャストが発生します。これはどのエージェントが実行されるかだけを変更し、メッセージが処理対象になるかどうかは変更しません。 ライブ WhatsApp QA レーンにはwhatsapp-broadcast-group-fanout が含まれており、メンションされた1つのグループメッセージから、設定された2つのエージェントによる異なる可視返信が生成されることを検証します。
設定
基本設定
トップレベルのbroadcast セクションを追加します(bindings の隣)。キーは WhatsApp ピア ID、値はエージェント ID の配列です。
- グループチャット: グループ JID(例:
120363403215116621@g.us) - DM: 送信者の E.164 電話番号(例:
+15551234567)
agents.list に存在している必要があります。設定検証は不明な ID を報告し、ランタイムは Broadcast agent <id> not found in agents.list; skipping 警告とともにそれらをスキップします。
処理戦略
broadcast.strategy は、エージェントがメッセージを処理する方法を設定します。
| 戦略 | 動作 |
|---|---|
parallel(デフォルト) | すべてのエージェントが同時に処理します。返信は任意の順序で到着します。 |
sequential | エージェントは配列順に処理します。それぞれ前の処理完了を待ちます。 |
完全な例
仕組み
メッセージフロー
ブロードキャストが適用される場合
- 一覧に含まれるすべてのエージェントがメッセージを処理します。
- 各エージェントには独自のセッションキーと分離されたコンテキストがあります。
- エージェントは並列(デフォルト)または逐次で処理します。
- 音声添付はファンアウト前に一度だけ文字起こしされるため、エージェントは個別に STT 呼び出しを行う代わりに1つのトランスクリプトを共有します。
ブロードキャストグループは、チャネル許可リストやグループ有効化ルール(メンション、コマンドなど)をバイパスしません。メッセージが処理対象になったときに、どのエージェントが実行されるか だけを変更します。
セッション分離
ブロードキャストグループ内の各エージェントは、以下を完全に別々に保持します。- セッションキー(
agent:alfred:whatsapp:group:120363...とagent:baerbel:whatsapp:group:120363...) - 会話履歴(エージェントは他のエージェントの返信を見ません)
- ワークスペース(設定されている場合は別々のサンドボックス)
- ツールアクセス(異なる許可/拒否リスト)
- メモリ/コンテキスト(別々の
IDENTITY.md、SOUL.mdなど)
例: 分離されたセッション
エージェント["alfred", "baerbel"] を持つグループ 120363403215116621@g.us では次のようになります。
- Alfred のコンテキスト
- Baerbel のコンテキスト
ユースケース
- 専門化されたエージェントチーム:
code-reviewer、security-auditor、test-generator、docs-checkerが、それぞれ自分の観点から同じメッセージに回答する開発グループ。 - 多言語サポート:
support-en、support-de、support-esがそれぞれの言語で応答する1つのサポートチャット。 - 品質保証:
support-agentが回答し、qa-agentはレビューして問題を見つけた場合にのみ応答します。 - タスク自動化:
task-tracker、time-logger、report-generatorが同じステータス更新をすべて処理します。
ベストプラクティス
1. エージェントの責務を絞る
1. エージェントの責務を絞る
1つの汎用的な「dev-helper」エージェントではなく、各エージェントに単一で明確な責務(
formatter、linter、tester)を与えます。2. 説明的な ID と名前を使う
2. 説明的な ID と名前を使う
3. 異なるツールアクセスを設定する
3. 異なるツールアクセスを設定する
reviewer は読み取り専用です。fixer は読み取りと書き込みができます。4. パフォーマンスを監視する
4. パフォーマンスを監視する
エージェントが多い場合は、
"strategy": "parallel"(デフォルト)を優先し、ブロードキャストグループのエージェント数を少数に抑え、単純なエージェントにはより高速なモデルを使用します。5. 失敗は分離されたままにする
5. 失敗は分離されたままにする
エージェントは独立して失敗します。あるエージェントのエラーはログに記録され(
Broadcast agent <id> failed: ...)、他のエージェントをブロックしません。互換性
プロバイダー
ブロードキャストグループは現在 WhatsApp(Webチャネル)のみに実装されています。他のチャネルはbroadcast 設定を無視します。
ルーティング
ブロードキャストグループは既存のルーティングと併用できます。GROUP_A: alfred だけが応答します(通常のルーティング)。GROUP_B: agent1 と agent2 が応答します(ブロードキャスト)。
優先順位:
broadcast は通常のルートバインディングより優先されます。設定済み ACP バインディング(bindings[].type="acp")は排他的です。一致した場合、OpenClaw はファンアウトブロードキャストではなく、設定済み ACP セッションにディスパッチします。トラブルシューティング
エージェントが応答しない
エージェントが応答しない
確認:ファンアウトが成功すると、
- エージェント ID が
agents.listに存在する(設定検証は不明な ID を拒否します)。 - ピア ID 形式が正しい(
120363403215116621@g.usのようなグループ JID、または DM では+15551234567のような E.164)。 - メッセージが通常のゲートを通過している(メンション/有効化ルールは引き続き適用されます)。
Broadcasting message to <n> agents (<strategy>) がログに記録されます。1つのエージェントだけが応答する
1つのエージェントだけが応答する
原因: ピア ID が通常のルートバインディングには含まれているが
broadcast には含まれていない、または排他的な設定済み ACP バインディングに一致している可能性があります。修正: 通常ルートにバインドされたピアをブロードキャスト設定に追加するか、ファンアウトブロードキャストが必要な場合は設定済み ACP バインディングを削除または変更します。パフォーマンスの問題
パフォーマンスの問題
多数のエージェントで遅い場合は、グループごとのエージェント数を減らし、より軽量なモデルを使い、サンドボックスの起動時間を確認します。
例
例 1: コードレビューチーム
例 1: コードレビューチーム
例 2: 多言語パイプライン
例 2: 多言語パイプライン
API リファレンス
設定スキーマ
フィールド
エージェントを処理する方法です。
parallel はすべてのエージェントを同時に実行し、sequential は配列順に実行します。WhatsApp グループ JID または E.164 電話番号です。値は、そのピアからのメッセージをすべて処理するべきエージェント ID の配列です。
制限事項
- 最大エージェント数: ハードリミットはありませんが、多数のエージェント(10以上)は遅くなる可能性があります。
- 共有コンテキスト: エージェントは互いの応答を見ません(設計上)。
- メッセージ順序: 並列応答は任意の順序で到着する可能性があります。
- レート制限: すべての返信は1つの WhatsApp アカウントから送信されるため、すべてのエージェントの返信が同じ WhatsApp レート制限にカウントされます。