Перейти к основному содержанию
Статус: экспериментально. Добавлено в 2026.1.9.

Обзор

Broadcast Groups позволяют нескольким агентам одновременно обрабатывать одно и то же сообщение и отвечать на него. Это позволяет создавать специализированные команды агентов, которые работают вместе в одной группе WhatsApp или личном чате, используя один номер телефона. Текущая область применения: только WhatsApp (веб-канал). Broadcast groups оцениваются после allowlist каналов и правил активации групп. В группах WhatsApp это означает, что широковещательная обработка происходит тогда, когда OpenClaw обычно ответил бы (например, при упоминании, в зависимости от настроек группы).

Сценарии использования

Разверните несколько агентов с атомарными, сфокусированными обязанностями:
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 в WhatsApp:
  • групповые чаты: group JID (например, 120363403215116621@g.us)
  • личные чаты: номер телефона в формате 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

Поступает входящее сообщение

Поступает сообщение из группы WhatsApp или личного чата.
2

Маршрутизация и допуск

OpenClaw применяет allowlist каналов, правила активации групп и настроенное владение привязками ACP.
3

Проверка broadcast

Если ни одна настроенная привязка ACP не владеет маршрутом, OpenClaw проверяет, есть ли peer ID в broadcast.
4

Если применяется broadcast

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

Если broadcast не применяется

OpenClaw отправляет сообщение по обычному маршруту или по настроенному маршруту сессии ACP, выбранному во время маршрутизации.
Broadcast groups не обходят allowlist каналов или правила активации групп (упоминания/команды/и т. д.). Они меняют только какие агенты запускаются, когда сообщение подходит для обработки.

Изоляция сессий

Каждый агент в broadcast group поддерживает полностью отдельные:
  • Ключи сессий (agent:alfred:whatsapp:group:120363... и agent:baerbel:whatsapp:group:120363...)
  • Историю разговора (агент не видит сообщения других агентов)
  • Рабочую область (отдельные песочницы, если настроены)
  • Доступ к инструментам (разные списки allow/deny)
  • Память/контекст (отдельные IDENTITY.md, SOUL.md и т. д.)
  • Буфер контекста группы (последние сообщения группы, используемые как контекст) является общим для каждого peer, поэтому все агенты broadcast видят один и тот же контекст при запуске
Это позволяет каждому агенту иметь:
  • Разные характеры
  • Разный доступ к инструментам (например, только чтение или чтение-запись)
  • Разные модели (например, 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" (по умолчанию) для скорости
  • Ограничение broadcast groups до 5-10 агентов
  • Использование более быстрых моделей для более простых агентов
Агенты завершаются с ошибками независимо. Ошибка одного агента не блокирует остальных:
Message → [Agent A ✓, Agent B ✗ error, Agent C ✓]
Result: Agent A and C respond, Agent B logs error

Совместимость

Провайдеры

Broadcast groups сейчас работают с:
  • ✅ WhatsApp (реализовано)
  • 🚧 Telegram (запланировано)
  • 🚧 Discord (запланировано)
  • 🚧 Slack (запланировано)

Маршрутизация

Broadcast groups работают вместе с существующей маршрутизацией:
{
  "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).
Приоритет: broadcast имеет приоритет над обычными привязками маршрутов. Настроенные привязки ACP (bindings[].type="acp") являются эксклюзивными: когда одна из них совпадает, OpenClaw отправляет сообщение в настроенную сессию ACP вместо широковещательной рассылки с разветвлением.

Устранение неполадок

Проверьте:
  1. ID агентов существуют в agents.list.
  2. Формат peer ID корректен (например, 120363403215116621@g.us).
  3. Агенты не находятся в deny lists.
Отладка:
tail -f ~/.openclaw/logs/gateway.log | grep broadcast
Причина: peer ID может находиться в обычных привязках маршрута, но не в broadcast, или он может совпадать с эксклюзивной настроенной привязкой ACP.Исправление: добавьте peer, привязанные к обычным маршрутам, в конфигурацию broadcast или удалите/измените настроенную привязку ACP, если нужна широковещательная рассылка с разветвлением.
Если работа замедляется при большом количестве агентов:
  • Уменьшите количество агентов на группу.
  • Используйте более легкие модели (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[]
WhatsApp group JID, номер E.164 или другой peer ID. Значение — массив ID агентов, которые должны обрабатывать сообщения.

Ограничения

  1. Максимум агентов: Жесткого ограничения нет, но 10+ агентов могут работать медленно.
  2. Общий контекст: Агенты не видят ответы друг друга (так задумано).
  3. Порядок сообщений: Параллельные ответы могут приходить в любом порядке.
  4. Ограничения частоты: Все агенты учитываются в ограничениях частоты WhatsApp.

Будущие улучшения

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

Связанные материалы