Configuration
Gruppi di broadcast
Panoramica
I gruppi di broadcast consentono a più agenti di elaborare e rispondere allo stesso messaggio simultaneamente. Questo permette di creare team di agenti specializzati che lavorano insieme in un singolo gruppo WhatsApp o DM — tutti usando un solo numero di telefono.
Ambito attuale: solo WhatsApp (canale web).
I gruppi di broadcast vengono valutati dopo gli elenchi di consentiti del canale e le regole di attivazione dei gruppi. Nei gruppi WhatsApp, questo significa che i broadcast avvengono quando OpenClaw risponderebbe normalmente (per esempio: su menzione, a seconda delle impostazioni del gruppo).
La lane QA live di WhatsApp include whatsapp-broadcast-group-fanout, che verifica che un singolo messaggio di gruppo con menzione possa produrre risposte visibili distinte da due agenti configurati.
Casi d'uso
1. Specialized agent teams
Distribuisci più agenti con responsabilità atomiche e mirate:
Group: "Development Team"Agents: - CodeReviewer (reviews code snippets) - DocumentationBot (generates docs) - SecurityAuditor (checks for vulnerabilities) - TestGenerator (suggests test cases)Ogni agente elabora lo stesso messaggio e fornisce la propria prospettiva specializzata.
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)Configurazione
Configurazione di base
Aggiungi una sezione broadcast di primo livello (accanto a bindings). Le chiavi sono ID peer di WhatsApp:
- chat di gruppo: JID del gruppo (ad es.
120363403215116621@g.us) - DM: numero di telefono E.164 (ad es.
+15551234567)
{ "broadcast": { "120363403215116621@g.us": ["alfred", "baerbel", "assistant3"] }}Risultato: Quando OpenClaw risponderebbe in questa chat, eseguirà tutti e tre gli agenti.
Strategia di elaborazione
Controlla come gli agenti elaborano i messaggi:
parallel (default)
Tutti gli agenti elaborano simultaneamente:
{ "broadcast": { "strategy": "parallel", "120363403215116621@g.us": ["alfred", "baerbel"] }}sequential
Gli agenti elaborano in ordine (uno attende che il precedente finisca):
{ "broadcast": { "strategy": "sequential", "120363403215116621@g.us": ["alfred", "baerbel"] }}Esempio completo
{ "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"] }}Come funziona
Flusso dei messaggi
Incoming message arrives
Arriva un messaggio di gruppo WhatsApp o un DM.
Route and admission
OpenClaw applica gli elenchi di consentiti del canale, le regole di attivazione dei gruppi e la proprietà dei binding ACP configurati.
Broadcast check
Se nessun binding ACP configurato possiede la route, OpenClaw controlla se l'ID peer è in broadcast.
If broadcast applies
- Tutti gli agenti elencati elaborano il messaggio.
- Ogni agente ha la propria chiave di sessione e un contesto isolato.
- Gli agenti elaborano in parallelo (impostazione predefinita) o in sequenza.
If broadcast does not apply
OpenClaw invia la route ordinaria o la route della sessione ACP configurata selezionata durante il routing.
Isolamento della sessione
Ogni agente in un gruppo di broadcast mantiene completamente separati:
- Chiavi di sessione (
agent:alfred:whatsapp:group:120363...vsagent:baerbel:whatsapp:group:120363...) - Cronologia della conversazione (l'agente non vede i messaggi degli altri agenti)
- Workspace (sandbox separati, se configurati)
- Accesso agli strumenti (elenchi di consentiti/negati diversi)
- Memoria/contesto (IDENTITY.md, SOUL.md, ecc. separati)
- Buffer del contesto di gruppo (messaggi recenti del gruppo usati per il contesto) è condiviso per peer, quindi tutti gli agenti di broadcast vedono lo stesso contesto quando vengono attivati
Questo consente a ogni agente di avere:
- Personalità diverse
- Accesso agli strumenti diverso (ad es. sola lettura vs. lettura-scrittura)
- Modelli diversi (ad es. opus vs. sonnet)
- Skills diverse installate
Esempio: sessioni isolate
Nel gruppo 120363403215116621@g.us con gli agenti ["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 onlyBuone pratiche
1. Keep agents focused
Progetta ogni agente con una responsabilità singola e chiara:
{ "broadcast": { "DEV_GROUP": ["formatter", "linter", "tester"] }}✅ Bene: Ogni agente ha un solo compito. ❌ Male: Un agente generico "dev-helper".
2. Use descriptive names
Rendi chiaro cosa fa ogni agente:
{ "agents": { "security-scanner": { "name": "Security Scanner" }, "code-formatter": { "name": "Code Formatter" }, "test-generator": { "name": "Test Generator" } }}3. Configure different tool access
Concedi agli agenti solo gli strumenti di cui hanno bisogno:
{ "agents": { "reviewer": { "tools": { "allow": ["read", "exec"] } }, "fixer": { "tools": { "allow": ["read", "write", "edit", "exec"] } } }}reviewer è in sola lettura. fixer può leggere e scrivere.
4. Monitor performance
Con molti agenti, considera:
- Usare
"strategy": "parallel"(predefinita) per la velocità - Limitare i gruppi di broadcast a 5-10 agenti
- Usare modelli più veloci per agenti più semplici
5. Handle failures gracefully
Gli agenti falliscono in modo indipendente. L'errore di un agente non blocca gli altri:
Message → [Agent A ✓, Agent B ✗ error, Agent C ✓]Result: Agent A and C respond, Agent B logs errorCompatibilità
Provider
I gruppi di broadcast attualmente funzionano con:
- ✅ WhatsApp (implementato)
- 🚧 Telegram (pianificato)
- 🚧 Discord (pianificato)
- 🚧 Slack (pianificato)
Routing
I gruppi di broadcast funzionano insieme al routing esistente:
{ "bindings": [ { "match": { "channel": "whatsapp", "peer": { "kind": "group", "id": "GROUP_A" } }, "agentId": "alfred" } ], "broadcast": { "GROUP_B": ["agent1", "agent2"] }}GROUP_A: Risponde solo alfred (routing normale).GROUP_B: agent1 E agent2 rispondono (broadcast).
Risoluzione dei problemi
Agents not responding
Controlla:
- Gli ID agente esistono in
agents.list. - Il formato dell'ID peer è corretto (ad es.
120363403215116621@g.us). - Gli agenti non sono negli elenchi di negati.
Debug:
tail -f ~/.openclaw/logs/gateway.log | grep broadcastOnly one agent responding
Causa: L'ID peer potrebbe essere nei binding di route ordinari ma non in broadcast, oppure potrebbe corrispondere a un binding ACP configurato esclusivo.
Correzione: Aggiungi i peer associati a route ordinarie alla configurazione di broadcast, oppure rimuovi/modifica il binding ACP configurato se si desidera il broadcast fan-out.
Performance issues
Se è lento con molti agenti:
- Riduci il numero di agenti per gruppo.
- Usa modelli più leggeri (sonnet invece di opus).
- Controlla il tempo di avvio del sandbox.
Esempi
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"] } } ] }}L'utente invia: Frammento di codice.
Risposte:
- 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" } ] }}Riferimento API
Schema di configurazione
interface OpenClawConfig { broadcast?: { strategy?: "parallel" | "sequential"; [peerId: string]: string[]; };}Campi
strategy"parallel" | "sequential"default: "parallel"Come elaborare gli agenti. parallel esegue tutti gli agenti simultaneamente; sequential li esegue nell'ordine dell'array.
[peerId]string[]JID del gruppo WhatsApp, numero E.164 o altro ID peer. Il valore è l'array degli ID degli agenti che devono elaborare i messaggi.
Limitazioni
- Numero massimo di agenti: Nessun limite rigido, ma 10 o più agenti possono essere lenti.
- Contesto condiviso: Gli agenti non vedono le risposte degli altri agenti (per progettazione).
- Ordinamento dei messaggi: Le risposte parallele possono arrivare in qualsiasi ordine.
- Limiti di frequenza: Tutti gli agenti contano ai fini dei limiti di frequenza di WhatsApp.
Miglioramenti futuri
Funzionalità pianificate:
- [ ] Modalità contesto condiviso (gli agenti vedono le risposte degli altri agenti)
- [ ] Coordinamento degli agenti (gli agenti possono segnalarsi a vicenda)
- [ ] Selezione dinamica degli agenti (scegli gli agenti in base al contenuto del messaggio)
- [ ] Priorità degli agenti (alcuni agenti rispondono prima di altri)