Konfiguration
OpenClaw liest eine optionale -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 festlegen (Cron, Hooks)
- Sitzungen, Medien, Netzwerk oder UI anpassen
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 Control UI und der Konfigurationsvalidierung verwendet wird.- Feldwerte für
titleunddescriptionwerden in die Schema-Ausgabe für Editor- und Formular-Tools übernommen. - Verschachtelte Objekt-, Wildcard- (
*) und Array-Item- ([]) Einträge übernehmen dieselben Docs-Metadaten, wenn passende Felddokumentation vorhanden ist. - Auch Kompositionszweige mit
anyOf/oneOf/allOfübernehmen dieselben Docs- Metadaten, sodass Union-/Intersection-Varianten dieselbe Feldhilfe behalten. config.schema.lookupgibt einen normalisierten Konfigurationspfad mit einem flachen Schemaknoten (title,description,type,enum,const, häufige Grenzen und ähnliche Validierungsfelder), zugeordneten UI-Hinweis-Metadaten sowie unmittelbaren Zusammenfassungen der Unterelemente für Drill-down-Tools zurück.- Runtime-Plugin-/Kanalschemata werden zusammengeführt, wenn das Gateway die aktuelle Manifest-Registry laden kann.
- 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 einen eigenen Konfigurationsabschnitt unter
channels.<provider>. Die Einrichtungsschritte 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.- Modell-Refs verwenden das Format
provider/model(z. B.anthropic/claude-opus-4-6). agents.defaults.imageMaxDimensionPxsteuert das Downscaling von Bildern in Transkripten/Tools (Standard1200); niedrigere Werte reduzieren in der Regel den Verbrauch von Vision-Tokens bei screenshotlastigen Ausführungen.- 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 Custom providers in der Referenz.
Steuern, wer dem Bot Nachrichten senden darf
Steuern, wer dem Bot Nachrichten senden darf
Der DM-Zugriff wird pro Kanal über
dmPolicy gesteuert:"pairing"(Standard): unbekannte Absender erhalten einen einmaligen Pairing-Code zur Genehmigung"allowlist": nur Absender inallowFrom(oder im gepaarten Allow-Store)"open": erlaubt alle eingehenden DMs (erfordertallowFrom: ["*"])"disabled": ignoriert alle DMs
groupPolicy + groupAllowFrom oder kanalspezifische Allowlists.In der vollständigen Referenz finden Sie kanalspezifische Details.Mention-Gating für Gruppenchats einrichten
Mention-Gating für Gruppenchats einrichten
Gruppennachrichten 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 kanalspezifische Überschreibungen und den Self-Chat-Modus.
Skills pro Agent einschränken
Skills pro Agent einschränken
Verwenden Sie
agents.defaults.skills für eine gemeinsame Baseline und überschreiben Sie dann bestimmte
Agenten mit agents.list[].skills:- Lassen Sie
agents.defaults.skillsweg, damit Skills standardmäßig nicht eingeschränkt sind. - Lassen Sie
agents.list[].skillsweg, um die Standardwerte zu übernehmen. - Setzen Sie
agents.list[].skills: [], um keine Skills zu erlauben. - Siehe Skills, Skills config und die Configuration Reference.
Gateway-Kanalzustandsüberwachung anpassen
Gateway-Kanalzustandsüberwachung anpassen
Steuern Sie, wie aggressiv das Gateway Kanäle neu startet, die veraltet wirken:
- Setzen Sie
gateway.channelHealthCheckMinutes: 0, um Neustarts durch den Health Monitor 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 einzelnen Kanal oder ein einzelnes Konto zu deaktivieren, ohne den globalen Monitor auszuschalten. - Siehe Health Checks für operative Fehlerbehebung und die vollständige Referenz für alle Felder.
Sitzungen und Resets konfigurieren
Sitzungen und Resets konfigurieren
Sitzungen steuern Gesprächskontinuität und Isolation:
dmScope:main(geteilt) |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 Sende-Richtlinien.
- Siehe vollständige Referenz für alle Felder.
Sandboxing aktivieren
Sandboxing aktivieren
Führen Sie Agentensitzungen in isolierten Docker-Containern aus:Erstellen Sie zuerst das Image:
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:Was dies bewirkt:
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 relaygestützte Registrierung an die Gateway-Identität, mit der die iOS-App gepaart wurde, sodass ein anderes Gateway die gespeicherte Registrierung nicht wiederverwenden kann.
- Lässt 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 Sendetraffic dieselbe Relay-Bereitstellung erreichen.
- Installieren Sie einen offiziellen/TestFlight-iOS-Build, der mit derselben Relay-Basis-URL kompiliert wurde.
- Konfigurieren Sie
gateway.push.apns.relay.baseUrlauf dem Gateway. - Pairen Sie die iOS-App mit dem Gateway und lassen Sie sowohl Node- als auch Operator-Sitzungen verbinden.
- Die iOS-App ruft die Gateway-Identität ab, registriert sich beim Relay mit App Attest plus dem App-Receipt und veröffentlicht dann die relaygestützte
push.apns.register-Payload an das gepaarte 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, an dieses Gateway gebundene Relay-Registrierung veröffentlichen kann.
- 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-Überschreibungen.OPENCLAW_APNS_RELAY_ALLOW_HTTP=truebleibt eine nur für loopback gedachte Entwicklungs-Ausweichmöglichkeit; speichern Sie keine HTTP-Relay-URLs dauerhaft in der Konfiguration.
Heartbeat einrichten (periodische Check-ins)
Heartbeat einrichten (periodische Check-ins)
every: Duration-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: bereinigt abgeschlossene isolierte Ausführungssitzungen aussessions.json(Standard24h; setzen Siefalse, um zu deaktivieren).runLog: bereinigtcron/runs/<jobId>.jsonlnach Größe und beibehaltenen Zeilen.- Siehe Cron jobs für Funktionsüberblick und CLI-Beispiele.
Webhooks einrichten (Hooks)
Webhooks einrichten (Hooks)
Aktivieren Sie HTTP-Webhook-Endpunkte im Gateway:Sicherheitshinweis:
- Behandeln Sie alle Hook-/Webhook-Payload-Inhalte als nicht vertrauenswürdige Eingabe.
- Verwenden Sie ein dediziertes
hooks.token; verwenden Sie nicht das gemeinsame Gateway-Token erneut. - Hook-Authentifizierung ist nur Header-basiert (
Authorization: Bearer ...oderx-openclaw-token); Tokens in Query-Strings werden abgelehnt. hooks.pathdarf nicht/sein; halten Sie den Webhook-Eingang auf einem dedizierten Unterpfad wie/hooks.- Lassen Sie Bypass-Flags für unsichere Inhalte deaktiviert (
hooks.gmail.allowUnsafeExternalContent,hooks.mappings[].allowUnsafeExternalContent), außer für eng begrenztes Debugging. - Wenn Sie
hooks.allowRequestSessionKeyaktivieren, setzen Sie auchhooks.allowedSessionKeyPrefixes, um vom Aufrufer gewählte Sitzungsschlüssel zu begrenzen. - Für Hook-gesteuerte Agenten bevorzugen Sie starke moderne Modellstufen und eine strikte Tool-Richtlinie (zum Beispiel nur Messaging plus nach Möglichkeit Sandboxing).
Multi-Agent-Routing konfigurieren
Multi-Agent-Routing konfigurieren
Führen Sie mehrere isolierte Agenten mit separaten Workspaces und Sitzungen aus:Siehe Multi-Agent und die vollständige Referenz für Binding-Regeln und agentenspezifische Zugriffsprofile.
Konfiguration auf mehrere Dateien aufteilen ($include)
Konfiguration auf mehrere Dateien aufteilen ($include)
Verwenden Sie
$include, um große Konfigurationen zu organisieren:- Einzelne Datei: ersetzt das enthaltende Objekt
- Array von Dateien: wird der Reihe nach tief zusammengeführt (spätere gewinnt)
- Nebenschlüssel: werden nach Includes zusammengeführt (überschreiben inkludierte Werte)
- Verschachtelte Includes: werden bis zu 10 Ebenen tief unterstützt
- Relative Pfade: werden relativ zur inkludierenden Datei aufgelöst
- Fehlerbehandlung: klare Fehler bei fehlenden Dateien, Parse-Fehlern und zirkulären Includes
Hot Reload der Konfiguration
Das Gateway überwacht~/.openclaw/openclaw.json und wendet Änderungen automatisch an — für die meisten Einstellungen ist kein manueller Neustart erforderlich.
Reload-Modi
| Modus | Verhalten |
|---|---|
hybrid (Standard) | Wendet sichere Änderungen sofort hot an. Startet bei kritischen Änderungen automatisch neu. |
hot | Wendet nur sichere Änderungen hot 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 Dateibeobachtung. Änderungen werden beim nächsten manuellen Neustart wirksam. |
Was hot angewendet wird und was einen Neustart erfordert
Die meisten Felder werden ohne Ausfallzeit hot angewendet. Im Modushybrid 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 — Änderungen daran lösen keinen Neustart aus.Config-RPC (programmatische Updates)
Control-Plane-Schreib-RPCs (
config.apply, config.patch, update.run) sind auf 3 Anfragen pro 60 Sekunden pro deviceId+clientIp begrenzt. Bei Begrenzung gibt der RPC UNAVAILABLE mit retryAfterMs zurück.config.schema.lookup: untersucht einen pfadbezogenen Konfigurationsunterbaum mit einem flachen Schemaknoten, zugeordneten Hinweis-Metadaten und unmittelbaren Zusammenfassungen der Unterelementeconfig.get: ruft den aktuellen Snapshot + Hash abconfig.patch: bevorzugter Pfad für Teilaktualisierungenconfig.apply: nur für vollständigen Konfigurationsersatzupdate.run: explizites Selbst-Update + Neustart
config.schema.lookup
und dann config.patch.
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 das Neustart-SentinelrestartDelayMs(optional) — Verzögerung vor dem Neustart (Standard 2000)
config.patch (Teilaktualisierung)
config.patch (Teilaktualisierung)
Führt eine Teilaktualisierung in die bestehende Konfiguration zusammen (JSON-Merge-Patch-Semantik):
- 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: zusammengefasste ausstehende Neustarts plus eine Abkühlzeit von 30 Sekunden zwischen Neustartzyklen.Umgebungsvariablen
OpenClaw liest Umgebungsvariablen aus dem Elternprozess sowie aus:.envaus dem aktuellen Arbeitsverzeichnis (falls vorhanden)~/.openclaw/.env(globaler Fallback)
Shell-Env-Import (optional)
Shell-Env-Import (optional)
Wenn aktiviert und erwartete Schlüssel nicht gesetzt sind, führt OpenClaw Ihre Login-Shell aus und importiert nur die fehlenden Schlüssel:Entsprechende Env-Variable:
OPENCLAW_LOAD_SHELL_ENV=1Env-Variablenersetzung in Konfigurationswerten
Env-Variablenersetzung in Konfigurationswerten
Verweisen Sie in jedem Stringwert der Konfiguration mit Regeln:
${VAR_NAME} auf Umgebungsvariablen:- Es werden nur Großbuchstabennamen abgeglichen:
[A-Z_][A-Z0-9_]* - Fehlende/leere Variablen lösen beim Laden einen Fehler aus
- Escapen Sie mit
$${VAR}für eine wörtliche Ausgabe - Funktioniert auch in
$include-Dateien - Inline-Ersetzung:
"${BASE}/v1"→"https://api.example.com/v1"
SecretRefs (env, file, exec)
SecretRefs (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 Anmeldedatenpfade sind unter SecretRef Credential Surface aufgeführt.Vollständige Referenz
Die vollständige Referenz für alle Felder finden Sie unter Configuration Reference.Verwandt: Configuration Examples · Configuration Reference · Doctor