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 DM een team van gespecialiseerde agents kan huisvesten.
Broadcastgroepen worden geëvalueerd na kanaaltoelatingslijsten en groepsactiveringsregels. 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). Sleutels zijn WhatsApp-peer-id's, waarden zijn arrays met agent-id's:
- groepschats: groeps-JID (bijv.
120363403215116621@g.us) - DM's: E.164-telefoonnummer van de afzender (bijv.
+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.entries: configuratievalidatie meldt onbekende id's en de runtime slaat deze over met een Broadcast agent <id> not found in agents.entries; skipping-waarschuwing.
Verwerkingsstrategie
broadcast.strategy bepaalt hoe agents het bericht verwerken:
| Strategie | Gedrag |
|---|---|
parallel (standaard) |
Alle agents verwerken gelijktijdig; antwoorden komen in willekeurige volgorde binnen. |
sequential |
Agents verwerken 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"] }}Hoe het werkt
Berichtenstroom
Inkomend bericht arriveert
Er komt een WhatsApp-groepsbericht of DM binnen.
Routering en toelating
OpenClaw past kanaaltoelatingslijsten, groepsactiveringsregels 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 parallel (standaard) of sequentieel.
- Audiobijlagen worden vóór de fan-out eenmaal getranscribeerd, zodat agents één transcript delen in plaats van afzonderlijke STT-aanroepen te doen.
Als broadcast niet van toepassing is
OpenClaw verzendt naar de gewone route of de geconfigureerde ACP-sessieroute die tijdens de routering is geselecteerd.
Sessie-isolatie
Elke agent in een broadcastgroep houdt het volgende volledig gescheiden:
- Sessiesleutels (
agent:alfred:whatsapp:group:120363...versusagent:baerbel:whatsapp:group:120363...) - Gespreksgeschiedenis (een agent ziet de antwoorden van andere agents niet)
- Werkruimte (afzonderlijke sandboxes indien geconfigureerd)
- Toegang tot tools (verschillende toestaan/weigeren-lijsten)
- Geheugen/context (afzonderlijke
IDENTITY.md,SOUL.md, enz.)
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 wordt eenmaal gewist nadat de fan-out is voltooid.
Hierdoor kan elke agent andere persoonlijkheden, modellen, Skills en toegang tot tools hebben (bijvoorbeeld alleen-lezen versus lezen-en-schrijven).
Voorbeeld: geïsoleerde sessies
In groep 120363403215116621@g.us met agents ["alfred", "baerbel"]:
Context van Alfred
Sessie: agent:alfred:whatsapp:group:120363403215116621@g.usGeschiedenis: [gebruikersbericht, eerdere antwoorden van alfred]Werkruimte: ~/openclaw-alfred/Tools: lezen, schrijven, uitvoerenContext van Baerbel
Sessie: agent:baerbel:whatsapp:group:120363403215116621@g.usGeschiedenis: [gebruikersbericht, eerdere antwoorden van baerbel]Werkruimte: ~/openclaw-baerbel/Tools: alleen-lezenGebruiksscenario's
- Gespecialiseerde agentteams: een ontwikkelgroep waarin
code-reviewer,security-auditor,test-generatorendocs-checkerelk vanuit hun eigen invalshoek op hetzelfde bericht antwoorden. - Meertalige ondersteuning: één supportchat waarin
support-en,support-deensupport-esin hun eigen taal antwoorden. - Kwaliteitsborging:
support-agentantwoordt terwijlqa-agentcontroleert en alleen reageert wanneer 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 "dev-helper"-agent.
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 is alleen-lezen. 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 mislukken onafhankelijk van elkaar. 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.entries(configuratievalidatie wijst onbekende id's af). - De indeling van de peer-id is correct (groeps-JID zoals
120363403215116621@g.us, of E.164 zoals+15551234567voor DM's). - Het bericht heeft de normale toelatingscontroles doorstaan (vermeldings-/activeringsregels 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 met gewone routebindingen toe aan de broadcastconfiguratie, of verwijder/wijzig de geconfigureerde ACP-binding als een fan-outbroadcast gewenst is.
Prestatieproblemen
Bij traagheid met veel agents: verminder het aantal agents per groep, gebruik lichtere modellen en controleer de opstarttijd van de sandbox.
Voorbeelden
Voorbeeld 1: Codereviewteam
{ "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 dekking 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: geen harde limiet, maar veel agents (10+) kunnen traag zijn.
- Gedeelde context: agents zien elkaars antwoorden niet (bewust zo ontworpen).
- Berichtvolgorde: parallelle antwoorden kunnen in elke volgorde binnenkomen.
- Frequentielimieten: alle antwoorden komen van één WhatsApp-account, dus het antwoord van elke agent telt mee voor dezelfde WhatsApp-frequentielimieten.