OpenClawSkills
GitHub
コア概念 • 5分で読める

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

WhatsApp メッセージを複数のエージェントにブロードキャスト

Experimental

ステータス:実験的(2026.1.9 で追加)

ブロードキャストグループにより、複数のエージェントが同じメッセージを同時に処理して応答できます。これにより、1つの電話番号を使用して、単一のWhatsAppグループまたはDMで協力する専門的なエージェントチームを作成できます。

現在の範囲:WhatsAppのみ(webチャンネル)。

ブロードキャストグループは、チャンネル許可リストとグループアクティベーションルールの後に評価されます。WhatsAppグループでは、これはOpenClawが通常返信するときにブロードキャストが発生することを意味します(例:メンション時、グループ設定に依存)。

Tutorial.step

Use Cases

1. 専門的なエージェントチーム

アトミックで焦点を絞った責任を持つ複数のエージェントを展開します:

Yaml
Group: "Development Team"
Agents:
  - CodeReviewer (reviews code snippets)
  - DocumentationBot (generates docs)
  - SecurityAuditor (checks for vulnerabilities)
  - TestGenerator (suggests test cases)

各エージェントは同じメッセージを処理し、専門的な視点を提供します。

2. 多言語サポート

Yaml
Group: "International Support"
Agents:
  - Agent_EN (responds in English)
  - Agent_DE (responds in German)
  - Agent_ES (responds in Spanish)

3. 品質保証ワークフロー

Yaml
Group: "Customer Support"
Agents:
  - SupportAgent (provides answer)
  - QAAgent (reviews quality, only responds if issues found)

4. タスク自動化

Yaml
Group: "Project Management"
Agents:
  - TaskTracker (updates task database)
  - TimeLogger (logs time spent)
  - ReportGenerator (creates summaries)
Tutorial.step

Configuration

トップレベルに ''broadcast'' セクションを追加します(''bindings'' の隣)。キーはWhatsAppのピアIDです:

- グループチャット:グループJID(例 ''[email protected]'')

- DMs: E.164 phone number (e.g. ''+15551234567'')

Json
{
  "broadcast": {
    "[email protected]": ["alfred", "baerbel", "assistant3"]
  }
}

結果:OpenClawがこのチャットで返信するとき、3つのエージェントすべてを実行します。

Processing Strategy

エージェントがメッセージを処理する方法を制御します:

並列(デフォルト):すべてのエージェントが同時に処理します:

Json
{
  "broadcast": {
    "strategy": "parallel",
    "[email protected]": ["alfred", "baerbel"]
  }
}

順次:エージェントが順序通りに処理します(1つは前の完了を待ちます):

Json
{
  "broadcast": {
    "strategy": "sequential",
    "[email protected]": ["alfred", "baerbel"]
  }
}
Tutorial.step

完全な例

Json
{
  "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"]
  }
}
Tutorial.step

仕組み

メッセージフロー

1. 着信メッセージがWhatsAppグループに到着します

2. ''ブロードキャストチェック'':システムがピアIDが ''broadcast'' にあるかを確認します

3. ブロードキャストリストにある場合:

- リストされたすべてのエージェントがメッセージを処理します

- 各エージェントは独自のセッションキーと分離されたコンテキストを持っています

- エージェントは並列(デフォルト)または順次で処理します

4. ブロードキャストリストにない場合:

- 通常のルーティングが適用されます(最初に一致するバインディング)

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

セッション分離

ブロードキャストグループの各エージェントは完全に独立したものを維持します:

- ''セッションキー''(''agent:alfred:whatsapp:group:120363...'' vs ''agent:baerbel:whatsapp:group:120363...'')

- 会話履歴(エージェントは他のエージェントのメッセージを見ません)

- ワークスペース(設定されている場合は別のサンドボックス)

- ツールアクセス(異なる許可/拒否リスト)

- メモリ/コンテキスト(別のIDENTITY.md、SOUL.mdなど)

- グループコンテキストバッファ(コンテキストに使用される最近のグループメッセージ)はピアごとに共有されるため、すべてのブロードキャストエージェントはトリガー時に同じコンテキストを確認します

これにより、各エージェントは以下を持つことができます:

- 異なる個性

- 異なるツールアクセス(例:読み取り専用と読み書き)

Tutorial.step

ベストプラクティス

1. エージェントをフォーカスさせる

各エージェントを単一の明確な責任で設計します。

2. 説明的な名前を使用する

各エージェントの役割を明確にします。

3. 異なるツールアクセスを設定する

エージェントに必要なツールのみを与えます。

4. パフォーマンスを監視する

多くのエージェントの場合、''"strategy": "parallel"'' の使用、グループサイズの制限、より高速なモデルの使用を検討してください。

5. 失敗を優雅に処理する

エージェントは独立して失敗します。1つのエージェントのエラーは他のエージェントをブロックしません。

Tutorial.step

トラブルシューティング

エージェントが応答しない

Check:

1. エージェントIDが ''agents.list'' に存在します

2. ピアIDの形式が正しい(例 ''[email protected]'')

3. エージェントが拒否リストにありません

デバッグ:

Bash
tail -f ~/.openclaw/logs/gateway.log | grep broadcast

1つのエージェントのみが応答する

原因:ピアIDが ''bindings'' にあるが ''broadcast'' にない可能性があります。

修正:ブロードキャスト設定に追加するか、バインディングから削除します。

Tutorial.step

See Also