Multi-Agent Routering
Doel: meerdere geïsoleerde agents (aparte werkruimte +agentDir + sessies), plus meerdere kanaalaccounts (bijv. twee WhatsApps) in één draaiende Gateway. Inkomend verkeer wordt via bindingen naar een agent gerouteerd.
Wat is “één agent”?
Een agent is een volledig afgebakend brein met zijn eigen:- Werkruimte (bestanden, AGENTS.md/SOUL.md/USER.md, lokale notities, persona-regels).
- Statusmap (
agentDir) voor auth-profielen, modelregister en per-agent config. - Sessiestore (chatgeschiedenis + routeringsstatus) onder
~/.openclaw/agents/<agentId>/sessions.
agentDir
nooit tussen agents (dit veroorzaakt auth-/sessieconflicten). Als je credentials wilt delen,
kopieer auth-profiles.json naar de agentDir van de andere agent.
Skills zijn per agent via de map skills/ van elke werkruimte, met gedeelde skills
beschikbaar vanuit ~/.openclaw/skills. Zie Skills: per-agent vs shared.
De Gateway kan één agent (standaard) of meerdere agents naast elkaar hosten.
Werkruimte-opmerking: de werkruimte van elke agent is de standaard cwd, geen harde
sandbox. Relatieve paden worden binnen de werkruimte opgelost, maar absolute paden kunnen
andere hostlocaties bereiken tenzij sandboxing is ingeschakeld. Zie
Sandboxing.
Paden (snelle kaart)
- Config:
~/.openclaw/openclaw.json(ofOPENCLAW_CONFIG_PATH) - Statusmap:
~/.openclaw(ofOPENCLAW_STATE_DIR) - Werkruimte:
~/.openclaw/workspace(of~/.openclaw/workspace-<agentId>) - Agentmap:
~/.openclaw/agents/<agentId>/agent(ofagents.list[].agentDir) - Sessies:
~/.openclaw/agents/<agentId>/sessions
Single-agentmodus (standaard)
Als je niets doet, draait OpenClaw met één agent:agentIdstaat standaard opmain.- Sessies zijn gesleuteld als
agent:main:<mainKey>. - Werkruimte staat standaard op
~/.openclaw/workspace(of~/.openclaw/workspace-<profile>wanneerOPENCLAW_PROFILEis ingesteld). - Status staat standaard op
~/.openclaw/agents/main/agent.
Agent-helper
Gebruik de agent-wizard om een nieuwe geïsoleerde agent toe te voegen:bindings toe (of laat de wizard dit doen) om inkomende berichten te routeren.
Verifieer met:
Meerdere agents = meerdere mensen, meerdere persoonlijkheden
Met meerdere agents wordt elkeagentId een volledig geïsoleerde persona:
- Verschillende telefoonnummers/accounts (per kanaal
accountId). - Verschillende persoonlijkheden (per-agent werkruimtebestanden zoals
AGENTS.mdenSOUL.md). - Gescheiden auth + sessies (geen kruisverkeer tenzij expliciet ingeschakeld).
Eén WhatsApp-nummer, meerdere mensen (DM-splitsing)
Je kunt verschillende WhatsApp-DM’s naar verschillende agents routeren terwijl je op één WhatsApp-account blijft. Match op afzender E.164 (zoals+15551234567) met peer.kind: "direct". Antwoorden komen nog steeds van hetzelfde WhatsApp-nummer (geen per-agent afzenderidentiteit).
Belangrijk detail: directe chats vallen samen tot de hoofdsessiesleutel van de agent, dus echte isolatie vereist één agent per persoon.
Voorbeeld:
- DM-toegangsbeheer is globaal per WhatsApp-account (koppeling/toegestane lijst), niet per agent.
- Voor gedeelde groepen: bind de groep aan één agent of gebruik Broadcast groups.
Routeringsregels (hoe berichten een agent kiezen)
Bindingen zijn deterministisch en meest-specifiek wint:peer-match (exacte DM/groep/kanaal-id)parentPeer-match (thread-overerving)guildId + roles(Discord-rolroutering)guildId(Discord)teamId(Slack)accountId-match voor een kanaal- match op kanaalniveau (
accountId: "*") - terugval naar standaardagent (
agents.list[].default, anders eerste lijstvermelding, standaard:main)
peer + guildId), zijn alle opgegeven velden vereist (AND-semantiek).
Meerdere accounts / telefoonnummers
Kanalen die meerdere accounts ondersteunen (bijv. WhatsApp) gebruikenaccountId om
elke login te identificeren. Elke accountId kan naar een andere agent worden gerouteerd,
zodat één server meerdere telefoonnummers kan hosten zonder sessies te mengen.
Concepten
agentId: één “brein” (werkruimte, per-agent auth, per-agent sessiestore).accountId: één kanaalaccount-instantie (bijv. WhatsApp-account"personal"vs"biz").binding: routeert inkomende berichten naar eenagentIdop basis van(channel, accountId, peer)en optioneel guild-/team-id’s.- Directe chats vallen samen tot
agent:<agentId>:<mainKey>(per-agent “main”;session.mainKey).
Voorbeeld: twee WhatsApps → twee agents
~/.openclaw/openclaw.json (JSON5):
Voorbeeld: WhatsApp dagelijkse chat + Telegram diep werk
Splits op kanaal: routeer WhatsApp naar een snelle alledaagse agent en Telegram naar een Opus-agent.- Als je meerdere accounts voor een kanaal hebt, voeg
accountIdtoe aan de binding (bijvoorbeeld{ channel: "whatsapp", accountId: "personal" }). - Om één DM/groep naar Opus te routeren terwijl de rest op chat blijft, voeg een
match.peer-binding toe voor die peer; peer-matches winnen altijd van kanaalbrede regels.
Voorbeeld: hetzelfde kanaal, één peer naar Opus
Houd WhatsApp op de snelle agent, maar routeer één DM naar Opus:Familie-agent gebonden aan een WhatsApp-groep
Bind een speciale familie-agent aan één WhatsApp-groep, met mention-gating en een strakker toolbeleid:- Tool-toegestane/weigerlijsten zijn tools, geen skills. Als een skill een
binary moet uitvoeren, zorg ervoor dat
execis toegestaan en dat de binary in de sandbox bestaat. - Voor strengere gating, stel
agents.list[].groupChat.mentionPatternsin en houd groep-toegestane lijsten ingeschakeld voor het kanaal.
Per-agent Sandbox- en Toolconfiguratie
Vanaf v2026.1.6 kan elke agent zijn eigen sandbox en toolbeperkingen hebben:setupCommand staat onder sandbox.docker en wordt één keer uitgevoerd bij het aanmaken van de container.
Per-agent sandbox.docker.*-overschrijvingen worden genegeerd wanneer het opgeloste bereik "shared" is.
Voordelen:
- Beveiligingsisolatie: Beperk tools voor onbetrouwbare agents
- Resourcebeheer: Sandbox specifieke agents terwijl anderen op de host blijven
- Flexibele beleidsregels: Verschillende rechten per agent
tools.elevated is globaal en afzendergebaseerd; het is niet per agent configureerbaar.
Als je per-agent grenzen nodig hebt, gebruik agents.list[].tools om exec te weigeren.
Voor groepsdoelgroepering gebruik je agents.list[].groupChat.mentionPatterns zodat @mentions netjes naar de bedoelde agent mappen.
Zie Multi-Agent Sandbox & Tools voor gedetailleerde voorbeelden.