Groupes de diffusion¶
Statut : Expérimental
Version : Ajouté dans 2026.1.9
Présentation¶
Les groupes de diffusion permettent Ă plusieurs agents de traiter et de rĂ©pondre simultanĂ©ment au mĂȘme message. Cela vous permet de crĂ©er des Ă©quipes dâagents spĂ©cialisĂ©s qui travaillent ensemble dans un mĂȘme groupe WhatsApp ou message privĂ© â le tout en utilisant un seul numĂ©ro de tĂ©lĂ©phone.
PérimÚtre actuel : WhatsApp uniquement (canal web).
Les groupes de diffusion sont Ă©valuĂ©s aprĂšs les listes dâautorisation de canal et les rĂšgles dâactivation de groupe. Dans les groupes WhatsApp, cela signifie que les diffusions ont lieu lorsque OpenClaw rĂ©pondrait normalement (par exemple : sur mention, selon les paramĂštres de votre groupe).
Cas dâutilisation¶
1. Ăquipes dâagents spĂ©cialisĂ©es¶
Déployez plusieurs agents avec des responsabilités atomiques et ciblées :
Group: "Development Team"
Agents:
- CodeReviewer (reviews code snippets)
- DocumentationBot (generates docs)
- SecurityAuditor (checks for vulnerabilities)
- TestGenerator (suggests test cases)
Chaque agent traite le mĂȘme message et fournit son point de vue spĂ©cialisĂ©.
2. Support multilingue¶
Group: "International Support"
Agents:
- Agent_EN (responds in English)
- Agent_DE (responds in German)
- Agent_ES (responds in Spanish)
3. Flux de travail dâassurance qualité¶
Group: "Customer Support"
Agents:
- SupportAgent (provides answer)
- QAAgent (reviews quality, only responds if issues found)
4. Automatisation des tùches¶
Group: "Project Management"
Agents:
- TaskTracker (updates task database)
- TimeLogger (logs time spent)
- ReportGenerator (creates summaries)
Configuration¶
Configuration de base¶
Ajoutez une section de premier niveau broadcast (à cÎté de bindings). Les clés sont des identifiants de pairs WhatsApp :
- discussions de groupe : JID du groupe (par ex.
120363403215116621@g.us) - DM: numéro de téléphone E.164 (par exemple
+15551234567)
{
"broadcast": {
"120363403215116621@g.us": ["alfred", "baerbel", "assistant3"]
}
}
Résultat : Lorsque OpenClaw répondrait dans ce chat, il exécutera les trois agents.
Stratégie de traitement¶
ContrĂŽlez la maniĂšre dont les agents traitent les messages :
ParallÚle (par défaut)¶
Tous les agents traitent simultanément :
{
"broadcast": {
"strategy": "parallel",
"120363403215116621@g.us": ["alfred", "baerbel"]
}
}
Séquentiel¶
Les agents traitent dans lâordre (lâun attend que le prĂ©cĂ©dent ait terminĂ©) :
{
"broadcast": {
"strategy": "sequential",
"120363403215116621@g.us": ["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",
"120363403215116621@g.us": ["code-reviewer", "security-auditor", "docs-generator"],
"120363424282127706@g.us": ["support-en", "support-de"],
"+15555550123": ["assistant", "logger"]
}
}
Fonctionnement¶
Flux de messages¶
- Message entrant arrive dans un groupe WhatsApp
- VĂ©rification de diffusion : le systĂšme vĂ©rifie si lâID de pair figure dans
broadcast - Sâil est dans la liste de diffusion : - Tous les agents listĂ©s traitent le message - Chaque agent dispose de sa propre clĂ© de session et dâun contexte isolĂ© - Les agents traitent en parallĂšle (par dĂ©faut) ou de maniĂšre sĂ©quentielle
- Sâil nâest pas dans la liste de diffusion : - Le routage normal sâapplique (premiĂšre liaison correspondante)
Remarque : les groupes de diffusion ne contournent pas les listes dâautorisation de canal ni les rĂšgles dâactivation de groupe (mentions/commandes/etc.). Ils modifient uniquement quels agents sâexĂ©cutent lorsquâun message est Ă©ligible au traitement.
Isolation des sessions¶
Chaque agent dans un groupe de diffusion maintient des éléments complÚtement séparés :
- Clés 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 séparés si configurés)
- AccĂšs aux outils (listes dâautorisation/refus diffĂ©rentes)
- Mémoire/contexte (IDENTITY.md, SOUL.md, etc. séparés)
- Tampon de contexte de groupe (messages rĂ©cents du groupe utilisĂ©s pour le contexte) est partagĂ© par pair, de sorte que tous les agents de diffusion voient le mĂȘme contexte lorsquâils sont dĂ©clenchĂ©s
Cela permet Ă chaque agent dâavoir :
- Des personnalités différentes
- Des accÚs aux outils différents (par ex., lecture seule vs lecture-écriture)
- Des modÚles différents (par ex., opus vs sonnet)
- Des Skills différents installés
Exemple : Sessions isolées¶
Dans le groupe 120363403215116621@g.us avec les agents ["alfred", "baerbel"] :
Contexte dâAlfred :
Session: agent:alfred:whatsapp:group:120363403215116621@g.us
History: [user message, alfred's previous responses]
Workspace: /Users/pascal/openclaw-alfred/
Tools: read, write, exec
Contexte de BĂ€rbel :
Session: agent:baerbel:whatsapp:group:120363403215116621@g.us
History: [user message, baerbel's previous responses]
Workspace: /Users/pascal/openclaw-baerbel/
Tools: read only
Bonnes pratiques¶
1. Garder les agents ciblés¶
Concevez chaque agent avec une responsabilité unique et claire :
{
"broadcast": {
"DEV_GROUP": ["formatter", "linter", "tester"]
}
}
â
Bon : Chaque agent a une seule tĂąche
â Mauvais : Un agent gĂ©nĂ©rique « dev-helper »
2. Utiliser des noms descriptifs¶
Rendez clair ce que fait chaque agent :
{
"agents": {
"security-scanner": { "name": "Security Scanner" },
"code-formatter": { "name": "Code Formatter" },
"test-generator": { "name": "Test Generator" }
}
}
3. Configurer des accÚs aux outils différents¶
Donnez aux agents uniquement les outils dont ils ont besoin :
{
"agents": {
"reviewer": {
"tools": { "allow": ["read", "exec"] } // Read-only
},
"fixer": {
"tools": { "allow": ["read", "write", "edit", "exec"] } // Read-write
}
}
}
4. Surveiller les performances¶
Avec de nombreux agents, envisagez :
- Lâutilisation de
"strategy": "parallel"(par dĂ©faut) pour la vitesse - La limitation des groupes de diffusion Ă 5â10 agents
- Lâutilisation de modĂšles plus rapides pour les agents simples
5. Gérer les échecs avec élégance¶
Les agents Ă©chouent indĂ©pendamment. 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
Compatibilité¶
Fournisseurs¶
Les groupes de diffusion fonctionnent actuellement avec :
- â WhatsApp (implĂ©mentĂ©)
- đ§ Telegram (prĂ©vu)
- đ§ Discord (prĂ©vu)
- đ§ Slack (prĂ©vu)
Routage¶
Les groupes de diffusion fonctionnent aux cÎtés du routage existant :
{
"bindings": [
{
"match": { "channel": "whatsapp", "peer": { "kind": "group", "id": "GROUP_A" } },
"agentId": "alfred"
}
],
"broadcast": {
"GROUP_B": ["agent1", "agent2"]
}
}
GROUP_A: seul alfred répond (routage normal)GROUP_B: agent1 ET agent2 répondent (diffusion)
Priorité : broadcast a la priorité sur bindings.
Problemes courants¶
Les agents ne répondent pas¶
Vérifier :
- Les ID dâagent existent dans
agents.list - Le format de lâID de pair est correct (par ex.
120363403215116621@g.us) - Les agents ne figurent pas dans des listes de refus
Débogage :
tail -f ~/.openclaw/logs/gateway.log | grep broadcast
Un seul agent répond¶
Cause : LâID de pair peut figurer dans bindings mais pas dans broadcast.
Correctif : Ajoutez-le Ă la configuration de diffusion ou supprimez-le des liaisons.
ProblÚmes de performances¶
Si câest lent avec de nombreux agents :
- RĂ©duisez le nombre dâagents par groupe
- Utilisez des modĂšles plus lĂ©gers (sonnet plutĂŽt quâopus)
- Vérifiez le temps de démarrage du sandbox
Exemples¶
Exemple 1 : Ăquipe de revue de code¶
{
"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âutilisateur envoie : Extrait de code
Réponses :
- code-formatter : « Correction de lâindentation et ajout dâannotations de type »
- security-scanner : « â ïž VulnĂ©rabilitĂ© dâinjection SQL Ă la ligne 12 »
- test-coverage : « La couverture est de 45 %, des tests manquent pour les cas dâerreur »
- docs-checker : « Docstring manquante pour la fonction
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" }
]
}
}
Référence API¶
Schéma de configuration¶
interface OpenClawConfig {
broadcast?: {
strategy?: "parallel" | "sequential";
[peerId: string]: string[];
};
}
Champs¶
strategy(facultatif) : Comment traiter les agents"parallel"(par dĂ©faut) : Tous les agents traitent simultanĂ©ment"sequential": Les agents traitent selon lâordre du tableau[peerId]: JID de groupe WhatsApp, numĂ©ro E.164 ou autre ID de pair- Valeur : Tableau des ID dâagents qui doivent traiter les messages
Limitations¶
- Nombre maximal dâagents : Pas de limite stricte, mais 10+ agents peuvent ĂȘtre lents
- Contexte partagé : Les agents ne voient pas les réponses des autres (par conception)
- Ordonnancement des messages : Les rĂ©ponses parallĂšles peuvent arriver dans nâimporte quel ordre
- Limites de débit : Tous les agents comptent dans les limites de débit WhatsApp
Améliorations futures¶
Fonctionnalités prévues :
- [ ] Mode de contexte partagé (les agents voient les réponses des autres)
- [ ] Coordination des agents (les agents peuvent se signaler entre eux)
- [ ] Sélection dynamique des agents (choisir les agents en fonction du contenu du message)
- [ ] PrioritĂ©s des agents (certains agents rĂ©pondent avant dâautres)