Groupes de diffusion
Statut : Experimental Version : Ajoute dans la 2026.1.9
Presentation
Les groupes de diffusion permettent a plusieurs agents de traiter et de repondre au meme message simultanement. Vous pouvez ainsi creer des equipes dâagents specialises qui collaborent dans un seul groupe WhatsApp ou DM â le tout avec un seul numero de telephone.
Perimetre actuel : WhatsApp uniquement (canal web).
Les groupes de diffusion sont evalues apres les listes dâautorisation du canal et les regles dâactivation de groupe. Dans les groupes WhatsApp, la diffusion se declenche lorsquâOpenClaw repondrait normalement (par exemple : sur mention, selon vos parametres de groupe).
Cas dâusage
1. Equipes dâagents specialises
Deployez plusieurs agents avec des responsabilites ciblees et atomiques :
Group: "Development Team"
Agents:
- CodeReviewer (reviews code snippets)
- DocumentationBot (generates docs)
- SecurityAuditor (checks for vulnerabilities)
- TestGenerator (suggests test cases)
Chaque agent traite le meme message et apporte son expertise specifique.
2. Support multilingue
Group: "International Support"
Agents:
- Agent_EN (responds in English)
- Agent_DE (responds in German)
- Agent_ES (responds in Spanish)
3. Flux dâassurance qualite
Group: "Customer Support"
Agents:
- SupportAgent (provides answer)
- QAAgent (reviews quality, only responds if issues found)
4. Automatisation de taches
Group: "Project Management"
Agents:
- TaskTracker (updates task database)
- TimeLogger (logs time spent)
- ReportGenerator (creates summaries)
Configuration
Configuration de base
Ajoutez une section broadcast au niveau racine (a cote de bindings). Les cles sont des identifiants de pair WhatsApp :
- conversations de groupe : JID de groupe (par ex.
[email protected]) - DMs : numero de telephone E.164 (par ex.
+15551234567)
{
"broadcast": {
"[email protected]": ["alfred", "baerbel", "assistant3"]
}
}
Resultat : lorsquâOpenClaw doit repondre dans cette conversation, il executera les trois agents.
Strategie de traitement
Controlez la facon dont les agents traitent les messages :
Parallele (par defaut)
Tous les agents traitent simultanement :
{
"broadcast": {
"strategy": "parallel",
"[email protected]": ["alfred", "baerbel"]
}
}
Sequentiel
Les agents traitent dans lâordre (chacun attend que le precedent ait termine) :
{
"broadcast": {
"strategy": "sequential",
"[email protected]": ["alfred", "baerbel"]
}
}
Exemple complet
{
"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"]
}
}
Fonctionnement
Flux de messages
- Message entrant dans un groupe WhatsApp
- Verification de diffusion : le systeme verifie si lâidentifiant de pair est dans
broadcast - Sâil est dans la liste de diffusion :
- Tous les agents listes traitent le message
- Chaque agent dispose de sa propre cle de session et dâun contexte isole
- Les agents traitent en parallele (par defaut) ou sequentiellement
- Sâil nâest pas dans la liste de diffusion :
- Le routage normal sâapplique (premier binding correspondant)
Remarque : Les groupes de diffusion ne contournent pas les listes dâautorisation du canal ni les regles dâactivation de groupe (mentions/commandes/etc.). Ils ne modifient que les agents executes lorsquâun message est eligible au traitement.
Isolation des sessions
Chaque agent dâun groupe de diffusion conserve des elements completement separes :
- Cles de session (
agent:alfred:whatsapp:group:120363...vsagent:baerbel:whatsapp:group:120363...) - Historique de conversation (lâagent ne voit pas les messages des autres agents)
- Espace de travail (sandboxes separees si configurees)
- Acces aux outils (listes dâautorisation/blocage differentes)
- Memoire/contexte (IDENTITY.md, SOUL.md, etc. separes)
- Tampon de contexte de groupe (les messages recents du groupe utilises comme contexte) est partage par pair, donc tous les agents de diffusion voient le meme contexte lorsquâils sont declenches
Chaque agent peut ainsi avoir :
- Des personnalites differentes
- Des acces outils differents (par ex. lecture seule vs lecture-ecriture)
- Des modeles differents (par ex. opus vs sonnet)
- Des competences differentes installees
Exemple : sessions isolees
Dans le groupe [email protected] avec les agents ["alfred", "baerbel"] :
Contexte dâAlfred :
Session: agent:alfred:whatsapp:group:[email protected]
History: [user message, alfred's previous responses]
Workspace: /Users/pascal/openclaw-alfred/
Tools: read, write, exec
Contexte de Barbel :
Session: agent:baerbel:whatsapp:group:[email protected]
History: [user message, baerbel's previous responses]
Workspace: /Users/pascal/openclaw-baerbel/
Tools: read only
Bonnes pratiques
1. Gardez les agents specialises
Concevez chaque agent avec une seule responsabilite claire :
{
"broadcast": {
"DEV_GROUP": ["formatter", "linter", "tester"]
}
}
Bien : chaque agent a une mission unique A eviter : un seul agent generique « dev-helper »
2. Utilisez des noms descriptifs
Rendez la fonction de chaque agent evidente :
{
"agents": {
"security-scanner": { "name": "Security Scanner" },
"code-formatter": { "name": "Code Formatter" },
"test-generator": { "name": "Test Generator" }
}
}
3. Configurez des acces outils differents
Ne donnez a chaque agent que les outils dont il a besoin :
{
"agents": {
"reviewer": {
"tools": { "allow": ["read", "exec"] }
},
"fixer": {
"tools": { "allow": ["read", "write", "edit", "exec"] }
}
}
}
4. Surveillez les performances
Avec de nombreux agents, pensez a :
- Utiliser
"strategy": "parallel"(par defaut) pour la vitesse - Limiter les groupes de diffusion a 5-10 agents
- Utiliser des modeles plus legers pour les agents simples
5. Gerez les echecs avec elegance
Les agents echouent independamment. Lâerreur dâun agent ne bloque pas les autres :
Message â [Agent A â, Agent B â error, Agent C â]
Result: Agent A and C respond, Agent B logs error
Compatibilite
Fournisseurs
Les groupes de diffusion fonctionnent actuellement avec :
- WhatsApp (implemente)
- Telegram (prevu)
- Discord (prevu)
- Slack (prevu)
Routage
Les groupes de diffusion coexistent avec le routage existant :
{
"bindings": [
{
"match": { "channel": "whatsapp", "peer": { "kind": "group", "id": "GROUP_A" } },
"agentId": "alfred"
}
],
"broadcast": {
"GROUP_B": ["agent1", "agent2"]
}
}
GROUP_A: seul alfred repond (routage normal)GROUP_B: agent1 ET agent2 repondent (diffusion)
Priorite : broadcast a la priorite sur bindings.
Depannage
Les agents ne repondent pas
Verifiez :
- Les identifiants dâagent existent dans
agents.list - Le format de lâidentifiant de pair est correct (par ex.
[email protected]) - Les agents ne sont pas dans des listes de blocage
Debug :
tail -f ~/.openclaw/logs/gateway.log | grep broadcast
Un seul agent repond
Cause : lâidentifiant de pair est peut-etre dans bindings mais pas dans broadcast.
Solution : ajoutez-le a la configuration broadcast ou retirez-le des bindings.
Problemes de performances
Si câest lent avec de nombreux agents :
- Reduisez le nombre dâagents par groupe
- Utilisez des modeles plus legers (sonnet au lieu dâopus)
- Verifiez le temps de demarrage des sandboxes
Exemples
Exemple 1 : equipe de revue de code
{
"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"] } }
]
}
}
Lâutilisateur envoie : un extrait de code Reponses :
- 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â
Exemple 2 : support multilingue
{
"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" }
]
}
}
Reference API
Schema de configuration
interface OpenClawConfig {
broadcast?: {
strategy?: "parallel" | "sequential";
[peerId: string]: string[];
};
}
Champs
strategy(optionnel) : mode de traitement des agents"parallel"(par defaut) : tous les agents traitent simultanement"sequential": les agents traitent dans lâordre du tableau
[peerId]: JID de groupe WhatsApp, numero E.164 ou autre identifiant de pair- Valeur : tableau dâidentifiants dâagents devant traiter les messages
Limitations
- Nombre maximal dâagents : pas de limite stricte, mais 10+ agents peut etre lent
- Contexte partage : les agents ne voient pas les reponses des autres (par conception)
- Ordre des messages : les reponses paralleles peuvent arriver dans nâimporte quel ordre
- Limites de debit : tous les agents comptent dans les limites de debit WhatsApp
Evolutions prevues
Fonctionnalites planifiees :
- Mode contexte partage (les agents voient les reponses des autres)
- Coordination dâagents (les agents peuvent se signaler mutuellement)
- Selection dynamique dâagents (choix des agents selon le contenu du message)
- Priorites dâagents (certains agents repondent avant dâautres)