ブロードキャストグループ
ステータス: 実験的機能 バージョン: 2026.1.9で追加
概要
ブロードキャストグループを使用すると、複数のAgentが同じメッセージを同時に処理し応答できます。1つの電話番号を使いながら、単一のWhatsAppグループやDMで連携する専門Agentチームを構築できます。
対応範囲:WhatsAppのみ(Webチャンネル)
ブロードキャストグループはチャンネル許可リストとグループアクティベーションルールの後に評価されます。WhatsAppグループでは、OpenClawが通常応答するタイミング(例:メンション時。グループ設定に依存)でブロードキャストが行われます。
ユースケース
1. 専門Agentチーム
原子的で焦点を絞った責務を持つ複数のAgentをデプロイ:
グループ: "Development Team"
Agent:
- CodeReviewer(コードスニペットのレビュー)
- DocumentationBot(ドキュメント生成)
- SecurityAuditor(脆弱性チェック)
- TestGenerator(テストケース提案)
各Agentが同じメッセージを処理し、専門的な視点を提供します。
2. 多言語サポート
グループ: "International Support"
Agent:
- Agent_EN(英語で応答)
- Agent_DE(ドイツ語で応答)
- Agent_ES(スペイン語で応答)
3. 品質保証ワークフロー
グループ: "Customer Support"
Agent:
- SupportAgent(回答を提供)
- QAAgent(品質を確認、問題がある場合のみ応答)
4. タスク自動化
グループ: "Project Management"
Agent:
- TaskTracker(タスクデータベースを更新)
- TimeLogger(工数を記録)
- ReportGenerator(サマリーを作成)
設定
基本セットアップ
トップレベルにbroadcastセクションを追加します(bindingsと同階層)。キーはWhatsAppピアIDです:
- グループチャット:グループJID(例:
[email protected]) - DM:E.164電話番号(例:
+15551234567)
{
"broadcast": {
"[email protected]": ["alfred", "baerbel", "assistant3"]
}
}
結果: このチャットでOpenClawが応答する際、3つのAgentすべてが実行されます。
処理戦略
Agentがメッセージを処理する方法を制御します:
並列処理(デフォルト)
すべてのAgentが同時に処理します:
{
"broadcast": {
"strategy": "parallel",
"[email protected]": ["alfred", "baerbel"]
}
}
逐次処理
Agentが順番に処理します(前のAgentの完了を待機):
{
"broadcast": {
"strategy": "sequential",
"[email protected]": ["alfred", "baerbel"]
}
}
完全な設定例
{
"agents": {
"list": [
{
"id": "code-reviewer",
"name": "Code Reviewer",
"workspace": "/path/to/code-reviewer",
"sandbox": { "mode": "all" }
},
{
"id": "security-auditor",
"name": "Security Auditor",
"workspace": "/path/to/security-auditor",
"sandbox": { "mode": "all" }
},
{
"id": "docs-generator",
"name": "Documentation Generator",
"workspace": "/path/to/docs-generator",
"sandbox": { "mode": "all" }
}
]
},
"broadcast": {
"strategy": "parallel",
"[email protected]": ["code-reviewer", "security-auditor", "docs-generator"],
"[email protected]": ["support-en", "support-de"],
"+15555550123": ["assistant", "logger"]
}
}
動作の仕組み
メッセージフロー
- 受信メッセージがWhatsAppグループに到着
- ブロードキャストチェック:ピアIDが
broadcastに含まれているか確認 - ブロードキャストリストに含まれている場合:
- リストされたすべてのAgentがメッセージを処理
- 各Agentは独自のセッションキーと隔離されたコンテキストを持つ
- Agentは並列(デフォルト)または逐次で処理
- ブロードキャストリストに含まれていない場合:
- 通常のルーティングが適用(最初にマッチするバインディング)
注意:ブロードキャストグループはチャンネル許可リストやグループアクティベーションルール(メンション/コマンドなど)をバイパスしません。メッセージが処理対象となった場合に、_どのAgentが実行されるか_を変更するだけです。
セッション隔離
ブロードキャストグループの各Agentは完全に独立した以下を維持します:
- セッションキー(
agent:alfred:whatsapp:group:120363...vsagent:baerbel:whatsapp:group:120363...) - 会話履歴(他のAgentのメッセージは見えない)
- ワークスペース(設定されている場合は独立したサンドボックス)
- ツールアクセス(異なるallow/denyリスト)
- メモリ/コンテキスト(独立したIDENTITY.md、SOUL.mdなど)
- グループコンテキストバッファ(コンテキストに使用される最近のグループメッセージ)はピアごとに共有されるため、すべてのブロードキャストAgentがトリガー時に同じコンテキストを参照
これにより、各Agentに以下を設定できます:
- 異なるパーソナリティ
- 異なるツールアクセス(例:読み取り専用 vs 読み書き可能)
- 異なるモデル(例:opus vs sonnet)
- 異なるスキルのインストール
例:隔離されたセッション
グループ[email protected]でAgent["alfred", "baerbel"]の場合:
Alfredのコンテキスト:
セッション: agent:alfred:whatsapp:group:[email protected]
履歴: [ユーザーメッセージ, alfredの過去の応答]
ワークスペース: /Users/pascal/openclaw-alfred/
ツール: read, write, exec
Barbelのコンテキスト:
セッション: agent:baerbel:whatsapp:group:[email protected]
履歴: [ユーザーメッセージ, barbelの過去の応答]
ワークスペース: /Users/pascal/openclaw-baerbel/
ツール: read only
ベストプラクティス
1. Agentの責務を明確に
各Agentに単一で明確な責務を設計してください:
{
"broadcast": {
"DEV_GROUP": ["formatter", "linter", "tester"]
}
}
各Agentが1つの仕事を担当するのが理想です。1つの汎用的な「dev-helper」Agentは避けてください。
2. わかりやすい名前を使用
各Agentの役割が明確になる名前を付けてください:
{
"agents": {
"security-scanner": { "name": "Security Scanner" },
"code-formatter": { "name": "Code Formatter" },
"test-generator": { "name": "Test Generator" }
}
}
3. ツールアクセスを適切に設定
各Agentに必要なツールのみを付与してください:
{
"agents": {
"reviewer": {
"tools": { "allow": ["read", "exec"] }
},
"fixer": {
"tools": { "allow": ["read", "write", "edit", "exec"] }
}
}
}
4. パフォーマンスの監視
多数のAgentを使用する場合は以下を検討してください:
- 速度のために
"strategy": "parallel"(デフォルト)を使用 - ブロードキャストグループのAgentを5〜10に制限
- シンプルなAgentにはより高速なモデルを使用
5. 障害への対処
Agentは独立して失敗します。1つのAgentのエラーは他のAgentをブロックしません:
メッセージ → [Agent A OK, Agent B エラー, Agent C OK]
結果: Agent AとCが応答、Agent Bはエラーをログに記録
互換性
プロバイダー
ブロードキャストグループは現在以下で動作します:
- WhatsApp(実装済み)
- Telegram(予定)
- Discord(予定)
- Slack(予定)
ルーティング
ブロードキャストグループは既存のルーティングと併用できます:
{
"bindings": [
{
"match": { "channel": "whatsapp", "peer": { "kind": "group", "id": "GROUP_A" } },
"agentId": "alfred"
}
],
"broadcast": {
"GROUP_B": ["agent1", "agent2"]
}
}
GROUP_A:alfredのみが応答(通常のルーティング)GROUP_B:agent1とagent2の両方が応答(ブロードキャスト)
優先順位: broadcastはbindingsより優先されます。
トラブルシューティング
Agentが応答しない
確認事項:
- Agent IDが
agents.listに存在するか - ピアIDの形式が正しいか(例:
[email protected]) - Agentがdenyリストに含まれていないか
デバッグ:
tail -f ~/.openclaw/logs/gateway.log | grep broadcast
1つのAgentしか応答しない
原因: ピアIDがbindingsに含まれているがbroadcastに含まれていない可能性があります。
対処: broadcast設定に追加するか、bindingsから削除してください。
パフォーマンスの問題
多数のAgentで遅い場合:
- グループあたりのAgent数を減らす
- より軽量なモデルを使用(opusの代わりにsonnet)
- サンドボックスの起動時間を確認
設定例
例1:コードレビューチーム
{
"broadcast": {
"strategy": "parallel",
"[email protected]": [
"code-formatter",
"security-scanner",
"test-coverage",
"docs-checker"
]
},
"agents": {
"list": [
{
"id": "code-formatter",
"workspace": "~/agents/formatter",
"tools": { "allow": ["read", "write"] }
},
{
"id": "security-scanner",
"workspace": "~/agents/security",
"tools": { "allow": ["read", "exec"] }
},
{
"id": "test-coverage",
"workspace": "~/agents/testing",
"tools": { "allow": ["read", "exec"] }
},
{ "id": "docs-checker", "workspace": "~/agents/docs", "tools": { "allow": ["read"] } }
]
}
}
ユーザーがコードスニペットを送信した場合の応答:
- code-formatter:「インデントを修正し、型ヒントを追加しました」
- security-scanner:「12行目にSQLインジェクションの脆弱性があります」
- test-coverage:「カバレッジは45%です。エラーケースのテストが不足しています」
- docs-checker:「関数
process_dataのdocstringがありません」
例2:多言語サポート
{
"broadcast": {
"strategy": "sequential",
"+15555550123": ["detect-language", "translator-en", "translator-de"]
},
"agents": {
"list": [
{ "id": "detect-language", "workspace": "~/agents/lang-detect" },
{ "id": "translator-en", "workspace": "~/agents/translate-en" },
{ "id": "translator-de", "workspace": "~/agents/translate-de" }
]
}
}
APIリファレンス
設定スキーマ
interface OpenClawConfig {
broadcast?: {
strategy?: "parallel" | "sequential";
[peerId: string]: string[];
};
}
フィールド
strategy(任意):Agentの処理方法"parallel"(デフォルト):すべてのAgentが同時に処理"sequential":配列の順序でAgentが処理
[peerId]:WhatsAppグループJID、E.164番号、またはその他のピアID- 値:メッセージを処理するAgent IDの配列
制限事項
- 最大Agent数: ハードリミットはありませんが、10以上のAgentは遅くなる可能性があります
- コンテキスト共有: Agentは互いの応答を参照できません(設計上の意図)
- メッセージの順序: 並列処理では応答が任意の順序で到着する可能性があります
- レート制限: すべてのAgentがWhatsAppのレート制限にカウントされます
今後の拡張予定
計画中の機能:
- 共有コンテキストモード(Agentが互いの応答を参照可能に)
- Agent間連携(Agent同士のシグナル送信)
- 動的Agent選択(メッセージ内容に基づくAgent選択)
- Agent優先度(一部のAgentが先に応答)