Configuration
Uitzendgroepen
Overzicht
Broadcastgroepen voeren meerdere agents uit voor hetzelfde inkomende bericht. Elke agent verwerkt het bericht in een eigen geïsoleerde sessie en plaatst een eigen antwoord, zodat één WhatsApp-nummer in één groepschat of privébericht een team van gespecialiseerde agents kan huisvesten.
Broadcastgroepen worden geëvalueerd na de toestemmingslijsten van het kanaal en de activeringsregels voor groepen. In WhatsApp-groepen vinden broadcasts plaats wanneer OpenClaw normaal gesproken zou antwoorden (bijvoorbeeld bij een vermelding, afhankelijk van je groepsinstellingen). Ze veranderen alleen welke agents worden uitgevoerd, nooit of een bericht voor verwerking in aanmerking komt.
De live WhatsApp-QA-lane bevat whatsapp-broadcast-group-fanout, waarmee wordt gecontroleerd of één groepsbericht met een vermelding afzonderlijke zichtbare antwoorden van twee geconfigureerde agents kan opleveren.
Configuratie
Basisconfiguratie
Voeg een broadcast-sectie op het hoogste niveau toe (naast bindings). De sleutels zijn WhatsApp-peer-id's en de waarden zijn arrays met agent-id's:
- groepschats: groeps-JID (bijvoorbeeld
120363403215116621@g.us) - privéberichten: E.164-telefoonnummer van de afzender (bijvoorbeeld
+15551234567)
{ "broadcast": { "120363403215116621@g.us": ["alfred", "baerbel", "assistant3"] }}Resultaat: wanneer OpenClaw in deze chat zou antwoorden, worden alle drie de agents uitgevoerd.
Elke vermelde agent-id moet bestaan in agents.list: configuratievalidatie meldt onbekende id's en de runtime slaat deze over met de waarschuwing Broadcast agent <id> not found in agents.list; skipping.
Verwerkingsstrategie
broadcast.strategy bepaalt hoe agents het bericht verwerken:
| Strategie | Gedrag |
|---|---|
parallel (standaard) |
Alle agents verwerken het bericht gelijktijdig; antwoorden kunnen in elke volgorde aankomen. |
sequential |
Agents verwerken het bericht in arrayvolgorde; elke agent wacht tot de vorige klaar is. |
{ "broadcast": { "strategy": "sequential", "120363403215116621@g.us": ["alfred", "baerbel"] }}Volledig voorbeeld
{ "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"] }}Werking
Berichtstroom
Inkomend bericht arriveert
Er komt een WhatsApp-groepsbericht of privébericht binnen.
Routering en toelating
OpenClaw past toestemmingslijsten voor kanalen, activeringsregels voor groepen en het geconfigureerde eigenaarschap van ACP-bindingen toe.
Broadcastcontrole
Als geen geconfigureerde ACP-binding eigenaar is van de route, controleert OpenClaw of de peer-id in broadcast staat.
Als broadcast van toepassing is
- Alle vermelde agents verwerken het bericht.
- Elke agent heeft een eigen sessiesleutel en geïsoleerde context.
- Agents verwerken het bericht parallel (standaard) of sequentieel.
- Audiobijlagen worden vóór de fan-out één keer getranscribeerd, zodat agents één transcript delen in plaats van afzonderlijke STT-aanroepen uit te voeren.
Als broadcast niet van toepassing is
OpenClaw verzendt het bericht via de gewone route of de geconfigureerde ACP-sessieroute die tijdens de routering is geselecteerd.
Sessie-isolatie
Elke agent in een broadcastgroep onderhoudt volledig afzonderlijke:
- Sessiesleutels (
agent:alfred:whatsapp:group:120363...tegenoveragent:baerbel:whatsapp:group:120363...) - Gespreksgeschiedenis (een agent ziet de antwoorden van andere agents niet)
- Werkruimte (afzonderlijke sandboxes, indien geconfigureerd)
- Toegang tot tools (verschillende lijsten voor toestaan/weigeren)
- Geheugen/context (afzonderlijke
IDENTITY.md,SOUL.md, enzovoort)
Eén uitzondering wordt bewust gedeeld: de groepscontextbuffer (recente groepsberichten die als context worden gebruikt) wordt per peer gedeeld, zodat alle broadcastagents bij activering dezelfde context zien. Deze buffer wordt eenmaal gewist nadat de fan-out is voltooid.
Hierdoor kan elke agent een andere persoonlijkheid, andere modellen, andere Skills en andere toegang tot tools hebben (bijvoorbeeld alleen-lezen tegenover lezen en schrijven).
Voorbeeld: geïsoleerde sessies
In groep 120363403215116621@g.us met agents ["alfred", "baerbel"]:
Context van Alfred
Session: agent:alfred:whatsapp:group:120363403215116621@g.usHistory: [user message, alfred's previous responses]Workspace: ~/openclaw-alfred/Tools: read, write, execContext van Baerbel
Session: agent:baerbel:whatsapp:group:120363403215116621@g.usHistory: [user message, baerbel's previous responses]Workspace: ~/openclaw-baerbel/Tools: read onlyGebruiksscenario's
- Gespecialiseerde agentteams: een ontwikkelaarsgroep waarin
code-reviewer,security-auditor,test-generatorendocs-checkerhetzelfde bericht elk vanuit hun eigen invalshoek beantwoorden. - Meertalige ondersteuning: één ondersteuningschat waarin
support-en,support-deensupport-esin hun eigen taal antwoorden. - Kwaliteitsborging:
support-agentantwoordt terwijlqa-agenthet antwoord beoordeelt en alleen reageert als er problemen worden gevonden. - Taakautomatisering:
task-tracker,time-loggerenreport-generatorverwerken allemaal dezelfde statusupdate.
Aanbevolen werkwijzen
1. Houd agents gericht
Geef elke agent één duidelijke verantwoordelijkheid (formatter, linter, tester) in plaats van één algemene agent zoals "dev-helper".
2. Gebruik beschrijvende id's en namen
{ "agents": { "list": [ { "id": "security-scanner", "name": "Security Scanner" }, { "id": "code-formatter", "name": "Code Formatter" }, { "id": "test-generator", "name": "Test Generator" } ] }}3. Configureer verschillende toegang tot tools
{ "agents": { "list": [ { "id": "reviewer", "tools": { "allow": ["read", "exec"] } }, { "id": "fixer", "tools": { "allow": ["read", "write", "edit", "exec"] } } ] }}reviewer heeft alleen-lezen-toegang. fixer kan lezen en schrijven.
4. Bewaak de prestaties
Geef bij veel agents de voorkeur aan "strategy": "parallel" (standaard), beperk broadcastgroepen tot een handvol agents en gebruik snellere modellen voor eenvoudigere agents.
5. Fouten blijven geïsoleerd
Agents kunnen onafhankelijk mislukken. De fout van één agent wordt geregistreerd (Broadcast agent <id> failed: ...) en blokkeert de andere agents niet.
Compatibiliteit
Providers
Broadcastgroepen zijn momenteel alleen geïmplementeerd voor WhatsApp (webkanaal). Andere kanalen negeren de broadcast-configuratie.
Routering
Broadcastgroepen werken naast de bestaande routering:
{ "bindings": [ { "match": { "channel": "whatsapp", "peer": { "kind": "group", "id": "GROUP_A" } }, "agentId": "alfred" } ], "broadcast": { "GROUP_B": ["agent1", "agent2"] }}GROUP_A: alleen alfred antwoordt (normale routering).GROUP_B: agent1 EN agent2 antwoorden (broadcast).
Probleemoplossing
Agents antwoorden niet
Controleer:
- Agent-id's bestaan in
agents.list(configuratievalidatie weigert onbekende id's). - De notatie van de peer-id is correct (een groeps-JID zoals
120363403215116621@g.us, of E.164 zoals+15551234567voor privéberichten). - Het bericht heeft de normale toelatingscontrole doorstaan (regels voor vermeldingen/activering blijven van toepassing).
Foutopsporing:
openclaw logs --follow | grep -i broadcastEen geslaagde fan-out registreert Broadcasting message to <n> agents (<strategy>).
Slechts één agent antwoordt
Oorzaak: de peer-id staat mogelijk in gewone routebindingen, maar niet in broadcast, of komt mogelijk overeen met een exclusieve geconfigureerde ACP-binding.
Oplossing: voeg peers die aan gewone routes zijn gebonden toe aan de broadcastconfiguratie, of verwijder/wijzig de geconfigureerde ACP-binding als een fan-out-broadcast gewenst is.
Prestatieproblemen
Als het systeem traag is bij veel agents: verminder het aantal agents per groep, gebruik lichtere modellen en controleer de opstarttijd van de sandbox.
Voorbeelden
Voorbeeld 1: Team voor codebeoordeling
{ "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"] } } ] }}Eén codefragment in de groep levert vier antwoorden op: opmaakcorrecties, een beveiligingsbevinding, een hiaat in de testdekking en een kleine documentatieopmerking.
Voorbeeld 2: Meertalige pijplijn
{ "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" } ] }}API-referentie
Configuratieschema
interface OpenClawConfig { broadcast?: { strategy?: "parallel" | "sequential"; [peerId: string]: string[]; };}Velden
strategy"parallel" | "sequential"default: "parallel"Hoe agents worden verwerkt. parallel voert alle agents gelijktijdig uit; sequential voert ze in arrayvolgorde uit.
[peerId]string[]WhatsApp-groeps-JID of E.164-telefoonnummer. De waarde is de array met agent-id's die allemaal berichten van deze peer moeten verwerken.
Beperkingen
- Maximumaantal agents: er is geen harde limiet, maar veel agents (10+) kunnen traag zijn.
- Gedeelde context: agents zien elkaars antwoorden niet (bewust ontwerp).
- Berichtvolgorde: parallelle antwoorden kunnen in elke volgorde aankomen.
- Snelheidslimieten: alle antwoorden komen van één WhatsApp-account, dus het antwoord van elke agent telt mee voor dezelfde WhatsApp-snelheidslimieten.