Passer au contenu principal

Documentation Index

Fetch the complete documentation index at: https://docs.openclaw.ai/llms.txt

Use this file to discover all available pages before exploring further.

Statut : Expérimental. Ajouté dans 2026.1.9.

Vue d’ensemble

Les groupes de diffusion permettent à plusieurs agents de traiter le même message et d’y répondre simultanément. Cela vous permet de créer des équipes d’agents spécialisées qui travaillent ensemble dans un seul groupe ou message direct WhatsApp, le tout avec 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 des canaux et les règles d’activation des groupes. Dans les groupes WhatsApp, cela signifie que les diffusions ont lieu lorsque OpenClaw répondrait normalement (par exemple : lors d’une mention, selon les paramètres de votre groupe).

Cas d’utilisation

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é.
Group: "International Support"
Agents:
  - Agent_EN (responds in English)
  - Agent_DE (responds in German)
  - Agent_ES (responds in Spanish)
Group: "Customer Support"
Agents:
  - SupportAgent (provides answer)
  - QAAgent (reviews quality, only responds if issues found)
Group: "Project Management"
Agents:
  - TaskTracker (updates task database)
  - TimeLogger (logs time spent)
  - ReportGenerator (creates summaries)

Configuration

Configuration de base

Ajoutez une section broadcast de premier niveau (à côté de bindings). Les clés sont des identifiants de pairs WhatsApp :
  • discussions de groupe : JID de groupe (par exemple 120363403215116621@g.us)
  • messages directs : 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 cette discussion, il exécutera les trois agents.

Stratégie de traitement

Contrôlez la façon dont les agents traitent les messages :
Tous les agents traitent simultanément :
{
  "broadcast": {
    "strategy": "parallel",
    "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 des messages

1

Un message entrant arrive

Un message de groupe ou message direct WhatsApp arrive.
2

Vérification de diffusion

Le système vérifie si l’ID du pair figure dans broadcast.
3

S’il figure dans la liste de diffusion

  • Tous les agents listés traitent le message.
  • Chaque agent possède sa propre clé de session et son contexte isolé.
  • Les agents traitent en parallèle (par défaut) ou séquentiellement.
4

S’il ne figure pas dans la liste de diffusion

Le routage normal s’applique (première liaison correspondante).
Les groupes de diffusion ne contournent pas les listes d’autorisation des canaux ni les règles d’activation des groupes (mentions/commandes/etc.). Ils changent uniquement quels agents s’exécutent lorsqu’un message est admissible au traitement.

Isolation des sessions

Chaque agent d’un groupe de diffusion conserve des éléments complètement séparés :
  • Clés 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 (bacs à sable 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)
  • Le tampon de contexte de groupe (messages de groupe récents utilisés comme contexte) est partagé par pair, ce qui permet à tous les agents de diffusion de voir 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 exemple, lecture seule vs lecture-écriture)
  • Des modèles différents (par exemple, opus vs sonnet)
  • Des Skills différents installés

Exemple : sessions isolées

Dans le groupe 120363403215116621@g.us avec les agents ["alfred", "baerbel"] :
Session: agent:alfred:whatsapp:group:120363403215116621@g.us
History: [user message, alfred's previous responses]
Workspace: /Users/user/openclaw-alfred/
Tools: read, write, exec

Bonnes pratiques

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”.
Indiquez clairement ce que fait chaque agent :
{
  "agents": {
    "security-scanner": { "name": "Security Scanner" },
    "code-formatter": { "name": "Code Formatter" },
    "test-generator": { "name": "Test Generator" }
  }
}
Donnez aux agents uniquement les outils dont ils ont besoin :
{
  "agents": {
    "reviewer": {
      "tools": { "allow": ["read", "exec"] }
    },
    "fixer": {
      "tools": { "allow": ["read", "write", "edit", "exec"] }
    }
  }
}
reviewer est en lecture seule. fixer peut lire et écrire.
Avec de nombreux agents, envisagez :
  • D’utiliser "strategy": "parallel" (par défaut) pour la vitesse
  • De limiter les groupes de diffusion à 5 à 10 agents
  • D’utiliser des modèles plus rapides pour les agents plus simples
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 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 répond (routage normal).
  • GROUP_B : agent1 ET agent2 répondent (diffusion).
Priorité : broadcast est prioritaire sur bindings.

Dépannage

Vérifiez :
  1. Les ID d’agents existent dans agents.list.
  2. Le format de l’ID du pair est correct (par exemple, 120363403215116621@g.us).
  3. Les agents ne figurent pas dans des listes de refus.
Débogage :
tail -f ~/.openclaw/logs/gateway.log | grep broadcast
Cause : L’ID du pair peut figurer dans bindings, mais pas dans broadcast.Correction : Ajoutez-le à la configuration de diffusion ou supprimez-le des liaisons.
En cas de lenteur avec de nombreux agents :
  • Réduisez le nombre d’agents par groupe.
  • Utilisez des modèles plus légers (sonnet au lieu d’opus).
  • Vérifiez le temps de démarrage du bac à sable.

Exemples

{
  "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 : Un extrait de code.Réponses :
  • 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
{
  "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
"parallel" | "sequential"
défaut:"\"parallel\""
Comment traiter les agents. parallel exécute tous les agents simultanément ; sequential les exécute dans l’ordre du tableau.
[peerId]
string[]
JID de groupe WhatsApp, numéro E.164 ou autre ID de pair. La valeur est le tableau d’ID d’agents qui doivent traiter les messages.

Limitations

  1. Nombre maximal d’agents : Aucune limite stricte, mais 10 agents ou plus peuvent être lents.
  2. Contexte partagé : Les agents ne voient pas les réponses des autres agents (par conception).
  3. Ordre des messages : Les réponses parallèles peuvent arriver dans n’importe quel ordre.
  4. Limites de débit : Tous les agents comptent dans les limites de débit de 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 s’envoyer des signaux)
  • Sélection dynamique des agents (choisir les agents selon le contenu du message)
  • Priorités des agents (certains agents répondent avant les autres)

Articles associés