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

  1. Message entrant dans un groupe WhatsApp
  2. Verification de diffusion : le systeme verifie si l’identifiant de pair est dans broadcast
  3. 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
  4. 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... vs agent: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 :

  1. Les identifiants d’agent existent dans agents.list
  2. Le format de l’identifiant de pair est correct (par ex. [email protected])
  3. 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

  1. Nombre maximal d’agents : pas de limite stricte, mais 10+ agents peut etre lent
  2. Contexte partage : les agents ne voient pas les reponses des autres (par conception)
  3. Ordre des messages : les reponses paralleles peuvent arriver dans n’importe quel ordre
  4. 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)

Voir aussi