Konfiguration
OpenClaw liest optional eine -Konfiguration aus~/.openclaw/openclaw.json.
Wenn die Datei fehlt, verwendet OpenClaw sichere Standardwerte. Häufige Gründe, eine Konfiguration hinzuzufügen:
- Kanäle verbinden und steuern, wer dem Bot Nachrichten senden kann
- Modelle, Tools, Sandboxing oder Automatisierung einrichten (Cron, Hooks)
- Sitzungen, Medien, Netzwerk oder UI abstimmen
Minimale Konfiguration
Konfiguration bearbeiten
- Interaktiver Assistent
- CLI (Einzeiler)
- Control UI
- Direkt bearbeiten
Strikte Validierung
Hinweise zu Schema-Tools:openclaw config schemagibt dieselbe JSON-Schema-Familie aus, die von der Control UI und der Konfigurationsvalidierung verwendet wird.- Betrachten Sie diese Schema-Ausgabe als den kanonischen maschinenlesbaren Vertrag für
openclaw.json; diese Übersicht und die Konfigurationsreferenz fassen ihn zusammen. - Die Feldwerte
titleunddescriptionwerden in die Schema-Ausgabe für Editor- und Formular-Tools übernommen. - Verschachtelte Objekt-, Wildcard- (
*) und Array-Element-Einträge ([]) übernehmen dieselben Dokumentationsmetadaten, wenn passende Felddokumentation vorhanden ist. anyOf- /oneOf- /allOf-Kompositionszweige übernehmen diese Dokumentationsmetadaten ebenfalls, sodass Union-/Intersection-Varianten dieselbe Feldhilfe beibehalten.config.schema.lookupgibt einen normalisierten Konfigurationspfad mit einem flachen Schemaknoten (title,description,type,enum,const, allgemeine Grenzen und ähnliche Validierungsfelder), passenden UI-Hinweismetadaten und Zusammenfassungen der direkten Unterelemente für Drill-down-Tools zurück.- Laufzeit-Plugin-/Kanalschemata werden zusammengeführt, wenn das Gateway die aktuelle Manifest-Registry laden kann.
pnpm config:docs:checkerkennt Abweichungen zwischen dokumentationsbezogenen Konfigurations-Baseline-Artefakten und der aktuellen Schemaoberfläche.
- Das Gateway startet nicht
- Nur Diagnosebefehle funktionieren (
openclaw doctor,openclaw logs,openclaw health,openclaw status) - Führen Sie
openclaw doctoraus, um die genauen Probleme zu sehen - Führen Sie
openclaw doctor --fix(oder--yes) aus, um Reparaturen anzuwenden
Häufige Aufgaben
Einen Kanal einrichten (WhatsApp, Telegram, Discord usw.)
Einen Kanal einrichten (WhatsApp, Telegram, Discord usw.)
Jeder Kanal hat seinen eigenen Konfigurationsabschnitt unter
channels.<provider>. Schritte zur Einrichtung finden Sie auf der jeweiligen Kanalseite:- WhatsApp —
channels.whatsapp - Telegram —
channels.telegram - Discord —
channels.discord - Feishu —
channels.feishu - Google Chat —
channels.googlechat - Microsoft Teams —
channels.msteams - Slack —
channels.slack - Signal —
channels.signal - iMessage —
channels.imessage - Mattermost —
channels.mattermost
Modelle auswählen und konfigurieren
Modelle auswählen und konfigurieren
Legen Sie das primäre Modell und optionale Fallbacks fest:
agents.defaults.modelsdefiniert den Modellkatalog und dient als Allowlist für/model.- Modellreferenzen verwenden das Format
provider/model(z. B.anthropic/claude-opus-4-6). agents.defaults.imageMaxDimensionPxsteuert die Größenanpassung von Bildern in Transkripten/Tools (Standard1200); niedrigere Werte reduzieren in der Regel die Vision-Token-Nutzung bei screenshotlastigen Abläufen.- Siehe Models CLI zum Wechseln von Modellen im Chat und Model Failover für Auth-Rotation und Fallback-Verhalten.
- Für benutzerdefinierte/selbst gehostete Provider siehe Benutzerdefinierte Provider in der Referenz.
Steuern, wer dem Bot Nachrichten senden kann
Steuern, wer dem Bot Nachrichten senden kann
Der DM-Zugriff wird pro Kanal über
dmPolicy gesteuert:"pairing"(Standard): unbekannte Absender erhalten einen einmaligen Pairing-Code zur Freigabe"allowlist": nur Absender inallowFrom(oder im gepaarten Allow-Store)"open": alle eingehenden DMs zulassen (erfordertallowFrom: ["*"])"disabled": alle DMs ignorieren
groupPolicy + groupAllowFrom oder kanalspezifische Allowlists.Siehe die vollständige Referenz für Details pro Kanal.Erwähnungs-Gating für Gruppenchats einrichten
Erwähnungs-Gating für Gruppenchats einrichten
Gruppen-Nachrichten erfordern standardmäßig eine Erwähnung. Konfigurieren Sie Muster pro Agent:
- Metadaten-Erwähnungen: native @-Erwähnungen (WhatsApp Tap-to-Mention, Telegram @bot usw.)
- Textmuster: sichere Regex-Muster in
mentionPatterns - Siehe vollständige Referenz für Überschreibungen pro Kanal und den Selbstchat-Modus.
Skills pro Agent einschränken
Skills pro Agent einschränken
Verwenden Sie
agents.defaults.skills für eine gemeinsame Basis und überschreiben Sie dann bestimmte Agents mit agents.list[].skills:- Lassen Sie
agents.defaults.skillsweg, wenn Skills standardmäßig nicht eingeschränkt sein sollen. - Lassen Sie
agents.list[].skillsweg, um die Standardwerte zu übernehmen. - Setzen Sie
agents.list[].skills: []für keine Skills. - Siehe Skills, Skills-Konfiguration und die Konfigurationsreferenz.
Gateway-Kanal-Gesundheitsüberwachung abstimmen
Gateway-Kanal-Gesundheitsüberwachung abstimmen
Steuern Sie, wie aggressiv das Gateway Kanäle neu startet, die veraltet wirken:
- Setzen Sie
gateway.channelHealthCheckMinutes: 0, um Neustarts durch die Gesundheitsüberwachung global zu deaktivieren. channelStaleEventThresholdMinutessollte größer oder gleich dem Prüfintervall sein.- Verwenden Sie
channels.<provider>.healthMonitor.enabledoderchannels.<provider>.accounts.<id>.healthMonitor.enabled, um automatische Neustarts für einen Kanal oder ein Konto zu deaktivieren, ohne die globale Überwachung auszuschalten. - Siehe Health Checks für die operative Fehlersuche und die vollständige Referenz für alle Felder.
Sitzungen und Zurücksetzungen konfigurieren
Sitzungen und Zurücksetzungen konfigurieren
Sitzungen steuern Gesprächskontinuität und Isolation:
dmScope:main(gemeinsam) |per-peer|per-channel-peer|per-account-channel-peerthreadBindings: globale Standardwerte für threadgebundenes Sitzungsrouting (Discord unterstützt/focus,/unfocus,/agents,/session idleund/session max-age).- Siehe Session Management für Scoping, Identitätsverknüpfungen und Send-Richtlinien.
- Siehe vollständige Referenz für alle Felder.
Sandboxing aktivieren
Sandboxing aktivieren
Führen Sie Agent-Sitzungen in isolierten Docker-Containern aus:Erstellen Sie das Image zuerst:
scripts/sandbox-setup.shSiehe Sandboxing für die vollständige Anleitung und die vollständige Referenz für alle Optionen.Relay-gestützten Push für offizielle iOS-Builds aktivieren
Relay-gestützten Push für offizielle iOS-Builds aktivieren
Relay-gestützter Push wird in CLI-Äquivalent:Das bewirkt Folgendes:
openclaw.json konfiguriert.Legen Sie dies in der Gateway-Konfiguration fest:- Ermöglicht dem Gateway,
push.test, Wake-Nudges und Reconnect-Wakes über das externe Relay zu senden. - Verwendet eine registrierungsbezogene Sendeberechtigung, die von der gepaarten iOS-App weitergeleitet wird. Das Gateway benötigt kein Relay-Token für die gesamte Bereitstellung.
- Bindet jede Relay-gestützte Registrierung an die Gateway-Identität, mit der die iOS-App gekoppelt wurde, sodass ein anderes Gateway die gespeicherte Registrierung nicht wiederverwenden kann.
- Behält lokale/manuelle iOS-Builds bei direktem APNs. Relay-gestützte Sendungen gelten nur für offiziell verteilte Builds, die sich über das Relay registriert haben.
- Muss mit der Relay-Basis-URL übereinstimmen, die in den offiziellen/TestFlight-iOS-Build eingebettet ist, damit Registrierungs- und Sendedatenverkehr dieselbe Relay-Bereitstellung erreicht.
- Installieren Sie einen offiziellen/TestFlight-iOS-Build, der mit derselben Relay-Basis-URL kompiliert wurde.
- Konfigurieren Sie
gateway.push.apns.relay.baseUrlauf dem Gateway. - Koppeln Sie die iOS-App mit dem Gateway und lassen Sie sowohl Node- als auch Operatorsitzungen verbinden.
- Die iOS-App ruft die Gateway-Identität ab, registriert sich mit dem Relay unter Verwendung von App Attest plus dem App-Beleg und veröffentlicht anschließend die Relay-gestützte
push.apns.register-Payload an das gekoppelte Gateway. - Das Gateway speichert den Relay-Handle und die Sendeberechtigung und verwendet sie dann für
push.test, Wake-Nudges und Reconnect-Wakes.
- Wenn Sie die iOS-App auf ein anderes Gateway umstellen, verbinden Sie die App erneut, damit sie eine neue Relay-Registrierung veröffentlichen kann, die an dieses Gateway gebunden ist.
- Wenn Sie einen neuen iOS-Build ausliefern, der auf eine andere Relay-Bereitstellung verweist, aktualisiert die App ihre zwischengespeicherte Relay-Registrierung, anstatt den alten Relay-Ursprung wiederzuverwenden.
OPENCLAW_APNS_RELAY_BASE_URLundOPENCLAW_APNS_RELAY_TIMEOUT_MSfunktionieren weiterhin als temporäre Env-Overrides.OPENCLAW_APNS_RELAY_ALLOW_HTTP=truebleibt eine nur für loopback gedachte Entwicklungsausnahme; persistieren Sie keine HTTP-Relay-URLs in der Konfiguration.
Heartbeat einrichten (regelmäßige Check-ins)
Heartbeat einrichten (regelmäßige Check-ins)
every: Dauer-String (30m,2h). Setzen Sie0m, um zu deaktivieren.target:last|none|<channel-id>(zum Beispieldiscord,matrix,telegramoderwhatsapp)directPolicy:allow(Standard) oderblockfür DM-artige Heartbeat-Ziele- Siehe Heartbeat für die vollständige Anleitung.
Cron-Jobs konfigurieren
Cron-Jobs konfigurieren
sessionRetention: abgeschlossene isolierte Ausführungssitzungen aussessions.jsonentfernen (Standard24h; setzen Siefalse, um zu deaktivieren).runLog:cron/runs/<jobId>.jsonlnach Größe und beibehaltenen Zeilen kürzen.- Siehe Cron jobs für die Funktionsübersicht und CLI-Beispiele.
Webhooks (Hooks) einrichten
Webhooks (Hooks) einrichten
Aktivieren Sie HTTP-Webhook-Endpunkte auf dem Gateway:Sicherheitshinweis:
- Behandeln Sie alle Hook-/Webhook-Payload-Inhalte als nicht vertrauenswürdige Eingaben.
- Verwenden Sie ein dediziertes
hooks.token; verwenden Sie nicht das gemeinsame Gateway-Token wieder. - Hook-Authentifizierung erfolgt nur per Header (
Authorization: Bearer ...oderx-openclaw-token); Tokens in Query-Strings werden abgelehnt. hooks.pathdarf nicht/sein; belassen Sie den Webhook-Eingang auf einem dedizierten Unterpfad wie/hooks.- Lassen Sie Unsicherer-Inhalt-Bypass-Flags deaktiviert (
hooks.gmail.allowUnsafeExternalContent,hooks.mappings[].allowUnsafeExternalContent), außer bei eng begrenztem Debugging. - Wenn Sie
hooks.allowRequestSessionKeyaktivieren, setzen Sie auchhooks.allowedSessionKeyPrefixes, um vom Aufrufer gewählte Sitzungsschlüssel zu begrenzen. - Für hookgesteuerte Agents sollten Sie starke moderne Modell-Tiers und eine strikte Tool-Richtlinie bevorzugen (zum Beispiel nur Messaging plus Sandboxing, wenn möglich).
Multi-Agent-Routing konfigurieren
Multi-Agent-Routing konfigurieren
Führen Sie mehrere isolierte Agents mit getrennten Workspaces und Sitzungen aus:Siehe Multi-Agent und die vollständige Referenz für Binding-Regeln und Zugriffsprofile pro Agent.
Konfiguration in mehrere Dateien aufteilen ($include)
Konfiguration in mehrere Dateien aufteilen ($include)
Verwenden Sie
$include, um große Konfigurationen zu organisieren:- Einzelne Datei: ersetzt das enthaltende Objekt
- Array von Dateien: wird in Reihenfolge tief zusammengeführt (spätere gewinnt)
- Nebenschlüssel: werden nach den Includes zusammengeführt (überschreiben eingeschlossene Werte)
- Verschachtelte Includes: werden bis zu 10 Ebenen tief unterstützt
- Relative Pfade: werden relativ zur einbindenden Datei aufgelöst
- Fehlerbehandlung: klare Fehler bei fehlenden Dateien, Parse-Fehlern und zirkulären Includes
Konfigurations-Hot-Reload
Das Gateway überwacht~/.openclaw/openclaw.json und übernimmt Änderungen automatisch — für die meisten Einstellungen ist kein manueller Neustart erforderlich.
Reload-Modi
| Modus | Verhalten |
|---|---|
hybrid (Standard) | Wendet sichere Änderungen sofort per Hot-Apply an. Startet bei kritischen Änderungen automatisch neu. |
hot | Wendet nur sichere Änderungen per Hot-Apply an. Protokolliert eine Warnung, wenn ein Neustart erforderlich ist — Sie kümmern sich darum. |
restart | Startet das Gateway bei jeder Konfigurationsänderung neu, sicher oder nicht. |
off | Deaktiviert die Dateiüberwachung. Änderungen werden beim nächsten manuellen Neustart wirksam. |
Was per Hot-Apply übernommen wird und was einen Neustart erfordert
Die meisten Felder werden ohne Ausfallzeit per Hot-Apply übernommen. Imhybrid-Modus werden Änderungen, die einen Neustart erfordern, automatisch verarbeitet.
| Kategorie | Felder | Neustart erforderlich? |
|---|---|---|
| Kanäle | channels.*, web (WhatsApp) — alle integrierten und Erweiterungskanäle | Nein |
| Agent & Modelle | agent, agents, models, routing | Nein |
| Automatisierung | hooks, cron, agent.heartbeat | Nein |
| Sitzungen & Nachrichten | session, messages | Nein |
| Tools & Medien | tools, browser, skills, audio, talk | Nein |
| UI & Sonstiges | ui, logging, identity, bindings | Nein |
| Gateway-Server | gateway.* (port, bind, auth, tailscale, TLS, HTTP) | Ja |
| Infrastruktur | discovery, canvasHost, plugins | Ja |
gateway.reload und gateway.remote sind Ausnahmen — ihre Änderung löst keinen Neustart aus.Config RPC (programmatische Aktualisierungen)
Control-Plane-Schreib-RPCs (
config.apply, config.patch, update.run) sind auf 3 Anfragen pro 60 Sekunden pro deviceId+clientIp begrenzt. Bei Begrenzung gibt die RPC UNAVAILABLE mit retryAfterMs zurück.config.schema.lookup: einen pfadbezogenen Konfigurations-Teilbaum mit einem flachen Schemaknoten, passenden Hinweismetadaten und Zusammenfassungen der direkten Unterelemente untersuchenconfig.get: den aktuellen Snapshot + Hash abrufenconfig.patch: bevorzugter Pfad für partielle Aktualisierungenconfig.apply: nur vollständiger Ersatz der gesamten Konfigurationupdate.run: explizites Self-Update + Neustart
config.schema.lookup und dann config.patch bevorzugen.
config.apply (vollständiger Ersatz)
config.apply (vollständiger Ersatz)
Validiert + schreibt die vollständige Konfiguration und startet das Gateway in einem Schritt neu.Parameter:
raw(string) — JSON5-Payload für die gesamte KonfigurationbaseHash(optional) — Konfigurations-Hash ausconfig.get(erforderlich, wenn Konfiguration vorhanden ist)sessionKey(optional) — Sitzungsschlüssel für den Wake-up-Ping nach dem Neustartnote(optional) — Hinweis für den Neustart-SentinelrestartDelayMs(optional) — Verzögerung vor dem Neustart (Standard 2000)
config.patch (partielle Aktualisierung)
config.patch (partielle Aktualisierung)
Führt eine partielle Aktualisierung mit der vorhandenen Konfiguration zusammen (Semantik von JSON Merge Patch):
- Objekte werden rekursiv zusammengeführt
nulllöscht einen Schlüssel- Arrays werden ersetzt
raw(string) — JSON5 nur mit den zu ändernden SchlüsselnbaseHash(erforderlich) — Konfigurations-Hash ausconfig.getsessionKey,note,restartDelayMs— wie beiconfig.apply
config.apply: Zusammenfassung ausstehender Neustarts plus eine Abklingzeit von 30 Sekunden zwischen Neustartzyklen.Umgebungsvariablen
OpenClaw liest Umgebungsvariablen aus dem übergeordneten Prozess sowie aus:.envaus dem aktuellen Arbeitsverzeichnis (falls vorhanden)~/.openclaw/.env(globaler Fallback)
Shell-Env-Import (optional)
Shell-Env-Import (optional)
Falls aktiviert und erwartete Schlüssel nicht gesetzt sind, führt OpenClaw Ihre Login-Shell aus und importiert nur die fehlenden Schlüssel:Env-Var-Äquivalent:
OPENCLAW_LOAD_SHELL_ENV=1Env-Var-Substitution in Konfigurationswerten
Env-Var-Substitution in Konfigurationswerten
Verweisen Sie in beliebigen Stringwerten der Konfiguration mit Regeln:
${VAR_NAME} auf Umgebungsvariablen:- Es werden nur großgeschriebene Namen abgeglichen:
[A-Z_][A-Z0-9_]* - Fehlende/leere Variablen werfen beim Laden einen Fehler
- Mit
$${VAR}für wörtliche Ausgabe maskieren - Funktioniert auch in
$include-Dateien - Inline-Substitution:
"${BASE}/v1"→"https://api.example.com/v1"
Secret-Refs (env, file, exec)
Secret-Refs (env, file, exec)
Für Felder, die SecretRef-Objekte unterstützen, können Sie Folgendes verwenden:Details zu SecretRef (einschließlich
secrets.providers für env/file/exec) finden Sie unter Secrets Management.
Unterstützte Credential-Pfade sind unter SecretRef Credential Surface aufgeführt.Vollständige Referenz
Für die vollständige Feld-für-Feld-Referenz siehe Configuration Reference.Verwandt: Konfigurationsbeispiele · Configuration Reference · Doctor