Configuration
Групи трансляції
Огляд
Групи трансляції дають змогу кільком агентам одночасно обробляти одне й те саме повідомлення та відповідати на нього. Це дає змогу створювати спеціалізовані команди агентів, які працюють разом в одній групі WhatsApp або DM — і все це з використанням одного номера телефону.
Поточний обсяг: лише WhatsApp (вебканал).
Групи трансляції оцінюються після списків дозволених каналів і правил активації груп. У групах WhatsApp це означає, що трансляції відбуваються тоді, коли OpenClaw зазвичай відповів би (наприклад: при згадці, залежно від налаштувань вашої групи).
Жива лінія QA WhatsApp включає whatsapp-broadcast-group-fanout, яка перевіряє, що одне згадане групове повідомлення може створити різні видимі відповіді від двох налаштованих агентів.
Випадки використання
1. Specialized agent teams
Розгортайте кількох агентів з атомарними, сфокусованими обов’язками:
Group: "Development Team"Agents: - CodeReviewer (reviews code snippets) - DocumentationBot (generates docs) - SecurityAuditor (checks for vulnerabilities) - TestGenerator (suggests test cases)Кожен агент обробляє те саме повідомлення й надає свою спеціалізовану перспективу.
2. Multi-language support
Group: "International Support"Agents: - Agent_EN (responds in English) - Agent_DE (responds in German) - Agent_ES (responds in Spanish)3. Quality assurance workflows
Group: "Customer Support"Agents: - SupportAgent (provides answer) - QAAgent (reviews quality, only responds if issues found)4. Task automation
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 відповів би в цьому чаті, він запустить усіх трьох агентів.
Стратегія обробки
Керуйте тим, як агенти обробляють повідомлення:
parallel (default)
Усі агенти обробляють одночасно:
{ "broadcast": { "strategy": "parallel", "120363403215116621@g.us": ["alfred", "baerbel"] }}sequential
Агенти обробляють по порядку (кожен чекає, доки попередній завершить роботу):
{ "broadcast": { "strategy": "sequential", "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"] }}Як це працює
Потік повідомлень
Incoming message arrives
Надходить повідомлення групи WhatsApp або DM.
Route and admission
OpenClaw застосовує списки дозволених каналів, правила активації груп і налаштоване володіння прив’язками ACP.
Broadcast check
Якщо жодна налаштована прив’язка ACP не володіє маршрутом, OpenClaw перевіряє, чи є peer ID у broadcast.
If broadcast applies
- Усі перелічені агенти обробляють повідомлення.
- Кожен агент має власний ключ сеансу та ізольований контекст.
- Агенти обробляють паралельно (типово) або послідовно.
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"]:
Alfred's context
Session: agent:alfred:whatsapp:group:120363403215116621@g.usHistory: [user message, alfred's previous responses]Workspace: /Users/user/openclaw-alfred/Tools: read, write, execBärbel's context
Session: agent:baerbel:whatsapp:group:120363403215116621@g.usHistory: [user message, baerbel's previous responses]Workspace: /Users/user/openclaw-baerbel/Tools: read onlyНайкращі практики
1. Keep agents focused
Проєктуйте кожного агента з однією чіткою відповідальністю:
{ "broadcast": { "DEV_GROUP": ["formatter", "linter", "tester"] }}✅ Добре: Кожен агент має одну задачу. ❌ Погано: Один універсальний агент "dev-helper".
2. Use descriptive names
Зробіть очевидним, що робить кожен агент:
{ "agents": { "security-scanner": { "name": "Security Scanner" }, "code-formatter": { "name": "Code Formatter" }, "test-generator": { "name": "Test Generator" } }}3. Configure different tool access
Надавайте агентам лише ті інструменти, які їм потрібні:
{ "agents": { "reviewer": { "tools": { "allow": ["read", "exec"] } }, "fixer": { "tools": { "allow": ["read", "write", "edit", "exec"] } } }}reviewer має доступ лише для читання. fixer може читати й записувати.
4. Monitor performance
За великої кількості агентів враховуйте:
- Використання
"strategy": "parallel"(типово) для швидкості - Обмеження груп трансляції до 5-10 агентів
- Використання швидших моделей для простіших агентів
5. Handle failures gracefully
Агенти дають збої незалежно. Помилка одного агента не блокує інших:
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 (трансляція).
Усунення несправностей
Agents not responding
Перевірте:
- ID агентів існують у
agents.list. - Формат peer ID правильний (наприклад,
120363403215116621@g.us). - Агентів немає в списках заборони.
Налагодження:
tail -f ~/.openclaw/logs/gateway.log | grep broadcastOnly one agent responding
Причина: Peer ID може бути у звичайних прив’язках маршрутів, але не в broadcast, або він може відповідати ексклюзивній налаштованій прив’язці ACP.
Виправлення: Додайте peers, прив’язані до звичайних маршрутів, у конфігурацію трансляції або видаліть/змініть налаштовану прив’язку ACP, якщо потрібна fan-out трансляція.
Performance issues
Якщо робота повільна з великою кількістю агентів:
- Зменште кількість агентів на групу.
- Використовуйте легші моделі (sonnet замість opus).
- Перевірте час запуску пісочниці.
Приклади
Example 1: Code review team
{ "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"
Example 2: Multi-language support
{ "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"default: "parallel"Як обробляти агентів. parallel запускає всіх агентів одночасно; sequential запускає їх у порядку масиву.
[peerId]string[]JID групи WhatsApp, номер E.164 або інший ідентифікатор peer. Значенням є масив ідентифікаторів агентів, які мають обробляти повідомлення.
Обмеження
- Максимальна кількість агентів: Жорсткого обмеження немає, але 10+ агентів можуть працювати повільно.
- Спільний контекст: Агенти не бачать відповіді одне одного (за задумом).
- Порядок повідомлень: Паралельні відповіді можуть надходити в будь-якому порядку.
- Обмеження швидкості: Усі агенти враховуються в обмеженнях швидкості WhatsApp.
Майбутні вдосконалення
Заплановані функції:
- [ ] Режим спільного контексту (агенти бачать відповіді одне одного)
- [ ] Координація агентів (агенти можуть надсилати сигнали одне одному)
- [ ] Динамічний вибір агента (вибір агентів на основі вмісту повідомлення)
- [ ] Пріоритети агентів (деякі агенти відповідають раніше за інших)