> ## Documentation Index
> Fetch the complete documentation index at: https://docs2.openclaw.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Группы рассылки

> [!NOTE]
>
> **Статус:** Экспериментальная функция. Добавлена в версии 2026.1.9. Только для WhatsApp (веб-канал).

## Обзор

Группы рассылки запускают **несколько агентов** для одного входящего сообщения. Каждый агент обрабатывает сообщение в собственном изолированном сеансе и публикует свой ответ, поэтому один номер WhatsApp может обслуживать команду специализированных агентов в одном групповом чате или личной переписке.

Группы рассылки проверяются после списков разрешённых каналов и правил активации групп. В группах WhatsApp рассылка выполняется, когда OpenClaw обычно должен ответить (например, при упоминании — в зависимости от настроек группы). Она изменяет только то, **какие агенты запускаются**, но не определяет, допускается ли сообщение к обработке.

Активный контур контроля качества WhatsApp включает `whatsapp-broadcast-group-fanout`, который проверяет, что одно сообщение с упоминанием в группе может привести к появлению разных видимых ответов от двух настроенных агентов.

## Конфигурация

### Базовая настройка

Добавьте раздел верхнего уровня `broadcast` (рядом с `bindings`). Ключи — идентификаторы собеседников WhatsApp, значения — массивы идентификаторов агентов:

* групповые чаты: JID группы (например, `120363403215116621@g.us`)
* личные сообщения: номер телефона отправителя в формате E.164 (например, `+15551234567`)

```json theme={"theme":{"light":"min-light","dark":"min-dark"}}
{
  "broadcast": {
    "120363403215116621@g.us": ["alfred", "baerbel", "assistant3"]
  }
}
```

**Результат:** когда OpenClaw должен ответить в этом чате, запускаются все три агента.

Каждый указанный идентификатор агента должен существовать в `agents.list`: проверка конфигурации сообщает о неизвестных идентификаторах, а среда выполнения пропускает их с предупреждением `Broadcast agent <id> not found in agents.list; skipping`.

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

`broadcast.strategy` определяет, как агенты обрабатывают сообщение:

| Стратегия | Поведение |
| - | - |
| `parallel` (по умолчанию) | Все агенты обрабатывают сообщение одновременно; ответы приходят в произвольном порядке. |
| `sequential` | Агенты обрабатывают сообщение в порядке массива; каждый ждёт завершения предыдущего. |

```json theme={"theme":{"light":"min-light","dark":"min-dark"}}
{
  "broadcast": {
    "strategy": "sequential",
    "120363403215116621@g.us": ["alfred", "baerbel"]
  }
}
```

### Полный пример

```json theme={"theme":{"light":"min-light","dark":"min-dark"}}
{
  "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 применяет списки разрешённых каналов, правила активации групп и настроенное владение привязкой ACP.

**3. Проверка рассылки**

Если маршрут не принадлежит настроенной привязке ACP, OpenClaw проверяет наличие идентификатора собеседника в `broadcast`.

**4. Если применяется рассылка**

* Все указанные агенты обрабатывают сообщение.
* У каждого агента есть собственный ключ сеанса и изолированный контекст.
* Агенты обрабатывают сообщение параллельно (по умолчанию) или последовательно.
* Аудиовложения расшифровываются один раз перед разветвлением, поэтому агенты используют общую расшифровку вместо отдельных вызовов STT.

**5. Если рассылка не применяется**

OpenClaw направляет сообщение по обычному маршруту или по настроенному маршруту сеанса ACP, выбранному при маршрутизации.

> [!NOTE]
>
> Группы рассылки не обходят списки разрешённых каналов или правила активации групп (упоминания, команды и т. д.). Они изменяют только то, *какие агенты запускаются*, когда сообщение допущено к обработке.

### Изоляция сеансов

Для каждого агента в группе рассылки полностью разделены:

* **Ключи сеансов** (`agent:alfred:whatsapp:group:120363...` и `agent:baerbel:whatsapp:group:120363...`)
* **История переписки** (агент не видит ответы других агентов)
* **Рабочее пространство** (отдельные песочницы, если они настроены)
* **Доступ к инструментам** (разные списки разрешений и запретов)
* **Память и контекст** (отдельные `IDENTITY.md`, `SOUL.md` и т. д.)

Одно исключение намеренно является общим: **буфер контекста группы** (последние сообщения группы, используемые для контекста) совместно используется для каждого собеседника, поэтому при запуске все агенты рассылки видят одинаковый контекст. Он очищается один раз после завершения разветвления.

Благодаря этому агенты могут иметь разные характеры, модели, навыки и права доступа к инструментам (например, только чтение или чтение и запись).

### Пример: изолированные сеансы

В группе `120363403215116621@g.us` с агентами `["alfred", "baerbel"]`:

> [tab] Контекст Alfred
>
> ```text theme={"theme":{"light":"min-light","dark":"min-dark"}}
> Сеанс: agent:alfred:whatsapp:group:120363403215116621@g.us
> История: [сообщение пользователя, предыдущие ответы alfred]
> Рабочее пространство: ~/openclaw-alfred/
> Инструменты: чтение, запись, выполнение
> ```

> [tab] Контекст Baerbel
>
> ```text theme={"theme":{"light":"min-light","dark":"min-dark"}}
> Сеанс: agent:baerbel:whatsapp:group:120363403215116621@g.us
> История: [сообщение пользователя, предыдущие ответы baerbel]
> Рабочее пространство: ~/openclaw-baerbel/
> Инструменты: только чтение
> ```

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

* **Команды специализированных агентов**: группа разработчиков, в которой `code-reviewer`, `security-auditor`, `test-generator` и `docs-checker` отвечают на одно сообщение каждый со своей точки зрения.
* **Многоязычная поддержка**: один чат поддержки, в котором `support-en`, `support-de` и `support-es` отвечают на своих языках.
* **Контроль качества**: `support-agent` отвечает, а `qa-agent` проверяет ответ и отвечает только при обнаружении проблем.
* **Автоматизация задач**: `task-tracker`, `time-logger` и `report-generator` получают одно и то же обновление состояния.

## Рекомендации

> [accordion] 1. Сосредоточьте каждого агента на одной задаче
>
> Назначайте каждому агенту одну чёткую обязанность (`formatter`, `linter`, `tester`) вместо одного универсального агента «помощник разработчика».

> [accordion] 2. Используйте понятные идентификаторы и имена
>
> ```json theme={"theme":{"light":"min-light","dark":"min-dark"}}
> {
>   "agents": {
>     "list": [
>       { "id": "security-scanner", "name": "Security Scanner" },
>       { "id": "code-formatter", "name": "Code Formatter" },
>       { "id": "test-generator", "name": "Test Generator" }
>     ]
>   }
> }
> ```

> [accordion] 3. Настройте разные права доступа к инструментам
>
> ```json theme={"theme":{"light":"min-light","dark":"min-dark"}}
> {
>   "agents": {
>     "list": [
>       { "id": "reviewer", "tools": { "allow": ["read", "exec"] } },
>       { "id": "fixer", "tools": { "allow": ["read", "write", "edit", "exec"] } }
>     ]
>   }
> }
> ```
>
> `reviewer` имеет доступ только для чтения. `fixer` может читать и записывать.

> [accordion] 4. Отслеживайте производительность
>
> При большом количестве агентов предпочитайте `"strategy": "parallel"` (по умолчанию), ограничивайте группы рассылки несколькими агентами и используйте более быстрые модели для простых агентов.

> [accordion] 5. Сбои остаются изолированными
>
> Сбои агентов происходят независимо. Ошибка одного агента записывается в журнал (`Broadcast agent <id> failed: ...`) и не блокирует остальных.

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

### Провайдеры

В настоящее время группы рассылки реализованы только для WhatsApp (веб-канал). Другие каналы игнорируют конфигурацию `broadcast`.

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

Группы рассылки работают вместе с существующей маршрутизацией:

```json theme={"theme":{"light":"min-light","dark":"min-dark"}}
{
  "bindings": [
    {
      "match": { "channel": "whatsapp", "peer": { "kind": "group", "id": "GROUP_A" } },
      "agentId": "alfred"
    }
  ],
  "broadcast": {
    "GROUP_B": ["agent1", "agent2"]
  }
}
```

* `GROUP_A`: отвечает только alfred (обычная маршрутизация).
* `GROUP_B`: отвечают agent1 И agent2 (рассылка).

> [!NOTE]
>
> **Приоритет:** `broadcast` имеет приоритет над обычными привязками маршрутов. Настроенные привязки ACP (`bindings[].type="acp"`) являются эксклюзивными: при совпадении OpenClaw направляет сообщение в настроенный сеанс ACP вместо разветвлённой рассылки.

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

> [accordion] Агенты не отвечают
>
> **Проверьте:**
>
> 1. Идентификаторы агентов существуют в `agents.list` (проверка конфигурации отклоняет неизвестные идентификаторы).
> 2. Формат идентификатора собеседника корректен (JID группы, например `120363403215116621@g.us`, или номер E.164, например `+15551234567`, для личных сообщений).
> 3. Сообщение прошло обычные проверки допуска (правила упоминаний и активации по-прежнему применяются).
>
> **Отладка:**
>
> ```bash theme={"theme":{"light":"min-light","dark":"min-dark"}}
> openclaw logs --follow | grep -i broadcast
> ```
>
> При успешном разветвлении в журнал записывается `Broadcasting message to <n> agents (<strategy>)`.

> [accordion] Отвечает только один агент
>
> **Причина:** идентификатор собеседника может находиться в обычных привязках маршрутов, но отсутствовать в `broadcast`, либо он может соответствовать эксклюзивной настроенной привязке ACP.
>
> **Исправление:** добавьте собеседников с обычной привязкой маршрута в конфигурацию рассылки или удалите либо измените настроенную привязку ACP, если требуется разветвлённая рассылка.

> [accordion] Проблемы с производительностью
>
> Если при большом количестве агентов работа замедляется: сократите число агентов в группе, используйте более лёгкие модели и проверьте время запуска песочницы.

## Примеры

> [accordion] Пример 1. Команда проверки кода
>
> ```json theme={"theme":{"light":"min-light","dark":"min-dark"}}
> {
>   "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"] } }
>     ]
>   }
> }
> ```
>
> Один фрагмент кода в группе приводит к четырём ответам: исправления форматирования, обнаруженная проблема безопасности, пробел в покрытии тестами и небольшое замечание к документации.

> [accordion] Пример 2. Многоязычный конвейер
>
> ```json theme={"theme":{"light":"min-light","dark":"min-dark"}}
> {
>   "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

### Схема конфигурации

```typescript theme={"theme":{"light":"min-light","dark":"min-dark"}}
interface OpenClawConfig {
  broadcast?: {
    strategy?: "parallel" | "sequential";
    [peerId: string]: string[];
  };
}
```

### Поля

**strategy** `"parallel" | "sequential"` (default: "parallel")

Способ обработки агентами. `parallel` запускает всех агентов одновременно; `sequential` запускает их в порядке массива.

**\[peerId]** `string[]`

JID группы WhatsApp или номер телефона в формате E.164. Значение — массив идентификаторов агентов, каждый из которых должен обрабатывать сообщения от этого собеседника.

## Ограничения

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

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

* [Маршрутизация каналов](https://docs2.openclaw.ai/ru/channels/channel-routing.md)
* [Группы](https://docs2.openclaw.ai/ru/channels/groups.md)
* [Инструменты песочницы для нескольких агентов](https://docs2.openclaw.ai/ru/tools/multi-agent-sandbox-tools.md)
* [Сопряжение](https://docs2.openclaw.ai/ru/channels/pairing.md)
* [Управление сеансами](https://docs2.openclaw.ai/ru/concepts/session.md)
