Gruppi Broadcast
Stato: Sperimentale Versione: Aggiunto in 2026.1.9
Panoramica
I Gruppi Broadcast permettono a piu agent di elaborare e rispondere allo stesso messaggio simultaneamente. Questo ti consente di creare team di agent specializzati che lavorano insieme in un singolo gruppo WhatsApp o DM — il tutto usando un unico numero di telefono.
Ambito attuale: solo WhatsApp (canale web).
I gruppi broadcast vengono valutati dopo le allowlist del canale e le regole di attivazione dei gruppi. Nei gruppi WhatsApp, questo significa che i broadcast avvengono quando OpenClaw risponderebbe normalmente (ad esempio: alla menzione, in base alle impostazioni del gruppo).
Casi d’uso
1. Team di agent specializzati
Distribuisci piu agent con responsabilita atomiche e mirate:
Gruppo: "Team Sviluppo"
Agent:
- CodeReviewer (revisiona snippet di codice)
- DocumentationBot (genera documentazione)
- SecurityAuditor (controlla le vulnerabilita)
- TestGenerator (suggerisce test case)
Ogni agent elabora lo stesso messaggio e fornisce la sua prospettiva specializzata.
2. Supporto multi-lingua
Gruppo: "Supporto Internazionale"
Agent:
- Agent_EN (risponde in inglese)
- Agent_DE (risponde in tedesco)
- Agent_ES (risponde in spagnolo)
3. Flussi di lavoro QA
Gruppo: "Supporto Clienti"
Agent:
- SupportAgent (fornisce la risposta)
- QAAgent (controlla la qualita, risponde solo se trova problemi)
4. Automazione attivita
Gruppo: "Gestione Progetto"
Agent:
- TaskTracker (aggiorna il database delle attivita)
- TimeLogger (registra il tempo impiegato)
- ReportGenerator (crea riepiloghi)
Configurazione
Setup base
Aggiungi una sezione top-level broadcast (accanto a bindings). Le chiavi sono peer id WhatsApp:
- chat di gruppo: group JID (es.
[email protected]) - DM: numero di telefono E.164 (es.
+15551234567)
{
"broadcast": {
"[email protected]": ["alfred", "baerbel", "assistant3"]
}
}
Risultato: Quando OpenClaw risponderebbe in questa chat, eseguira tutti e tre gli agent.
Strategia di elaborazione
Controlla come gli agent elaborano i messaggi:
Parallelo (Predefinito)
Tutti gli agent elaborano simultaneamente:
{
"broadcast": {
"strategy": "parallel",
"[email protected]": ["alfred", "baerbel"]
}
}
Sequenziale
Gli agent elaborano in ordine (ciascuno aspetta che il precedente finisca):
{
"broadcast": {
"strategy": "sequential",
"[email protected]": ["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",
"[email protected]": ["code-reviewer", "security-auditor", "docs-generator"],
"[email protected]": ["support-en", "support-de"],
"+15555550123": ["assistant", "logger"]
}
}
Come funziona
Flusso dei messaggi
- Messaggio in ingresso arriva in un gruppo WhatsApp
- Controllo broadcast: il sistema verifica se il peer ID e in
broadcast - Se nella lista broadcast:
- Tutti gli agent elencati elaborano il messaggio
- Ogni agent ha la propria chiave di sessione e contesto isolato
- Gli agent elaborano in parallelo (predefinito) o sequenzialmente
- Se non nella lista broadcast:
- Si applica il routing normale (primo binding corrispondente)
Nota: i gruppi broadcast non bypassano le allowlist del canale o le regole di attivazione dei gruppi (menzioni/comandi/ecc.). Cambiano solo quali agent vengono eseguiti quando un messaggio e idoneo per l’elaborazione.
Isolamento delle sessioni
Ogni agent in un gruppo broadcast mantiene completamente separati:
- Chiavi di sessione (
agent:alfred:whatsapp:group:120363...vsagent:baerbel:whatsapp:group:120363...) - Storico conversazione (l’agent non vede i messaggi degli altri agent)
- Workspace (sandbox separati se configurati)
- Accesso agli strumenti (liste allow/deny diverse)
- Memoria/contesto (IDENTITY.md, SOUL.md separati, ecc.)
- Buffer contesto di gruppo (messaggi di gruppo recenti usati per il contesto) e condiviso per peer, quindi tutti gli agent broadcast vedono lo stesso contesto quando attivati
Questo permette a ogni agent di avere:
- Personalita diverse
- Accesso agli strumenti diverso (es. sola lettura vs lettura-scrittura)
- Modelli diversi (es. opus vs sonnet)
- Skill installate diverse
Esempio: Sessioni isolate
Nel gruppo [email protected] con agent ["alfred", "baerbel"]:
Contesto di Alfred:
Sessione: agent:alfred:whatsapp:group:[email protected]
Storico: [messaggio utente, risposte precedenti di alfred]
Workspace: /Users/pascal/openclaw-alfred/
Strumenti: read, write, exec
Contesto di Barbel:
Sessione: agent:baerbel:whatsapp:group:[email protected]
Storico: [messaggio utente, risposte precedenti di baerbel]
Workspace: /Users/pascal/openclaw-baerbel/
Strumenti: solo lettura
Best practice
1. Mantieni gli agent focalizzati
Progetta ogni agent con una singola responsabilita chiara:
{
"broadcast": {
"DEV_GROUP": ["formatter", "linter", "tester"]
}
}
2. Usa nomi descrittivi
Rendi chiaro cosa fa ogni agent:
{
"agents": {
"security-scanner": { "name": "Security Scanner" },
"code-formatter": { "name": "Code Formatter" },
"test-generator": { "name": "Test Generator" }
}
}
3. Configura accessi agli strumenti diversi
Dai agli agent solo gli strumenti di cui hanno bisogno:
{
"agents": {
"reviewer": {
"tools": { "allow": ["read", "exec"] }
},
"fixer": {
"tools": { "allow": ["read", "write", "edit", "exec"] }
}
}
}
4. Monitora le prestazioni
Con molti agent, considera:
- Usare
"strategy": "parallel"(predefinito) per la velocita - Limitare i gruppi broadcast a 5-10 agent
- Usare modelli piu veloci per agent piu semplici
5. Gestisci i fallimenti con grazia
Gli agent falliscono indipendentemente. L’errore di un agent non blocca gli altri:
Messaggio -> [Agent A OK, Agent B errore, Agent C OK]
Risultato: Agent A e C rispondono, Agent B registra l'errore
Compatibilita
Provider
I gruppi broadcast attualmente funzionano con:
- WhatsApp (implementato)
- Telegram (pianificato)
- Discord (pianificato)
- Slack (pianificato)
Routing
I gruppi 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: Solo alfred risponde (routing normale)GROUP_B: agent1 E agent2 rispondono (broadcast)
Precedenza: broadcast ha priorita su bindings.
Risoluzione problemi
Agent che non rispondono
Controlla:
- Gli ID agent esistono in
agents.list - Il formato del peer ID e corretto (es.
[email protected]) - Gli agent non sono in liste deny
Debug:
tail -f ~/.openclaw/logs/gateway.log | grep broadcast
Solo un agent risponde
Causa: Il peer ID potrebbe essere in bindings ma non in broadcast.
Soluzione: Aggiungi alla configurazione broadcast o rimuovi dai bindings.
Problemi di prestazioni
Se lento con molti agent:
- Riduci il numero di agent per gruppo
- Usa modelli piu leggeri (sonnet invece di opus)
- Controlla il tempo di avvio del sandbox
Esempi
Esempio 1: Team di Code Review
{
"broadcast": {
"strategy": "parallel",
"[email protected]": [
"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"] } }
]
}
}
Esempio 2: Supporto multi-lingua
{
"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 configurazione
interface OpenClawConfig {
broadcast?: {
strategy?: "parallel" | "sequential";
[peerId: string]: string[];
};
}
Campi
strategy(opzionale): Come elaborare gli agent"parallel"(predefinito): Tutti gli agent elaborano simultaneamente"sequential": Gli agent elaborano nell’ordine dell’array
[peerId]: JID gruppo WhatsApp, numero E.164 o altro peer ID- Valore: Array di ID agent che dovrebbero elaborare i messaggi
Limitazioni
- Massimo agent: Nessun limite rigido, ma 10+ agent possono essere lenti
- Contesto condiviso: Gli agent non vedono le risposte degli altri (per design)
- Ordine messaggi: Le risposte parallele possono arrivare in qualsiasi ordine
- Rate limit: Tutti gli agent contano ai fini dei rate limit di WhatsApp
Miglioramenti futuri
Funzionalita pianificate:
- Modalita contesto condiviso (gli agent vedono le risposte degli altri)
- Coordinamento agent (gli agent possono segnalarsi a vicenda)
- Selezione dinamica agent (scelta agent in base al contenuto del messaggio)
- Priorita agent (alcuni agent rispondono prima degli altri)