Doctor
openclaw doctor ist das Reparatur- und Migrationstool fĂŒr OpenClaw. Es behebt veraltete
Konfigurationen/ZustĂ€nde, prĂŒft die Systemgesundheit und liefert umsetzbare Reparaturschritte.
Schnellstart
openclaw doctor
Headless / Automatisierung
openclaw doctor --yes
Akzeptiert Standardeinstellungen ohne RĂŒckfrage (einschlieĂlich Neustart-/Service-/Sandbox-Reparaturschritte, wenn anwendbar).
openclaw doctor --repair
Wendet empfohlene Reparaturen ohne RĂŒckfrage an (Reparaturen + Neustarts, wenn sicher).
openclaw doctor --repair --force
Wendet auch aggressive Reparaturen an (ĂŒberschreibt benutzerdefinierte Supervisor-Konfigurationen).
openclaw doctor --non-interactive
LĂ€uft ohne RĂŒckfragen und wendet nur sichere Migrationen an (Konfigurations-Normalisierung + Verschiebung von On-Disk-State). Ăberspringt Neustart-/Service-/Sandbox-Aktionen, die menschliche BestĂ€tigung erfordern. Legacy-State-Migrationen laufen automatisch, wenn sie erkannt werden.
openclaw doctor --deep
Durchsucht Systemdienste nach zusÀtzlichen Gateway-Installationen (launchd/systemd/schtasks).
Um Ănderungen vor dem Schreiben zu ĂŒberprĂŒfen, öffne zuerst die Konfigurationsdatei:
cat ~/.openclaw/openclaw.json
Was es macht (Zusammenfassung)
- Optionaler Pre-Flight-Update fĂŒr Git-Installationen (nur interaktiv).
- UI-Protokoll-AktualitĂ€tsprĂŒfung (baut Control UI neu, wenn das Protokoll-Schema neuer ist).
- GesundheitsprĂŒfung + Neustart-Aufforderung.
- Skills-Status-Zusammenfassung (berechtigt/fehlend/blockiert).
- Konfigurations-Normalisierung fĂŒr Legacy-Werte.
- OpenCode-Provider-Override-Warnungen (
models.providers.opencode/models.providers.opencode-go). - Legacy-On-Disk-State-Migration (Sessions/Agent-Verzeichnis/WhatsApp-Auth).
- Legacy-Cron-Store-Migration (
jobId,schedule.cron, Top-Level-Delivery/Payload-Felder, Payloadprovider, einfachenotify: trueWebhook-Fallback-Jobs). - State-IntegritĂ€ts- und BerechtigungsprĂŒfungen (Sessions, Transkripte, State-Verzeichnis).
- Konfigurations-DateiberechtigungsprĂŒfungen (chmod 600) bei lokalem Betrieb.
- Modell-Auth-Gesundheit: prĂŒft OAuth-Ablauf, kann ablaufende Token erneuern und meldet Auth-Profil-Cooldown-/Disabled-ZustĂ€nde.
- Erkennung zusÀtzlicher Workspace-Verzeichnisse (
~/openclaw). - Sandbox-Image-Reparatur wenn Sandboxing aktiviert ist.
- Legacy-Service-Migration und Erkennung zusÀtzlicher Gateways.
- Gateway-LaufzeitprĂŒfungen (Service installiert aber nicht laufend; gecachtes launchd-Label).
- Kanal-Status-Warnungen (vom laufenden Gateway abgefragt).
- Supervisor-Konfigurations-Audit (launchd/systemd/schtasks) mit optionaler Reparatur.
- Gateway-Laufzeit-Best-Practice-PrĂŒfungen (Node vs. Bun, Version-Manager-Pfade).
- Gateway-Port-Kollisionsdiagnose (Standard
18789). - Sicherheitswarnungen fĂŒr offene DM-Policies.
- Gateway-Auth-PrĂŒfungen fĂŒr lokalen Token-Modus (bietet Token-Generierung an, wenn keine Token-Quelle existiert; ĂŒberschreibt keine Token-SecretRef-Konfigurationen).
- systemd-Linger-PrĂŒfung unter Linux.
- Source-Install-PrĂŒfungen (pnpm-Workspace-Mismatch, fehlende UI-Assets, fehlende tsx-Binary).
- Schreibt aktualisierte Konfiguration + Wizard-Metadaten.
Detailliertes Verhalten und BegrĂŒndung
0) Optionales Update (Git-Installationen)
Wenn es sich um einen Git-Checkout handelt und doctor interaktiv lÀuft, bietet es an, vor dem Doctor-Lauf zu aktualisieren (fetch/rebase/build).
1) Konfigurations-Normalisierung
Falls die Konfiguration Legacy-Wertformen enthÀlt (z. B. messages.ackReaction
ohne kanalspezifischen Override), normalisiert doctor diese in das aktuelle Schema.
2) Legacy-Konfigurations-Key-Migrationen
Wenn die Konfiguration veraltete SchlĂŒssel enthĂ€lt, verweigern andere Befehle die AusfĂŒhrung und
bitten dich, openclaw doctor auszufĂŒhren.
Doctor wird:
- ErklĂ€ren, welche Legacy-SchlĂŒssel gefunden wurden.
- Die angewandte Migration anzeigen.
~/.openclaw/openclaw.jsonmit dem aktualisierten Schema neu schreiben.
Das Gateway fĂŒhrt Doctor-Migrationen auch automatisch beim Start aus, wenn es ein Legacy-Konfigurationsformat erkennt, sodass veraltete Konfigurationen ohne manuelles Eingreifen repariert werden.
Aktuelle Migrationen:
routing.allowFromâchannels.whatsapp.allowFromrouting.groupChat.requireMentionâchannels.whatsapp/telegram/imessage.groups."*".requireMentionrouting.groupChat.historyLimitâmessages.groupChat.historyLimitrouting.groupChat.mentionPatternsâmessages.groupChat.mentionPatternsrouting.queueâmessages.queuerouting.bindingsâ Top-Levelbindingsrouting.agents/routing.defaultAgentIdâagents.list+agents.list[].defaultrouting.agentToAgentâtools.agentToAgentrouting.transcribeAudioâtools.media.audio.modelsbindings[].match.accountIDâbindings[].match.accountId- FĂŒr KanĂ€le mit benannten
accountsaber fehlendemaccounts.defaultwerden kontobezogene Top-Level-Einzelkonto-Kanalwerte bei Vorhandensein nachchannels.<channel>.accounts.defaultverschoben identityâagents.list[].identityagent.*âagents.defaults+tools.*(tools/elevated/exec/sandbox/subagents)agent.model/allowedModels/modelAliases/modelFallbacks/imageModelFallbacksâagents.defaults.models+agents.defaults.model.primary/fallbacks+agents.defaults.imageModel.primary/fallbacksbrowser.ssrfPolicy.allowPrivateNetworkâbrowser.ssrfPolicy.dangerouslyAllowPrivateNetwork
Doctor-Warnungen enthalten auch Account-Default-Hinweise fĂŒr Multi-Account-KanĂ€le:
- Wenn zwei oder mehr
channels.<channel>.accounts-EintrÀge konfiguriert sind, ohne dasschannels.<channel>.defaultAccountoderaccounts.defaultgesetzt ist, warnt doctor, dass Fallback-Routing ein unerwartetes Konto wÀhlen kann. - Wenn
channels.<channel>.defaultAccountauf eine unbekannte Account-ID gesetzt ist, warnt doctor und listet die konfigurierten Account-IDs auf.
2b) OpenCode-Provider-Overrides
Wenn du models.providers.opencode, opencode-zen oder opencode-go manuell hinzugefĂŒgt hast, ĂŒberschreibt das den eingebauten OpenCode-Katalog von @mariozechner/pi-ai.
Das kann Modelle auf die falsche API zwingen oder Kosten auf Null setzen. Doctor warnt, damit du
den Override entfernen und das Pro-Modell-API-Routing + Kosten wiederherstellen kannst.
3) Legacy-State-Migrationen (Disk-Layout)
Doctor kann Àltere On-Disk-Layouts in die aktuelle Struktur migrieren:
- Sessions-Store + Transkripte:
- von
~/.openclaw/sessions/nach~/.openclaw/agents/<agentId>/sessions/
- von
- Agent-Verzeichnis:
- von
~/.openclaw/agent/nach~/.openclaw/agents/<agentId>/agent/
- von
- WhatsApp-Auth-State (Baileys):
- von Legacy
~/.openclaw/credentials/*.json(auĂeroauth.json) - nach
~/.openclaw/credentials/whatsapp/<accountId>/...(Standard-Account-ID:default)
- von Legacy
Diese Migrationen sind Best-Effort und idempotent; doctor gibt Warnungen aus, wenn
Legacy-Ordner als Backups zurĂŒckbleiben. Gateway/CLI migrieren automatisch
den Legacy-Sessions- + Agent-Ordner beim Start, sodass History/Auth/Models im
Per-Agent-Pfad landen, ohne einen manuellen Doctor-Lauf. WhatsApp-Auth wird absichtlich nur
ĂŒber openclaw doctor migriert.
3b) Legacy-Cron-Store-Migrationen
Doctor prĂŒft auch den Cron-Job-Store (~/.openclaw/cron/jobs.json standardmĂ€Ăig,
oder cron.store wenn ĂŒberschrieben) auf alte Job-Shapes, die der Scheduler aus
KompatibilitĂ€tsgrĂŒnden noch akzeptiert.
Aktuelle Cron-Bereinigungen:
jobIdâidschedule.cronâschedule.expr- Top-Level-Payload-Felder (
message,model,thinking, âŠ) âpayload - Top-Level-Delivery-Felder (
deliver,channel,to,provider, âŠ) âdelivery - Payload-
provider-Delivery-Aliase â explizitesdelivery.channel - Einfache Legacy-
notify: true-Webhook-Fallback-Jobs â explizitesdelivery.mode="webhook"mitdelivery.to=cron.webhook
Doctor migriert notify: true-Jobs nur automatisch, wenn es ohne VerhaltensÀnderung möglich ist.
Wenn ein Job einen Legacy-Notify-Fallback mit einem bestehenden Nicht-Webhook-Delivery-Modus kombiniert,
warnt doctor und ĂŒberlĂ€sst diesen Job der manuellen ĂberprĂŒfung.
4) State-IntegritĂ€tsprĂŒfungen (Session-Persistenz, Routing und Sicherheit)
Das State-Verzeichnis ist das operative Hirnstamm-Ăquivalent. Geht es verloren, verlierst du Sessions, Credentials, Logs und Konfiguration (sofern keine Backups anderswo existieren).
Doctor prĂŒft:
- State-Verzeichnis fehlt: Warnt vor katastrophalem State-Verlust, bietet an, das Verzeichnis neu zu erstellen, und erinnert daran, dass fehlende Daten nicht wiederhergestellt werden können.
- State-Verzeichnis-Berechtigungen: PrĂŒft Schreibbarkeit; bietet Berechtigungsreparatur an (und gibt einen
chown-Hinweis aus, wenn ein EigentĂŒmer/Gruppen-Mismatch erkannt wird). - macOS-Cloud-Sync-State-Verzeichnis: Warnt, wenn der State unter iCloud Drive (
~/Library/Mobile Documents/com~apple~CloudDocs/...) oder~/Library/CloudStorage/...aufgelöst wird, da sync-basierte Pfade langsameres I/O und Lock-/Sync-Races verursachen können. - Linux-SD- oder eMMC-State-Verzeichnis: Warnt, wenn der State auf eine
mmcblk*-Mount-Source zeigt, da SD- oder eMMC-basiertes Random-I/O langsamer sein kann und unter Session- und Credential-SchreibvorgĂ€ngen schneller verschleiĂt. - Session-Verzeichnisse fehlen:
sessions/und das Session-Store-Verzeichnis werden benötigt, um History zu persistieren undENOENT-AbstĂŒrze zu vermeiden. - Transkript-Mismatch: Warnt, wenn aktuelle Session-EintrĂ€ge fehlende Transkript-Dateien haben.
- Haupt-Session â1-Zeilen-JSONLâ: Markiert, wenn das Haupttranskript nur eine Zeile hat (History sammelt sich nicht an).
- Mehrere State-Verzeichnisse: Warnt, wenn mehrere
~/.openclaw-Ordner ĂŒber Home-Verzeichnisse hinweg existieren oder wennOPENCLAW_STATE_DIRanderswohin zeigt (History kann sich zwischen Installationen aufteilen). - Remote-Modus-Erinnerung: Wenn
gateway.mode=remote, erinnert doctor daran, den Befehl auf dem Remote-Host auszufĂŒhren (der State liegt dort). - Konfigurationsdatei-Berechtigungen: Warnt, wenn
~/.openclaw/openclaw.jsongruppen-/weltweit lesbar ist und bietet an, auf600zu verschÀrfen.
5) Modell-Auth-Gesundheit (OAuth-Ablauf)
Doctor prĂŒft OAuth-Profile im Auth-Store, warnt wenn Token ablaufen/abgelaufen sind
und kann sie erneuern, wenn es sicher ist. Bei veraltetem Anthropic-Claude-Code-Profil
schlĂ€gt es vor, claude setup-token auszufĂŒhren (oder einen Setup-Token einzufĂŒgen).
Erneuerungs-Prompts erscheinen nur bei interaktiver AusfĂŒhrung (TTY); --non-interactive
ĂŒberspringt Erneuerungsversuche.
Doctor meldet auch Auth-Profile, die vorĂŒbergehend nicht nutzbar sind aufgrund von:
- kurzen Cooldowns (Rate-Limits/Timeouts/Auth-Fehler)
- lÀngeren Deaktivierungen (Billing-/Credit-Fehler)
6) Hooks-Modell-Validierung
Wenn hooks.gmail.model gesetzt ist, validiert doctor die Modellreferenz gegen den
Katalog und die Allowlist und warnt, wenn sie nicht aufgelöst werden kann oder nicht erlaubt ist.
7) Sandbox-Image-Reparatur
Wenn Sandboxing aktiviert ist, prĂŒft doctor Docker-Images und bietet an, sie zu bauen oder zu Legacy-Namen zu wechseln, falls das aktuelle Image fehlt.
8) Gateway-Service-Migrationen und AufrÀumhinweise
Doctor erkennt Legacy-Gateway-Services (launchd/systemd/schtasks) und bietet an, sie zu entfernen und den OpenClaw-Service mit dem aktuellen Gateway-Port zu installieren. Es kann auch nach zusĂ€tzlichen Gateway-Ă€hnlichen Services suchen und AufrĂ€umhinweise ausgeben. Profilbenannte OpenClaw-Gateway-Services gelten als erstklassig und werden nicht als âzusĂ€tzlichâ markiert.
9) Sicherheitswarnungen
Doctor gibt Warnungen aus, wenn ein Anbieter ohne Allowlist fĂŒr DMs offen ist oder wenn eine Policy gefĂ€hrlich konfiguriert ist.
10) systemd-Linger (Linux)
Bei AusfĂŒhrung als systemd-User-Service stellt doctor sicher, dass Lingering aktiviert ist, damit das Gateway nach dem Logout weiterlĂ€uft.
11) Skills-Status
Doctor gibt eine kurze Zusammenfassung der berechtigten/fehlenden/blockierten Skills fĂŒr den aktuellen Workspace aus.
12) Gateway-Auth-PrĂŒfungen (lokaler Token)
Doctor prĂŒft die lokale Gateway-Token-Auth-Bereitschaft.
- Wenn der Token-Modus einen Token benötigt und keine Token-Quelle existiert, bietet doctor an, einen zu generieren.
- Wenn
gateway.auth.tokenper SecretRef verwaltet wird, aber nicht verfĂŒgbar ist, warnt doctor und ĂŒberschreibt ihn nicht mit Klartext. openclaw doctor --generate-gateway-tokenerzwingt die Generierung nur, wenn kein Token-SecretRef konfiguriert ist.
12b) Read-Only-SecretRef-bewusste Reparaturen
Einige Reparatur-Flows mĂŒssen konfigurierte Credentials prĂŒfen, ohne das Laufzeit-Fail-Fast-Verhalten zu schwĂ€chen.
openclaw doctor --fixverwendet jetzt dasselbe Read-Only-SecretRef-Summary-Modell wie Status-Family-Befehle fĂŒr gezielte Konfigurations-Reparaturen.- Beispiel: Telegram-
allowFrom-/groupAllowFrom-@username-Reparatur versucht, konfigurierte Bot-Credentials zu verwenden, wenn verfĂŒgbar. - Wenn das Telegram-Bot-Token per SecretRef konfiguriert, aber im aktuellen Befehlspfad nicht verfĂŒgbar ist, meldet doctor, dass das Credential konfiguriert-aber-nicht-verfĂŒgbar ist und ĂŒberspringt die Auto-Auflösung, anstatt abzustĂŒrzen oder das Token fĂ€lschlich als fehlend zu melden.
13) Gateway-GesundheitsprĂŒfung + Neustart
Doctor fĂŒhrt eine GesundheitsprĂŒfung durch und bietet an, das Gateway neu zu starten, wenn es ungesund wirkt.
14) Kanal-Status-Warnungen
Wenn das Gateway gesund ist, fĂŒhrt doctor einen Kanal-Status-Probe durch und meldet Warnungen mit LösungsvorschlĂ€gen.
15) Supervisor-Konfigurations-Audit + Reparatur
Doctor prĂŒft die installierte Supervisor-Konfiguration (launchd/systemd/schtasks) auf fehlende oder veraltete Standardwerte (z. B. systemd-network-online-AbhĂ€ngigkeiten und Neustartverzögerung). Bei Abweichungen empfiehlt es ein Update und kann die Service-Datei/Task auf die aktuellen Standards umschreiben.
Hinweise:
openclaw doctorfragt vor dem Umschreiben der Supervisor-Konfiguration nach.openclaw doctor --yesakzeptiert die Standard-Reparatur-Prompts.openclaw doctor --repairwendet empfohlene Fixes ohne Prompts an.openclaw doctor --repair --forceĂŒberschreibt benutzerdefinierte Supervisor-Konfigurationen.- Wenn Token-Auth einen Token erfordert und
gateway.auth.tokenper SecretRef verwaltet wird, validiert doctor den SecretRef beim Service-Install/Reparatur, persistiert aber keine aufgelösten Klartext-Token-Werte in Supervisor-Service-Umgebungsmetadaten. - Wenn Token-Auth einen Token erfordert und der konfigurierte Token-SecretRef nicht aufgelöst werden kann, blockiert doctor den Install-/Reparatur-Pfad mit umsetzbarer Anleitung.
- Wenn sowohl
gateway.auth.tokenals auchgateway.auth.passwordkonfiguriert sind undgateway.auth.modenicht gesetzt ist, blockiert doctor Install/Reparatur bis der Modus explizit gesetzt wird. - FĂŒr Linux-User-systemd-Units prĂŒft doctor Token-Drift jetzt sowohl
Environment=als auchEnvironmentFile=-Quellen beim Vergleich von Service-Auth-Metadaten. - Du kannst jederzeit ein vollstÀndiges Umschreiben erzwingen mit
openclaw gateway install --force.
16) Gateway-Laufzeit + Port-Diagnose
Doctor prĂŒft die Service-Laufzeit (PID, letzter Exit-Status) und warnt, wenn der
Service installiert aber nicht tatsĂ€chlich laufend ist. Es prĂŒft auch auf Port-Kollisionen
am Gateway-Port (Standard 18789) und meldet wahrscheinliche Ursachen (Gateway bereits
laufend, SSH-Tunnel).
17) Gateway-Laufzeit-Best-Practices
Doctor warnt, wenn der Gateway-Service unter Bun oder einem Version-Manager-Node-Pfad
(nvm, fnm, volta, asdf usw.) lÀuft. WhatsApp- + Telegram-KanÀle erfordern Node,
und Version-Manager-Pfade können nach Upgrades brechen, weil der Service deine Shell-Init
nicht lÀdt. Doctor bietet an, zu einer System-Node-Installation zu migrieren, wenn
verfĂŒgbar (Homebrew/apt/choco).
18) Konfigurations-Schreiben + Wizard-Metadaten
Doctor persistiert alle KonfigurationsÀnderungen und setzt Wizard-Metadaten, um den Doctor-Lauf zu protokollieren.
19) Workspace-Tipps (Backup + Memory-System)
Doctor schlÀgt ein Workspace-Memory-System vor, wenn es fehlt, und gibt einen Backup-Tipp aus, falls der Workspace noch nicht unter Git steht.
Siehe /concepts/agent-workspace fĂŒr einen vollstĂ€ndigen Guide zur Workspace-Struktur und Git-Backup (empfohlen: privates GitHub oder GitLab).