ブロードキャストグループ

ステータス: 実験的機能 バージョン: 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"]
  }
}

動作の仕組み

メッセージフロー

  1. 受信メッセージがWhatsAppグループに到着
  2. ブロードキャストチェック:ピアIDがbroadcastに含まれているか確認
  3. ブロードキャストリストに含まれている場合
    • リストされたすべてのAgentがメッセージを処理
    • 各Agentは独自のセッションキーと隔離されたコンテキストを持つ
    • Agentは並列(デフォルト)または逐次で処理
  4. ブロードキャストリストに含まれていない場合
    • 通常のルーティングが適用(最初にマッチするバインディング)

注意:ブロードキャストグループはチャンネル許可リストやグループアクティベーションルール(メンション/コマンドなど)をバイパスしません。メッセージが処理対象となった場合に、_どのAgentが実行されるか_を変更するだけです。

セッション隔離

ブロードキャストグループの各Agentは完全に独立した以下を維持します:

  • セッションキーagent:alfred:whatsapp:group:120363... vs agent: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の両方が応答(ブロードキャスト)

優先順位: broadcastbindingsより優先されます。

トラブルシューティング

Agentが応答しない

確認事項:

  1. Agent IDがagents.listに存在するか
  2. ピアIDの形式が正しいか(例:[email protected]
  3. 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の配列

制限事項

  1. 最大Agent数: ハードリミットはありませんが、10以上のAgentは遅くなる可能性があります
  2. コンテキスト共有: Agentは互いの応答を参照できません(設計上の意図)
  3. メッセージの順序: 並列処理では応答が任意の順序で到着する可能性があります
  4. レート制限: すべてのAgentがWhatsAppのレート制限にカウントされます

今後の拡張予定

計画中の機能:

  • 共有コンテキストモード(Agentが互いの応答を参照可能に)
  • Agent間連携(Agent同士のシグナル送信)
  • 動的Agent選択(メッセージ内容に基づくAgent選択)
  • Agent優先度(一部のAgentが先に応答)

関連項目