agentDir) en op SQLite gebaseerde sessiegeschiedenis, plus meerdere kanaalaccounts (bijvoorbeeld twee WhatsApp-nummers). Inkomende berichten worden via bindingen naar de juiste agent gerouteerd.
Een agent omvat alles wat bij één persona hoort: werkruimtebestanden, authenticatieprofielen, modelregister en sessieopslag. Een binding koppelt een kanaalaccount (een Slack-werkruimte, een WhatsApp-nummer enzovoort) aan een van die agents.
Wat is één agent
Elke agent heeft een eigen:- Werkruimte: bestanden,
AGENTS.md/SOUL.md/USER.md, lokale notities, personaregels. - Statusmap (
agentDir): authenticatieprofielen, modelregister, configuratie per agent. - Sessieopslag: chatgeschiedenis en routeringsstatus in
~/.openclaw/agents/<agentId>/agent/openclaw-agent.sqlite.
sessions_history is het veiligere pad om informatie tussen sessies op te halen: het retourneert een begrensde, geredigeerde weergave en geen onbewerkte transcriptdump. Het verwijdert handtekeningen van denkblokken, details van toolresultaatpayloads, <relevant-memories>-scaffolding, XML-tags voor toolaanroepen (<tool_call>, <function_call> en hun meervoudige/gedowngradede vormen) en XML voor MiniMax-toolaanroepen. Vervolgens wordt de uitvoer afgekapt en op bytegrootte begrensd.~/.openclaw/skills, en vervolgens gefilterd op basis van de effectieve lijst met toegestane Skills van de agent. Gebruik agents.defaults.skills voor een gedeelde basis en agents.entries.*.skills voor een vervanging per agent (expliciete vermeldingen vervangen de standaard en worden er niet mee samengevoegd). Zie Skills: per agent versus gedeeld en Skills: lijsten met toegestane agents.
Opslag die eigendom is van een Plugin volgt de configuratie van die Plugin; door een tweede agent toe te voegen, wordt niet automatisch elke algemene Plugin-opslag opgesplitst. Configureer bijvoorbeeld Memory Wiki-kluizen per agent wanneer persona’s geen gecompileerde wikikennis mogen delen.
Opmerking over de werkruimte: de werkruimte van elke agent is de standaard-cwd, geen harde sandbox. Relatieve paden worden binnen de werkruimte omgezet, maar absolute paden kunnen andere locaties op de host bereiken, tenzij sandboxing is ingeschakeld. Zie Sandboxing.
Paden
Modus met één agent (standaard)
Als je niets configureert, voert OpenClaw één agent uit:agentIdis standaardmain.- Sessies gebruiken
agent:main:<mainKey>als sleutel (standaard ismainKeygelijk aanmain). - De werkruimte is standaard
~/.openclaw/workspace(ofworkspace-<profile>wanneerOPENCLAW_PROFILEis ingesteld op iets anders dandefault). - De status is standaard
~/.openclaw/agents/main/agent.
Agenthelper
Voeg een nieuwe geïsoleerde agent toe:--workspace <dir>, --model <id>, --agent-dir <dir>, --bind <channel[:accountId]> (herhaalbaar), --non-interactive (vereist --workspace).
Voeg bindings toe om inkomende berichten te routeren (de wizard biedt aan dit voor je te doen) en controleer vervolgens:
Snel aan de slag
1
Maak de werkruimte van elke agent
SOUL.md, AGENTS.md en optioneel USER.md, plus een eigen agentDir en sessieopslag onder ~/.openclaw/agents/<agentId>.2
Maak kanaalaccounts
Maak voor elke agent één account aan op de kanalen van je voorkeur:Zie de kanaalhandleidingen: Discord, Telegram, WhatsApp.
- Discord: één bot per agent, schakel Message Content Intent in en kopieer elk token.
- Telegram: één bot per agent via BotFather; kopieer elk token.
- WhatsApp: koppel elk telefoonnummer per account.
3
Voeg agents, accounts en bindingen toe
Voeg agents toe onder
agents.entries, kanaalaccounts onder channels.<channel>.accounts en verbind ze met bindings (zie de voorbeelden hieronder).4
Herstart en controleer
Meerdere agents, meerdere persona’s
Elke geconfigureerdeagentId vormt een afzonderlijke personagrens voor de kernstatus van de agent:
- Verschillende accounts per kanaal (per
accountId). - Verschillende persoonlijkheden (
AGENTS.md/SOUL.mdper agent). - Afzonderlijke authenticatie en sessies, waarbij toegang tussen agents alleen via expliciete functies of Plugin-configuratie wordt ingeschakeld.
Memory Wiki-kluizen per agent
Memory Wiki gebruikt standaard één algemene kluis. Om de gecompileerde kennis van een supportagent gescheiden te houden van die van een marketingagent, stel jeplugins.entries.memory-wiki.config.vault.scope in op agent:
~/.openclaw/wiki/support en ~/.openclaw/wiki/marketing. Voor CLI- en Gateway-bewerkingen binnen het bereik van een agent moet expliciet een agent worden opgegeven wanneer meerdere agents zijn geconfigureerd. Zie Memory Wiki-kluizen per agent voor details over bridgefiltering, migratie en vertrouwensgrenzen.
QMD-geheugen doorzoeken tussen agents
Als je één agent de QMD-sessietranscripten van een andere agent wilt laten doorzoeken, voeg je extra verzamelingen toe onderagents.entries.*.memory.search.qmd.extraCollections. Gebruik memory.search.qmd.extraCollections wanneer elke agent dezelfde verzamelingen moet delen.
name ervan blijft expliciet wanneer het pad buiten de werkruimte van de agent ligt. Paden binnen de werkruimte blijven beperkt tot de agent, zodat elke agent een eigen verzameling voor het doorzoeken van transcripten behoudt.
Eén WhatsApp-nummer, meerdere personen (DM-splitsing)
Routeer verschillende WhatsApp-DM’s naar verschillende agents op één WhatsApp-account door de E.164 van de afzender (+15551234567) te vergelijken met peer.kind: "direct". Antwoorden worden nog steeds vanaf hetzelfde WhatsApp-nummer verzonden — er is geen afzenderidentiteit per agent.
Directe chats worden standaard samengevoegd onder de hoofdsessiesleutel van de agent, dus voor echte isolatie is één agent per persoon vereist.
Routeringsregels
Bindingen zijn deterministisch en de specifiekste wint. Zie Kanaalroutering voor de volledige volgorde van niveaus (exacte peer, bovenliggende peer, jokerteken voor peers, guild+rollen, guild, team, account, kanaal, standaardagent). Enkele regels die hier het vermelden waard zijn:- Als meerdere bindingen binnen hetzelfde niveau overeenkomen, wint de eerste in de configuratievolgorde.
- Als een binding meerdere vergelijkingsvelden instelt (bijvoorbeeld
peer+guildId), moeten alle opgegeven velden overeenkomen (AND-semantiek). - Een binding zonder
accountIdkomt alleen overeen met het standaardaccount, niet met elk account. GebruikaccountId: "*"als terugvaloptie voor het hele kanaal, ofaccountId: "<name>"voor één account. Als je dezelfde binding opnieuw toevoegt met een expliciete account-id, wordt de bestaande binding die alleen voor het kanaal geldt bijgewerkt in plaats van gedupliceerd.
Meerdere accounts/telefoonnummers
Kanalen die meerdere accounts ondersteunen (bijvoorbeeld WhatsApp) gebruikenaccountId om elke aanmelding te identificeren. Elke accountId wordt naar een eigen agent gerouteerd, zodat één server meerdere telefoonnummers kan hosten zonder sessies te vermengen.
Stel channels.<channel>.defaultAccount in om het account te kiezen dat wordt gebruikt wanneer accountId is weggelaten. Als dit niet is ingesteld, valt OpenClaw terug op default indien aanwezig, en anders op de eerste geconfigureerde account-id (gesorteerd).
Kanalen die meerdere accounts ondersteunen: discord, feishu, googlechat, imessage, irc, line, mattermost, matrix, nextcloud-talk, nostr, signal, slack, telegram, whatsapp, zalo, zalouser.
Concepten
agentId: één „brein” (werkruimte, authenticatie per agent, sessieopslag per agent).accountId: één instantie van een kanaalaccount (bijvoorbeeld WhatsApp-accountpersonaltegenoverbiz).binding: routeert inkomende berichten naar eenagentIdop basis van(channel, accountId, peer), en optioneel guild-/team-id’s.- Directe chats worden samengevoegd tot
agent:<agentId>:<mainKey>(„main” per agent; ziesession.mainKey).
Platformvoorbeelden
Discord-bots per agent
Discord-bots per agent
Elk Discord-botaccount wordt aan een unieke
accountId gekoppeld. Koppel elk account aan een agent en houd per bot een toelatingslijst bij.- Nodig elke bot uit voor de guild en schakel Message Content Intent in.
- Tokens staan in
channels.discord.accounts.<id>.token(het standaardaccount kanDISCORD_BOT_TOKENgebruiken).
Telegram-bots per agent
Telegram-bots per agent
- Maak met BotFather één bot per agent en kopieer elk token.
- Tokens staan in
channels.telegram.accounts.<id>.botToken(het standaardaccount kanTELEGRAM_BOT_TOKENgebruiken). - Nodig voor meerdere bots in dezelfde Telegram-groep elke bot uit en vermeld de bot die moet antwoorden.
- Schakel voor elke groepsbot de BotFather Privacy Mode uit (
/setprivacy-> Disable) en verwijder de bot vervolgens en voeg deze opnieuw toe, zodat Telegram de instelling toepast. - Sta groepen toe met
channels.telegram.groups, of gebruikgroupPolicy: "open"alleen voor vertrouwde groepsimplementaties. - Plaats gebruikers-id’s van afzenders in
groupAllowFrom. Groeps- en supergroep-id’s horen inchannels.telegram.groups, niet ingroupAllowFrom. - Koppel op basis van
accountId, zodat elke bot naar zijn eigen agent routeert.
WhatsApp-nummers per agent
WhatsApp-nummers per agent
Koppel elk account voordat je de Gateway start:
~/.openclaw/openclaw.json (JSON5):Veelvoorkomende patronen
- WhatsApp voor dagelijks gebruik + Telegram voor diepgaand werk
- Hetzelfde kanaal, één peer naar Opus
- Familieagent gekoppeld aan een WhatsApp-groep
Splits per kanaal: routeer WhatsApp naar een snelle agent voor dagelijks gebruik en Telegram naar een Opus-agent.Deze voorbeelden gebruiken
accountId: "*", zodat de koppelingen blijven werken als je later accounts toevoegt. Om één privébericht/groep naar Opus te routeren terwijl de rest op chat blijft, voeg je voor die peer een match.peer-koppeling toe — overeenkomsten met peers krijgen altijd voorrang op regels voor het hele kanaal.Sandbox- en toolconfiguratie per agent
Elke agent kan zijn eigen sandbox- en toolbeperkingen hebben:setupCommand staat onder sandbox.docker en wordt eenmaal uitgevoerd wanneer de container wordt gemaakt. Overschrijvingen van sandbox.docker.* per agent worden genegeerd wanneer het bepaalde bereik "shared" is.- Beveiligingsisolatie: beperk tools voor niet-vertrouwde agents.
- Resourcebeheer: plaats specifieke agents in een sandbox terwijl andere op de host blijven.
- Flexibel beleid: verschillende machtigingen per agent.
tools.elevated heeft zowel een globale toegangspoort (tools.elevated.enabled/allowFrom) als een toegangspoort per agent (agents.entries.*.tools.elevated.enabled/allowFrom). De toegangspoort per agent kan de globale alleen verder beperken — beide moeten een afzender toestaan voordat opdrachten met verhoogde bevoegdheden kunnen worden uitgevoerd. Gebruik voor groepstargeting agents.entries.*.groupChat.mentionPatterns, zodat @vermeldingen duidelijk aan de bedoelde agent worden gekoppeld.Gerelateerd
- ACP-agenten — externe codeharnassen uitvoeren
- Kanaalroutering — hoe berichten naar agenten worden gerouteerd
- Aanwezigheid — aanwezigheid en beschikbaarheid van agenten
- Sessie — sessie-isolatie en routering
- Subagenten — agentruns op de achtergrond starten