Konfigurationsreferenz
Zentrale Konfigurationsreferenz für~/.openclaw/openclaw.json. Eine aufgabenorientierte Übersicht finden Sie unter Konfiguration.
Diese Seite behandelt die wichtigsten OpenClaw-Konfigurationsoberflächen und verlinkt weiter, wenn ein Subsystem eine eigene, ausführlichere Referenz hat. Sie versucht nicht, jeden kanal-/plugin-eigenen Befehlskatalog oder jede tiefgehende Memory-/QMD-Einstellung auf einer einzigen Seite einzubetten.
Code-Quelle:
openclaw config schemagibt das Live-JSON-Schema aus, das für Validierung und Control UI verwendet wird, wobei gebündelte Plugin-/Kanal-Metadaten zusammengeführt werden, wenn verfügbarconfig.schema.lookupgibt einen einzelnen pfadbezogenen Schemaknoten für Drilldown-Tools zurückpnpm config:docs:check/pnpm config:docs:genvalidieren den Hash der Konfigurationsdokumentations-Baseline gegen die aktuelle Schemaoberfläche
- Memory-Konfigurationsreferenz für
agents.defaults.memorySearch.*,memory.qmd.*,memory.citationsund Dreaming-Konfiguration unterplugins.entries.memory-core.config.dreaming - Slash Commands für den aktuellen integrierten + gebündelten Befehlskatalog
- zuständige Kanal-/Plugin-Seiten für kanalspezifische Befehlsoberflächen
Kanäle
Jeder Kanal startet automatisch, wenn sein Konfigurationsabschnitt vorhanden ist (außer beienabled: false).
DM- und Gruppenzugriff
Alle Kanäle unterstützen DM-Richtlinien und Gruppenrichtlinien:| DM-Richtlinie | Verhalten |
|---|---|
pairing (Standard) | Unbekannte Absender erhalten einen einmaligen Pairing-Code; der Eigentümer muss zustimmen |
allowlist | Nur Absender in allowFrom (oder im gepaarten Erlaubnisspeicher) |
open | Alle eingehenden DMs zulassen (erfordert allowFrom: ["*"]) |
disabled | Alle eingehenden DMs ignorieren |
| Gruppenrichtlinie | Verhalten |
|---|---|
allowlist (Standard) | Nur Gruppen, die der konfigurierten Erlaubnisliste entsprechen |
open | Gruppen-Erlaubnislisten umgehen (Mention-Gating gilt weiterhin) |
disabled | Alle Gruppen-/Raumnachrichten blockieren |
channels.defaults.groupPolicy setzt den Standard, wenn groupPolicy eines Providers nicht gesetzt ist.
Pairing-Codes laufen nach 1 Stunde ab. Ausstehende DM-Pairing-Anfragen sind auf 3 pro Kanal begrenzt.
Wenn ein Provider-Block vollständig fehlt (channels.<provider> nicht vorhanden), fällt die Gruppenrichtlinie zur Laufzeit auf allowlist zurück (Fail-Closed) und gibt beim Start eine Warnung aus.Kanal-Modellüberschreibungen
Verwenden Siechannels.modelByChannel, um bestimmte Kanal-IDs an ein Modell zu binden. Werte akzeptieren provider/model oder konfigurierte Modell-Aliasse. Das Kanal-Mapping wird angewendet, wenn eine Sitzung nicht bereits eine Modellüberschreibung hat (zum Beispiel über /model gesetzt).
Kanal-Standardeinstellungen und Heartbeat
Verwenden Siechannels.defaults für gemeinsames Gruppenrichtlinien- und Heartbeat-Verhalten über Provider hinweg:
channels.defaults.groupPolicy: Fallback-Gruppenrichtlinie, wenn eine providerbezogenegroupPolicynicht gesetzt ist.channels.defaults.contextVisibility: Standardmodus für die Sichtbarkeit ergänzenden Kontexts für alle Kanäle. Werte:all(Standard, schließt allen zitierten/Thread-/Verlaufs-Kontext ein),allowlist(schließt nur Kontext von erlaubten Absendern ein),allowlist_quote(wie allowlist, behält aber expliziten Zitat-/Antwortkontext bei). Überschreibung pro Kanal:channels.<channel>.contextVisibility.channels.defaults.heartbeat.showOk: Gesunde Kanalstatus in die Heartbeat-Ausgabe aufnehmen.channels.defaults.heartbeat.showAlerts: Beeinträchtigte/Fehlerstatus in die Heartbeat-Ausgabe aufnehmen.channels.defaults.heartbeat.useIndicator: Kompakte Heartbeat-Ausgabe im Indikatorstil rendern.
WhatsApp mit mehreren Konten
WhatsApp mit mehreren Konten
- Ausgehende Befehle verwenden standardmäßig das Konto
default, falls vorhanden; andernfalls die erste konfigurierte Konto-ID (sortiert). - Optional überschreibt
channels.whatsapp.defaultAccountdiese Standardkontenauswahl, wenn es mit einer konfigurierten Konto-ID übereinstimmt. - Das alte Baileys-Authentifizierungsverzeichnis für ein einzelnes Konto wird von
openclaw doctornachwhatsapp/defaultmigriert. - Überschreibungen pro Konto:
channels.whatsapp.accounts.<id>.sendReadReceipts,channels.whatsapp.accounts.<id>.dmPolicy,channels.whatsapp.accounts.<id>.allowFrom.
Telegram
- Bot-Token:
channels.telegram.botTokenoderchannels.telegram.tokenFile(nur reguläre Datei; Symlinks werden abgelehnt), mitTELEGRAM_BOT_TOKENals Fallback für das Standardkonto. - Optional überschreibt
channels.telegram.defaultAccountdie Standardkontenauswahl, wenn es mit einer konfigurierten Konto-ID übereinstimmt. - In Setups mit mehreren Konten (2+ Konto-IDs) sollten Sie einen expliziten Standard setzen (
channels.telegram.defaultAccountoderchannels.telegram.accounts.default), um Fallback-Routing zu vermeiden;openclaw doctorwarnt, wenn dies fehlt oder ungültig ist. configWrites: falseblockiert von Telegram initiierte Konfigurationsschreibvorgänge (Supergroup-ID-Migrationen,/config set|unset).- Top-Level-Einträge in
bindings[]mittype: "acp"konfigurieren persistente ACP-Bindings für Foren-Themen (verwenden Sie das kanonischechatId:topic:topicIdinmatch.peer.id). Die Feldsemantik ist gemeinsam in ACP Agents beschrieben. - Telegram-Stream-Vorschauen verwenden
sendMessage+editMessageText(funktioniert in Direkt- und Gruppenchats). - Retry-Richtlinie: siehe Retry-Richtlinie.
Discord
- Token:
channels.discord.token, mitDISCORD_BOT_TOKENals Fallback für das Standardkonto. - Direkte ausgehende Aufrufe, die ein explizites Discord-
tokenbereitstellen, verwenden dieses Token für den Aufruf; Kontowiederholungs-/Richtlinieneinstellungen stammen weiterhin aus dem ausgewählten Konto im aktiven Laufzeit-Snapshot. - Optional überschreibt
channels.discord.defaultAccountdie Standardkontenauswahl, wenn es mit einer konfigurierten Konto-ID übereinstimmt. - Verwenden Sie
user:<id>(DM) oderchannel:<id>(Guild-Kanal) für Zustellungsziele; einfache numerische IDs werden abgelehnt. - Guild-Slugs sind kleingeschrieben, wobei Leerzeichen durch
-ersetzt werden; Kanalschlüssel verwenden den Slug-Namen (ohne#). Bevorzugen Sie Guild-IDs. - Von Bots verfasste Nachrichten werden standardmäßig ignoriert.
allowBots: trueaktiviert sie; verwenden SieallowBots: "mentions", um nur Bot-Nachrichten zu akzeptieren, die den Bot erwähnen (eigene Nachrichten werden weiterhin gefiltert). channels.discord.guilds.<id>.ignoreOtherMentions(und Kanalüberschreibungen) verwirft Nachrichten, die einen anderen Benutzer oder eine andere Rolle erwähnen, aber nicht den Bot (ausgenommen @everyone/@here).maxLinesPerMessage(Standard 17) teilt hohe Nachrichten auch dann auf, wenn sie unter 2000 Zeichen liegen.channels.discord.threadBindingssteuert an Discord-Threads gebundenes Routing:enabled: Discord-Überschreibung für an Threads gebundene Sitzungsfunktionen (/focus,/unfocus,/agents,/session idle,/session max-agesowie gebundene Zustellung/Weiterleitung)idleHours: Discord-Überschreibung für automatisches Entfokussieren bei Inaktivität in Stunden (0deaktiviert)maxAgeHours: Discord-Überschreibung für hartes maximales Alter in Stunden (0deaktiviert)spawnSubagentSessions: Opt-in-Schalter für die automatische Thread-Erstellung/-Bindung durchsessions_spawn({ thread: true })
- Top-Level-Einträge in
bindings[]mittype: "acp"konfigurieren persistente ACP-Bindings für Kanäle und Threads (verwenden Sie Kanal-/Thread-ID inmatch.peer.id). Die Feldsemantik ist gemeinsam in ACP Agents beschrieben. channels.discord.ui.components.accentColorsetzt die Akzentfarbe für Discord-Komponenten-v2-Container.channels.discord.voiceaktiviert Unterhaltungen in Discord-Sprachkanälen sowie optionale automatische Beitritte und TTS-Überschreibungen.channels.discord.voice.daveEncryptionundchannels.discord.voice.decryptionFailureTolerancewerden an DAVE-Optionen von@discordjs/voicedurchgereicht (standardmäßigtruebzw.24).- OpenClaw versucht zusätzlich, den Empfang von Sprache wiederherzustellen, indem nach wiederholten Entschlüsselungsfehlern eine Sprachsitzung verlassen und erneut beigetreten wird.
channels.discord.streamingist der kanonische Schlüssel für den Stream-Modus. Veraltete WertestreamModeund booleschestreaming-Werte werden automatisch migriert.channels.discord.autoPresencebildet die Laufzeitverfügbarkeit auf die Bot-Präsenz ab (healthy => online, degraded => idle, exhausted => dnd) und erlaubt optionale Überschreibungen des Statustexts.channels.discord.dangerouslyAllowNameMatchingaktiviert veränderbares Namens-/Tag-Matching erneut (Break-Glass-Kompatibilitätsmodus).channels.discord.execApprovals: Discord-native Zustellung von Exec-Genehmigungen und Autorisierung von Genehmigern.enabled:true,falseoder"auto"(Standard). Im Auto-Modus werden Exec-Genehmigungen aktiviert, wenn Genehmiger ausapproversodercommands.ownerAllowFromaufgelöst werden können.approvers: Discord-Benutzer-IDs, die Exec-Anfragen genehmigen dürfen. Fällt aufcommands.ownerAllowFromzurück, wenn weggelassen.agentFilter: optionale Erlaubnisliste für Agent-IDs. Weglassen, um Genehmigungen für alle Agenten weiterzuleiten.sessionFilter: optionale Sitzungs-Schlüsselmuster (Teilzeichenfolge oder Regex).target: wohin Genehmigungsaufforderungen gesendet werden."dm"(Standard) sendet an DMs der Genehmiger,"channel"an den Ursprungskanal,"both"an beides. Wenn das Ziel"channel"enthält, sind Schaltflächen nur für aufgelöste Genehmiger nutzbar.cleanupAfterResolve: löscht beitrueGenehmigungs-DMs nach Genehmigung, Ablehnung oder Zeitüberschreitung.
off (keine), own (Nachrichten des Bots, Standard), all (alle Nachrichten), allowlist (aus guilds.<id>.users für alle Nachrichten).
Google Chat
- Service-Account-JSON: inline (
serviceAccount) oder dateibasiert (serviceAccountFile). - SecretRef für den Service Account wird ebenfalls unterstützt (
serviceAccountRef). - Env-Fallbacks:
GOOGLE_CHAT_SERVICE_ACCOUNToderGOOGLE_CHAT_SERVICE_ACCOUNT_FILE. - Verwenden Sie
spaces/<spaceId>oderusers/<userId>für Zustellungsziele. channels.googlechat.dangerouslyAllowNameMatchingaktiviert veränderbares Matching von E-Mail-Principals erneut (Break-Glass-Kompatibilitätsmodus).
Slack
- Socket-Modus erfordert sowohl
botTokenals auchappToken(SLACK_BOT_TOKEN+SLACK_APP_TOKENals Env-Fallback für das Standardkonto). - HTTP-Modus erfordert
botTokenplussigningSecret(am Root oder pro Konto). botToken,appToken,signingSecretunduserTokenakzeptieren Klartextzeichenfolgen oder SecretRef-Objekte.- Slack-Konto-Snapshots stellen pro Anmeldedaten Quelle-/Statusfelder wie
botTokenSource,botTokenStatus,appTokenStatusund im HTTP-ModussigningSecretStatusbereit.configured_unavailablebedeutet, dass das Konto über SecretRef konfiguriert ist, der aktuelle Befehls-/Laufzeitpfad den Secret-Wert jedoch nicht auflösen konnte. configWrites: falseblockiert von Slack initiierte Konfigurationsschreibvorgänge.- Optional überschreibt
channels.slack.defaultAccountdie Standardkontenauswahl, wenn es mit einer konfigurierten Konto-ID übereinstimmt. channels.slack.streaming.modeist der kanonische Schlüssel für den Slack-Stream-Modus.channels.slack.streaming.nativeTransportsteuert den nativen Streaming-Transport von Slack. Veraltete WertestreamMode, booleschestreaming-Werte undnativeStreamingwerden automatisch migriert.- Verwenden Sie
user:<id>(DM) oderchannel:<id>für Zustellungsziele.
off, own (Standard), all, allowlist (aus reactionAllowlist).
Isolierung von Thread-Sitzungen: thread.historyScope ist pro Thread (Standard) oder kanalweit gemeinsam. thread.inheritParent kopiert das übergeordnete Kanaltranskript in neue Threads.
- Slack-natives Streaming sowie der Slack-assistentenartige Thread-Status „is typing…“ erfordern ein Antwort-Thread-Ziel. DMs auf oberster Ebene bleiben standardmäßig außerhalb von Threads, daher verwenden sie stattdessen
typingReactionoder normale Zustellung anstelle der Thread-Vorschau. typingReactionfügt der eingehenden Slack-Nachricht während der Antwortausführung vorübergehend eine Reaktion hinzu und entfernt sie nach Abschluss wieder. Verwenden Sie einen Slack-Emoji-Shortcode wie"hourglass_flowing_sand".channels.slack.execApprovals: Slack-native Zustellung von Exec-Genehmigungen und Autorisierung von Genehmigern. Gleiches Schema wie bei Discord:enabled(true/false/"auto"),approvers(Slack-Benutzer-IDs),agentFilter,sessionFilterundtarget("dm","channel"oder"both").
| Aktionsgruppe | Standard | Hinweise |
|---|---|---|
| reactions | aktiviert | Reagieren + Reaktionen auflisten |
| messages | aktiviert | Lesen/Senden/Bearbeiten/Löschen |
| pins | aktiviert | Anheften/Lösen/Auflisten |
| memberInfo | aktiviert | Mitgliederinformationen |
| emojiList | aktiviert | Liste benutzerdefinierter Emojis |
Mattermost
Mattermost wird als Plugin ausgeliefert:openclaw plugins install @openclaw/mattermost.
oncall (antworten bei @-Erwähnung, Standard), onmessage (jede Nachricht), onchar (Nachrichten, die mit dem Auslöserpräfix beginnen).
Wenn native Mattermost-Befehle aktiviert sind:
commands.callbackPathmuss ein Pfad sein (zum Beispiel/api/channels/mattermost/command), keine vollständige URL.commands.callbackUrlmuss zum OpenClaw-Gateway-Endpunkt aufgelöst werden und vom Mattermost-Server aus erreichbar sein.- Native Slash-Callbacks werden mit den pro Befehl verwendeten Token authentifiziert, die Mattermost bei der Registrierung von Slash-Befehlen zurückgibt. Wenn die Registrierung fehlschlägt oder keine Befehle aktiviert werden, lehnt OpenClaw Callbacks mit
Unauthorized: invalid command token.ab. - Für private/Tailnet-/interne Callback-Hosts kann Mattermost verlangen, dass
ServiceSettings.AllowedUntrustedInternalConnectionsden Callback-Host bzw. die Domain enthält. Verwenden Sie Host-/Domainwerte, keine vollständigen URLs. channels.mattermost.configWrites: Mattermost-initiierte Konfigurationsschreibvorgänge erlauben oder verweigern.channels.mattermost.requireMention:@mentionvor der Antwort in Kanälen verlangen.channels.mattermost.groups.<channelId>.requireMention: Überschreibung des Mention-Gatings pro Kanal ("*"für Standard).- Optional überschreibt
channels.mattermost.defaultAccountdie Standardkontenauswahl, wenn es mit einer konfigurierten Konto-ID übereinstimmt.
Signal
off, own (Standard), all, allowlist (aus reactionAllowlist).
channels.signal.account: Kanalstart auf eine bestimmte Signal-Kontoidentität festlegen.channels.signal.configWrites: von Signal initiierte Konfigurationsschreibvorgänge erlauben oder verweigern.- Optional überschreibt
channels.signal.defaultAccountdie Standardkontenauswahl, wenn es mit einer konfigurierten Konto-ID übereinstimmt.
BlueBubbles
BlueBubbles ist der empfohlene iMessage-Pfad (plugin-basiert, konfiguriert unterchannels.bluebubbles).
- Zentrale Schlüsselpfade, die hier behandelt werden:
channels.bluebubbles,channels.bluebubbles.dmPolicy. - Optional überschreibt
channels.bluebubbles.defaultAccountdie Standardkontenauswahl, wenn es mit einer konfigurierten Konto-ID übereinstimmt. - Top-Level-Einträge in
bindings[]mittype: "acp"können BlueBubbles-Unterhaltungen an persistente ACP-Sitzungen binden. Verwenden Sie einen BlueBubbles-Handle oder Ziel-String (chat_id:*,chat_guid:*,chat_identifier:*) inmatch.peer.id. Gemeinsame Feldsemantik: ACP Agents. - Die vollständige BlueBubbles-Kanalkonfiguration ist unter BlueBubbles dokumentiert.
iMessage
OpenClaw startetimsg rpc (JSON-RPC über stdio). Kein Daemon oder Port erforderlich.
-
Optional überschreibt
channels.imessage.defaultAccountdie Standardkontenauswahl, wenn es mit einer konfigurierten Konto-ID übereinstimmt. - Erfordert Vollzugriff auf die Messages-Datenbank.
-
Bevorzugen Sie Ziele im Format
chat_id:<id>. Verwenden Sieimsg chats --limit 20, um Chats aufzulisten. -
cliPathkann auf einen SSH-Wrapper zeigen; setzen SieremoteHost(hostoderuser@host) für den SCP-Abruf von Anhängen. -
attachmentRootsundremoteAttachmentRootsbeschränken eingehende Anhangspfade (Standard:/Users/*/Library/Messages/Attachments). -
SCP verwendet strikte Host-Key-Prüfung, daher muss der Relay-Host-Key bereits in
~/.ssh/known_hostsvorhanden sein. -
channels.imessage.configWrites: von iMessage initiierte Konfigurationsschreibvorgänge erlauben oder verweigern. -
Top-Level-Einträge in
bindings[]mittype: "acp"können iMessage-Unterhaltungen an persistente ACP-Sitzungen binden. Verwenden Sie einen normalisierten Handle oder ein explizites Chat-Ziel (chat_id:*,chat_guid:*,chat_identifier:*) inmatch.peer.id. Gemeinsame Feldsemantik: ACP Agents.
Beispiel für iMessage-SSH-Wrapper
Beispiel für iMessage-SSH-Wrapper
Matrix
Matrix ist extension-basiert und wird unterchannels.matrix konfiguriert.
- Token-Authentifizierung verwendet
accessToken; Passwort-Authentifizierung verwendetuserId+password. channels.matrix.proxyleitet Matrix-HTTP-Datenverkehr über einen expliziten HTTP(S)-Proxy. Benannte Konten können ihn mitchannels.matrix.accounts.<id>.proxyüberschreiben.channels.matrix.network.dangerouslyAllowPrivateNetworkerlaubt private/interne Homeserver.proxyund dieses Netzwerk-Opt-in sind unabhängige Steuerungen.channels.matrix.defaultAccountwählt in Setups mit mehreren Konten das bevorzugte Konto aus.channels.matrix.autoJoinist standardmäßigoff, daher werden eingeladene Räume und neue DM-artige Einladungen ignoriert, bis SieautoJoin: "allowlist"mitautoJoinAllowlistoderautoJoin: "always"setzen.channels.matrix.execApprovals: Matrix-native Zustellung von Exec-Genehmigungen und Autorisierung von Genehmigern.enabled:true,falseoder"auto"(Standard). Im Auto-Modus werden Exec-Genehmigungen aktiviert, wenn Genehmiger ausapproversodercommands.ownerAllowFromaufgelöst werden können.approvers: Matrix-Benutzer-IDs (z. B.@owner:example.org), die Exec-Anfragen genehmigen dürfen.agentFilter: optionale Erlaubnisliste für Agent-IDs. Weglassen, um Genehmigungen für alle Agenten weiterzuleiten.sessionFilter: optionale Sitzungs-Schlüsselmuster (Teilzeichenfolge oder Regex).target: wohin Genehmigungsaufforderungen gesendet werden."dm"(Standard),"channel"(Ursprungsraum) oder"both".- Überschreibungen pro Konto:
channels.matrix.accounts.<id>.execApprovals.
channels.matrix.dm.sessionScopesteuert, wie Matrix-DMs in Sitzungen gruppiert werden:per-user(Standard) teilt nach weitergeleitetem Peer, währendper-roomjeden DM-Raum isoliert.- Matrix-Statusprüfungen und Live-Verzeichnissuchen verwenden dieselbe Proxy-Richtlinie wie Laufzeitdatenverkehr.
- Die vollständige Matrix-Konfiguration, Zielregeln und Setup-Beispiele sind unter Matrix dokumentiert.
Microsoft Teams
Microsoft Teams ist extension-basiert und wird unterchannels.msteams konfiguriert.
- Zentrale Schlüsselpfade, die hier behandelt werden:
channels.msteams,channels.msteams.configWrites. - Die vollständige Teams-Konfiguration (Anmeldedaten, Webhook, DM-/Gruppenrichtlinie, Überschreibungen pro Team/pro Kanal) ist unter Microsoft Teams dokumentiert.
IRC
IRC ist extension-basiert und wird unterchannels.irc konfiguriert.
- Zentrale Schlüsselpfade, die hier behandelt werden:
channels.irc,channels.irc.dmPolicy,channels.irc.configWrites,channels.irc.nickserv.*. - Optional überschreibt
channels.irc.defaultAccountdie Standardkontenauswahl, wenn es mit einer konfigurierten Konto-ID übereinstimmt. - Die vollständige IRC-Kanalkonfiguration (Host/Port/TLS/Kanäle/Erlaubnislisten/Mention-Gating) ist unter IRC dokumentiert.
Mehrere Konten (alle Kanäle)
Führen Sie mehrere Konten pro Kanal aus (jedes mit eigeneraccountId):
defaultwird verwendet, wennaccountIdweggelassen wird (CLI + Routing).- Env-Tokens gelten nur für das default-Konto.
- Basis-Kanaleinstellungen gelten für alle Konten, sofern sie nicht pro Konto überschrieben werden.
- Verwenden Sie
bindings[].match.accountId, um jedes Konto an einen anderen Agenten weiterzuleiten. - Wenn Sie über
openclaw channels add(oder Kanal-Onboarding) ein Nicht-Standardkonto hinzufügen, während Sie sich noch auf einer Top-Level-Kanalkonfiguration für ein einzelnes Konto befinden, verschiebt OpenClaw zunächst kontobezogene Top-Level-Werte für ein einzelnes Konto in die Kontozuordnung des Kanals, damit das ursprüngliche Konto weiter funktioniert. Die meisten Kanäle verschieben sie nachchannels.<channel>.accounts.default; Matrix kann stattdessen ein vorhandenes passendes benanntes/default-Ziel beibehalten. - Bestehende nur kanalbezogene Bindings (ohne
accountId) passen weiterhin auf das Standardkonto; kontoabhängige Bindings bleiben optional. openclaw doctor --fixrepariert auch gemischte Formen, indem kontobezogene Top-Level-Werte für ein einzelnes Konto in das für diesen Kanal ausgewählte verschobene Konto verschoben werden. Die meisten Kanäle verwendenaccounts.default; Matrix kann stattdessen ein vorhandenes passendes benanntes/default-Ziel beibehalten.
Andere extension-basierte Kanäle
Viele extension-basierte Kanäle werden alschannels.<id> konfiguriert und auf ihren dedizierten Kanalseiten dokumentiert (zum Beispiel Feishu, Matrix, LINE, Nostr, Zalo, Nextcloud Talk, Synology Chat und Twitch).
Siehe den vollständigen Kanalindex: Channels.
Mention-Gating in Gruppenchats
Gruppennachrichten erfordern standardmäßig eine Erwähnung (Metadaten-Erwähnung oder sichere Regex-Muster). Gilt für WhatsApp, Telegram, Discord, Google Chat und iMessage-Gruppenchats. Erwähnungstypen:- Metadaten-Erwähnungen: Native Plattform-@-Erwähnungen. Im WhatsApp-Selbstchat-Modus ignoriert.
- Textmuster: Sichere Regex-Muster in
agents.list[].groupChat.mentionPatterns. Ungültige Muster und unsichere verschachtelte Wiederholungen werden ignoriert. - Mention-Gating wird nur erzwungen, wenn eine Erkennung möglich ist (native Erwähnungen oder mindestens ein Muster).
messages.groupChat.historyLimit setzt den globalen Standard. Kanäle können ihn mit channels.<channel>.historyLimit (oder pro Konto) überschreiben. Setzen Sie 0, um ihn zu deaktivieren.
DM-Verlaufsgrenzen
telegram, whatsapp, discord, slack, signal, imessage, msteams.
Selbstchat-Modus
Nehmen Sie Ihre eigene Nummer inallowFrom auf, um den Selbstchat-Modus zu aktivieren (ignoriert native @-Erwähnungen, antwortet nur auf Textmuster):
Befehle (Chat-Befehlsverarbeitung)
Befehlsdetails
Befehlsdetails
- Dieser Block konfiguriert Befehlsoberflächen. Den aktuellen integrierten + gebündelten Befehlskatalog finden Sie unter Slash Commands.
- Diese Seite ist eine Konfigurationsschlüssel-Referenz, nicht der vollständige Befehlskatalog. Kanal-/plugin-eigene Befehle wie QQ Bot
/bot-ping/bot-help/bot-logs, LINE/card, Geräte-Pairing/pair, Memory/dreaming, Telefonsteuerung/phoneund Talk/voicesind auf ihren Kanal-/Plugin-Seiten sowie unter Slash Commands dokumentiert. - Textbefehle müssen eigenständige Nachrichten mit führendem
/sein. native: "auto"aktiviert native Befehle für Discord/Telegram, lässt Slack deaktiviert.nativeSkills: "auto"aktiviert native Skills-Befehle für Discord/Telegram, lässt Slack deaktiviert.- Überschreibung pro Kanal:
channels.discord.commands.native(bool oder"auto").falselöscht zuvor registrierte Befehle. - Überschreiben Sie die Registrierung nativer Skills pro Kanal mit
channels.<provider>.commands.nativeSkills. channels.telegram.customCommandsfügt zusätzliche Telegram-Bot-Menüeinträge hinzu.bash: trueaktiviert! <cmd>für die Host-Shell. Erforderttools.elevated.enabledund einen Absender intools.elevated.allowFrom.<channel>.config: trueaktiviert/config(liest/schreibtopenclaw.json). Für Gateway-chat.send-Clients erfordern persistente Schreibvorgänge mit/config set|unsetzusätzlichoperator.admin; schreibgeschütztes/config showbleibt für normale Operator-Clients mit Schreibbereich verfügbar.mcp: trueaktiviert/mcpfür von OpenClaw verwaltete MCP-Serverkonfiguration untermcp.servers.plugins: trueaktiviert/pluginsfür Plugin-Erkennung sowie Installations- und Aktivieren-/Deaktivieren-Steuerung.channels.<provider>.configWritessteuert Konfigurationsänderungen pro Kanal (Standard: true).- Für Kanäle mit mehreren Konten steuert
channels.<provider>.accounts.<id>.configWritesauch Schreibvorgänge, die auf dieses Konto zielen (zum Beispiel/allowlist --config --account <id>oder/config set channels.<provider>.accounts.<id>...). restart: falsedeaktiviert/restartund Gateway-Neustart-Tool-Aktionen. Standard:true.ownerAllowFromist die explizite Erlaubnisliste für Eigentümer für nur-Eigentümer-Befehle/-Tools. Sie ist getrennt vonallowFrom.ownerDisplay: "hash"hasht Eigentümer-IDs im System-Prompt. Setzen SieownerDisplaySecret, um das Hashing zu steuern.allowFromist providerbezogen. Wenn gesetzt, ist es die einzige Autorisierungsquelle (Kanal-Erlaubnislisten/Pairing unduseAccessGroupswerden ignoriert).useAccessGroups: falseerlaubt Befehlen, Richtlinien für Zugriffsgruppen zu umgehen, wennallowFromnicht gesetzt ist.- Zuordnung der Befehlsdokumentation:
Agent-Standardeinstellungen
agents.defaults.workspace
Standard: ~/.openclaw/workspace.
agents.defaults.repoRoot
Optionales Repository-Root, das in der Runtime-Zeile des System-Prompts angezeigt wird. Wenn nicht gesetzt, erkennt OpenClaw es automatisch, indem es vom Workspace aus nach oben sucht.
agents.defaults.skills
Optionale Standard-Erlaubnisliste für Skills für Agenten, die agents.list[].skills nicht setzen.
- Lassen Sie
agents.defaults.skillsweg, um standardmäßig uneingeschränkte Skills zu erlauben. - Lassen Sie
agents.list[].skillsweg, um die Standardwerte zu erben. - Setzen Sie
agents.list[].skills: []für keine Skills. - Eine nicht leere Liste in
agents.list[].skillsist die endgültige Menge für diesen Agenten; sie wird nicht mit den Standardwerten zusammengeführt.
agents.defaults.skipBootstrap
Deaktiviert die automatische Erstellung von Workspace-Bootstrap-Dateien (AGENTS.md, SOUL.md, TOOLS.md, IDENTITY.md, USER.md, HEARTBEAT.md, BOOTSTRAP.md).
agents.defaults.contextInjection
Steuert, wann Workspace-Bootstrap-Dateien in den System-Prompt eingefügt werden. Standard: "always".
"continuation-skip": Sichere Fortsetzungs-Turns (nach einer abgeschlossenen Assistant-Antwort) überspringen das erneute Einfügen des Workspace-Bootstraps, wodurch die Prompt-Größe reduziert wird. Heartbeat-Läufe und Wiederholungen nach Kompaktierung bauen den Kontext weiterhin neu auf.
agents.defaults.bootstrapMaxChars
Maximale Zeichenanzahl pro Workspace-Bootstrap-Datei vor dem Kürzen. Standard: 20000.
agents.defaults.bootstrapTotalMaxChars
Maximale Gesamtzahl an eingefügten Zeichen über alle Workspace-Bootstrap-Dateien hinweg. Standard: 150000.
agents.defaults.bootstrapPromptTruncationWarning
Steuert den für den Agenten sichtbaren Warntext, wenn der Bootstrap-Kontext gekürzt wird.
Standard: "once".
"off": Niemals Warntext in den System-Prompt einfügen."once": Warnung einmal pro eindeutiger Kürzungssignatur einfügen (empfohlen)."always": Warnung bei jedem Lauf einfügen, wenn eine Kürzung vorliegt.
agents.defaults.imageMaxDimensionPx
Maximale Pixelgröße der längsten Bildseite in Transkript-/Tool-Bildblöcken vor Provider-Aufrufen.
Standard: 1200.
Niedrigere Werte reduzieren in der Regel die Nutzung von Vision-Tokens und die Größe des Anforderungs-Payloads bei screenshotlastigen Läufen.
Höhere Werte erhalten mehr visuelle Details.
agents.defaults.userTimezone
Zeitzone für den Kontext des System-Prompts (nicht für Nachrichtentimestamps). Fällt auf die Zeitzone des Hosts zurück.
agents.defaults.timeFormat
Zeitformat im System-Prompt. Standard: auto (Betriebssystemeinstellung).
agents.defaults.model
model: akzeptiert entweder eine Zeichenfolge ("provider/model") oder ein Objekt ({ primary, fallbacks }).- Die Zeichenfolgenform setzt nur das primäre Modell.
- Die Objektform setzt das primäre Modell plus geordnete Failover-Modelle.
imageModel: akzeptiert entweder eine Zeichenfolge ("provider/model") oder ein Objekt ({ primary, fallbacks }).- Wird vom Tool-Pfad
imageals Vision-Modellkonfiguration verwendet. - Wird auch als Fallback-Routing verwendet, wenn das ausgewählte/standardmäßige Modell keine Bildeingaben akzeptieren kann.
- Wird vom Tool-Pfad
imageGenerationModel: akzeptiert entweder eine Zeichenfolge ("provider/model") oder ein Objekt ({ primary, fallbacks }).- Wird von der gemeinsamen Bildgenerierungsfunktion und jeder zukünftigen Tool-/Plugin-Oberfläche verwendet, die Bilder generiert.
- Typische Werte:
google/gemini-3.1-flash-image-previewfür native Gemini-Bildgenerierung,fal/fal-ai/flux/devfür fal oderopenai/gpt-image-1für OpenAI Images. - Wenn Sie direkt einen Provider/ein Modell auswählen, konfigurieren Sie auch die passende Provider-Authentifizierung bzw. den API-Schlüssel (zum Beispiel
GEMINI_API_KEYoderGOOGLE_API_KEYfürgoogle/*,OPENAI_API_KEYfüropenai/*,FAL_KEYfürfal/*). - Wenn weggelassen, kann
image_generatedennoch einen authentifizierungsbasierten Provider-Standard ableiten. Es versucht zuerst den aktuellen Standard-Provider, dann die übrigen registrierten Bildgenerierungs-Provider in Provider-ID-Reihenfolge.
musicGenerationModel: akzeptiert entweder eine Zeichenfolge ("provider/model") oder ein Objekt ({ primary, fallbacks }).- Wird von der gemeinsamen Musikgenerierungsfunktion und dem integrierten Tool
music_generateverwendet. - Typische Werte:
google/lyria-3-clip-preview,google/lyria-3-pro-previewoderminimax/music-2.5+. - Wenn weggelassen, kann
music_generatedennoch einen authentifizierungsbasierten Provider-Standard ableiten. Es versucht zuerst den aktuellen Standard-Provider, dann die übrigen registrierten Musikgenerierungs-Provider in Provider-ID-Reihenfolge. - Wenn Sie direkt einen Provider/ein Modell auswählen, konfigurieren Sie auch die passende Provider-Authentifizierung bzw. den API-Schlüssel.
- Wird von der gemeinsamen Musikgenerierungsfunktion und dem integrierten Tool
videoGenerationModel: akzeptiert entweder eine Zeichenfolge ("provider/model") oder ein Objekt ({ primary, fallbacks }).- Wird von der gemeinsamen Videogenerierungsfunktion und dem integrierten Tool
video_generateverwendet. - Typische Werte:
qwen/wan2.6-t2v,qwen/wan2.6-i2v,qwen/wan2.6-r2v,qwen/wan2.6-r2v-flashoderqwen/wan2.7-r2v. - Wenn weggelassen, kann
video_generatedennoch einen authentifizierungsbasierten Provider-Standard ableiten. Es versucht zuerst den aktuellen Standard-Provider, dann die übrigen registrierten Videogenerierungs-Provider in Provider-ID-Reihenfolge. - Wenn Sie direkt einen Provider/ein Modell auswählen, konfigurieren Sie auch die passende Provider-Authentifizierung bzw. den API-Schlüssel.
- Der gebündelte Qwen-Provider für Videogenerierung unterstützt bis zu 1 Ausgabevideo, 1 Eingabebild, 4 Eingabevideos, 10 Sekunden Dauer sowie Provider-Level-Optionen
size,aspectRatio,resolution,audioundwatermark.
- Wird von der gemeinsamen Videogenerierungsfunktion und dem integrierten Tool
pdfModel: akzeptiert entweder eine Zeichenfolge ("provider/model") oder ein Objekt ({ primary, fallbacks }).- Wird vom Tool
pdffür Modell-Routing verwendet. - Wenn weggelassen, fällt das PDF-Tool auf
imageModelund dann auf das aufgelöste Sitzungs-/Standardmodell zurück.
- Wird vom Tool
pdfMaxBytesMb: Standardgrenze für die PDF-Größe für das Toolpdf, wennmaxBytesMbnicht zur Aufrufzeit übergeben wird.pdfMaxPages: Standardmaximum an Seiten, die der Extraktions-Fallback-Modus im Toolpdfberücksichtigt.verboseDefault: Standard-Verbose-Level für Agenten. Werte:"off","on","full". Standard:"off".elevatedDefault: Standard-Level für erhöhte Ausgabe für Agenten. Werte:"off","on","ask","full". Standard:"on".model.primary: Formatprovider/model(z. B.openai/gpt-5.4). Wenn Sie den Provider weglassen, versucht OpenClaw zuerst einen Alias, dann eine eindeutige konfigurierte Provider-Übereinstimmung für genau diese Modell-ID und fällt erst dann auf den konfigurierten Standard-Provider zurück (veraltetes Kompatibilitätsverhalten, daherprovider/modelexplizit bevorzugen). Wenn dieser Provider das konfigurierte Standardmodell nicht mehr anbietet, fällt OpenClaw auf das erste konfigurierte Provider-/Modellpaar zurück, statt einen veralteten entfernten Provider-Standard anzuzeigen.models: der konfigurierte Modellkatalog und die Erlaubnisliste für/model. Jeder Eintrag kannalias(Kurzform) undparams(providerbezogen, zum Beispieltemperature,maxTokens,cacheRetention,context1m) enthalten.params: globale Standard-Provider-Parameter, die auf alle Modelle angewendet werden. Festgelegt unteragents.defaults.params(z. B.{ cacheRetention: "long" }).params-Merge-Priorität (Konfiguration):agents.defaults.params(globale Basis) wird vonagents.defaults.models["provider/model"].params(pro Modell) überschrieben, dann überschreibtagents.list[].params(passende Agent-ID) schlüsselweise. Details siehe Prompt Caching.- Konfigurationsschreiber, die diese Felder ändern (zum Beispiel
/models set,/models set-imageund Befehle zum Hinzufügen/Entfernen von Fallbacks), speichern die kanonische Objektform und erhalten vorhandene Fallback-Listen nach Möglichkeit. maxConcurrent: maximale Anzahl paralleler Agent-Läufe über Sitzungen hinweg (jede Sitzung bleibt weiterhin serialisiert). Standard: 4.
agents.defaults.models enthalten ist):
| Alias | Modell |
|---|---|
opus | anthropic/claude-opus-4-6 |
sonnet | anthropic/claude-sonnet-4-6 |
gpt | openai/gpt-5.4 |
gpt-mini | openai/gpt-5.4-mini |
gpt-nano | openai/gpt-5.4-nano |
gemini | google/gemini-3.1-pro-preview |
gemini-flash | google/gemini-3-flash-preview |
gemini-flash-lite | google/gemini-3.1-flash-lite-preview |
--thinking off setzen oder agents.defaults.models["zai/<model>"].params.thinking selbst definieren.
Z.AI-Modelle aktivieren standardmäßig tool_stream für Tool-Call-Streaming. Setzen Sie agents.defaults.models["zai/<model>"].params.tool_stream auf false, um dies zu deaktivieren.
Anthropic-Claude-4.6-Modelle verwenden standardmäßig adaptive Thinking, wenn kein explizites Thinking-Level gesetzt ist.
agents.defaults.cliBackends
Optionale CLI-Backends für reine Text-Fallback-Läufe (ohne Tool-Calls). Nützlich als Backup, wenn API-Provider ausfallen.
- CLI-Backends sind textorientiert; Tools sind immer deaktiviert.
- Sitzungen werden unterstützt, wenn
sessionArggesetzt ist. - Bilddurchreichung wird unterstützt, wenn
imageArgDateipfade akzeptiert.
agents.defaults.systemPromptOverride
Ersetzt den gesamten von OpenClaw zusammengestellten System-Prompt durch eine feste Zeichenfolge. Wird auf Standardebene (agents.defaults.systemPromptOverride) oder pro Agent (agents.list[].systemPromptOverride) gesetzt. Werte pro Agent haben Vorrang; ein leerer oder nur aus Leerraum bestehender Wert wird ignoriert. Nützlich für kontrollierte Prompt-Experimente.
agents.defaults.heartbeat
Periodische Heartbeat-Läufe.
every: Dauerzeichenfolge (ms/s/m/h). Standard:30m(API-Key-Authentifizierung) oder1h(OAuth-Authentifizierung). Setzen Sie0m, um zu deaktivieren.includeSystemPromptSection: Wenn false, wird der Abschnitt Heartbeat aus dem System-Prompt weggelassen und das Einfügen vonHEARTBEAT.mdin den Bootstrap-Kontext übersprungen. Standard:true.suppressToolErrorWarnings: Wenn true, werden Warn-Payloads für Tool-Fehler während Heartbeat-Läufen unterdrückt.directPolicy: Richtlinie für direkte/DM-Zustellung.allow(Standard) erlaubt direkte Zielzustellung.blockunterdrückt direkte Zielzustellung und gibtreason=dm-blockedaus.lightContext: Wenn true, verwenden Heartbeat-Läufe einen leichtgewichtigen Bootstrap-Kontext und behalten nurHEARTBEAT.mdaus den Workspace-Bootstrap-Dateien.isolatedSession: Wenn true, wird jeder Heartbeat in einer neuen Sitzung ohne vorherigen Gesprächsverlauf ausgeführt. Dasselbe Isolationsmuster wie bei CronsessionTarget: "isolated". Reduziert die Tokenkosten pro Heartbeat von ~100K auf ~2–5K Tokens.- Pro Agent: Setzen Sie
agents.list[].heartbeat. Wenn ein Agentheartbeatdefiniert, führen nur diese Agenten Heartbeats aus. - Heartbeats führen vollständige Agent-Turns aus — kürzere Intervalle verbrauchen mehr Tokens.
agents.defaults.compaction
mode:defaultodersafeguard(stapelweise Zusammenfassung für lange Verläufe). Siehe Compaction.provider: ID eines registrierten Compaction-Provider-Plugins. Wenn gesetzt, wirdsummarize()des Providers anstelle der integrierten LLM-Zusammenfassung aufgerufen. Bei Fehlern erfolgt ein Fallback auf die integrierte Zusammenfassung. Das Setzen eines Providers erzwingtmode: "safeguard". Siehe Compaction.timeoutSeconds: maximale Anzahl an Sekunden für einen einzelnen Compaction-Vorgang, bevor OpenClaw ihn abbricht. Standard:900.identifierPolicy:strict(Standard),offodercustom.strictstellt der Compaction-Zusammenfassung integrierte Hinweise zur Beibehaltung opaker Bezeichner voran.identifierInstructions: optionaler benutzerdefinierter Text zur Beibehaltung von Bezeichnern, verwendet beiidentifierPolicy=custom.postCompactionSections: optionale H2-/H3-Abschnittsnamen aus AGENTS.md, die nach der Compaction erneut eingefügt werden. Standard ist["Session Startup", "Red Lines"]; setzen Sie[], um das erneute Einfügen zu deaktivieren. Wenn nicht gesetzt oder explizit auf dieses Standardpaar gesetzt, werden ältere ÜberschriftenEvery Session/Safetyauch als Legacy-Fallback akzeptiert.model: optionale Überschreibungprovider/model-idnur für die Compaction-Zusammenfassung. Verwenden Sie dies, wenn die Hauptsitzung ein Modell beibehalten soll, Compaction-Zusammenfassungen aber auf einem anderen laufen sollen; wenn nicht gesetzt, verwendet Compaction das primäre Modell der Sitzung.notifyUser: sendet beitrueeine kurze Mitteilung an den Benutzer, wenn Compaction beginnt (zum Beispiel „Kontext wird komprimiert…“). Standardmäßig deaktiviert, damit Compaction still bleibt.memoryFlush: stiller agentischer Turn vor der automatischen Compaction, um dauerhafte Memories zu speichern. Wird übersprungen, wenn der Workspace schreibgeschützt ist.
agents.defaults.contextPruning
Entfernt alte Tool-Ergebnisse aus dem In-Memory-Kontext, bevor er an das LLM gesendet wird. Ändert nicht den Sitzungsverlauf auf der Festplatte.
Verhalten des Modus cache-ttl
Verhalten des Modus cache-ttl
mode: "cache-ttl"aktiviert Pruning-Durchläufe.ttlsteuert, wie oft Pruning erneut ausgeführt werden kann (nach der letzten Cache-Berührung).- Pruning kürzt zuerst übergroße Tool-Ergebnisse weich und löscht dann bei Bedarf ältere Tool-Ergebnisse hart.
... ein.Hard-Clear ersetzt das gesamte Tool-Ergebnis durch den Platzhalter.Hinweise:- Bildblöcke werden niemals gekürzt/gelöscht.
- Verhältnisse basieren auf Zeichen (ungefähr), nicht auf exakten Token-Anzahlen.
- Wenn weniger als
keepLastAssistantsAssistant-Nachrichten vorhanden sind, wird Pruning übersprungen.
Block-Streaming
- Nicht-Telegram-Kanäle erfordern explizit
*.blockStreaming: true, um Block-Antworten zu aktivieren. - Kanalüberschreibungen:
channels.<channel>.blockStreamingCoalesce(und Varianten pro Konto). Signal/Slack/Discord/Google Chat verwenden standardmäßigminChars: 1500. humanDelay: zufällige Pause zwischen Block-Antworten.natural= 800–2500 ms. Überschreibung pro Agent:agents.list[].humanDelay.
Tippindikatoren
- Standardwerte:
instantfür Direktchats/Erwähnungen,messagefür nicht erwähnte Gruppenchats. - Überschreibungen pro Sitzung:
session.typingMode,session.typingIntervalSeconds.
agents.defaults.sandbox
Optionale Sandbox-Isolierung für den eingebetteten Agenten. Die vollständige Anleitung finden Sie unter Sandboxing.
Sandbox-Details
Sandbox-Details
Backend:OpenShell-Modus:
docker: lokale Docker-Laufzeit (Standard)ssh: generische SSH-gestützte entfernte Laufzeitopenshell: OpenShell-Laufzeit
backend: "openshell" ausgewählt ist, werden laufzeitspezifische Einstellungen nach
plugins.entries.openshell.config verschoben.SSH-Backend-Konfiguration:target: SSH-Ziel im Formatuser@host[:port]command: SSH-Client-Befehl (Standard:ssh)workspaceRoot: absolutes entferntes Root, das für Workspaces pro Scope verwendet wirdidentityFile/certificateFile/knownHostsFile: vorhandene lokale Dateien, die an OpenSSH übergeben werdenidentityData/certificateData/knownHostsData: Inline-Inhalte oder SecretRefs, die OpenClaw zur Laufzeit in temporäre Dateien materialisiertstrictHostKeyChecking/updateHostKeys: OpenSSH-Einstellungen für die Host-Key-Richtlinie
identityDatahat Vorrang voridentityFilecertificateDatahat Vorrang vorcertificateFileknownHostsDatahat Vorrang vorknownHostsFile- SecretRef-gestützte
*Data-Werte werden aus dem aktiven Secrets-Laufzeit-Snapshot aufgelöst, bevor die Sandbox-Sitzung startet
- initialisiert den entfernten Workspace einmal nach Erstellung oder Neuerstellung
- behält danach den entfernten SSH-Workspace als kanonisch bei
- leitet
exec, Dateitools und Medienpfade über SSH - synchronisiert entfernte Änderungen nicht automatisch zurück zum Host
- unterstützt keine Sandbox-Browser-Container
none: Sandbox-Workspace pro Scope unter~/.openclaw/sandboxesro: Sandbox-Workspace unter/workspace, Agent-Workspace schreibgeschützt unter/agenteingehängtrw: Agent-Workspace schreib-/lesbar unter/workspaceeingehängt
session: Container + Workspace pro Sitzungagent: ein Container + Workspace pro Agent (Standard)shared: gemeinsamer Container und gemeinsamer Workspace (keine sitzungsübergreifende Isolierung)
mirror: entferntes Ziel vorexeclokal spiegeln, nachexeczurücksynchronisieren; lokaler Workspace bleibt kanonischremote: entferntes Ziel einmal initialisieren, wenn die Sandbox erstellt wird, danach entfernten Workspace als kanonisch beibehalten
remote werden hostlokale Bearbeitungen außerhalb von OpenClaw nach dem Initialisierungsschritt nicht automatisch in die Sandbox synchronisiert.
Der Transport erfolgt per SSH in die OpenShell-Sandbox, aber das Plugin verwaltet den Sandbox-Lebenszyklus und die optionale Spiegelungssynchronisierung.setupCommand wird einmal nach der Container-Erstellung ausgeführt (über sh -lc). Benötigt ausgehenden Netzwerkzugriff, beschreibbares Root und Root-Benutzer.Container verwenden standardmäßig network: "none" — setzen Sie es auf "bridge" (oder ein benutzerdefiniertes Bridge-Netzwerk), wenn der Agent ausgehenden Zugriff benötigt.
"host" ist blockiert. "container:<id>" ist standardmäßig blockiert, es sei denn, Sie setzen explizit
sandbox.docker.dangerouslyAllowContainerNamespaceJoin: true (Break-Glass).Eingehende Anhänge werden in media/inbound/* im aktiven Workspace bereitgestellt.docker.binds hängt zusätzliche Host-Verzeichnisse ein; globale und agentbezogene Bindings werden zusammengeführt.Sandbox-Browser (sandbox.browser.enabled): Chromium + CDP in einem Container. Die noVNC-URL wird in den System-Prompt eingefügt. Erfordert kein browser.enabled in openclaw.json.
noVNC-Beobachterzugriff verwendet standardmäßig VNC-Authentifizierung, und OpenClaw gibt eine URL mit kurzlebigem Token aus (anstatt das Passwort in der gemeinsam genutzten URL offenzulegen).allowHostControl: false(Standard) blockiert, dass Sandbox-Sitzungen auf den Host-Browser zielen.networkverwendet standardmäßigopenclaw-sandbox-browser(dediziertes Bridge-Netzwerk). Setzen Sie es nur dann aufbridge, wenn Sie ausdrücklich globale Bridge-Konnektivität möchten.cdpSourceRangebeschränkt optional eingehenden CDP-Zugriff an der Container-Grenze auf einen CIDR-Bereich (zum Beispiel172.21.0.1/32).sandbox.browser.bindshängt zusätzliche Host-Verzeichnisse nur in den Sandbox-Browser-Container ein. Wenn gesetzt (einschließlich[]), ersetzt esdocker.bindsfür den Browser-Container.- Start-Standardwerte sind in
scripts/sandbox-browser-entrypoint.shdefiniert und für Container-Hosts abgestimmt:--remote-debugging-address=127.0.0.1--remote-debugging-port=<derived from OPENCLAW_BROWSER_CDP_PORT>--user-data-dir=${HOME}/.chrome--no-first-run--no-default-browser-check--disable-3d-apis--disable-gpu--disable-software-rasterizer--disable-dev-shm-usage--disable-background-networking--disable-features=TranslateUI--disable-breakpad--disable-crash-reporter--renderer-process-limit=2--no-zygote--metrics-recording-only--disable-extensions(standardmäßig aktiviert)--disable-3d-apis,--disable-software-rasterizerund--disable-gpusind standardmäßig aktiviert und können mitOPENCLAW_BROWSER_DISABLE_GRAPHICS_FLAGS=0deaktiviert werden, falls die Nutzung von WebGL/3D dies erfordert.OPENCLAW_BROWSER_DISABLE_EXTENSIONS=0aktiviert Erweiterungen wieder, wenn Ihr Workflow davon abhängt.--renderer-process-limit=2kann mitOPENCLAW_BROWSER_RENDERER_PROCESS_LIMIT=<N>geändert werden; setzen Sie0, um das Standard-Prozesslimit von Chromium zu verwenden.- plus
--no-sandboxund--disable-setuid-sandbox, wennnoSandboxaktiviert ist. - Die Standardwerte sind die Container-Image-Basis; verwenden Sie ein benutzerdefiniertes Browser-Image mit einem benutzerdefinierten Entry-Point, um Container-Standardwerte zu ändern.
sandbox.docker.binds sind nur für Docker verfügbar.
Images bauen:
agents.list (Überschreibungen pro Agent)
id: stabile Agent-ID (erforderlich).default: wenn mehrere gesetzt sind, gewinnt der erste (Warnung wird protokolliert). Wenn keiner gesetzt ist, ist der erste Listeneintrag der Standard.model: Die Zeichenfolgenform überschreibt nurprimary; die Objektform{ primary, fallbacks }überschreibt beide ([]deaktiviert globale Fallbacks). Cron-Jobs, die nurprimaryüberschreiben, erben weiterhin Standard-Fallbacks, sofern Sie nichtfallbacks: []setzen.params: streambezogene Parameter pro Agent, die über dem ausgewählten Modelleintrag inagents.defaults.modelszusammengeführt werden. Verwenden Sie dies für agentenspezifische Überschreibungen wiecacheRetention,temperatureodermaxTokens, ohne den gesamten Modellkatalog zu duplizieren.skills: optionale Skill-Erlaubnisliste pro Agent. Wenn weggelassen, erbt der Agentagents.defaults.skills, sofern gesetzt; eine explizite Liste ersetzt Standardwerte, anstatt sie zusammenzuführen, und[]bedeutet keine Skills.thinkingDefault: optionales Standard-Thinking-Level pro Agent (off | minimal | low | medium | high | xhigh | adaptive). Überschreibtagents.defaults.thinkingDefaultfür diesen Agenten, wenn keine Überschreibung pro Nachricht oder Sitzung gesetzt ist.reasoningDefault: optionale Standard-Sichtbarkeit von Reasoning pro Agent (on | off | stream). Gilt, wenn keine Überschreibung von Reasoning pro Nachricht oder Sitzung gesetzt ist.fastModeDefault: optionaler Standardwert für den Schnellmodus pro Agent (true | false). Gilt, wenn keine Überschreibung des Schnellmodus pro Nachricht oder Sitzung gesetzt ist.runtime: optionale Laufzeitbeschreibung pro Agent. Verwenden Sietype: "acp"mit den Standardwerten inruntime.acp(agent,backend,mode,cwd), wenn der Agent standardmäßig ACP-Harness-Sitzungen verwenden soll.identity.avatar: workspace-relativer Pfad,http(s)-URL oderdata:-URI.identityleitet Standardwerte ab:ackReactionausemoji,mentionPatternsausname/emoji.subagents.allowAgents: Erlaubnisliste von Agent-IDs fürsessions_spawn(["*"]= beliebig; Standard: nur derselbe Agent).- Sandbox-Vererbungs-Schutz: Wenn die anfordernde Sitzung in einer Sandbox läuft, lehnt
sessions_spawnZiele ab, die ohne Sandbox laufen würden. subagents.requireAgentId: Wenn true, blockiertsessions_spawnAufrufe ohneagentId(erzwingt explizite Profilauswahl; Standard: false).
Routing mit mehreren Agenten
Führen Sie mehrere isolierte Agenten in einem Gateway aus. Siehe Multi-Agent.Binding-Match-Felder
type(optional):routefür normales Routing (fehlender Typ bedeutet standardmäßig route),acpfür persistente ACP-Unterhaltungs-Bindings.match.channel(erforderlich)match.accountId(optional;*= beliebiges Konto; weggelassen = Standardkonto)match.peer(optional;{ kind: direct|group|channel, id })match.guildId/match.teamId(optional; kanalspezifisch)acp(optional; nur fürtype: "acp"):{ mode, label, cwd, backend }
match.peermatch.guildIdmatch.teamIdmatch.accountId(exakt, ohne Peer/Guild/Team)match.accountId: "*"(kanalweit)- Standard-Agent
bindings.
Für Einträge vom Typ type: "acp" löst OpenClaw nach exakter Unterhaltungsidentität auf (match.channel + Konto + match.peer.id) und verwendet nicht die obige Ebenenreihenfolge für Route-Bindings.
Zugriffsprofile pro Agent
Voller Zugriff (keine Sandbox)
Voller Zugriff (keine Sandbox)
Schreibgeschützte Tools + Workspace
Schreibgeschützte Tools + Workspace
Kein Dateisystemzugriff (nur Messaging)
Kein Dateisystemzugriff (nur Messaging)
Sitzung
Details zu Sitzungsfeldern
Details zu Sitzungsfeldern
scope: grundlegende Strategie zur Sitzungsgruppierung für Gruppenchats.per-sender(Standard): Jeder Absender erhält innerhalb eines Kanalkontexts eine isolierte Sitzung.global: Alle Teilnehmer in einem Kanalkontext teilen sich eine einzige Sitzung (nur verwenden, wenn gemeinsamer Kontext beabsichtigt ist).
dmScope: wie DMs gruppiert werden.main: Alle DMs teilen sich die Hauptsitzung.per-peer: isoliert nach Absender-ID kanalübergreifend.per-channel-peer: isoliert pro Kanal + Absender (empfohlen für Posteingänge mit mehreren Benutzern).per-account-channel-peer: isoliert pro Konto + Kanal + Absender (empfohlen für mehrere Konten).
identityLinks: ordnet kanonische IDs providerpräfixierten Peers zu, um kanalübergreifende gemeinsame Sitzungen zu ermöglichen.reset: primäre Reset-Richtlinie.dailysetzt umatHourlokaler Zeit zurück;idlesetzt nachidleMinuteszurück. Wenn beide konfiguriert sind, gewinnt der zuerst ablaufende Wert.resetByType: Überschreibungen pro Typ (direct,group,thread). Legacy-dmwird als Alias fürdirectakzeptiert.parentForkMaxTokens: maximaletotalTokensder übergeordneten Sitzung, die beim Erstellen einer geforkten Thread-Sitzung erlaubt sind (Standard100000).- Wenn die übergeordnete Sitzung
totalTokensüber diesem Wert hat, startet OpenClaw eine neue Thread-Sitzung, statt den Verlauf des übergeordneten Transkripts zu übernehmen. - Setzen Sie
0, um diese Schutzfunktion zu deaktivieren und das Forken vom Parent immer zu erlauben.
- Wenn die übergeordnete Sitzung
mainKey: Legacy-Feld. Die Laufzeit verwendet immer"main"für den Haupt-Bucket für Direktchats.agentToAgent.maxPingPongTurns: maximale Anzahl an Antwortzügen zwischen Agenten während Agent-zu-Agent-Austauschen (Ganzzahl, Bereich:0–5).0deaktiviert Ping-Pong-Verkettung.sendPolicy: Match überchannel,chatType(direct|group|channel, mit Legacy-Aliasdm),keyPrefixoderrawKeyPrefix. Die erste Ablehnung gewinnt.maintenance: Bereinigung + Aufbewahrungskontrollen für den Sitzungsspeicher.mode:warngibt nur Warnungen aus;enforcewendet die Bereinigung an.pruneAfter: Altersgrenze für veraltete Einträge (Standard30d).maxEntries: maximale Anzahl von Einträgen insessions.json(Standard500).rotateBytes: rotiertsessions.json, wenn diese Größe überschritten wird (Standard10mb).resetArchiveRetention: Aufbewahrung für Transkriptarchive*.reset.<timestamp>. Standardmäßig wiepruneAfter; setzen Siefalse, um dies zu deaktivieren.maxDiskBytes: optionales Festplattenbudget für das Sitzungsverzeichnis. Im Moduswarnwerden Warnungen protokolliert; im Modusenforcewerden zuerst die ältesten Artefakte/Sitzungen entfernt.highWaterBytes: optionales Ziel nach der Bereinigung des Budgets. Standardmäßig80%vonmaxDiskBytes.
threadBindings: globale Standardwerte für threadgebundene Sitzungsfunktionen.enabled: globaler Standardschalter (Provider können überschreiben; Discord verwendetchannels.discord.threadBindings.enabled)idleHours: Standard für automatisches Entfokussieren bei Inaktivität in Stunden (0deaktiviert; Provider können überschreiben)maxAgeHours: Standard für hartes maximales Alter in Stunden (0deaktiviert; Provider können überschreiben)
Nachrichten
Antwortpräfix
Überschreibungen pro Kanal/Konto:channels.<channel>.responsePrefix, channels.<channel>.accounts.<id>.responsePrefix.
Auflösung (am spezifischsten gewinnt): Konto → Kanal → global. "" deaktiviert und stoppt die Kaskade. "auto" leitet [{identity.name}] ab.
Template-Variablen:
| Variable | Beschreibung | Beispiel |
|---|---|---|
{model} | Kurzer Modellname | claude-opus-4-6 |
{modelFull} | Vollständige Modellkennung | anthropic/claude-opus-4-6 |
{provider} | Provider-Name | anthropic |
{thinkingLevel} | Aktuelles Thinking-Level | high, low, off |
{identity.name} | Name der Agentenidentität | (gleich wie "auto") |
{think} ist ein Alias für {thinkingLevel}.
Bestätigungsreaktion
- Standardmäßig das
identity.emojides aktiven Agenten, andernfalls"👀". Setzen Sie"", um zu deaktivieren. - Überschreibungen pro Kanal:
channels.<channel>.ackReaction,channels.<channel>.accounts.<id>.ackReaction. - Reihenfolge der Auflösung: Konto → Kanal →
messages.ackReaction→ Identity-Fallback. - Scope:
group-mentions(Standard),group-all,direct,all. removeAckAfterReply: entfernt die Bestätigungsreaktion nach der Antwort auf Slack, Discord und Telegram.messages.statusReactions.enabled: aktiviert Lifecycle-Statusreaktionen auf Slack, Discord und Telegram. Auf Slack und Discord bleibt bei nicht gesetztem Wert die Statusreaktion aktiviert, wenn Bestätigungsreaktionen aktiv sind. Auf Telegram muss sie explizit auftruegesetzt werden, um Lifecycle-Statusreaktionen zu aktivieren.
Inbound-Debounce
Fasst schnelle reine Textnachrichten desselben Absenders zu einem einzigen Agent-Turn zusammen. Medien/Anhänge lösen sofortiges Flushen aus. Steuerbefehle umgehen Debouncing.TTS (Text-to-Speech)
autosteuert den Standardmodus für automatisches TTS:off,always,inboundodertagged./tts on|offkann lokale Einstellungen überschreiben, und/tts statuszeigt den effektiven Status an.summaryModelüberschreibtagents.defaults.model.primaryfür die automatische Zusammenfassung.modelOverridesist standardmäßig aktiviert;modelOverrides.allowProviderist standardmäßigfalse(Opt-in).- API-Schlüssel fallen auf
ELEVENLABS_API_KEY/XI_API_KEYundOPENAI_API_KEYzurück. openai.baseUrlüberschreibt den OpenAI-TTS-Endpunkt. Auflösungsreihenfolge ist Konfiguration, dannOPENAI_TTS_BASE_URL, dannhttps://api.openai.com/v1.- Wenn
openai.baseUrlauf einen Nicht-OpenAI-Endpunkt zeigt, behandelt OpenClaw ihn als OpenAI-kompatiblen TTS-Server und lockert die Modell-/Stimmenvalidierung.
Talk
Standardwerte für den Talk-Modus (macOS/iOS/Android).talk.providermuss mit einem Schlüssel intalk.providersübereinstimmen, wenn mehrere Talk-Provider konfiguriert sind.- Veraltete flache Talk-Schlüssel (
talk.voiceId,talk.voiceAliases,talk.modelId,talk.outputFormat,talk.apiKey) dienen nur der Kompatibilität und werden automatisch nachtalk.providers.<provider>migriert. - Voice-IDs fallen auf
ELEVENLABS_VOICE_IDoderSAG_VOICE_IDzurück. providers.*.apiKeyakzeptiert Klartextzeichenfolgen oder SecretRef-Objekte.- Der Fallback
ELEVENLABS_API_KEYgilt nur, wenn kein Talk-API-Schlüssel konfiguriert ist. providers.*.voiceAliaseserlaubt es Talk-Direktiven, benutzerfreundliche Namen zu verwenden.silenceTimeoutMssteuert, wie lange der Talk-Modus nach Benutzerschweigen wartet, bevor er das Transkript sendet. Wenn nicht gesetzt, bleibt das plattformspezifische Standard-Pausenfenster erhalten (700 ms auf macOS und Android, 900 ms auf iOS).
Tools
Tool-Profile
tools.profile setzt eine Basis-Erlaubnisliste vor tools.allow/tools.deny:
Lokales Onboarding setzt neue lokale Konfigurationen standardmäßig auf tools.profile: "coding", wenn nichts gesetzt ist (bestehende explizite Profile bleiben erhalten).
| Profil | Enthält |
|---|---|
minimal | nur session_status |
coding | group:fs, group:runtime, group:web, group:sessions, group:memory, cron, image, image_generate, video_generate |
messaging | group:messaging, sessions_list, sessions_history, sessions_send, session_status |
full | Keine Einschränkung (wie nicht gesetzt) |
Tool-Gruppen
| Gruppe | Tools |
|---|---|
group:runtime | exec, process, code_execution (bash wird als Alias für exec akzeptiert) |
group:fs | read, write, edit, apply_patch |
group:sessions | sessions_list, sessions_history, sessions_send, sessions_spawn, sessions_yield, subagents, session_status |
group:memory | memory_search, memory_get |
group:web | web_search, x_search, web_fetch |
group:ui | browser, canvas |
group:automation | cron, gateway |
group:messaging | message |
group:nodes | nodes |
group:agents | agents_list |
group:media | image, image_generate, video_generate, tts |
group:openclaw | Alle integrierten Tools (ohne Provider-Plugins) |
tools.allow / tools.deny
Globale Tool-Erlauben-/Verweigern-Richtlinie (Verweigerung gewinnt). Groß-/Kleinschreibung wird nicht beachtet, *-Wildcards werden unterstützt. Wird auch angewendet, wenn die Docker-Sandbox deaktiviert ist.
tools.byProvider
Schränkt Tools für bestimmte Provider oder Modelle weiter ein. Reihenfolge: Basisprofil → Provider-Profil → allow/deny.
tools.elevated
Steuert erhöhten exec-Zugriff außerhalb der Sandbox:
- Überschreibungen pro Agent (
agents.list[].tools.elevated) können nur weiter einschränken. /elevated on|off|ask|fullspeichert den Status pro Sitzung; Inline-Direktiven gelten nur für eine einzelne Nachricht.- Erhöhtes
execumgeht die Sandbox und verwendet den konfigurierten Escape-Pfad (gatewaystandardmäßig odernode, wenn dasexec-Zielnodeist).
tools.exec
tools.loopDetection
Sicherheitsprüfungen für Tool-Schleifen sind standardmäßig deaktiviert. Setzen Sie enabled: true, um die Erkennung zu aktivieren.
Einstellungen können global unter tools.loopDetection definiert und pro Agent unter agents.list[].tools.loopDetection überschrieben werden.
historySize: maximale Historie von Tool-Aufrufen, die für die Schleifenanalyse aufbewahrt wird.warningThreshold: Schwellenwert für Warnungen bei sich wiederholenden Mustern ohne Fortschritt.criticalThreshold: höherer Wiederholungsschwellenwert für das Blockieren kritischer Schleifen.globalCircuitBreakerThreshold: Schwellenwert für einen harten Stopp bei jedem Lauf ohne Fortschritt.detectors.genericRepeat: warnt bei wiederholten Aufrufen desselben Tools mit denselben Argumenten.detectors.knownPollNoProgress: warnt/blockiert bei bekannten Poll-Tools (process.poll,command_statususw.).detectors.pingPong: warnt/blockiert bei alternierenden Musterpaaren ohne Fortschritt.- Wenn
warningThreshold >= criticalThresholdodercriticalThreshold >= globalCircuitBreakerThreshold, schlägt die Validierung fehl.
tools.web
tools.media
Konfiguriert das Verständnis eingehender Medien (Bild/Audio/Video):
Felder für Medieneinträge von Modellen
Felder für Medieneinträge von Modellen
Provider-Eintrag (
type: "provider" oder weggelassen):provider: API-Provider-ID (openai,anthropic,google/gemini,groqusw.)model: Überschreibung der Modell-IDprofile/preferredProfile: Profilauswahl fürauth-profiles.json
type: "cli"):command: auszuführende ausführbare Dateiargs: templatebasierte Argumente (unterstützt{{MediaPath}},{{Prompt}},{{MaxChars}}usw.)
capabilities: optionale Liste (image,audio,video). Standardwerte:openai/anthropic/minimax→ Bild,google→ Bild+Audio+Video,groq→ Audio.prompt,maxChars,maxBytes,timeoutSeconds,language: Überschreibungen pro Eintrag.- Bei Fehlern wird auf den nächsten Eintrag zurückgegriffen.
auth-profiles.json → Env-Variablen → models.providers.*.apiKey.Felder für asynchrone Vervollständigung:asyncCompletion.directSend: Wenntrue, versuchen abgeschlossene asynchrone Aufgabenmusic_generateundvideo_generatezuerst die direkte Zustellung an den Kanal. Standard:false(Legacy-Pfad über Requester-Sitzungs-Wake/Modell-Zustellung).
tools.agentToAgent
tools.sessions
Steuert, welche Sitzungen von den Sitzungs-Tools (sessions_list, sessions_history, sessions_send) angesprochen werden können.
Standard: tree (aktuelle Sitzung + von ihr gestartete Sitzungen, zum Beispiel Subagenten).
self: nur der aktuelle Sitzungsschlüssel.tree: aktuelle Sitzung + Sitzungen, die von der aktuellen Sitzung gestartet wurden (Subagenten).agent: jede Sitzung, die zur aktuellen Agent-ID gehört (kann andere Benutzer einschließen, wenn Sie Per-Sender-Sitzungen unter derselben Agent-ID ausführen).all: jede Sitzung. Kanalübergreifendes Targeting zwischen Agenten erfordert weiterhintools.agentToAgent.- Sandbox-Begrenzung: Wenn die aktuelle Sitzung in einer Sandbox läuft und
agents.defaults.sandbox.sessionToolsVisibility="spawned"gesetzt ist, wird die Sichtbarkeit auftreeerzwungen, selbst wenntools.sessions.visibility="all"ist.
tools.sessions_spawn
Steuert die Unterstützung für Inline-Anhänge bei sessions_spawn.
- Anhänge werden nur für
runtime: "subagent"unterstützt. ACP-Laufzeit lehnt sie ab. - Dateien werden im Child-Workspace unter
.openclaw/attachments/<uuid>/mit einer.manifest.jsonmaterialisiert. - Der Inhalt von Anhängen wird automatisch aus der Transkriptpersistenz entfernt.
- Base64-Eingaben werden mit strikten Prüfungen für Alphabet/Padding und einer Größenprüfung vor dem Decoding validiert.
- Dateiberechtigungen sind
0700für Verzeichnisse und0600für Dateien. - Die Bereinigung folgt der Richtlinie
cleanup:deleteentfernt Anhänge immer;keepbehält sie nur bei, wennretainOnSessionKeep: true.
tools.experimental
Experimentelle integrierte Tool-Flags. Standardmäßig aus, sofern keine laufzeitspezifische Autoaktivierungsregel greift.
planTool: aktiviert das strukturierte Toolupdate_planfür die Nachverfolgung nichttrivialer mehrstufiger Arbeiten.- Standard:
falsefür Nicht-OpenAI-Provider. OpenAI- und OpenAI-Codex-Läufe aktivieren es automatisch, wenn es nicht gesetzt ist; setzen Siefalse, um diese Autoaktivierung zu deaktivieren. - Wenn aktiviert, fügt der System-Prompt auch Nutzungshinweise hinzu, damit das Modell es nur für umfangreichere Arbeiten verwendet und höchstens einen Schritt
in_progresshält.
agents.defaults.subagents
model: Standardmodell für gestartete Subagenten. Wenn weggelassen, erben Subagenten das Modell des Aufrufers.allowAgents: Standard-Erlaubnisliste zulässiger Ziel-Agent-IDs fürsessions_spawn, wenn der anfordernde Agent nicht sein eigenessubagents.allowAgentssetzt (["*"]= beliebig; Standard: nur derselbe Agent).runTimeoutSeconds: Standard-Timeout (Sekunden) fürsessions_spawn, wenn der Tool-AufrufrunTimeoutSecondsweglässt.0bedeutet kein Timeout.- Tool-Richtlinie pro Subagent:
tools.subagents.tools.allow/tools.subagents.tools.deny.
Benutzerdefinierte Provider und Base-URLs
OpenClaw verwendet den integrierten Modellkatalog. Fügen Sie benutzerdefinierte Provider übermodels.providers in der Konfiguration oder ~/.openclaw/agents/<agentId>/agent/models.json hinzu.
- Verwenden Sie
authHeader: true+headersfür benutzerdefinierte Authentifizierungsanforderungen. - Überschreiben Sie das Agent-Konfigurations-Root mit
OPENCLAW_AGENT_DIR(oderPI_CODING_AGENT_DIR, einem Legacy-Alias für Umgebungsvariablen). - Merge-Priorität für übereinstimmende Provider-IDs:
- Nicht leere
baseUrl-Werte aus agentbezogenemmodels.jsonhaben Vorrang. - Nicht leere agentbezogene
apiKey-Werte haben nur dann Vorrang, wenn dieser Provider im aktuellen Kontext von Konfiguration/Auth-Profil nicht über SecretRef verwaltet wird. - SecretRef-verwaltete Provider-
apiKey-Werte werden aus Quellmarkierungen aktualisiert (ENV_VAR_NAMEfür Env-Refs,secretref-managedfür Datei-/Exec-Refs), anstatt aufgelöste Secrets zu persistieren. - SecretRef-verwaltete Werte für Provider-Header werden aus Quellmarkierungen aktualisiert (
secretref-env:ENV_VAR_NAMEfür Env-Refs,secretref-managedfür Datei-/Exec-Refs). - Leere oder fehlende agentbezogene
apiKey/baseUrlfallen aufmodels.providersin der Konfiguration zurück. - Übereinstimmende Modellwerte für
contextWindow/maxTokensverwenden den höheren Wert zwischen expliziter Konfiguration und impliziten Katalogwerten. - Übereinstimmende Modellwerte für
contextTokensbehalten eine explizite Laufzeitbegrenzung bei, wenn vorhanden; verwenden Sie sie, um den effektiven Kontext zu begrenzen, ohne native Modellmetadaten zu ändern. - Verwenden Sie
models.mode: "replace", wenn die Konfigurationmodels.jsonvollständig neu schreiben soll. - Marker-Persistenz ist quellenautoritativ: Marker werden aus dem aktiven Quellkonfigurations-Snapshot (vor der Auflösung) geschrieben, nicht aus aufgelösten Laufzeit-Secret-Werten.
- Nicht leere
Details zu Provider-Feldern
models.mode: Verhalten des Provider-Katalogs (mergeoderreplace).models.providers: benutzerdefinierte Provider-Zuordnung, nach Provider-ID geschlüsselt.models.providers.*.api: Request-Adapter (openai-completions,openai-responses,anthropic-messages,google-generative-aiusw.).models.providers.*.apiKey: Provider-Anmeldedaten (SecretRef/Env-Substitution bevorzugt).models.providers.*.auth: Authentifizierungsstrategie (api-key,token,oauth,aws-sdk).models.providers.*.injectNumCtxForOpenAICompat: für Ollama +openai-completions,options.num_ctxin Requests einfügen (Standard:true).models.providers.*.authHeader: erzwingt bei Bedarf die Übertragung der Anmeldedaten im HeaderAuthorization.models.providers.*.baseUrl: Base-URL der Upstream-API.models.providers.*.headers: zusätzliche statische Header für Proxy-/Mandanten-Routing.models.providers.*.request: Transportüberschreibungen für HTTP-Requests des Modell-Providers.request.headers: zusätzliche Header (werden mit den Provider-Standardwerten zusammengeführt). Werte akzeptieren SecretRef.request.auth: Überschreibung der Authentifizierungsstrategie. Modi:"provider-default"(integrierte Auth des Providers verwenden),"authorization-bearer"(mittoken),"header"(mitheaderName,value, optionalprefix).request.proxy: Überschreibung des HTTP-Proxys. Modi:"env-proxy"(Env-VariablenHTTP_PROXY/HTTPS_PROXYverwenden),"explicit-proxy"(miturl). Beide Modi akzeptieren optional ein Unterobjekttls.request.tls: TLS-Überschreibung für direkte Verbindungen. Felder:ca,cert,key,passphrase(alle akzeptieren SecretRef),serverName,insecureSkipVerify.request.allowPrivateNetwork: wenntrue, HTTPS zubaseUrlerlauben, wenn DNS zu privaten, CGNAT- oder ähnlichen Bereichen auflöst, über die HTTP-Fetch-Schutzfunktion des Providers (Opt-in des Operators für vertrauenswürdige selbstgehostete OpenAI-kompatible Endpunkte). WebSocket verwendet dasselberequestfür Header/TLS, aber nicht diese SSRF-Schutzfunktion für Fetch. Standardfalse.
models.providers.*.models: explizite Katalogeinträge für Providermodelle.models.providers.*.models.*.contextWindow: Metadaten zum nativen Kontextfenster des Modells.models.providers.*.models.*.contextTokens: optionale Laufzeitgrenze für den Kontext. Verwenden Sie dies, wenn Sie ein kleineres effektives Kontextbudget als das nativecontextWindowdes Modells möchten.models.providers.*.models.*.compat.supportsDeveloperRole: optionaler Kompatibilitätshinweis. Fürapi: "openai-completions"mit einer nicht leeren, nicht nativenbaseUrl(Host nichtapi.openai.com) erzwingt OpenClaw dies zur Laufzeit auffalse. Leere/weggelassenebaseUrlbehält das Standard-OpenAI-Verhalten bei.models.providers.*.models.*.compat.requiresStringContent: optionaler Kompatibilitätshinweis für OpenAI-kompatible Chat-Endpunkte, die nur Zeichenfolgen unterstützen. Wenntrue, flacht OpenClaw reine Text-Arrays inmessages[].contentvor dem Senden des Requests in einfache Zeichenfolgen ab.plugins.entries.amazon-bedrock.config.discovery: Root der Bedrock-Auto-Discovery-Einstellungen.plugins.entries.amazon-bedrock.config.discovery.enabled: implizite Discovery ein-/ausschalten.plugins.entries.amazon-bedrock.config.discovery.region: AWS-Region für Discovery.plugins.entries.amazon-bedrock.config.discovery.providerFilter: optionaler Filter nach Provider-ID für gezielte Discovery.plugins.entries.amazon-bedrock.config.discovery.refreshInterval: Polling-Intervall für die Aktualisierung der Discovery.plugins.entries.amazon-bedrock.config.discovery.defaultContextWindow: Fallback-Kontextfenster für entdeckte Modelle.plugins.entries.amazon-bedrock.config.discovery.defaultMaxTokens: Fallback für maximale Ausgabetokens für entdeckte Modelle.
Provider-Beispiele
Cerebras (GLM 4.6 / 4.7)
Cerebras (GLM 4.6 / 4.7)
cerebras/zai-glm-4.7 für Cerebras; zai/glm-4.7 für Z.AI direkt.OpenCode
OpenCode
OPENCODE_API_KEY (oder OPENCODE_ZEN_API_KEY). Verwenden Sie Referenzen opencode/... für den Zen-Katalog oder opencode-go/... für den Go-Katalog. Kurzform: openclaw onboard --auth-choice opencode-zen oder openclaw onboard --auth-choice opencode-go.Z.AI (GLM-4.7)
Z.AI (GLM-4.7)
ZAI_API_KEY. z.ai/* und z-ai/* sind akzeptierte Aliasse. Kurzform: openclaw onboard --auth-choice zai-api-key.- Allgemeiner Endpunkt:
https://api.z.ai/api/paas/v4 - Coding-Endpunkt (Standard):
https://api.z.ai/api/coding/paas/v4 - Für den allgemeinen Endpunkt definieren Sie einen benutzerdefinierten Provider mit Überschreibung der Base-URL.
Moonshot AI (Kimi)
Moonshot AI (Kimi)
baseUrl: "https://api.moonshot.cn/v1" oder openclaw onboard --auth-choice moonshot-api-key-cn.Native Moonshot-Endpunkte melden Streaming-Nutzungskompatibilität auf dem gemeinsamen Transport
openai-completions, und OpenClaw richtet sich dabei nach den Fähigkeiten des Endpunkts
statt allein nach der integrierten Provider-ID.Kimi Coding
Kimi Coding
openclaw onboard --auth-choice kimi-code-api-key.Synthetic (Anthropic-kompatibel)
Synthetic (Anthropic-kompatibel)
/v1 weglassen (der Anthropic-Client hängt dies an). Kurzform: openclaw onboard --auth-choice synthetic-api-key.MiniMax M2.7 (direkt)
MiniMax M2.7 (direkt)
MINIMAX_API_KEY. Kurzformen:
openclaw onboard --auth-choice minimax-global-api oder
openclaw onboard --auth-choice minimax-cn-api.
Der Modellkatalog verwendet standardmäßig nur M2.7.
Auf dem Anthropic-kompatiblen Streaming-Pfad deaktiviert OpenClaw MiniMax-Thinking
standardmäßig, sofern Sie thinking nicht explizit selbst setzen. /fast on oder
params.fastMode: true schreibt MiniMax-M2.7 in
MiniMax-M2.7-highspeed um.Lokale Modelle (LM Studio)
Lokale Modelle (LM Studio)
Siehe Local Models. Kurz gesagt: Führen Sie auf leistungsfähiger Hardware ein großes lokales Modell über die LM Studio Responses API aus; behalten Sie gehostete Modelle für den Fallback im Merge.
Skills
allowBundled: optionale Erlaubnisliste nur für gebündelte Skills (verwaltete/Workspace-Skills bleiben unberührt).load.extraDirs: zusätzliche gemeinsame Skill-Roots (niedrigste Priorität).install.preferBrew: wenn true, Homebrew-Installer bevorzugen, wennbrewverfügbar ist, bevor auf andere Installer-Arten zurückgegriffen wird.install.nodeManager: bevorzugter Node-Installer für Spezifikationen inmetadata.openclaw.install(npm|pnpm|yarn|bun).entries.<skillKey>.enabled: falsedeaktiviert einen Skill, selbst wenn er gebündelt/installiert ist.entries.<skillKey>.apiKey: Komfortfeld für Skills, die eine primäre Env-Variable deklarieren (Klartextzeichenfolge oder SecretRef-Objekt).
Plugins
- Geladen aus
~/.openclaw/extensions,<workspace>/.openclaw/extensionssowieplugins.load.paths. - Discovery akzeptiert native OpenClaw-Plugins sowie kompatible Codex-Bundles und Claude-Bundles, einschließlich manifestloser Claude-Bundles im Standardlayout.
- Konfigurationsänderungen erfordern einen Gateway-Neustart.
allow: optionale Erlaubnisliste (nur aufgeführte Plugins werden geladen).denygewinnt.plugins.entries.<id>.apiKey: Komfortfeld für API-Schlüssel auf Plugin-Ebene (wenn vom Plugin unterstützt).plugins.entries.<id>.env: pluginbezogene Zuordnung von Env-Variablen.plugins.entries.<id>.hooks.allowPromptInjection: wennfalse, blockiert der Corebefore_prompt_buildund ignoriert promptverändernde Felder aus Legacy-before_agent_start, während Legacy-modelOverrideundproviderOverrideerhalten bleiben. Gilt für native Plugin-Hooks und unterstützte von Bundles bereitgestellte Hook-Verzeichnisse.plugins.entries.<id>.subagent.allowModelOverride: diesem Plugin explizit vertrauen, pro Lauf Überschreibungen fürproviderundmodelbei Hintergrund-Subagent-Läufen anzufordern.plugins.entries.<id>.subagent.allowedModels: optionale Erlaubnisliste kanonischer Zieleprovider/modelfür vertrauenswürdige Subagent-Überschreibungen. Verwenden Sie"*", nur wenn Sie absichtlich jedes Modell erlauben möchten.plugins.entries.<id>.config: plugindefiniertes Konfigurationsobjekt (validiert gegen das native OpenClaw-Plugin-Schema, wenn verfügbar).plugins.entries.firecrawl.config.webFetch: Firecrawl-Einstellungen für den Web-Fetch-Provider.apiKey: Firecrawl-API-Schlüssel (akzeptiert SecretRef). Fällt aufplugins.entries.firecrawl.config.webSearch.apiKey, Legacy-tools.web.fetch.firecrawl.apiKeyoder die Env-VariableFIRECRAWL_API_KEYzurück.baseUrl: Firecrawl-API-Base-URL (Standard:https://api.firecrawl.dev).onlyMainContent: nur den Hauptinhalt aus Seiten extrahieren (Standard:true).maxAgeMs: maximales Cache-Alter in Millisekunden (Standard:172800000/ 2 Tage).timeoutSeconds: Timeout für Scrape-Requests in Sekunden (Standard:60).
plugins.entries.xai.config.xSearch: xAI-X-Search-Einstellungen (Grok-Websuche).enabled: den X-Search-Provider aktivieren.model: zu verwendendes Grok-Modell für die Suche (z. B."grok-4-1-fast").
plugins.entries.memory-core.config.dreaming: Einstellungen für Memory-Dreaming (experimentell). Siehe Dreaming für Phasen und Schwellenwerte.enabled: globaler Schalter für Dreaming (Standardfalse).frequency: Cron-Taktung für jeden vollständigen Dreaming-Durchlauf (standardmäßig"0 3 * * *").- Phasenrichtlinie und Schwellenwerte sind Implementierungsdetails (keine benutzerseitigen Konfigurationsschlüssel).
- Die vollständige Memory-Konfiguration steht in der Memory-Konfigurationsreferenz:
agents.defaults.memorySearch.*memory.backendmemory.citationsmemory.qmd.*plugins.entries.memory-core.config.dreaming
- Aktivierte Claude-Bundle-Plugins können auch eingebettete Pi-Standardeinstellungen aus
settings.jsonbeisteuern; OpenClaw wendet diese als bereinigte Agent-Einstellungen an, nicht als rohe OpenClaw-Konfigurations-Patches. plugins.slots.memory: aktive Speicher-Plugin-ID auswählen oder"none"setzen, um Speicher-Plugins zu deaktivieren.plugins.slots.contextEngine: aktive Context-Engine-Plugin-ID auswählen; standardmäßig"legacy", sofern Sie keine andere Engine installieren und auswählen.plugins.installs: von der CLI verwaltete Installationsmetadaten, verwendet vonopenclaw plugins update.- Enthält
source,spec,sourcePath,installPath,version,resolvedName,resolvedVersion,resolvedSpec,integrity,shasum,resolvedAt,installedAt. - Behandeln Sie
plugins.installs.*als verwalteten Zustand; bevorzugen Sie CLI-Befehle statt manueller Bearbeitungen.
- Enthält
Browser
evaluateEnabled: falsedeaktiviertact:evaluateundwait --fn.ssrfPolicy.dangerouslyAllowPrivateNetworkist standardmäßigtrue, wenn es nicht gesetzt ist (Modell für vertrauenswürdige Netzwerke).- Setzen Sie
ssrfPolicy.dangerouslyAllowPrivateNetwork: falsefür strikte öffentliche Browsernavigation ohne private Netzwerke. - Im strikten Modus unterliegen entfernte CDP-Profilendpunkte (
profiles.*.cdpUrl) derselben Blockierung privater Netzwerke bei Erreichbarkeits-/Discovery-Prüfungen. ssrfPolicy.allowPrivateNetworkbleibt als Legacy-Alias unterstützt.- Verwenden Sie im strikten Modus
ssrfPolicy.hostnameAllowlistundssrfPolicy.allowedHostnamesfür explizite Ausnahmen. - Entfernte Profile sind nur zum Anhängen gedacht (Start/Stopp/Reset deaktiviert).
profiles.*.cdpUrlakzeptierthttp://,https://,ws://undwss://. Verwenden Sie HTTP(S), wenn OpenClaw/json/versionerkennen soll; verwenden Sie WS(S), wenn Ihr Provider Ihnen eine direkte DevTools-WebSocket-URL bereitstellt.- Profile vom Typ
existing-sessionsind nur für den Host und verwenden Chrome MCP statt CDP. - Profile vom Typ
existing-sessionkönnenuserDataDirsetzen, um ein bestimmtes Chromium-basiertes Browserprofil wie Brave oder Edge anzusprechen. - Profile vom Typ
existing-sessionbehalten die aktuellen Routenbegrenzungen von Chrome MCP: Snapshot-/Ref-gesteuerte Aktionen statt CSS-Selektor-Targeting, Hooks für das Hochladen einer einzelnen Datei, keine Dialog-Timeout-Überschreibungen, keinwait --load networkidleund keinresponsebody, PDF-Export, Download-Interception oder Batch-Aktionen. - Lokal verwaltete
openclaw-Profile weisencdpPortundcdpUrlautomatisch zu; setzen SiecdpUrlnur explizit für entferntes CDP. - Reihenfolge bei der automatischen Erkennung: Standardbrowser, wenn Chromium-basiert → Chrome → Brave → Edge → Chromium → Chrome Canary.
- Control-Service: nur loopback (Port aus
gateway.portabgeleitet, Standard18791). extraArgshängt zusätzliche Start-Flags an den lokalen Chromium-Start an (zum Beispiel--disable-gpu, Fenstergröße oder Debug-Flags).
UI
seamColor: Akzentfarbe für das UI-Chrome der nativen App (Talk-Mode-Blasenfärbung usw.).assistant: Identity-Überschreibung für die Control UI. Fällt auf die aktive Agentenidentität zurück.
Gateway
Details zu Gateway-Feldern
Details zu Gateway-Feldern
mode:local(Gateway ausführen) oderremote(mit entferntem Gateway verbinden). Das Gateway verweigert den Start, sofern nichtlocal.port: einzelner multiplexierter Port für WS + HTTP. Priorität:--port>OPENCLAW_GATEWAY_PORT>gateway.port>18789.bind:auto,loopback(Standard),lan(0.0.0.0),tailnet(nur Tailscale-IP) odercustom.- Legacy-Bind-Aliasse: Verwenden Sie Bind-Modus-Werte in
gateway.bind(auto,loopback,lan,tailnet,custom), nicht Host-Aliasse (0.0.0.0,127.0.0.1,localhost,::,::1). - Docker-Hinweis: Das standardmäßige
loopback-Binding lauscht innerhalb des Containers auf127.0.0.1. Bei Docker-Bridge-Netzwerk (-p 18789:18789) kommt der Datenverkehr übereth0, daher ist das Gateway nicht erreichbar. Verwenden Sie--network hostoder setzen Siebind: "lan"(oderbind: "custom"mitcustomBindHost: "0.0.0.0"), um auf allen Schnittstellen zu lauschen. - Authentifizierung: standardmäßig erforderlich. Nicht-Loopback-Bindings erfordern Gateway-Authentifizierung. In der Praxis bedeutet das ein gemeinsames Token/Passwort oder einen identitätsbewussten Reverse-Proxy mit
gateway.auth.mode: "trusted-proxy"(siehe Trusted Proxy Auth). Der Onboarding-Assistent erzeugt standardmäßig ein Token. - Wenn sowohl
gateway.auth.tokenals auchgateway.auth.passwordkonfiguriert sind (einschließlich SecretRefs), setzen Siegateway.auth.modeexplizit auftokenoderpassword. Start- sowie Service-Installations-/Reparaturabläufe schlagen fehl, wenn beide konfiguriert sind undmodenicht gesetzt ist. gateway.auth.mode: "none": expliziter Modus ohne Authentifizierung. Nur für vertrauenswürdige lokale loopback-Setups verwenden; dieser Modus wird in Onboarding-Prompts absichtlich nicht angeboten.gateway.auth.mode: "trusted-proxy": delegiert Authentifizierung an einen identitätsbewussten Reverse-Proxy und vertraut Identitäts-Headern vongateway.trustedProxies(siehe Trusted Proxy Auth). Dieser Modus erwartet eine nicht-loopback Proxy-Quelle; Reverse-Proxys auf demselben Host über loopback erfüllen die Anforderungen für trusted-proxy auth nicht.gateway.auth.allowTailscale: wenntrue, können Tailscale-Serve-Identitäts-Header die Authentifizierung von Control UI/WebSocket erfüllen (übertailscale whoisverifiziert). HTTP-API-Endpunkte verwenden nicht diese Tailscale-Header-Authentifizierung; sie folgen stattdessen dem normalen HTTP-Authentifizierungsmodus des Gateways. Dieser tokenlose Ablauf setzt voraus, dass der Gateway-Host vertrauenswürdig ist. Standardmäßigtrue, wenntailscale.mode = "serve"ist.gateway.auth.rateLimit: optionaler Limiter für fehlgeschlagene Authentifizierungen. Gilt pro Client-IP und pro Authentifizierungsbereich (Shared-Secret und Device-Token werden unabhängig verfolgt). Blockierte Versuche geben429+Retry-Afterzurück.- Auf dem asynchronen Tailscale-Serve-Control-UI-Pfad werden fehlgeschlagene Versuche für dieselbe
{scope, clientIp}vor dem Schreiben des Fehlers serialisiert. Gleichzeitige fehlerhafte Versuche desselben Clients können den Limiter daher beim zweiten Request auslösen, statt dass beide als einfache Nichtübereinstimmungen durchrutschen. gateway.auth.rateLimit.exemptLoopbackist standardmäßigtrue; setzen Sie es auffalse, wenn Sie localhost-Datenverkehr absichtlich ebenfalls ratenbegrenzen möchten (für Test-Setups oder strikte Proxy-Deployments).
- Auf dem asynchronen Tailscale-Serve-Control-UI-Pfad werden fehlgeschlagene Versuche für dieselbe
- Browser-originierte WS-Authentifizierungsversuche werden immer mit deaktivierter Loopback-Ausnahme gedrosselt (Defense-in-Depth gegen browserbasierte Brute-Force-Angriffe auf localhost).
- Auf loopback werden diese Sperren für browseroriginierte Versuche pro normalisiertem
Origin-Wert isoliert, sodass wiederholte Fehlversuche von einer localhost-Origin nicht automatisch eine andere Origin aussperren. tailscale.mode:serve(nur Tailnet, loopback-Bind) oderfunnel(öffentlich, erfordert Authentifizierung).controlUi.allowedOrigins: explizite Browser-Origin-Erlaubnisliste für Gateway-WebSocket-Verbindungen. Erforderlich, wenn Browser-Clients von nicht-loopback Origins erwartet werden.controlUi.dangerouslyAllowHostHeaderOriginFallback: gefährlicher Modus, der Host-Header-Origin-Fallback für Deployments aktiviert, die absichtlich auf eine Host-Header-Origin-Richtlinie setzen.remote.transport:ssh(Standard) oderdirect(ws/wss). Fürdirectmussremote.urlws://oderwss://sein.OPENCLAW_ALLOW_INSECURE_PRIVATE_WS=1: clientseitige Break-Glass-Überschreibung, die Klartext-ws://zu vertrauenswürdigen privaten Netzwerk-IPs erlaubt; Standard bleibt loopback-only für Klartext.gateway.remote.token/.passwordsind Anmeldedatenfelder des Remote-Clients. Sie konfigurieren Gateway-Authentifizierung nicht selbst.gateway.push.apns.relay.baseUrl: Base-HTTPS-URL für das externe APNs-Relay, das offizielle/TestFlight-iOS-Builds verwenden, nachdem sie relaygestützte Registrierungen an das Gateway veröffentlicht haben. Diese URL muss mit der Relay-URL übereinstimmen, die in den iOS-Build kompiliert wurde.gateway.push.apns.relay.timeoutMs: Timeout in Millisekunden für das Senden vom Gateway an das Relay. Standard ist10000.- Relay-gestützte Registrierungen sind an eine bestimmte Gateway-Identität delegiert. Die gekoppelte iOS-App ruft
gateway.identity.getab, schließt diese Identität in die Relay-Registrierung ein und leitet eine registrierungsspezifische Sendeberechtigung an das Gateway weiter. Ein anderes Gateway kann diese gespeicherte Registrierung nicht wiederverwenden. OPENCLAW_APNS_RELAY_BASE_URL/OPENCLAW_APNS_RELAY_TIMEOUT_MS: temporäre Env-Überschreibungen für die obige Relay-Konfiguration.OPENCLAW_APNS_RELAY_ALLOW_HTTP=true: nur für Entwicklung gedachter Escape-Hatch für loopback-HTTP-Relay-URLs. Produktions-Relay-URLs sollten bei HTTPS bleiben.gateway.channelHealthCheckMinutes: Intervall des Kanal-Gesundheitsmonitors in Minuten. Setzen Sie0, um Neustarts durch den Gesundheitsmonitor global zu deaktivieren. Standard:5.gateway.channelStaleEventThresholdMinutes: Schwellenwert für veraltete Sockets in Minuten. Dieser Wert sollte größer oder gleichgateway.channelHealthCheckMinutessein. Standard:30.gateway.channelMaxRestartsPerHour: maximale Anzahl an Neustarts durch den Gesundheitsmonitor pro Kanal/Konto innerhalb einer rollierenden Stunde. Standard:10.channels.<provider>.healthMonitor.enabled: kanalbezogenes Opt-out für Neustarts durch den Gesundheitsmonitor, während der globale Monitor aktiviert bleibt.channels.<provider>.accounts.<accountId>.healthMonitor.enabled: kontoabhängige Überschreibung für Kanäle mit mehreren Konten. Wenn gesetzt, hat sie Vorrang vor der kanalbezogenen Überschreibung.- Lokale Gateway-Aufrufpfade können
gateway.remote.*nur dann als Fallback verwenden, wenngateway.auth.*nicht gesetzt ist. - Wenn
gateway.auth.token/gateway.auth.passwordexplizit über SecretRef konfiguriert und nicht auflösbar sind, schlägt die Auflösung fail-closed fehl (kein Remote-Fallback, der dies maskiert). trustedProxies: Reverse-Proxy-IPs, die TLS terminieren oder weitergeleitete Client-Header injizieren. Listen Sie nur Proxys auf, die Sie kontrollieren. Loopback-Einträge sind weiterhin für Setups mit Proxy auf demselben Host/lokaler Erkennung gültig (zum Beispiel Tailscale Serve oder ein lokaler Reverse-Proxy), machen loopback-Requests jedoch nicht fürgateway.auth.mode: "trusted-proxy"zulässig.allowRealIpFallback: wenntrue, akzeptiert das GatewayX-Real-IP, fallsX-Forwarded-Forfehlt. Standardfalsefür Fail-Closed-Verhalten.gateway.tools.deny: zusätzliche Tool-Namen, die für HTTPPOST /tools/invokeblockiert werden (erweitert die Standard-Ablehnungsliste).gateway.tools.allow: Tool-Namen aus der Standard-HTTP-Ablehnungsliste entfernen.
OpenAI-kompatible Endpunkte
- Chat Completions: standardmäßig deaktiviert. Aktivieren mit
gateway.http.endpoints.chatCompletions.enabled: true. - Responses API:
gateway.http.endpoints.responses.enabled. - Härtung für URL-Eingaben bei Responses:
gateway.http.endpoints.responses.maxUrlPartsgateway.http.endpoints.responses.files.urlAllowlistgateway.http.endpoints.responses.images.urlAllowlistLeere Erlaubnislisten werden wie nicht gesetzt behandelt; verwenden Siegateway.http.endpoints.responses.files.allowUrl=falseund/odergateway.http.endpoints.responses.images.allowUrl=false, um das Abrufen von URLs zu deaktivieren.
- Optionaler Header zur Härtung von Responses:
gateway.http.securityHeaders.strictTransportSecurity(nur für HTTPS-Origins setzen, die Sie kontrollieren; siehe Trusted Proxy Auth)
Isolation mehrerer Instanzen
Führen Sie mehrere Gateways auf einem Host mit eindeutigen Ports und Zustandsverzeichnissen aus:--dev (verwendet ~/.openclaw-dev + Port 19001), --profile <name> (verwendet ~/.openclaw-<name>).
Siehe Multiple Gateways.
gateway.tls
enabled: aktiviert TLS-Terminierung am Gateway-Listener (HTTPS/WSS) (Standard:false).autoGenerate: erzeugt automatisch ein lokales selbstsigniertes Zertifikat/Schlüsselpaar, wenn keine expliziten Dateien konfiguriert sind; nur für lokal/Entwicklung.certPath: Dateisystempfad zur TLS-Zertifikatsdatei.keyPath: Dateisystempfad zum privaten TLS-Schlüssel; mit eingeschränkten Berechtigungen schützen.caPath: optionaler Pfad zu einem CA-Bundle für Client-Verifizierung oder benutzerdefinierte Vertrauenskette.
gateway.reload
mode: steuert, wie Konfigurationsänderungen zur Laufzeit angewendet werden."off": Live-Bearbeitungen ignorieren; Änderungen erfordern einen expliziten Neustart."restart": Gateway-Prozess bei Konfigurationsänderungen immer neu starten."hot": Änderungen im Prozess anwenden, ohne neu zu starten."hybrid"(Standard): zuerst Hot-Reload versuchen; falls erforderlich auf Neustart zurückfallen.
debounceMs: Debounce-Fenster in ms, bevor Konfigurationsänderungen angewendet werden (nichtnegative Ganzzahl).deferralTimeoutMs: maximale Zeit in ms, um auf laufende Operationen zu warten, bevor ein Neustart erzwungen wird (Standard:300000= 5 Minuten).
Hooks
Authorization: Bearer <token> oder x-openclaw-token: <token>.
Hook-Token in Query-Strings werden abgelehnt.
Validierungs- und Sicherheitshinweise:
hooks.enabled=trueerfordert ein nicht leereshooks.token.hooks.tokenmuss sich vongateway.auth.tokenunterscheiden; die Wiederverwendung des Gateway-Tokens wird abgelehnt.hooks.pathdarf nicht/sein; verwenden Sie einen dedizierten Unterpfad wie/hooks.- Wenn
hooks.allowRequestSessionKey=true, beschränken Siehooks.allowedSessionKeyPrefixes(zum Beispiel["hook:"]).
POST /hooks/wake→{ text, mode?: "now"|"next-heartbeat" }POST /hooks/agent→{ message, name?, agentId?, sessionKey?, wakeMode?, deliver?, channel?, to?, model?, thinking?, timeoutSeconds? }sessionKeyaus dem Request-Payload wird nur akzeptiert, wennhooks.allowRequestSessionKey=true(Standard:false).
POST /hooks/<name>→ wird überhooks.mappingsaufgelöst
Details zu Mappings
Details zu Mappings
match.pathstimmt mit dem Unterpfad nach/hooksüberein (z. B./hooks/gmail→gmail).match.sourcestimmt mit einem Payload-Feld für generische Pfade überein.- Templates wie
{{messages[0].subject}}lesen aus dem Payload. transformkann auf ein JS-/TS-Modul zeigen, das eine Hook-Aktion zurückgibt.transform.modulemuss ein relativer Pfad sein und innerhalb vonhooks.transformsDirbleiben (absolute Pfade und Traversal werden abgelehnt).
agentIdleitet an einen bestimmten Agenten weiter; unbekannte IDs fallen auf den Standard zurück.allowedAgentIds: schränkt explizites Routing ein (*oder weggelassen = alle erlauben,[]= alle verweigern).defaultSessionKey: optionaler fester Sitzungsschlüssel für Hook-Agent-Läufe ohne explizitensessionKey.allowRequestSessionKey: erlaubt Aufrufern von/hooks/agent,sessionKeyzu setzen (Standard:false).allowedSessionKeyPrefixes: optionale Erlaubnisliste für Präfixe explizitersessionKey-Werte (Request + Mapping), z. B.["hook:"].deliver: truesendet die endgültige Antwort an einen Kanal;channelist standardmäßiglast.modelüberschreibt das LLM für diesen Hook-Lauf (muss erlaubt sein, wenn ein Modellkatalog gesetzt ist).
Gmail-Integration
- Das Gateway startet
gog gmail watch servebeim Booten automatisch, wenn es konfiguriert ist. Setzen SieOPENCLAW_SKIP_GMAIL_WATCHER=1, um dies zu deaktivieren. - Führen Sie nicht zusätzlich zu dem Gateway ein separates
gog gmail watch serveaus.
Canvas-Host
- Stellt agentenbearbeitbares HTML/CSS/JS und A2UI über HTTP unter dem Gateway-Port bereit:
http://<gateway-host>:<gateway.port>/__openclaw__/canvas/http://<gateway-host>:<gateway.port>/__openclaw__/a2ui/
- Nur lokal: Behalten Sie
gateway.bind: "loopback"bei (Standard). - Nicht-Loopback-Bindings: Canvas-Routen erfordern Gateway-Authentifizierung (Token/Passwort/trusted-proxy), genau wie andere HTTP-Oberflächen des Gateways.
- Node-WebViews senden typischerweise keine Authentifizierungs-Header; nachdem ein Node gekoppelt und verbunden ist, kündigt das Gateway nodebezogene Capability-URLs für den Zugriff auf Canvas/A2UI an.
- Capability-URLs sind an die aktive Node-WS-Sitzung gebunden und laufen schnell ab. Ein IP-basierter Fallback wird nicht verwendet.
- Fügt bereitgestelltem HTML einen Live-Reload-Client hinzu.
- Erstellt automatisch eine Starter-
index.html, wenn leer. - Stellt A2UI auch unter
/__openclaw__/a2ui/bereit. - Änderungen erfordern einen Gateway-Neustart.
- Deaktivieren Sie Live-Reload bei großen Verzeichnissen oder
EMFILE-Fehlern.
Discovery
mDNS (Bonjour)
minimal(Standard):cliPath+sshPortaus TXT-Records weglassen.full:cliPath+sshPorteinschließen.- Der Hostname ist standardmäßig
openclaw. Überschreiben mitOPENCLAW_MDNS_HOSTNAME.
Wide-Area (DNS-SD)
~/.openclaw/dns/. Für netzwerkübergreifende Discovery mit einem DNS-Server (CoreDNS empfohlen) + Tailscale Split DNS kombinieren.
Setup: openclaw dns setup --apply.
Umgebung
env (inline Env-Variablen)
- Inline-Env-Variablen werden nur angewendet, wenn der Prozess-Env der Schlüssel fehlt.
.env-Dateien: CWD.env+~/.openclaw/.env(keine von beiden überschreibt bestehende Variablen).shellEnv: importiert fehlende erwartete Schlüssel aus Ihrem Login-Shell-Profil.- Die vollständige Priorität finden Sie unter Environment.
Env-Variablen-Substitution
Referenzieren Sie Env-Variablen in jeder Konfigurationszeichenfolge mit${VAR_NAME}:
- Es werden nur Großbuchstabennamen gematcht:
[A-Z_][A-Z0-9_]*. - Fehlende/leere Variablen werfen beim Laden der Konfiguration einen Fehler.
- Mit
$${VAR}für ein wörtliches${VAR}escapen. - Funktioniert mit
$include.
Secrets
SecretRefs sind additiv: Klartextwerte funktionieren weiterhin.SecretRef
Verwenden Sie eine Objektform:
- Muster für
provider:^[a-z][a-z0-9_-]{0,63}$ - Muster für
source: "env"beiid:^[A-Z][A-Z0-9_]{0,127}$ source: "file"beiid: absoluter JSON-Zeiger (zum Beispiel"/providers/openai/apiKey")- Muster für
source: "exec"beiid:^[A-Za-z0-9][A-Za-z0-9._:/-]{0,255}$ source: "exec"-IDs dürfen keine slashgetrennten Pfadsegmente.oder..enthalten (zum Beispiel wirda/../babgelehnt)
Unterstützte Oberfläche für Anmeldedaten
- Kanonische Matrix: SecretRef Credential Surface
secrets applyzielt auf unterstützte Anmeldedatenpfade inopenclaw.json.- Referenzen in
auth-profiles.jsonsind in der Laufzeitauflösung und Audit-Abdeckung enthalten.
Konfiguration von Secret-Providern
- Der Provider
fileunterstütztmode: "json"undmode: "singleValue"(idmuss im Modus singleValue"value"sein). - Der Provider
execerfordert einen absolutencommand-Pfad und verwendet Protokoll-Payloads über stdin/stdout. - Standardmäßig werden symbolische Linkpfade für Befehle abgelehnt. Setzen Sie
allowSymlinkCommand: true, um Symlink-Pfade zu erlauben, während der aufgelöste Zielpfad validiert wird. - Wenn
trustedDirskonfiguriert ist, gilt die Trusted-Dir-Prüfung für den aufgelösten Zielpfad. - Die Child-Umgebung von
execist standardmäßig minimal; geben Sie erforderliche Variablen explizit mitpassEnvweiter. - SecretRefs werden zur Aktivierungszeit in einen In-Memory-Snapshot aufgelöst; Request-Pfade lesen danach nur noch aus diesem Snapshot.
- Active-Surface-Filtering gilt während der Aktivierung: Nicht aufgelöste Referenzen auf aktiven Oberflächen lassen Start/Reload fehlschlagen, während inaktive Oberflächen mit Diagnosen übersprungen werden.
Auth-Speicher
- Profile pro Agent werden unter
<agentDir>/auth-profiles.jsongespeichert. auth-profiles.jsonunterstützt Referenzen auf Wertebene (keyReffürapi_key,tokenReffürtoken) für statische Anmeldedatenmodi.- Profile im OAuth-Modus (
auth.profiles.<id>.mode = "oauth") unterstützen keine SecretRef-gestützten Anmeldedaten für Auth-Profile. - Statische Laufzeit-Anmeldedaten stammen aus aufgelösten In-Memory-Snapshots; alte statische Einträge in
auth.jsonwerden beim Auffinden bereinigt. - Legacy-OAuth-Importe aus
~/.openclaw/credentials/oauth.json. - Siehe OAuth.
- Secrets-Laufzeitverhalten und Tooling für
audit/configure/apply: Secrets Management.
auth.cooldowns
billingBackoffHours: Basis-Backoff in Stunden, wenn ein Profil aufgrund echter Abrechnungs-/ungenügender-Guthaben-Fehler fehlschlägt (Standard:5). Expliziter Abrechnungstext kann hier auch bei Antworten401/403landen, aber providerbezogene Textmatcher bleiben auf den Provider beschränkt, zu dem sie gehören (zum Beispiel OpenRouterKey limit exceeded). Wiederholbare402-Meldungen zu Nutzungsfenstern oder Ausgabelimits von Organisation/Workspace bleiben stattdessen im Pfadrate_limit.billingBackoffHoursByProvider: optionale providerbezogene Überschreibungen für Backoff-Stunden bei Abrechnungsfehlern.billingMaxHours: Obergrenze in Stunden für exponentielles Wachstum des Backoffs bei Abrechnungsfehlern (Standard:24).authPermanentBackoffMinutes: Basis-Backoff in Minuten für hochzuverlässige Fehlerauth_permanent(Standard:10).authPermanentMaxMinutes: Obergrenze in Minuten für das Wachstum des Backoffs vonauth_permanent(Standard:60).failureWindowHours: rollierendes Fenster in Stunden, das für Backoff-Zähler verwendet wird (Standard:24).overloadedProfileRotations: maximale Rotationen von Auth-Profilen desselben Providers bei Überlastungsfehlern, bevor auf Modell-Fallback umgeschaltet wird (Standard:1). Formen von Provider-Auslastung wieModelNotReadyExceptionlanden hier.overloadedBackoffMs: feste Verzögerung vor dem erneuten Versuch einer Rotation bei einem überlasteten Provider/Profil (Standard:0).rateLimitedProfileRotations: maximale Rotationen von Auth-Profilen desselben Providers bei Rate-Limit-Fehlern, bevor auf Modell-Fallback umgeschaltet wird (Standard:1). Dieser Rate-Limit-Bucket enthält providergeformte Texte wieToo many concurrent requests,ThrottlingException,concurrency limit reached,workers_ai ... quota limit exceededundresource exhausted.
Logging
- Standard-Logdatei:
/tmp/openclaw/openclaw-YYYY-MM-DD.log. - Setzen Sie
logging.filefür einen stabilen Pfad. consoleLevelwird mit--verboseaufdebugangehoben.maxFileBytes: maximale Größe der Logdatei in Byte, bevor Schreibvorgänge unterdrückt werden (positive Ganzzahl; Standard:524288000= 500 MB). Verwenden Sie für Produktions-Deployments externe Logrotation.
Diagnose
enabled: globaler Schalter für Instrumentierungsausgaben (Standard:true).flags: Array von Flag-Zeichenfolgen zur Aktivierung gezielter Logausgaben (unterstützt Wildcards wie"telegram.*"oder"*").stuckSessionWarnMs: Altersschwellenwert in ms für Warnungen zu hängenden Sitzungen, solange eine Sitzung im Verarbeitungszustand bleibt.otel.enabled: aktiviert die OpenTelemetry-Exportpipeline (Standard:false).otel.endpoint: Collector-URL für den OTel-Export.otel.protocol:"http/protobuf"(Standard) oder"grpc".otel.headers: zusätzliche HTTP-/gRPC-Metadaten-Header, die mit OTel-Export-Requests gesendet werden.otel.serviceName: Dienstname für Resource-Attribute.otel.traces/otel.metrics/otel.logs: Trace-, Metrics- oder Log-Export aktivieren.otel.sampleRate: Trace-Sampling-Rate0–1.otel.flushIntervalMs: Intervall in ms für periodisches Flushen von Telemetriedaten.cacheTrace.enabled: Cache-Trace-Snapshots für eingebettete Läufe protokollieren (Standard:false).cacheTrace.filePath: Ausgabepfad für Cache-Trace-JSONL (Standard:$OPENCLAW_STATE_DIR/logs/cache-trace.jsonl).cacheTrace.includeMessages/includePrompt/includeSystem: steuern, was in der Cache-Trace-Ausgabe enthalten ist (alle standardmäßig:true).
Update
channel: Release-Kanal für npm-/Git-Installationen —"stable","beta"oder"dev".checkOnStart: beim Start des Gateways nach npm-Updates suchen (Standard:true).auto.enabled: Hintergrund-Auto-Update für Paketinstallationen aktivieren (Standard:false).auto.stableDelayHours: minimale Verzögerung in Stunden vor automatischer Anwendung im Stable-Kanal (Standard:6; max:168).auto.stableJitterHours: zusätzliches Rollout-Streuungsfenster in Stunden für den Stable-Kanal (Standard:12; max:168).auto.betaCheckIntervalHours: wie oft Prüfungen für den Beta-Kanal in Stunden ausgeführt werden (Standard:1; max:24).
ACP
enabled: globales ACP-Feature-Gate (Standard:false).dispatch.enabled: unabhängiges Gate für das Dispatching von ACP-Sitzungsturns (Standard:true). Setzen Siefalse, um ACP-Befehle verfügbar zu lassen, aber die Ausführung zu blockieren.backend: Standard-ID des ACP-Laufzeit-Backends (muss mit einem registrierten ACP-Laufzeit-Plugin übereinstimmen).defaultAgent: Fallback-Ziel-Agent-ID für ACP, wenn Spawns kein explizites Ziel angeben.allowedAgents: Erlaubnisliste von Agent-IDs, die für ACP-Laufzeitsitzungen zulässig sind; leer bedeutet keine zusätzliche Einschränkung.maxConcurrentSessions: maximale Anzahl gleichzeitig aktiver ACP-Sitzungen.stream.coalesceIdleMs: Idle-Flush-Fenster in ms für gestreamten Text.stream.maxChunkChars: maximale Chunk-Größe vor dem Aufteilen der gestreamten Blockprojektion.stream.repeatSuppression: unterdrückt wiederholte Status-/Tool-Zeilen pro Turn (Standard:true).stream.deliveryMode:"live"streamt inkrementell;"final_only"puffert bis zu terminalen Turn-Ereignissen.stream.hiddenBoundarySeparator: Trennzeichen vor sichtbarem Text nach verborgenen Tool-Ereignissen (Standard:"paragraph").stream.maxOutputChars: maximale Zeichenanzahl der Assistant-Ausgabe, die pro ACP-Turn projiziert wird.stream.maxSessionUpdateChars: maximale Zeichenanzahl für projizierte ACP-Status-/Update-Zeilen.stream.tagVisibility: Zuordnung von Tag-Namen zu booleschen Sichtbarkeitsüberschreibungen für gestreamte Ereignisse.runtime.ttlMinutes: Idle-TTL in Minuten für ACP-Sitzungs-Worker, bevor sie für die Bereinigung infrage kommen.runtime.installCommand: optionaler Installationsbefehl, der beim Bootstrap einer ACP-Laufzeitumgebung ausgeführt wird.
CLI
cli.banner.taglineModesteuert den Stil des Banner-Slogans:"random"(Standard): rotierende lustige/saisonale Slogans."default": fester neutraler Slogan (All your chats, one OpenClaw.)."off": kein Slogantext (Banner-Titel/Version werden weiterhin angezeigt).
- Um das gesamte Banner auszublenden (nicht nur Slogans), setzen Sie die Env-Variable
OPENCLAW_HIDE_BANNER=1.
Wizard
Metadaten, die von geführten CLI-Setup-Abläufen geschrieben werden (onboard, configure, doctor):
Identity
Siehe Identity-Felder inagents.list unter Agent-Standardeinstellungen.
Bridge (Legacy, entfernt)
Aktuelle Builds enthalten die TCP-Bridge nicht mehr. Nodes verbinden sich über den Gateway-WebSocket. Schlüsselbridge.* sind nicht mehr Teil des Konfigurationsschemas (die Validierung schlägt fehl, bis sie entfernt werden; openclaw doctor --fix kann unbekannte Schlüssel entfernen).
Legacy-Bridge-Konfiguration (historische Referenz)
Legacy-Bridge-Konfiguration (historische Referenz)
Cron
sessionRetention: wie lange abgeschlossene isolierte Cron-Laufsitzungen aufbewahrt werden, bevor sie aussessions.jsonentfernt werden. Steuert auch die Bereinigung archivierter gelöschter Cron-Transkripte. Standard:24h; setzen Siefalse, um zu deaktivieren.runLog.maxBytes: maximale Größe pro Run-Log-Datei (cron/runs/<jobId>.jsonl) vor dem Bereinigen. Standard:2_000_000Byte.runLog.keepLines: neueste Zeilen, die beibehalten werden, wenn die Bereinigung des Run-Logs ausgelöst wird. Standard:2000.webhookToken: Bearer-Token, der für die Cron-Webhook-POST-Zustellung verwendet wird (delivery.mode = "webhook"); wenn weggelassen, wird kein Authentifizierungs-Header gesendet.webhook: veraltete Legacy-Fallback-Webhook-URL (http/https), die nur für gespeicherte Jobs verwendet wird, die nochnotify: truehaben.
cron.retry
maxAttempts: maximale Wiederholungen für einmalige Jobs bei transienten Fehlern (Standard:3; Bereich:0–10).backoffMs: Array von Backoff-Verzögerungen in ms für jeden Wiederholungsversuch (Standard:[30000, 60000, 300000]; 1–10 Einträge).retryOn: Fehlertypen, die Wiederholungen auslösen —"rate_limit","overloaded","network","timeout","server_error". Weglassen, um alle transienten Typen zu wiederholen.
cron.failureAlert
enabled: Fehlerwarnungen für Cron-Jobs aktivieren (Standard:false).after: aufeinanderfolgende Fehler, bevor eine Warnung ausgelöst wird (positive Ganzzahl, min:1).cooldownMs: minimale Millisekunden zwischen wiederholten Warnungen für denselben Job (nichtnegative Ganzzahl).mode: Zustellmodus —"announce"sendet über eine Kanalnachricht;"webhook"postet an den konfigurierten Webhook.accountId: optionale Konto- oder Kanal-ID, um die Warnzustellung einzugrenzen.
cron.failureDestination
- Standardziel für Benachrichtigungen über Cron-Fehler für alle Jobs.
mode:"announce"oder"webhook"; standardmäßig"announce", wenn genügend Zieldaten vorhanden sind.channel: Kanalüberschreibung für Announce-Zustellung."last"verwendet den zuletzt bekannten Zustellungskanal erneut.to: explizites Announce-Ziel oder Webhook-URL. Erforderlich für den Webhook-Modus.accountId: optionale Kontoüberschreibung für die Zustellung.delivery.failureDestinationpro Job überschreibt diesen globalen Standard.- Wenn weder global noch pro Job ein Fehlerziel gesetzt ist, fallen Jobs, die bereits per
announcezustellen, bei Fehlern auf dieses primäre Announce-Ziel zurück. delivery.failureDestinationwird nur für Jobs mitsessionTarget="isolated"unterstützt, außer wenn der primäredelivery.modedes Jobs"webhook"ist.
Template-Variablen für Medienmodelle
Template-Platzhalter, die intools.media.models[].args erweitert werden:
| Variable | Beschreibung |
|---|---|
{{Body}} | Vollständiger eingehender Nachrichtentext |
{{RawBody}} | Rohtext (ohne Verlaufs-/Absender-Wrapper) |
{{BodyStripped}} | Text mit entfernten Gruppenerwähnungen |
{{From}} | Absenderkennung |
{{To}} | Zielkennung |
{{MessageSid}} | Kanal-Nachrichten-ID |
{{SessionId}} | Aktuelle Sitzungs-UUID |
{{IsNewSession}} | "true", wenn eine neue Sitzung erstellt wurde |
{{MediaUrl}} | Pseudo-URL eingehender Medien |
{{MediaPath}} | Lokaler Medienpfad |
{{MediaType}} | Medientyp (Bild/Audio/Dokument/…) |
{{Transcript}} | Audiotranskript |
{{Prompt}} | Aufgelöster Medien-Prompt für CLI-Einträge |
{{MaxChars}} | Aufgelöste maximale Ausgabenzeichen für CLI-Einträge |
{{ChatType}} | "direct" oder "group" |
{{GroupSubject}} | Gruppenbetreff (nach bestem Bemühen) |
{{GroupMembers}} | Vorschau auf Gruppenmitglieder (nach bestem Bemühen) |
{{SenderName}} | Anzeigename des Absenders (nach bestem Bemühen) |
{{SenderE164}} | Telefonnummer des Absenders (nach bestem Bemühen) |
{{Provider}} | Provider-Hinweis (whatsapp, telegram, discord usw.) |
Konfigurations-Includes ($include)
Konfiguration auf mehrere Dateien aufteilen:
- Einzelne Datei: ersetzt das enthaltende Objekt.
- Array von Dateien: wird in Reihenfolge tief zusammengeführt (spätere überschreiben frühere).
- Gleichrangige Schlüssel: werden nach Includes zusammengeführt (überschreiben inkludierte Werte).
- Verschachtelte Includes: bis zu 10 Ebenen tief.
- Pfade: werden relativ zur inkludierenden Datei aufgelöst, müssen aber innerhalb des Konfigurationsverzeichnisses der obersten Ebene bleiben (
dirnamevonopenclaw.json). Absolute Formen und../sind nur erlaubt, wenn sie weiterhin innerhalb dieser Grenze aufgelöst werden. - Fehler: klare Meldungen für fehlende Dateien, Parse-Fehler und zirkuläre Includes.
Verwandt: Konfiguration · Konfigurationsbeispiele · Doctor