Multi-Agent-routning
Mål: flera isolerade agenter (separat arbetsyta +agentDir + sessioner), plus flera kanalkonton (t.ex. två WhatsApps) i en kör Gateway. Inkommande dirigeras till en agent via bindningar.
Vad är ”en agent”?
En agent är ett fullt avgränsat ”hjärna”-system med egna:- Arbetsyta (filer, AGENTS.md/SOUL.md/USER.md, lokala anteckningar, personaregler).
- Tillståndskatalog (
agentDir) för autentiseringsprofiler, modellregister och per-agent-konfig. - Sessionslager (chathistorik + routningstillstånd) under
~/.openclaw/agents/<agentId>/sessions.
agentDir
över agenter (det orsakar författ/session kollisioner). Om du vill dela kredit kopierar
auth-profiles.json till den andra agentens agentDir.
Färdigheter är per agent via varje arbetsytans skills/-mapp, med delade färdigheter
tillgängliga från ~/.openclaw/skills. Se Skills: per-agent vs shared.
Gateway kan vara värd för en agent (standard) eller många agenter sida vid sida.
Arbetsytans anteckning: varje agents arbetsyta är standard cwd, inte en hård
sandlåda. Relativa vägar försvinner inne i arbetsytan, men absoluta vägar kan
nå andra värdplatser om inte sandlådan är aktiverad. Se
Sandboxing.
Sökvägar (snabbkarta)
- Konfig:
~/.openclaw/openclaw.json(ellerOPENCLAW_CONFIG_PATH) - Tillståndskatalog:
~/.openclaw(ellerOPENCLAW_STATE_DIR) - Arbetsyta:
~/.openclaw/workspace(eller~/.openclaw/workspace-<agentId>) - Agentkatalog:
~/.openclaw/agents/<agentId>/agent(elleragents.list[].agentDir) - Sessioner:
~/.openclaw/agents/<agentId>/sessions
Enagentsläge (standard)
Om du inte gör något kör OpenClaw en enda agent:agentIdär som standardmain.- Sessioner nycklas som
agent:main:<mainKey>. - Arbetsyta är som standard
~/.openclaw/workspace(eller~/.openclaw/workspace-<profile>närOPENCLAW_PROFILEär satt). - Tillstånd är som standard
~/.openclaw/agents/main/agent.
Agenthjälpare
Använd agentguiden för att lägga till en ny isolerad agent:bindings (eller låt guiden göra det) för att routa inkommande meddelanden.
Verifiera med:
Flera agenter = flera personer, flera personligheter
Med flera agenter blir varjeagentId en helt isolerad persona:
- Olika telefonnummer/konton (per kanal-
accountId). - Olika personligheter (per-agent-arbetsytefiler som
AGENTS.mdochSOUL.md). - Separat autentisering + sessioner (ingen korskommunikation om den inte uttryckligen aktiveras).
Ett WhatsApp-nummer, flera personer (DM-delning)
Du kan dirigera olika WhatsApp DMs till olika agenter medan du stannar på ett WhatsApp konto. Match on sender E.164 (like+15551234567) with peer.kind: "direct". Svaren kommer fortfarande från samma WhatsApp nummer (ingen per-agent avsändare identitet).
Viktig detalj: direktchattar kollapsar till agentens huvudsessionnyckel, så verklig isolering kräver en agent per person.
Exempel:
- DM-åtkomstkontroll är global per WhatsApp-konto (parkoppling/tillåtelselista), inte per agent.
- För delade grupper, bind gruppen till en agent eller använd Broadcast groups.
Routningsregler (hur meddelanden väljer agent)
Bindningar är deterministiska och mest specifika vinner:peer-matchning (exakt DM-/grupp-/kanal-id)parentPeer‑matchning (trådärvning)guildId + roles(Discord roll‑routing)guildId(Discord)teamId(Slack)- fallback till standardagent (
agents.list[].default, annars första listelementet, standard:main) - matchning på kanalnivå (
accountId: "*") - fallback till standardagent (
agents.list[].default, annars första listelementet, standard:main)
peer + guildId) krävs alla angivna fält (AND‑semantik).
Flera konton / telefonnummer
Kanaler som stöder flera konton (t.ex. WhatsApp) använderaccountId för att identifiera
varje inloggning. Varje accountId kan dirigeras till en annan agent, så en server kan värd
flera telefonnummer utan att blanda sessioner.
Begrepp
agentId: en ”hjärna” (arbetsyta, per-agent-autentisering, per-agent-sessionslager).accountId: en kanal konto instans (t.ex. WhatsApp konto"personlig"vs"biz").binding: routar inkommande meddelanden till enagentIdvia(channel, accountId, peer)och valfritt guild-/team-id.- Direktchattar kollapsar till
agent:<agentId>:<mainKey>(per-agent ”main”;session.mainKey).
Exempel: två WhatsApp → två agenter
~/.openclaw/openclaw.json (JSON5):
Exempel: WhatsApp vardagschatt + Telegram djupjobb
Dela upp per kanal: routa WhatsApp till en snabb vardagsagent och Telegram till en Opus-agent.- Om du har flera konton för en kanal, lägg till
accountIdi bindningen (till exempel{ channel: "whatsapp", accountId: "personal" }). - För att routa en enskild DM/grupp till Opus samtidigt som resten behålls på chatt, lägg till en
match.peer-bindning för den peer:n; peer-matchningar vinner alltid över kanalomfattande regler.
Exempel: samma kanal, en peer till Opus
Behåll WhatsApp på den snabba agenten, men routa en DM till Opus:Familjeagent bunden till en WhatsApp-grupp
Bind en dedikerad familjeagent till en enda WhatsApp-grupp, med omnämnandespärr och en stramare verktygspolicy:- Verktyg tillåtna/neka listor är verktyg, inte färdigheter. Om en färdighet behöver köra en
binär, se till att
execär tillåten och binären finns i sandlådan. - För striktare spärrar, sätt
agents.list[].groupChat.mentionPatternsoch behåll grupptillåtelselistor aktiverade för kanalen.
Per-agent Sandbox och verktygskonfiguration
Från och med v2026.1.6 kan varje agent ha sin egen sandbox och verktygsbegränsningar:setupCommand bor under sandbox.docker och körs en gång på behållaren skapas.
Per-agent sandbox.docker.* åsidosättningar ignoreras när det lösta området är "delad".
Fördelar:
- Säkerhetsisolering: Begränsa verktyg för opålitliga agenter
- Resurskontroll: Sandboxa specifika agenter medan andra körs på värden
- Flexibla policyer: Olika behörigheter per agent
tools.elevated är global och avsändarbaserad; den är inte konfigurerbar per agent.
Om du behöver gränser per agent, använd agents.list[].tools för att neka exec.
För gruppinriktning, använd agents.list[].groupChat.mentionPatterns så @nämner karta rent till den avsedda agenten.
Se Multi-Agent Sandbox & Tools för detaljerade exempel.