Gateway
Konfiguration
OpenClaw liest eine optionale JSON5-Konfiguration aus ~/.openclaw/openclaw.json. Wenn die Datei fehlt, verwendet OpenClaw sichere Standardwerte.
Der aktive Konfigurationspfad muss eine reguläre Datei sein. Von OpenClaw ausgeführte Schreibvorgänge ersetzen sie atomar (durch Umbenennen auf den Pfad), sodass bei einer symbolisch verknüpften openclaw.json deren Ziel ersetzt wird, statt durch den Link hindurch zu schreiben – vermeiden Sie Konfigurationslayouts mit symbolischen Links. Wenn Sie die Konfiguration außerhalb des standardmäßigen Zustandsverzeichnisses aufbewahren, lassen Sie OPENCLAW_CONFIG_PATH direkt auf die tatsächliche Datei verweisen.
Häufige Gründe für das Hinzufügen einer Konfiguration:
- Kanäle verbinden und festlegen, wer dem Bot Nachrichten senden darf
- Modelle, Tools, Sandboxing oder Automatisierung (Cron, Hooks) festlegen
- Sitzungen, Medien, Netzwerk oder Benutzeroberfläche abstimmen
Alle verfügbaren Felder finden Sie in der vollständigen Referenz.
Für die Konfiguration gilt eine Zwei-Bereiche-Regel: Gleichgeordnete Einträge auf Stammebene enthalten Infrastruktur und agentenübergreifende Standardwerte, während agents.defaults das Verhalten der Agentenschleife enthält. Einträge unter agents.entries können beide Bereiche überschreiben, sofern das Schema eine agentenspezifische Überschreibung unterstützt.
Agenten und Automatisierungen sollten vor dem Bearbeiten der Konfiguration config.schema.lookup für eine genaue Dokumentation auf Feldebene verwenden. Nutzen Sie diese Seite für aufgabenorientierte Anleitungen und die
Konfigurationsreferenz für die umfassendere
Übersicht der Felder und Standardwerte.
Minimale Konfiguration
// ~/.openclaw/openclaw.json{ agents: { defaults: { workspace: "~/.openclaw/workspace" } }, channels: { whatsapp: { allowFrom: ["+15555550123"] } },}Konfiguration bearbeiten
Interaktiver Assistent
openclaw onboard # vollständiger Onboarding-Ablaufopenclaw configure # KonfigurationsassistentCLI (Einzeiler)
openclaw config get agents.defaults.workspaceopenclaw config set agents.defaults.heartbeat.every "2h"openclaw config unset plugins.entries.brave.config.webSearch.apiKeySteuerungsoberfläche
Öffnen Sie http://127.0.0.1:18789 und verwenden Sie die Registerkarte Konfiguration.
Die Steuerungsoberfläche erzeugt aus dem aktiven Konfigurationsschema ein Formular, einschließlich der Dokumentationsmetadaten für die Felder
title / description sowie der Plugin- und Kanalschemas, sofern
verfügbar. Als Ausweichmöglichkeit steht ein Editor für Rohes JSON bereit. Für Detailansichten
und andere Tools stellt das Gateway außerdem config.schema.lookup bereit, um
einen einzelnen pfadbezogenen Schemaknoten sowie Zusammenfassungen seiner unmittelbaren untergeordneten Elemente abzurufen.
In den Einstellungen werden häufig verwendete Felder zuerst angezeigt. Jeder Abschnitt bewahrt seine erweiterten Felder
in einer eingeklappten Gruppe Erweitert (N) auf; verwenden Sie Erweiterte anzeigen, um alle
Gruppen aufzuklappen. Die Einstellungssuche umfasst stets beide Ebenen und öffnet bei Bedarf
die passende erweiterte Gruppe.
Direkte Bearbeitung
Bearbeiten Sie ~/.openclaw/openclaw.json direkt. Das Gateway überwacht die Datei und wendet Änderungen automatisch an (siehe Hot Reload).
Strikte Validierung
openclaw config schema gibt das kanonische JSON-Schema aus, das von der Steuerungsoberfläche
und zur Validierung verwendet wird. config.schema.lookup ruft einen einzelnen pfadbezogenen Knoten sowie
Zusammenfassungen untergeordneter Elemente für Tools mit Detailansichten ab. Die Dokumentationsmetadaten der Felder title/description
werden in verschachtelte Objekte, Platzhalter- (*), Array-Element- ([]) und anyOf/
oneOf/allOf-Verzweigungen übernommen. Laufzeitschemas für Plugins und Kanäle werden zusammengeführt, sobald die
Manifestregistrierung geladen ist.
Jedes Konfigurationsendfeld besitzt in uiHints eine allgemeine oder erweiterte Darstellungsebene.
advanced: false kennzeichnet allgemeine Einstellungen und advanced: true kennzeichnet erweiterte
Einstellungen. Ein Endfeld erbt die Ebene des nächstgelegenen übergeordneten Elements, wenn es keinen direkten Hinweis besitzt;
Pfade ohne deklariertes übergeordnetes Element sind standardmäßig erweitert. Dies wirkt sich
nur auf die Darstellung aus, nicht auf Validierung, Standardwerte, das Neuladeverhalten oder darauf, ob der Schlüssel festgelegt werden kann.
Wenn die Validierung fehlschlägt:
- Das Gateway startet nicht
- Nur Diagnosebefehle funktionieren (
openclaw doctor,openclaw logs,openclaw health,openclaw status) - Führen Sie
openclaw doctoraus, um die genauen Probleme anzuzeigen - Führen Sie
openclaw doctor --fixaus (--repairist dasselbe Flag;--yesüberspringt Rückfragen), um Reparaturen anzuwenden
Das Gateway bewahrt nach jedem erfolgreichen Start eine vertrauenswürdige Kopie der letzten als funktionierend bekannten Konfiguration auf,
doch weder beim Start noch beim Hot Reload wird sie automatisch wiederhergestellt – dies geschieht nur durch openclaw doctor --fix.
Wenn die Validierung von openclaw.json fehlschlägt (einschließlich der Plugin-internen Validierung), schlägt der Start des Gateways
fehl oder das Neuladen wird übersprungen, und die aktuelle Laufzeit verwendet weiterhin die zuletzt akzeptierte
Konfiguration. Ein abgelehnter Schreibvorgang wird zur Überprüfung außerdem als <path>.rejected.<timestamp> gespeichert.
Das Gateway blockiert Schreibvorgänge, die wie ein versehentliches Überschreiben aussehen – das Entfernen von gateway.mode,
der Verlust des Blocks meta oder eine Verkleinerung der Datei um mehr als die Hälfte –, sofern der Schreibvorgang
destruktive Änderungen nicht ausdrücklich zulässt. Die Übernahme als letzte als funktionierend bekannte Konfiguration wird übersprungen, wenn ein
Kandidat einen Platzhalter für ein geschwärztes Geheimnis wie *** oder [redacted] enthält.
Häufige Aufgaben
Einen Kanal einrichten (WhatsApp, Telegram, Discord usw.)
Jeder Kanal besitzt unter channels.<provider> einen eigenen Konfigurationsabschnitt. Die Schritte zur Einrichtung finden Sie auf der jeweiligen Kanalseite:
- Discord –
channels.discord - Feishu –
channels.feishu - Google Chat –
channels.googlechat - iMessage –
channels.imessage - Mattermost –
channels.mattermost - Microsoft Teams –
channels.msteams - Signal –
channels.signal - Slack –
channels.slack - Telegram –
channels.telegram - WhatsApp –
channels.whatsapp
Alle Kanäle verwenden dasselbe Muster für DM-Richtlinien:
{ channels: { telegram: { enabled: true, botToken: "123:abc", dmPolicy: "pairing", // pairing | allowlist | open | disabled allowFrom: ["tg:123"], // nur für allowlist/open }, },}Modelle auswählen und konfigurieren
Legen Sie das primäre Modell und optionale Ausweichmodelle fest:
{ agents: { defaults: { model: { primary: "anthropic/claude-sonnet-4-6", fallbacks: ["openai/gpt-5.4"], }, models: { "anthropic/claude-sonnet-4-6": { alias: "Sonnet" }, "openai/gpt-5.4": { alias: "GPT" }, }, }, },}agents.defaults.modelsspeichert Aliasse und modellspezifische Einstellungen; das Hinzufügen eines Eintrags schränkt Überschreibungen durch/modeloder--modelniemals ein.agents.defaults.modelPolicy.allowist die explizite Zulassungsliste für Überschreibungen und Modellauswahlfelder. Sie akzeptiert exakte Referenzen undprovider/*-Platzhalter; lassen Sie sie weg oder verwenden Sie[], um jedes Modell zuzulassen.- Modellreferenzen verwenden das Format
provider/model(z. B.anthropic/claude-opus-4-6). agents.defaults.imageMaxDimensionPxsteuert die Herunterskalierung von Bildern in Transkripten und Tools (Standardwert1200); niedrigere Werte reduzieren bei Durchläufen mit vielen Screenshots üblicherweise die Nutzung von Vision-Tokens.- Informationen zum Wechseln von Modellen im Chat finden Sie unter Modelle-CLI, Informationen zur Rotation der Authentifizierung und zum Ausweichverhalten unter Modell-Failover.
- Informationen zu benutzerdefinierten oder selbst gehosteten Providern finden Sie unter Benutzerdefinierte Provider in der Referenz.
Festlegen, wer dem Bot Nachrichten senden darf
Der DM-Zugriff wird pro Kanal über dmPolicy gesteuert (Standardwert "pairing"):
"pairing": Unbekannte Absender erhalten einen einmaligen Kopplungscode zur Genehmigung"allowlist": Nur Absender inallowFrom(oder im Speicher für gekoppelte Zulassungen)"open": Alle eingehenden DMs zulassen (erfordertallowFrom: ["*"])"disabled": Alle DMs ignorieren
Verwenden Sie für Gruppen groupPolicy ("allowlist" | "open" | "disabled") zusammen mit groupAllowFrom oder kanalspezifischen Zulassungslisten.
Kanalspezifische Details finden Sie in der vollständigen Referenz.
Erwähnungssperre für Gruppenchats einrichten
Für Gruppennachrichten ist standardmäßig eine Erwähnung erforderlich. Konfigurieren Sie die Auslösemuster pro Agent. Normale Gruppen- und Kanalantworten werden automatisch veröffentlicht; aktivieren Sie für gemeinsam genutzte Räume, in denen der Agent selbst entscheiden soll, wann er spricht, ausdrücklich den Pfad über das Nachrichten-Tool:
{ messages: { visibleReplies: "automatic", // auf "message_tool" setzen, um überall Sends über das Nachrichten-Tool zu verlangen groupChat: { visibleReplies: "message_tool", // Opt-in; sichtbare Ausgabe erfordert message(action=send) unmentionedInbound: "room_event", // nicht erwähnte, ständig aktive Gruppenunterhaltung dient als stiller Kontext }, }, agents: { list: [ { id: "main", groupChat: { mentionPatterns: ["@openclaw", "openclaw"], }, }, ], }, channels: { whatsapp: { groups: { "*": { requireMention: true } }, }, },}- Metadaten-Erwähnungen: native @-Erwähnungen (Antippen zum Erwähnen in WhatsApp, Telegram @bot usw.)
- Textmuster: sichere reguläre Ausdrücke in
mentionPatterns - Sichtbare Antworten:
messages.visibleReplieskann Sends über das Nachrichten-Tool global verlangen;messages.groupChat.visibleRepliesüberschreibt dies für Gruppen/Kanäle. - Informationen zu Modi für sichtbare Antworten, kanalspezifischen Überschreibungen und dem Selbstchatmodus finden Sie in der vollständigen Referenz.
Skills pro Agent einschränken
Verwenden Sie agents.defaults.skills für eine gemeinsame Ausgangsbasis und überschreiben Sie anschließend bestimmte
Agenten mit agents.entries.*.skills:
{ agents: { defaults: { skills: ["github", "weather"], }, list: [ { id: "writer" }, // erbt github, weather { id: "docs", skills: ["docs-search"] }, // ersetzt Standardwerte { id: "locked-down", skills: [] }, // keine Skills ], },}- Lassen Sie
agents.defaults.skillsweg, um Skills standardmäßig nicht einzuschränken. - Lassen Sie
agents.entries.*.skillsweg, um die Standardwerte zu erben. - Legen Sie
agents.entries.*.skills: []fest, um keine Skills zuzulassen. - Weitere Informationen finden Sie unter Skills, Skills-Konfiguration und in der Konfigurationsreferenz.
Kanalspezifische Zustandsüberwachung konfigurieren
Deaktivieren oder aktivieren Sie automatische Neustarts bei Zustandsproblemen für einen Kanal oder ein Konto:
{ channels: { telegram: { healthMonitor: { enabled: false }, accounts: { alerts: { healthMonitor: { enabled: true }, }, }, }, },}- Verwenden Sie
channels.<provider>.healthMonitor.enabledoderchannels.<provider>.accounts.<id>.healthMonitor.enabled, um automatische Neustarts für einen einzelnen Kanal oder ein einzelnes Konto zu steuern. - Informationen zur betrieblichen Fehlerdiagnose finden Sie unter Zustandsprüfungen, alle Felder in der vollständigen Referenz.
Sitzungen und Zurücksetzungen konfigurieren
Sitzungen steuern die Kontinuität und Isolation von Unterhaltungen:
{ session: { dmScope: "per-channel-peer", // für mehrere Benutzer empfohlen threadBindings: { enabled: true, idleHours: 24, maxAgeHours: 0, }, reset: { mode: "daily", atHour: 4, idleMinutes: 120, }, },}dmScope:main(gemeinsam genutzt) |per-peer|per-channel-peer|per-account-channel-peerthreadBindings: globale Standardwerte für das Routing Thread-gebundener Sitzungen./focus,/unfocus,/agents,/session idleund/session max-agebinden, lösen, listen und konfigurieren dies pro Sitzung (Discord bindet Threads, Telegram bindet Themen/Unterhaltungen).- Informationen zu Geltungsbereichen, Identitätsverknüpfungen und Senderichtlinien finden Sie unter Sitzungsverwaltung.
- Alle Felder finden Sie in der vollständigen Referenz.
Sandboxing aktivieren
Führen Sie Agentensitzungen in isolierten Sandbox-Laufzeitumgebungen aus:
{ agents: { defaults: { sandbox: { mode: "non-main", // off | non-main | all scope: "agent", // session | agent | shared }, }, },}Erstellen Sie zuerst das Image: Führen Sie aus einem Quellcode-Checkout scripts/sandbox-setup.sh aus oder verwenden Sie bei einer npm-Installation den eingebetteten Befehl docker build unter Sandboxing § Images und Einrichtung.
Die vollständige Anleitung finden Sie unter Sandboxing, alle Optionen in der vollständigen Referenz.
Relay-gestützte Push-Benachrichtigungen für offizielle iOS-Builds aktivieren
Relay-gestützte Push-Benachrichtigungen für öffentliche App-Store-Builds verwenden das gehostete OpenClaw-Relay: https://ios-push-relay.openclaw.ai.
Benutzerdefinierte Relay-Bereitstellungen erfordern einen bewusst getrennten iOS-Build- und Bereitstellungspfad, dessen Relay-URL mit der Relay-URL des Gateways übereinstimmt. Wenn Sie einen benutzerdefinierten Relay-Build verwenden, legen Sie Folgendes in der Gateway-Konfiguration fest:
{ gateway: { push: { apns: { relay: { baseUrl: "https://relay.example.com", // Optional. Standardwert: 10000 timeoutMs: 10000, }, }, }, },}Entsprechender CLI-Befehl:
openclaw config set gateway.push.apns.relay.baseUrl https://relay.example.comFunktionsweise:
- Ermöglicht dem Gateway,
push.test, Aktivierungsimpulse und Aktivierungen zur Wiederverbindung über das externe Relay zu senden. - Verwendet eine auf die Registrierung beschränkte Sendeberechtigung, die von der gekoppelten iOS-App weitergeleitet wird. Das Gateway benötigt kein bereitstellungsweites Relay-Token.
- Bindet jede Relay-gestützte Registrierung an die Gateway-Identität, mit der die iOS-App gekoppelt wurde, sodass kein anderes Gateway die gespeicherte Registrierung wiederverwenden kann.
- Lokale/manuelle iOS-Builds verwenden weiterhin direkte APNs. Relay-gestütztes Senden gilt nur für offiziell verteilte Builds, die über das Relay registriert wurden.
- Muss mit der im iOS-Build eingebetteten Relay-Basis-URL übereinstimmen, damit Registrierungs- und Sendedatenverkehr dieselbe Relay-Bereitstellung erreichen.
End-to-End-Ablauf:
- Installieren Sie die offizielle iOS-App.
- Optional: Konfigurieren Sie
gateway.push.apns.relay.baseUrlauf dem Gateway nur, wenn Sie einen bewusst getrennten benutzerdefinierten Relay-Build verwenden. - Koppeln Sie die iOS-App mit dem Gateway und lassen Sie sowohl Node- als auch Operatorsitzungen eine Verbindung herstellen.
- Die iOS-App ruft die Gateway-Identität ab, registriert sich mittels App Attest und App-Beleg beim Relay und veröffentlicht anschließend die Relay-gestützte
push.apns.register-Nutzlast an das gekoppelte Gateway. - Das Gateway speichert das Relay-Handle und die Sendeberechtigung und verwendet sie anschließend für
push.test, Aktivierungsimpulse und Aktivierungen zur Wiederverbindung.
Betriebshinweise:
- 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.
Kompatibilitätshinweis:
OPENCLAW_APNS_RELAY_BASE_URLundOPENCLAW_APNS_RELAY_TIMEOUT_MSfunktionieren weiterhin als temporäre Umgebungsüberschreibungen.- Benutzerdefinierte Gateway-Relay-URLs müssen mit der im iOS-Build eingebetteten Relay-Basis-URL übereinstimmen; der öffentliche App-Store-Release-Kanal lehnt benutzerdefinierte Überschreibungen der iOS-Relay-URL ab.
OPENCLAW_APNS_RELAY_ALLOW_HTTP=truebleibt ein ausschließlich für Loopback bestimmter Entwicklungsnotausgang; speichern Sie HTTP-Relay-URLs nicht dauerhaft in der Konfiguration.
Den End-to-End-Ablauf finden Sie unter iOS-App, das Relay-Sicherheitsmodell unter Authentifizierungs- und Vertrauensablauf.
Heartbeat einrichten (regelmäßige Statusmeldungen)
{ agents: { defaults: { heartbeat: { every: "30m", target: "last", }, }, },}every: Zeitdauerzeichenfolge (30m,2h). Setzen Sie0m, um die Funktion zu deaktivieren. Standardwert:30m.target:last|none|<channel-id>(zum Beispieldiscord,matrix,telegramoderwhatsapp)directPolicy:allow(Standardwert) oderblockfür DM-artige Heartbeat-Ziele- Die vollständige Anleitung finden Sie unter Heartbeat.
Cron-Aufgaben konfigurieren
{ cron: { enabled: true, sessionRetention: "24h", },}sessionRetention: Entfernt abgeschlossene isolierte Ausführungssitzungen aus SQLite-Sitzungszeilen (Standardwert24h; zum Deaktivierenfalsefestlegen).- Der Ausführungsverlauf bewahrt automatisch die neuesten 2000 Terminalzeilen pro Aufgabe auf; verlorene Zeilen behalten ihr 24-stündiges Bereinigungsfenster.
- Eine Funktionsübersicht und CLI-Beispiele finden Sie unter Cron-Aufgaben.
Webhooks (Hooks) einrichten
Aktivieren Sie HTTP-Webhook-Endpunkte auf dem Gateway:
{ hooks: { enabled: true, token: "shared-secret", path: "/hooks", defaultSessionKey: "hook:ingress", allowRequestSessionKey: false, allowedSessionKeyPrefixes: ["hook:"], mappings: [ { match: { path: "gmail" }, action: "agent", agentId: "main", deliver: true, }, ], },}Sicherheitshinweis:
- Behandeln Sie sämtliche Hook-/Webhook-Nutzlastinhalte als nicht vertrauenswürdige Eingaben.
- Verwenden Sie ein dediziertes
hooks.token; verwenden Sie keine aktiven Gateway-Authentifizierungsgeheimnisse erneut (gateway.auth.token/OPENCLAW_GATEWAY_TOKENodergateway.auth.password/OPENCLAW_GATEWAY_PASSWORD). - Die Hook-Authentifizierung erfolgt ausschließlich über Header (
Authorization: Bearer ...oderx-openclaw-token); Token in Abfragezeichenfolgen werden abgelehnt. hooks.pathdarf nicht/sein; belassen Sie den Webhook-Eingang auf einem dedizierten Unterpfad wie/hooks.- Lassen Sie Flags zum Umgehen der Prüfung unsicherer Inhalte deaktiviert (
hooks.gmail.allowUnsafeExternalContent,hooks.mappings[].allowUnsafeExternalContent), außer bei eng begrenzter Fehlerdiagnose. - Wenn Sie
hooks.allowRequestSessionKeyaktivieren, legen Sie außerdemhooks.allowedSessionKeyPrefixesfest, um die vom Aufrufer gewählten Sitzungsschlüssel einzugrenzen. - Bevorzugen Sie für Hook-gesteuerte Agenten leistungsfähige moderne Modellstufen und strenge Tool-Richtlinien (zum Beispiel ausschließlich Messaging sowie nach Möglichkeit Sandboxing).
Alle Zuordnungsoptionen und die Gmail-Integration finden Sie in der vollständigen Referenz.
Multi-Agent-Routing konfigurieren
Führen Sie mehrere isolierte Agenten mit getrennten Arbeitsbereichen und Sitzungen aus:
{ agents: { list: [ { id: "home", default: true, workspace: "~/.openclaw/workspace-home" }, { id: "work", workspace: "~/.openclaw/workspace-work" }, ], }, bindings: [ { agentId: "home", match: { channel: "whatsapp", accountId: "personal" } }, { agentId: "work", match: { channel: "whatsapp", accountId: "biz" } }, ],}Bindungsregeln und agentenspezifische Zugriffsprofile finden Sie unter Multi-Agent und in der vollständigen Referenz.
Konfiguration auf mehrere Dateien aufteilen ($include)
Verwenden Sie $include, um umfangreiche Konfigurationen zu organisieren:
// ~/.openclaw/openclaw.json{ gateway: { port: 18789 }, agents: { $include: "./agents.json5" }, broadcast: { $include: ["./clients/a.json5", "./clients/b.json5"], },}- Einzelne Datei: Ersetzt das enthaltende Objekt
- Datei-Array: Wird der Reihe nach tief zusammengeführt (spätere Werte haben Vorrang), bis zu 10 verschachtelte Ebenen
- Schwesterschlüssel: Werden nach den Einbindungen zusammengeführt (überschreiben eingebundene Werte)
- Relative Pfade: Werden relativ zur einbindenden Datei aufgelöst
- Pfadformat: Einbindungspfade dürfen keine Nullbytes enthalten und müssen vor und nach der Auflösung strikt kürzer als 4096 Zeichen sein
- OpenClaw-eigene Schreibvorgänge: Wenn ein Schreibvorgang nur einen Abschnitt der obersten Ebene ändert,
der durch eine Einbindung einer einzelnen Datei wie
plugins: { $include: "./plugins.json5" }gestützt wird, aktualisiert OpenClaw diese eingebundene Datei und lässtopenclaw.jsonunverändert - Nicht unterstütztes Durchschreiben: Root-Einbindungen, Einbindungs-Arrays und Einbindungen mit Schwesterschlüssel-Überschreibungen schlagen bei OpenClaw-eigenen Schreibvorgängen sicher fehl, anstatt die Konfiguration zu verflachen
- Einschränkung:
$include-Pfade müssen unterhalb des Verzeichnisses aufgelöst werden, dasopenclaw.jsonenthält. Um einen Verzeichnisbaum über Computer oder Benutzer hinweg gemeinsam zu verwenden, legen SieOPENCLAW_INCLUDE_ROOTSauf eine Pfadliste (:unter POSIX,;unter Windows) mit zusätzlichen Verzeichnissen fest, auf die Einbindungen verweisen dürfen. Symbolische Links werden aufgelöst und erneut geprüft. Daher wird ein Pfad weiterhin abgelehnt, der lexikalisch in einem Konfigurationsverzeichnis liegt, dessen tatsächliches Ziel jedoch aus allen zulässigen Wurzelverzeichnissen herausführt. - Fehlerbehandlung: Eindeutige Fehler bei fehlenden Dateien, Analysefehlern, zirkulären Einbindungen, ungültigem Pfadformat und übermäßiger Länge
Automatisches Neuladen der Konfiguration
Das Gateway überwacht ~/.openclaw/openclaw.json und wendet Änderungen automatisch an – für die meisten Einstellungen ist kein manueller Neustart erforderlich.
Direkte Dateiänderungen gelten bis zur erfolgreichen Validierung als nicht vertrauenswürdig. Die Überwachung wartet,
bis temporäre Schreib- und Umbenennungsvorgänge des Editors abgeschlossen sind, liest die endgültige Datei und lehnt
ungültige externe Änderungen ab, ohne openclaw.json neu zu schreiben. OpenClaw-eigene Konfigurationsschreibvorgänge
verwenden vor dem Schreiben dieselbe Schemaprüfung (die für jeden Schreibvorgang geltenden Regeln zum Überschreiben und
Zurücksetzen finden Sie unter Strikte Validierung).
Wenn config reload skipped (invalid config) angezeigt wird oder beim Start Invalid config gemeldet wird, prüfen Sie die Konfiguration, führen Sie openclaw config validate und anschließend zur Reparatur openclaw doctor --fix aus. Die Prüfliste finden Sie unter Gateway-Fehlerbehebung.
Neulademodi
| Modus | Verhalten |
|---|---|
hybrid (Standard) |
Wendet sichere Änderungen sofort im laufenden Betrieb an. Bei kritischen Änderungen erfolgt automatisch ein Neustart. |
hot |
Wendet nur sichere Änderungen im laufenden Betrieb an. Protokolliert eine Warnung, wenn ein Neustart erforderlich ist – Sie führen ihn durch. |
restart |
Startet das Gateway bei jeder Konfigurationsänderung neu, unabhängig davon, ob sie sicher ist. |
off |
Deaktiviert die Dateiüberwachung. Änderungen werden beim nächsten manuellen Neustart wirksam. |
{ gateway: { reload: { mode: "hybrid", debounceMs: 300 }, },}Was im laufenden Betrieb angewendet wird und was einen Neustart erfordert
Die meisten Felder werden ohne Ausfallzeit im laufenden Betrieb angewendet; bei einigen entsprechenden Abschnitten wird nur das jeweilige
Subsystem (Kanal, Cron, Heartbeat, Zustandsmonitor) statt des gesamten Gateways neu gestartet. Im
Modus hybrid werden Änderungen, die einen Neustart des Gateways erfordern, automatisch verarbeitet.
| Kategorie | Felder | Gateway-Neustart erforderlich? |
|---|---|---|
| Kanäle | channels.*, web (WhatsApp) – alle integrierten und Plugin-Kanäle |
Nein (startet diesen Kanal neu) |
| Agent und Modelle | agent, agents, models, routing |
Nein |
| Automatisierung | hooks, cron, agent.heartbeat |
Nein (startet dieses Subsystem neu) |
| Sitzungen und Nachrichten | session, messages |
Nein |
| Tools und Medien | tools, skills, mcp, audio, talk |
Nein |
| Plugin-Konfiguration | plugins.entries.*, plugins.allow, plugins.deny, plugins.enabled |
Nein (lädt die Plugin-Laufzeit neu) |
| Benutzeroberfläche und Sonstiges | ui, logging, identity, bindings |
Nein |
| Gateway-Server | gateway.* (Port, Bindung, Authentifizierung, Tailscale, TLS, HTTP, Push) |
Ja |
| Infrastruktur | discovery, browser, plugins.load, plugins.installs |
Ja |
Planung des Neuladens
Wenn Sie eine Quelldatei bearbeiten, auf die über $include verwiesen wird, plant OpenClaw
das Neuladen anhand der in den Quellen definierten Struktur und nicht anhand der abgeflachten Ansicht im Arbeitsspeicher.
Dadurch bleiben Entscheidungen zum Neuladen im laufenden Betrieb (Anwendung im laufenden Betrieb oder Neustart) vorhersehbar, selbst wenn sich ein
einzelner Abschnitt der obersten Ebene in einer eigenen eingebundenen Datei befindet, beispielsweise
plugins: { $include: "./plugins.json5" }. Die Planung des Neuladens schlägt sicher geschlossen fehl, wenn die
Quellstruktur mehrdeutig ist.
Konfigurations-RPC (programmatische Aktualisierungen)
Für Tools, die Konfigurationen über die Gateway-API schreiben, wird dieser Ablauf empfohlen:
config.schema.lookup, um einen Teilbaum zu untersuchen (flacher Schemaknoten und Zusammenfassungen der untergeordneten Elemente)config.get, um den aktuellen Snapshot zusammen mithashabzurufenconfig.patchfür partielle Aktualisierungen (JSON-Merge-Patch: Objekte werden zusammengeführt,nulllöscht, Arrays werden ersetzt, wenn dies mitreplacePathsausdrücklich bestätigt wird, falls Einträge entfernt würden)config.applynur, wenn die gesamte Konfiguration ersetzt werden sollupdate.runfür eine ausdrückliche Selbstaktualisierung mit anschließendem Neustart; fügen SiecontinuationMessagehinzu, wenn die Sitzung nach dem Neustart einen weiteren Durchlauf ausführen sollupdate.status, um den neuesten Neustart-Sentinel der Aktualisierung zu untersuchen und nach einem Neustart die ausgeführte Version zu überprüfen
Agenten sollten config.schema.lookup als erste Anlaufstelle für genaue
Dokumentation und Einschränkungen auf Feldebene verwenden. Verwenden Sie die Konfigurationsreferenz,
wenn eine umfassendere Konfigurationsübersicht, Standardwerte oder Links zu speziellen
Subsystemreferenzen benötigt werden.
Beispiel für einen partiellen Patch:
openclaw gateway call config.get --params '{}' # payload.hash erfassenopenclaw gateway call config.patch --params '{ "raw": "{ channels: { telegram: { groups: { \"*\": { requireMention: false } } } } }", "baseHash": "<hash>"}'Sowohl config.apply als auch config.patch akzeptieren raw, baseHash, sessionKey,
note und restartDelayMs. baseHash ist für beide Methoden erforderlich, sobald bereits eine
Konfigurationsdatei vorhanden ist (beim ersten Schreibvorgang ohne vorhandene Konfiguration wird die Prüfung übersprungen).
config.patch akzeptiert außerdem replacePaths, ein Array von Konfigurationspfaden, deren Array-Ersetzung
beabsichtigt ist. Wenn ein Patch ein vorhandenes Array durch eines mit weniger Einträgen ersetzen oder es
löschen würde, lehnt das Gateway den Schreibvorgang ab, sofern dieser genaue Pfad nicht in
replacePaths enthalten ist; verschachtelte Arrays innerhalb von Array-Einträgen verwenden [], beispielsweise
agents.entries.*.skills. Dadurch wird verhindert, dass verkürzte config.get-Snapshots
unbemerkt Routing- oder Zulassungslisten-Arrays überschreiben. Verwenden Sie config.apply, wenn die
gesamte Konfiguration ersetzt werden soll.
Umgebungsvariablen
OpenClaw liest Umgebungsvariablen aus dem übergeordneten Prozess sowie aus:
.envaus dem aktuellen Arbeitsverzeichnis (falls vorhanden)~/.openclaw/.env(globaler Rückgriff)
Keine der beiden Dateien überschreibt vorhandene Umgebungsvariablen. Sie können Umgebungsvariablen auch direkt in der Konfiguration festlegen:
{ env: { OPENROUTER_API_KEY: "sk-or-...", vars: { GROQ_API_KEY: "gsk-..." }, },}Import der Shell-Umgebung (optional)
Wenn diese Option aktiviert ist und erwartete Schlüssel nicht gesetzt sind, führt OpenClaw Ihre Anmelde-Shell aus und importiert nur die fehlenden Schlüssel:
{env: { shellEnv: { enabled: true, timeoutMs: 15000 },},}Entsprechende Umgebungsvariable: OPENCLAW_LOAD_SHELL_ENV=1. Standardwert für timeoutMs: 15000.
Ersetzung von Umgebungsvariablen in Konfigurationswerten
Verweisen Sie in einem beliebigen Zeichenfolgenwert der Konfiguration mit ${VAR_NAME} auf Umgebungsvariablen:
{gateway: { auth: { token: "${OPENCLAW_GATEWAY_TOKEN}" } },models: { providers: { custom: { apiKey: "${CUSTOM_API_KEY}" } } },}Regeln:
- Es werden nur Namen in Großbuchstaben berücksichtigt:
[A-Z_][A-Z0-9_]* - Fehlende oder leere Variablen lösen beim Laden einen Fehler aus
- Für eine literale Ausgabe mit
$${VAR}maskieren - Funktioniert innerhalb von
$include-Dateien - Inline-Ersetzung:
"${BASE}/v1"→"https://api.example.com/v1"
Geheimnisreferenzen (Umgebung, Datei, Ausführung)
Für Felder, die SecretRef-Objekte unterstützen, können Sie Folgendes verwenden:
{models: { providers: { openai: { apiKey: { source: "env", provider: "default", id: "OPENAI_API_KEY" } }, },},skills: { entries: { "image-lab": { apiKey: { source: "file", provider: "filemain", id: "/skills/entries/image-lab/apiKey", }, }, },},channels: { googlechat: { serviceAccount: { source: "exec", provider: "vault", id: "channels/googlechat/serviceAccount", }, },},}Details zu SecretRef (einschließlich secrets.providers für env/file/exec) finden Sie unter Verwaltung von Geheimnissen.
Unterstützte Anmeldedatenpfade sind unter SecretRef-Anmeldedatenoberfläche aufgeführt.
Die vollständige Rangfolge und alle Quellen finden Sie unter Umgebung.
Vollständige Referenz
Die vollständige Referenz für jedes einzelne Feld finden Sie in der Konfigurationsreferenz.
Zugehörige Themen: Konfigurationsbeispiele · Konfigurationsreferenz · Doctor