Перейти до основного вмісту
Статус: Експериментально. Додано у 2026.1.9.

Огляд

Групи трансляції дають змогу кільком агентам одночасно обробляти одне й те саме повідомлення та відповідати на нього. Це дає змогу створювати спеціалізовані команди агентів, які працюють разом в одній групі WhatsApp або DM — і все це з використанням одного номера телефону. Поточний обсяг: лише WhatsApp (вебканал). Групи трансляції оцінюються після списків дозволених каналів і правил активації груп. У групах WhatsApp це означає, що трансляції відбуваються тоді, коли OpenClaw зазвичай відповів би (наприклад: при згадці, залежно від налаштувань вашої групи). Жива лінія QA WhatsApp включає whatsapp-broadcast-group-fanout, яка перевіряє, що одне згадане групове повідомлення може створити різні видимі відповіді від двох налаштованих агентів.

Випадки використання

Розгортайте кількох агентів з атомарними, сфокусованими обов’язками:
Group: "Development Team"
Agents:
  - CodeReviewer (reviews code snippets)
  - DocumentationBot (generates docs)
  - SecurityAuditor (checks for vulnerabilities)
  - TestGenerator (suggests test cases)
Кожен агент обробляє те саме повідомлення й надає свою спеціалізовану перспективу.
Group: "International Support"
Agents:
  - Agent_EN (responds in English)
  - Agent_DE (responds in German)
  - Agent_ES (responds in Spanish)
Group: "Customer Support"
Agents:
  - SupportAgent (provides answer)
  - QAAgent (reviews quality, only responds if issues found)
Group: "Project Management"
Agents:
  - TaskTracker (updates task database)
  - TimeLogger (logs time spent)
  - ReportGenerator (creates summaries)

Конфігурація

Базове налаштування

Додайте розділ верхнього рівня broadcast (поруч із bindings). Ключі — це peer ID WhatsApp:
  • групові чати: JID групи (наприклад, 120363403215116621@g.us)
  • DM: номер телефону у форматі E.164 (наприклад, +15551234567)
{
  "broadcast": {
    "120363403215116621@g.us": ["alfred", "baerbel", "assistant3"]
  }
}
Результат: Коли OpenClaw відповів би в цьому чаті, він запустить усіх трьох агентів.

Стратегія обробки

Керуйте тим, як агенти обробляють повідомлення:
Усі агенти обробляють одночасно:
{
  "broadcast": {
    "strategy": "parallel",
    "120363403215116621@g.us": ["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",
    "120363403215116621@g.us": ["code-reviewer", "security-auditor", "docs-generator"],
    "120363424282127706@g.us": ["support-en", "support-de"],
    "+15555550123": ["assistant", "logger"]
  }
}

Як це працює

Потік повідомлень

1

Incoming message arrives

Надходить повідомлення групи WhatsApp або DM.
2

Route and admission

OpenClaw застосовує списки дозволених каналів, правила активації груп і налаштоване володіння прив’язками ACP.
3

Broadcast check

Якщо жодна налаштована прив’язка ACP не володіє маршрутом, OpenClaw перевіряє, чи є peer ID у broadcast.
4

If broadcast applies

  • Усі перелічені агенти обробляють повідомлення.
  • Кожен агент має власний ключ сеансу та ізольований контекст.
  • Агенти обробляють паралельно (типово) або послідовно.
5

If broadcast does not apply

OpenClaw відправляє звичайний маршрут або налаштований маршрут сеансу ACP, вибраний під час маршрутизації.
Групи трансляції не обходять списки дозволених каналів або правила активації груп (згадки/команди тощо). Вони лише змінюють які агенти запускаються, коли повідомлення придатне для обробки.

Ізоляція сеансів

Кожен агент у групі трансляції підтримує повністю окремі:
  • Ключі сеансу (agent:alfred:whatsapp:group:120363... проти agent:baerbel:whatsapp:group:120363...)
  • Історію розмови (агент не бачить повідомлення інших агентів)
  • Робочий простір (окремі пісочниці, якщо налаштовано)
  • Доступ до інструментів (різні списки дозволів/заборон)
  • Пам’ять/контекст (окремі IDENTITY.md, SOUL.md тощо)
  • Буфер контексту групи (нещодавні групові повідомлення, що використовуються як контекст) спільний для кожного peer, тому всі агенти трансляції бачать той самий контекст під час запуску
Це дає змогу кожному агенту мати:
  • Різні особистості
  • Різний доступ до інструментів (наприклад, лише читання проти читання й запису)
  • Різні моделі (наприклад, opus проти sonnet)
  • Різні встановлені Skills

Приклад: ізольовані сеанси

У групі 120363403215116621@g.us з агентами ["alfred", "baerbel"]:
Session: agent:alfred:whatsapp:group:120363403215116621@g.us
History: [user message, alfred's previous responses]
Workspace: /Users/user/openclaw-alfred/
Tools: read, write, exec

Найкращі практики

Проєктуйте кожного агента з однією чіткою відповідальністю:
{
  "broadcast": {
    "DEV_GROUP": ["formatter", "linter", "tester"]
  }
}
Добре: Кожен агент має одну задачу. ❌ Погано: Один універсальний агент “dev-helper”.
Зробіть очевидним, що робить кожен агент:
{
  "agents": {
    "security-scanner": { "name": "Security Scanner" },
    "code-formatter": { "name": "Code Formatter" },
    "test-generator": { "name": "Test Generator" }
  }
}
Надавайте агентам лише ті інструменти, які їм потрібні:
{
  "agents": {
    "reviewer": {
      "tools": { "allow": ["read", "exec"] }
    },
    "fixer": {
      "tools": { "allow": ["read", "write", "edit", "exec"] }
    }
  }
}
reviewer має доступ лише для читання. fixer може читати й записувати.
За великої кількості агентів враховуйте:
  • Використання "strategy": "parallel" (типово) для швидкості
  • Обмеження груп трансляції до 5-10 агентів
  • Використання швидших моделей для простіших агентів
Агенти дають збої незалежно. Помилка одного агента не блокує інших:
Message → [Agent A ✓, Agent B ✗ error, Agent C ✓]
Result: Agent A and C respond, Agent B logs error

Сумісність

Провайдери

Групи трансляції наразі працюють із:
  • ✅ 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 має пріоритет над звичайними прив’язками маршрутів. Налаштовані прив’язки ACP (bindings[].type="acp") є ексклюзивними: коли одна з них збігається, OpenClaw відправляє до налаштованого сеансу ACP замість fan-out трансляції.

Усунення несправностей

Перевірте:
  1. ID агентів існують у agents.list.
  2. Формат peer ID правильний (наприклад, 120363403215116621@g.us).
  3. Агентів немає в списках заборони.
Налагодження:
tail -f ~/.openclaw/logs/gateway.log | grep broadcast
Причина: Peer ID може бути у звичайних прив’язках маршрутів, але не в broadcast, або він може відповідати ексклюзивній налаштованій прив’язці ACP.Виправлення: Додайте peers, прив’язані до звичайних маршрутів, у конфігурацію трансляції або видаліть/змініть налаштовану прив’язку ACP, якщо потрібна fan-out трансляція.
Якщо робота повільна з великою кількістю агентів:
  • Зменште кількість агентів на групу.
  • Використовуйте легші моделі (sonnet замість opus).
  • Перевірте час запуску пісочниці.

Приклади

{
  "broadcast": {
    "strategy": "parallel",
    "120363403215116621@g.us": [
      "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: “Fixed indentation and added type hints”
  • security-scanner: “⚠️ SQL injection vulnerability in line 12”
  • test-coverage: “Coverage is 45%, missing tests for error cases”
  • docs-checker: “Missing docstring for function process_data
{
  "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
"parallel" | "sequential"
за замовчуванням:"\"parallel\""
Як обробляти агентів. parallel запускає всіх агентів одночасно; sequential запускає їх у порядку масиву.
[peerId]
string[]
JID групи WhatsApp, номер E.164 або інший ідентифікатор peer. Значенням є масив ідентифікаторів агентів, які мають обробляти повідомлення.

Обмеження

  1. Максимальна кількість агентів: Жорсткого обмеження немає, але 10+ агентів можуть працювати повільно.
  2. Спільний контекст: Агенти не бачать відповіді одне одного (за задумом).
  3. Порядок повідомлень: Паралельні відповіді можуть надходити в будь-якому порядку.
  4. Обмеження швидкості: Усі агенти враховуються в обмеженнях швидкості WhatsApp.

Майбутні вдосконалення

Заплановані функції:
  • Режим спільного контексту (агенти бачать відповіді одне одного)
  • Координація агентів (агенти можуть надсилати сигнали одне одному)
  • Динамічний вибір агента (вибір агентів на основі вмісту повідомлення)
  • Пріоритети агентів (деякі агенти відповідають раніше за інших)

Пов’язане