agentDir) und Sitzungsverlauf, plus mehrere Kanal-Konten (z. B. zwei WhatsApp-Konten) in einem laufenden Gateway. Eingehende Nachrichten werden über Bindungen an den richtigen Agenten weitergeleitet.
Ein Agent ist hier der vollständige Scope pro Persona: Workspace-Dateien, Auth-Profile, Modellregistrierung und Sitzungsspeicher. agentDir ist das Zustandsverzeichnis auf der Festplatte, das diese agentenspezifische Konfiguration unter ~/.openclaw/agents/<agentId>/ enthält. Eine Bindung ordnet ein Kanal-Konto (z. B. einen Slack-Workspace oder eine WhatsApp-Nummer) einem dieser Agenten zu.
Was ist „ein Agent“?
Ein Agent ist ein vollständig abgegrenztes Gehirn mit eigenem:- Workspace (Dateien, AGENTS.md/SOUL.md/USER.md, lokale Notizen, Persona-Regeln).
- Zustandsverzeichnis (
agentDir) für Auth-Profile, Modellregistrierung und agentenspezifische Konfiguration. - Sitzungsspeicher (Chatverlauf + Routing-Zustand) unter
~/.openclaw/agents/<agentId>/sessions.
sessions_history ist auch hier der sicherere Pfad für sitzungsübergreifenden Abruf: Es gibt eine begrenzte, bereinigte Ansicht zurück, keinen Rohdump des Transkripts. Der Abruf von Assistant-Inhalten entfernt Denk-Tags, <relevant-memories>-Gerüste, Tool-Call-XML-Nutzdaten im Klartext (einschließlich <tool_call>...</tool_call>, <function_call>...</function_call>, <tool_calls>...</tool_calls>, <function_calls>...</function_calls> und abgeschnittener Tool-Call-Blöcke), herabgestufte Tool-Call-Gerüste, durchgesickerte ASCII-/Vollbreiten-Modellsteuerungstoken und fehlerhaftes MiniMax-Tool-Call-XML vor Redaktion/Kürzung.~/.openclaw/skills geladen und dann, falls konfiguriert, anhand der wirksamen agentenspezifischen Skill-Zulassungsliste gefiltert. Verwenden Sie agents.defaults.skills für eine gemeinsame Basis und agents.list[].skills für agentenspezifische Ersetzung. Siehe Skills: pro Agent vs. gemeinsam und Skills: Skill-Zulassungslisten für Agenten.
Das Gateway kann einen Agenten (Standard) oder viele Agenten nebeneinander hosten.
Workspace-Hinweis: Der Workspace jedes Agenten ist das standardmäßige cwd, keine harte Sandbox. Relative Pfade werden innerhalb des Workspace aufgelöst, absolute Pfade können jedoch andere Host-Speicherorte erreichen, sofern Sandboxing nicht aktiviert ist. Siehe Sandboxing.
Pfade (Kurzüberblick)
- Konfiguration:
~/.openclaw/openclaw.json(oderOPENCLAW_CONFIG_PATH) - Zustandsverzeichnis:
~/.openclaw(oderOPENCLAW_STATE_DIR) - Workspace:
~/.openclaw/workspace(oder~/.openclaw/workspace-<agentId>) - Agentenverzeichnis:
~/.openclaw/agents/<agentId>/agent(oderagents.list[].agentDir) - Sitzungen:
~/.openclaw/agents/<agentId>/sessions
Einzelagentenmodus (Standard)
Wenn Sie nichts tun, führt OpenClaw einen einzelnen Agenten aus:agentIdist standardmäßigmain.- Sitzungen werden als
agent:main:<mainKey>verschlüsselt. - Der Workspace ist standardmäßig
~/.openclaw/workspace(oder~/.openclaw/workspace-<profile>, wennOPENCLAW_PROFILEgesetzt ist). - Der Zustand ist standardmäßig
~/.openclaw/agents/main/agent.
Agenten-Helfer
Verwenden Sie den Agenten-Assistenten, um einen neuen isolierten Agenten hinzuzufügen:bindings hinzu (oder lassen Sie dies vom Assistenten erledigen), um eingehende Nachrichten weiterzuleiten.
Überprüfen Sie dies mit:
Schnellstart
Create each agent workspace
Verwenden Sie den Assistenten oder erstellen Sie Workspaces manuell:Jeder Agent erhält seinen eigenen Workspace mit
SOUL.md, AGENTS.md und optional USER.md, plus ein dediziertes agentDir und einen Sitzungsspeicher unter ~/.openclaw/agents/<agentId>.Create channel accounts
Erstellen Sie pro Agent ein Konto auf Ihren bevorzugten Kanälen:Siehe Kanal-Leitfäden: Discord, Telegram, WhatsApp.
- Discord: ein Bot pro Agent, Message Content Intent aktivieren, jedes Token kopieren.
- Telegram: ein Bot pro Agent über BotFather, jedes Token kopieren.
- WhatsApp: jede Telefonnummer pro Konto verknüpfen.
Add agents, accounts, and bindings
Fügen Sie Agenten unter
agents.list, Kanal-Konten unter channels.<channel>.accounts hinzu und verbinden Sie sie mit bindings (Beispiele unten).Mehrere Agenten = mehrere Personen, mehrere Persönlichkeiten
Mit mehreren Agenten wird jedeagentId zu einer vollständig isolierten Persona:
- Unterschiedliche Telefonnummern/Konten (pro Kanal
accountId). - Unterschiedliche Persönlichkeiten (agentenspezifische Workspace-Dateien wie
AGENTS.mdundSOUL.md). - Getrennte Authentifizierung + Sitzungen (keine gegenseitige Beeinflussung, sofern nicht ausdrücklich aktiviert).
Agentenübergreifende QMD-Speichersuche
Wenn ein Agent die QMD-Sitzungstranskripte eines anderen Agenten durchsuchen soll, fügen Sie zusätzliche Sammlungen unteragents.list[].memorySearch.qmd.extraCollections hinzu. Verwenden Sie agents.defaults.memorySearch.qmd.extraCollections nur, wenn jeder Agent dieselben gemeinsamen Transkriptsammlungen erben soll.
Eine WhatsApp-Nummer, mehrere Personen (DM-Aufteilung)
Sie können verschiedene WhatsApp-DMs an verschiedene Agenten weiterleiten, während Sie bei einem WhatsApp-Konto bleiben. Stimmen Sie über die E.164 des Absenders (wie+15551234567) mit peer.kind: "direct" ab. Antworten kommen weiterhin von derselben WhatsApp-Nummer (keine agentenspezifische Absenderidentität).
Direktchats werden auf den Hauptsitzungsschlüssel des Agenten zusammengeführt, daher erfordert echte Isolation einen Agenten pro Person.
- DM-Zugriffskontrolle ist global pro WhatsApp-Konto (Kopplung/Zulassungsliste), nicht pro Agent.
- Für gemeinsame Gruppen binden Sie die Gruppe an einen Agenten oder verwenden Sie Broadcast-Gruppen.
Routing-Regeln (wie Nachrichten einen Agenten auswählen)
Bindungen sind deterministisch und die spezifischste gewinnt:Tie-breaking and AND semantics
Tie-breaking and AND semantics
- Wenn mehrere Bindungen in derselben Ebene übereinstimmen, gewinnt die erste in der Konfigurationsreihenfolge.
- Wenn eine Bindung mehrere Match-Felder setzt (zum Beispiel
peer+guildId), sind alle angegebenen Felder erforderlich (AND-Semantik).
Account-scope detail
Account-scope detail
- Eine Bindung ohne
accountIdstimmt nur mit dem Standardkonto überein. Sie stimmt nicht mit allen Konten überein. - Verwenden Sie
accountId: "*"für einen kanalweiten Rückfall über alle Konten hinweg. - Verwenden Sie
accountId: "<name>", um ein Konto abzugleichen. - Wenn Sie später dieselbe Bindung für denselben Agenten mit einer expliziten Konto-ID hinzufügen, stuft OpenClaw die vorhandene nur kanalbezogene Bindung auf kontogebunden hoch, statt sie zu duplizieren.
Mehrere Konten / Telefonnummern
Kanäle, die mehrere Konten unterstützen (z. B. WhatsApp), verwendenaccountId, um jede Anmeldung zu identifizieren. Jede accountId kann an einen anderen Agenten weitergeleitet werden, sodass ein Server mehrere Telefonnummern hosten kann, ohne Sitzungen zu vermischen.
Wenn Sie ein kanalweites Standardkonto verwenden möchten, wenn accountId ausgelassen wird, setzen Sie channels.<channel>.defaultAccount (optional). Wenn nicht gesetzt, fällt OpenClaw auf default zurück, falls vorhanden, andernfalls auf die erste konfigurierte Konto-ID (sortiert).
Häufige Kanäle, die dieses Muster unterstützen, sind:
whatsapp,telegram,discord,slack,signal,imessageirc,line,googlechat,mattermost,matrix,nextcloud-talkzalo,zalouser,nostr,feishu
Konzepte
agentId: ein „Gehirn“ (Workspace, agentenspezifische Authentifizierung, agentenspezifischer Sitzungsspeicher).accountId: eine Kanal-Konto-Instanz (z. B. WhatsApp-Konto"personal"vs."biz").binding: leitet eingehende Nachrichten anhand von(channel, accountId, peer)und optional Guild-/Team-IDs an eineagentIdweiter.- Direktchats werden auf
agent:<agentId>:<mainKey>zusammengeführt (agentenspezifisch „main“;session.mainKey).
Plattformbeispiele
Discord bots per agent
Discord bots per agent
Jedes Discord-Bot-Konto wird einer eindeutigen
accountId zugeordnet. Binden Sie jedes Konto an einen Agenten und verwalten Sie Zulassungslisten pro Bot.- Laden Sie jeden Bot in die Guild ein und aktivieren Sie Message Content Intent.
- Tokens befinden sich in
channels.discord.accounts.<id>.token(das Standardkonto kannDISCORD_BOT_TOKENverwenden).
Telegram-Bots pro Agent
Telegram-Bots pro Agent
- Erstellen Sie mit BotFather einen Bot pro Agent und kopieren Sie jedes Token.
- Tokens befinden sich in
channels.telegram.accounts.<id>.botToken(das Standardkonto kannTELEGRAM_BOT_TOKENverwenden). - Laden Sie bei mehreren Bots in derselben Telegram-Gruppe jeden Bot ein und erwähnen Sie den Bot, der antworten soll.
- Deaktivieren Sie den Privacy Mode von BotFather für jeden Gruppen-Bot und fügen Sie den Bot anschließend erneut hinzu, damit Telegram die Einstellung übernimmt.
- Erlauben Sie Gruppen mit
channels.telegram.groups, oder verwenden SiegroupPolicy: "open"nur für vertrauenswürdige Gruppenbereitstellungen. - Tragen Sie Absender-Benutzer-IDs in
groupAllowFromein. Gruppen- und Supergruppen-IDs gehören inchannels.telegram.groups, nicht ingroupAllowFrom. - Binden Sie über
accountId, damit jeder Bot an seinen eigenen Agent weiterleitet.
WhatsApp-Nummern pro Agent
WhatsApp-Nummern pro Agent
Verknüpfen Sie jedes Konto, bevor Sie das Gateway starten:
~/.openclaw/openclaw.json (JSON5):Häufige Muster
- WhatsApp täglich + Telegram Deep Work
- Gleicher Kanal, ein Peer zu Opus
- Familien-Agent an eine WhatsApp-Gruppe gebunden
Aufteilung nach Kanal: Leiten Sie WhatsApp an einen schnellen Alltags-Agent und Telegram an einen Opus-Agent weiter.Hinweise:
- Diese Beispiele verwenden
accountId: "*", damit die Bindings weiter funktionieren, wenn Sie später Konten hinzufügen. - Um eine einzelne DM/Gruppe an Opus weiterzuleiten, während der Rest auf chat bleibt, fügen Sie ein
match.peer-Binding für diesen Peer hinzu; Peer-Treffer haben immer Vorrang vor kanalweiten Regeln.
Sandbox- und Tool-Konfiguration pro Agent
Jeder Agent kann eigene Sandbox- und Tool-Einschränkungen haben:setupCommand befindet sich unter sandbox.docker und wird einmal bei der Container-Erstellung ausgeführt. sandbox.docker.*-Überschreibungen pro Agent werden ignoriert, wenn der aufgelöste Scope "shared" ist.- Sicherheitsisolierung: Tools für nicht vertrauenswürdige Agenten einschränken.
- Ressourcenkontrolle: Bestimmte Agenten in der Sandbox ausführen, während andere auf dem Host bleiben.
- Flexible Richtlinien: Unterschiedliche Berechtigungen pro Agent.
tools.elevated ist global und absenderbasiert; es ist nicht pro Agent konfigurierbar. Wenn Sie Grenzen pro Agent benötigen, verwenden Sie agents.list[].tools, um exec zu verweigern. Für Gruppenzuordnung verwenden Sie agents.list[].groupChat.mentionPatterns, damit @Erwähnungen sauber dem vorgesehenen Agent zugeordnet werden.Verwandte Themen
- ACP Agents — externe Coding-Harnesses ausführen
- Channel Routing — wie Nachrichten an Agenten weitergeleitet werden
- Presence — Agent-Präsenz und Verfügbarkeit
- Session — Session-Isolierung und Routing
- Sub-agents — Hintergrund-Agent-Läufe starten