openclaw doctor is de reparatie- en migratietool voor OpenClaw. Deze herstelt verouderde configuratie/status, controleert de gezondheid en biedt uitvoerbare reparatiestappen.
Snel starten
Headless- en automatiseringsmodi
- --yes
- --fix
- --lint
- --fix --force
- --non-interactive
- --deep
Alleen-lezen lintmodus
openclaw doctor --lint is de automatiseringsvriendelijke tegenhanger van
openclaw doctor --fix. Beide gebruiken gezondheidscontroles van doctor, maar hun houding is
anders:
| Modus | Prompts | Schrijft configuratie/status | Uitvoer | Gebruik dit voor |
|---|---|---|---|---|
openclaw doctor | ja | nee | vriendelijk gezondheidsrapport | een mens die de status controleert |
openclaw doctor --fix | soms | ja, met reparatiebeleid | vriendelijk reparatielog | goedgekeurde reparaties toepassen |
openclaw doctor --lint | nee | nee | gestructureerde bevindingen | CI, preflight en reviewpoorten |
repair()-implementatie bieden.
doctor --fix past die reparaties toe wanneer ze bestaan en blijft de
bestaande doctor-reparatiestroom gebruiken voor controles die nog niet zijn gemigreerd.
Het gestructureerde reparatiecontract scheidt ook reparagerapportage van detectie:
detect() rapporteert huidige bevindingen, terwijl repair() wijzigingen,
configuratie-/bestandsdiffs en niet-bestandsgebonden neveneffecten kan rapporteren. Dat houdt het migratiepad open
voor toekomstige doctor --fix --dry-run- en diff-uitvoer zonder lintcontroles
mutaties te laten plannen.
Voorbeelden:
ok: of een zichtbare bevinding aan de geselecteerde ernstgrens voldeedchecksRun: aantal uitgevoerde gezondheidscontroleschecksSkipped: controles overgeslagen door het geselecteerde profiel,--onlyof--skipfindings: gestructureerde diagnostiek metcheckId,severity,messageen optioneelpath,line,column,ocPathenfixHint
0: geen bevindingen op of boven de geselecteerde grens1: een of meer bevindingen voldeden aan de geselecteerde grens2: opdracht-/runtimefout voordat lintbevindingen konden worden uitgevoerd
--severity-min info|warning|error om te bepalen wat wordt afgedrukt en wat
een niet-nul lint-exit veroorzaakt. Gebruik --all om de volledige lintinventaris uit te voeren,
inclusief diepere opt-in-controles die van de standaard automatiseringsset zijn uitgesloten. Gebruik --only <id> voor smalle preflight-poorten en
--skip <id> om een rumoerige controle tijdelijk uit te sluiten terwijl de rest van de
lint-run actief blijft.
Lint-uitvoeropties zoals --json, --severity-min, --all, --only en
--skip moeten worden gecombineerd met --lint; normale doctor- en reparatieruns weigeren
ze.
Wat het doet (samenvatting)
Gezondheid, UI en updates
Gezondheid, UI en updates
- Optionele preflight-update voor git-installaties (alleen interactief).
- Versheidscontrole van UI-protocol (bouwt Control UI opnieuw wanneer het protocolschema nieuwer is).
- Gezondheidscontrole + herstartprompt.
- Skills-statussamenvatting (geschikt/ontbrekend/geblokkeerd) en Plugin-status.
Configuratie en migraties
Configuratie en migraties
- Configuratienormalisatie voor verouderde waarden.
- Talk-configuratiemigratie van verouderde platte
talk.*-velden naartalk.provider+talk.providers.<provider>. - Browsermigratiecontroles voor verouderde Chrome-extensieconfiguraties en Chrome MCP-gereedheid.
- Waarschuwingen voor OpenCode-provideroverschrijvingen (
models.providers.opencode/models.providers.opencode-go). - Migratie van verouderde OpenAI Codex-provider/-profiel (
openai-codex→openai) en schaduwwaarschuwingen voor verouderdemodels.providers.openai-codex. - Controle van OAuth TLS-vereisten voor OpenAI Codex OAuth-profielen.
- Waarschuwingen voor Plugin-/tool-allowlists wanneer
plugins.allowbeperkend is, maar het toolbeleid nog steeds om wildcard- of Plugin-eigen tools vraagt. - Migratie van verouderde status op schijf (sessions/agent dir/WhatsApp-auth).
- Migratie van verouderde contractsleutels in Plugin-manifest (
speechProviders,realtimeTranscriptionProviders,realtimeVoiceProviders,mediaUnderstandingProviders,imageGenerationProviders,videoGenerationProviders,webFetchProviders,webSearchProviders→contracts). - Migratie van verouderde cron-opslag (
jobId,schedule.cron, top-level delivery/payload-velden, payloadprovider,notify: truewebhook-fallbacktaken). - Opschoning van verouderd runtimebeleid voor volledige agents; provider-/modelruntimebeleid is de actieve routekiezer.
- Opschoning van verouderde Plugin-configuratie wanneer plugins zijn ingeschakeld; wanneer
plugins.enabled=false, worden verouderde Plugin-verwijzingen behandeld als inerte containmentconfiguratie en behouden.
Status en integriteit
Status en integriteit
- Inspectie van sessievergrendelingsbestanden en opschoning van verouderde vergrendelingen.
- Reparatie van sessietranscripten voor dubbele prompt-herschrijftakken die zijn gemaakt door getroffen 2026.4.24-builds.
- Detectie van vastgelopen subagent-herstarthersteltombstones, met
--fix-ondersteuning voor het wissen van verouderde afgebroken herstelvlaggen zodat opstarten het kind niet als herstart-afgebroken blijft behandelen. - Statusintegriteits- en machtigingscontroles (sessies, transcripties, statusmap).
- Machtigingscontroles voor configuratiebestanden (chmod 600) wanneer lokaal uitgevoerd.
- Model-auth-gezondheid: controleert OAuth-verloop, kan bijna verlopende tokens verversen en rapporteert cooldown-/uitgeschakelde statussen van auth-profielen.
Gateway, services en supervisors
Gateway, services en supervisors
- Reparatie van sandbox-image wanneer sandboxing is ingeschakeld.
- Migratie van verouderde services en detectie van extra Gateway.
- Migratie van verouderde Matrix-kanaalstatus (in
--fix/--repair-modus). - Gateway-runtimecontroles (service geïnstalleerd maar niet actief; gecachet launchd-label).
- Kanaalstatuswaarschuwingen (gepeild vanuit de actieve Gateway).
- Kanaalspecifieke machtigingscontroles staan onder
openclaw channels capabilities; Discord-spraakkanaalmachtigingen worden bijvoorbeeld gecontroleerd metopenclaw channels capabilities --channel discord --target channel:<channel-id>. - WhatsApp-responsiviteitscontroles voor verslechterde Gateway-event-loopgezondheid terwijl lokale TUI-clients nog draaien;
--fixstopt alleen geverifieerde lokale TUI-clients. - Codex-routereparatie voor verouderde
openai-codex/*-modelrefs in primaire modellen, fallbacks, beeld-/videogeneratiemodellen, heartbeat-/subagent-/compaction-overschrijvingen, hooks, kanaalmodeloverschrijvingen en sessieroutepins;--fixherschrijft ze naaropenai/*, migreertopenai-codex:*-authprofielen/-volgorde naaropenai:*, verwijdert verouderde sessie-/volledige-agentruntimepins en laat canonieke OpenAI-agentrefs op de standaard Codex-harness staan. - Audit van supervisorconfiguratie (launchd/systemd/schtasks) met optionele reparatie.
- Opschoning van ingesloten proxyomgeving voor Gateway-services die shell-waarden
HTTP_PROXY/HTTPS_PROXY/NO_PROXYhebben vastgelegd tijdens installatie of update. - Best-practicecontroles voor Gateway-runtime (Node versus Bun, paden van versiebeheerders).
- Diagnostiek voor Gateway-poortconflicten (standaard
18789).
Auth, beveiliging en koppeling
Auth, beveiliging en koppeling
- Beveiligingswaarschuwingen voor open DM-beleid.
- Gateway-auth-controles voor lokale tokenmodus (biedt tokengeneratie wanneer er geen tokenbron bestaat; overschrijft geen token SecretRef-configuraties).
- Detectie van problemen met apparaatkoppeling (lopende eerste koppelverzoeken, lopende rol-/scope-upgrades, verouderde drift in lokale apparaat-token-cache en auth-drift in gekoppelde records).
Werkruimte en shell
Werkruimte en shell
- systemd-lingercontrole op Linux.
- Controle van de grootte van werkruimte-bootstrapbestanden (waarschuwingen voor afkapping/bijna-limiet voor contextbestanden).
- Skills-gereedheidscontrole voor de standaardagent; rapporteert toegestane skills met ontbrekende bins, env, config of OS-vereisten, en
--fixkan niet-beschikbare skills uitschakelen inskills.entries. - Statuscontrole en automatische installatie/upgrade van shell-aanvulling.
- Gereedheidscontrole van embeddingprovider voor geheugenzoekopdrachten (lokaal model, externe API-sleutel of QMD-binary).
- Controles voor broninstallatie (pnpm-werkruimtemismatch, ontbrekende UI-assets, ontbrekende tsx-binary).
- Schrijft bijgewerkte configuratie + wizardmetadata.
Dreams UI-backfill en reset
De Dreams-scène van Control UI bevat acties Backfill, Reset en Clear Grounded voor de grounded dreaming-workflow. Deze acties gebruiken doctor-achtige RPC-methoden van de Gateway, maar ze maken geen deel uit van de reparatie/migratie via deopenclaw doctor CLI.
Wat ze doen:
- Backfill scant historische
memory/YYYY-MM-DD.md-bestanden in de actieve werkruimte, voert de grounded REM-dagboekpass uit en schrijft omkeerbare backfill-vermeldingen naarDREAMS.md. - Reset verwijdert alleen die gemarkeerde backfill-dagboekvermeldingen uit
DREAMS.md. - Clear Grounded verwijdert alleen gestagede grounded-only kortetermijnvermeldingen die uit historische replay kwamen en nog geen live recall of dagelijkse ondersteuning hebben opgebouwd.
- ze bewerken
MEMORY.mdniet - ze voeren geen volledige doctor-migraties uit
- ze stagen grounded kandidaten niet automatisch naar de live kortetermijnpromotieopslag, tenzij je eerst expliciet het gestagede CLI-pad uitvoert
DREAMS.md het review-oppervlak blijft.
Gedetailleerd gedrag en onderbouwing
0. Optionele update (git-installaties)
0. Optionele update (git-installaties)
1. Configuratienormalisatie
1. Configuratienormalisatie
messages.ackReaction zonder een kanaalspecifieke overschrijving), normaliseert doctor deze naar het huidige schema.Dat omvat verouderde platte Talk-velden. De huidige publieke Talk-spraakconfiguratie is talk.provider + talk.providers.<provider>, en realtime stemconfiguratie is talk.realtime.*. Doctor herschrijft oude vormen talk.voiceId / talk.voiceAliases / talk.modelId / talk.outputFormat / talk.apiKey naar de providermap, en herschrijft verouderde top-level realtime-selectors (talk.mode, talk.transport, talk.brain, talk.model, talk.voice) naar talk.realtime.Doctor waarschuwt ook wanneer plugins.allow niet leeg is en het toolbeleid
wildcard- of plugin-eigen toolvermeldingen gebruikt. tools.allow: ["*"] matcht alleen tools
van plugins die daadwerkelijk laden; het omzeilt de exclusieve plugin-allowlist niet.2. Migraties van verouderde configuratiesleutels
2. Migraties van verouderde configuratiesleutels
openclaw doctor uit te voeren.Doctor zal:- Uitleggen welke verouderde sleutels zijn gevonden.
- De toegepaste migratie tonen.
~/.openclaw/openclaw.jsonherschrijven met het bijgewerkte schema.
openclaw doctor --fix uit te voeren; het herschrijft openclaw.json niet bij het opstarten. Migraties van de Cron-taakopslag worden ook afgehandeld door openclaw doctor --fix.Huidige migraties:routing.allowFrom→channels.whatsapp.allowFromrouting.groupChat.requireMention→channels.whatsapp/telegram/imessage.groups."*".requireMentionrouting.groupChat.historyLimit→messages.groupChat.historyLimitrouting.groupChat.mentionPatterns→messages.groupChat.mentionPatternschannels.telegram.requireMention→channels.telegram.groups."*".requireMention- verwijder gepensioneerde
channels.webchatengateway.webchat routing.queue→messages.queuerouting.bindings→ top-levelbindingsrouting.agents/routing.defaultAgentId→agents.list+agents.list[].default- verouderde
talk.voiceId/talk.voiceAliases/talk.modelId/talk.outputFormat/talk.apiKey→talk.provider+talk.providers.<provider> - verouderde top-level realtime Talk-selectors (
talk.mode/talk.transport/talk.brain/talk.model/talk.voice) +talk.provider/talk.providers→talk.realtime routing.agentToAgent→tools.agentToAgentrouting.transcribeAudio→tools.media.audio.modelsmessages.tts.<provider>(openai/elevenlabs/microsoft/edge) →messages.tts.providers.<provider>messages.tts.provider: "edge"enmessages.tts.providers.edge→messages.tts.provider: "microsoft"enmessages.tts.providers.microsoft- TTS-sprekerselectievelden (
voice/voiceName/voiceId) →speakerVoice/speakerVoiceId channels.discord.voice.tts.<provider>(openai/elevenlabs/microsoft/edge) →channels.discord.voice.tts.providers.<provider>channels.discord.accounts.<id>.voice.tts.<provider>(openai/elevenlabs/microsoft/edge) →channels.discord.accounts.<id>.voice.tts.providers.<provider>plugins.entries.voice-call.config.tts.<provider>(openai/elevenlabs/microsoft/edge) →plugins.entries.voice-call.config.tts.providers.<provider>plugins.entries.voice-call.config.tts.provider: "edge"enplugins.entries.voice-call.config.tts.providers.edge→provider: "microsoft"enproviders.microsoftplugins.entries.voice-call.config.provider: "log"→"mock"plugins.entries.voice-call.config.twilio.from→plugins.entries.voice-call.config.fromNumberplugins.entries.voice-call.config.streaming.sttProvider→plugins.entries.voice-call.config.streaming.providerplugins.entries.voice-call.config.streaming.openaiApiKey|sttModel|silenceDurationMs|vadThreshold→plugins.entries.voice-call.config.streaming.providers.openai.*bindings[].match.accountID→bindings[].match.accountId- Voor kanalen met benoemde
accountsmaar achtergebleven top-level kanaalwaarden voor één account, verplaats die account-scoped waarden naar het gepromoveerde account dat voor dat kanaal is gekozen (accounts.defaultvoor de meeste kanalen; Matrix kan een bestaand passend benoemd/standaarddoel behouden) 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/fallbacks- verwijder
agents.defaults.llm; gebruikmodels.providers.<id>.timeoutSecondsvoor trage provider-/model-time-outs en houd de agent-/run-time-out boven die waarde wanneer de hele run langer moet duren browser.ssrfPolicy.allowPrivateNetwork→browser.ssrfPolicy.dangerouslyAllowPrivateNetworkbrowser.profiles.*.driver: "extension"→"existing-session"- verwijder
browser.relayBindHost(verouderde extensie-relayinstelling) - verouderde
models.providers.*.api: "openai"→"openai-completions"(Gateway-start slaat ook providers over waarvanapiis ingesteld op een toekomstige of onbekende enumwaarde, in plaats van fail-closed te eindigen) - verwijder
plugins.entries.codex.config.codexDynamicToolsProfile; Codex app-server houdt Codex-native werkruimtetools altijd native
- Als twee of meer
channels.<channel>.accounts-vermeldingen zijn geconfigureerd zonderchannels.<channel>.defaultAccountofaccounts.default, waarschuwt doctor dat fallback-routering een onverwacht account kan kiezen. - Als
channels.<channel>.defaultAccountis ingesteld op een onbekende account-ID, waarschuwt doctor en vermeldt het de geconfigureerde account-ID’s.
2b. OpenCode-provideroverschrijvingen
2b. OpenCode-provideroverschrijvingen
models.providers.opencode, opencode-zen of opencode-go handmatig hebt toegevoegd, overschrijft dit de ingebouwde OpenCode-catalogus uit openclaw/plugin-sdk/llm. Daardoor kunnen modellen naar de verkeerde API worden gedwongen of kunnen kosten op nul worden gezet. Doctor waarschuwt zodat je de overschrijving kunt verwijderen en API-routering + kosten per model kunt herstellen.2c. Browsermigratie en gereedheid voor Chrome MCP
2c. Browsermigratie en gereedheid voor Chrome MCP
browser.profiles.*.driver: "extension"wordt"existing-session"browser.relayBindHostwordt verwijderd
defaultProfile: "user" of een geconfigureerd existing-session-profiel gebruikt:- controleert of Google Chrome op dezelfde host is geïnstalleerd voor standaardprofielen met automatisch verbinden
- controleert de gedetecteerde Chrome-versie en waarschuwt wanneer die lager is dan Chrome 144
- herinnert je eraan remote debugging in te schakelen op de browserinspectiepagina (bijvoorbeeld
chrome://inspect/#remote-debugging,brave://inspect/#remote-debuggingofedge://inspect/#remote-debugging)
- een Chromium-gebaseerde browser 144+ op de gateway-/node-host
- de browser die lokaal draait
- remote debugging ingeschakeld in die browser
- goedkeuring van de eerste attach-toestemmingsprompt in de browser
responsebody, PDF-export, downloadonderschepping en batchacties vereisen nog steeds een beheerde browser of raw CDP-profiel.Deze controle is niet van toepassing op Docker-, sandbox-, remote-browser- of andere headless flows. Die blijven raw CDP gebruiken.2d. OAuth TLS-vereisten
2d. OAuth TLS-vereisten
UNABLE_TO_GET_ISSUER_CERT_LOCALLY, verlopen certificaat of zelfondertekend certificaat), print doctor platformspecifieke herstelrichtlijnen. Op macOS met een Homebrew Node is de oplossing meestal brew postinstall ca-certificates. Met --deep draait de test zelfs als de gateway gezond is.2e. Codex OAuth-provideroverschrijvingen
2e. Codex OAuth-provideroverschrijvingen
models.providers.openai-codex hebt toegevoegd, kunnen die het ingebouwde Codex OAuth-providerpad overschaduwen dat nieuwere releases automatisch gebruiken. Doctor waarschuwt wanneer het die oude transportinstellingen naast Codex OAuth ziet, zodat je de verouderde transportoverschrijving kunt verwijderen of herschrijven en het ingebouwde routerings-/fallbackgedrag kunt terugkrijgen. Aangepaste proxy’s en overschrijvingen met alleen headers worden nog steeds ondersteund en activeren deze waarschuwing niet.2f. Codex-routereparatie
2f. Codex-routereparatie
openai-codex/*-modelrefs. Native Codex-harnessroutering gebruikt canonieke openai/*-modelrefs; OpenAI-agentbeurten lopen via de Codex app-server-harness in plaats van via het OpenClaw OpenAI-providerpad.In de modus --fix / --repair herschrijft doctor getroffen standaardagent- en per-agentrefs, inclusief primaire modellen, fallbacks, modellen voor beeld-/videogeneratie, heartbeat-/subagent-/compaction-overschrijvingen, hooks, kanaalmodeloverschrijvingen en verouderde opgeslagen sessieroutestatus:openai-codex/gpt-*wordtopenai/gpt-*.- Codex-intent verhuist naar provider-/model-scoped
agentRuntime.id: "codex"-vermeldingen voor gerepareerde agentmodelrefs. - Verouderde whole-agent runtimeconfiguratie en opgeslagen sessie-runtimepins worden verwijderd omdat runtimeselectie provider-/model-scoped is.
- Bestaand provider-/model-runtimebeleid blijft behouden, tenzij de gerepareerde verouderde modelref Codex-routering nodig heeft om het oude auth-pad te behouden.
- Bestaande model-fallbacklijsten blijven behouden met hun verouderde vermeldingen herschreven; gekopieerde per-modelinstellingen verhuizen van de verouderde sleutel naar de canonieke
openai/*-sleutel. - Opgeslagen sessie-
modelProvider/providerOverride,model/modelOverride, fallbackmeldingen en auth-profielpins worden gerepareerd in alle ontdekte agentsessieopslagen. /codex ...betekent “beheer of bind een native Codex-gesprek vanuit chat.”/acp ...ofruntime: "acp"betekent “gebruik de externe ACP/acpx-adapter.”
2g. Opschoning van sessieroutes
2g. Opschoning van sessieroutes
openclaw doctor --fix kan automatisch aangemaakte verouderde status wissen, zoals modelOverrideSource: "auto"-modelpins, runtime-modelmetadata, vastgezette harness-ID’s, CLI-sessiebindingen en automatische auth-profieloverschrijvingen wanneer hun eigenaarroute niet langer is geconfigureerd. Expliciete gebruikers- of verouderde sessiemodelkeuzes worden gemeld voor handmatige beoordeling en blijven onaangeraakt; wijzig ze met /model ..., /new of reset de sessie wanneer die route niet langer bedoeld is.3. Migraties van verouderde status (schijfindeling)
3. Migraties van verouderde status (schijfindeling)
- Sessiesopslag + transcripties:
- van
~/.openclaw/sessions/naar~/.openclaw/agents/<agentId>/sessions/
- van
- Agentmap:
- van
~/.openclaw/agent/naar~/.openclaw/agents/<agentId>/agent/
- van
- WhatsApp-authstatus (Baileys):
- van verouderde
~/.openclaw/credentials/*.json(behalveoauth.json) - naar
~/.openclaw/credentials/whatsapp/<accountId>/...(standaard account-ID:default)
- van verouderde
openclaw doctor gemigreerd. Talk-provider-/provider-mapnormalisatie vergelijkt nu op structurele gelijkheid, zodat verschillen die alleen uit sleutelvolgorde bestaan geen herhaalde no-op doctor --fix-wijzigingen meer veroorzaken.3a. Migraties van verouderde Plugin-manifesten
3a. Migraties van verouderde Plugin-manifesten
speechProviders, realtimeTranscriptionProviders, realtimeVoiceProviders, mediaUnderstandingProviders, imageGenerationProviders, videoGenerationProviders, webFetchProviders, webSearchProviders). Wanneer deze worden gevonden, biedt het aan ze naar het object contracts te verplaatsen en het manifestbestand ter plekke te herschrijven. Deze migratie is idempotent; als de sleutel contracts al dezelfde waarden heeft, wordt de verouderde sleutel verwijderd zonder de gegevens te dupliceren.3b. Migraties van verouderde cron-opslag
3b. Migraties van verouderde cron-opslag
~/.openclaw/cron/jobs.json, of cron.store wanneer overschreven) op oude taakvormen die de scheduler nog accepteert voor compatibiliteit.Huidige cron-opschoningen omvatten:jobId→idschedule.cron→schedule.expr- payloadvelden op topniveau (
message,model,thinking, …) →payload - bezorgingsvelden op topniveau (
deliver,channel,to,provider, …) →delivery - payload-
provider-bezorgingsaliassen → explicietedelivery.channel - verouderde
notify: trueWebhook-fallbacktaken → expliciete Webhook-bezorging vanuitcron.webhookwanneer ingesteld; aankondigingstaken behouden hun chatbezorging en krijgendelivery.completionDestination. Wanneercron.webhookniet is ingesteld, wordt de inertenotify-markering op topniveau verwijderd voor taken zonder doel (bestaande bezorging, inclusief aankondiging, blijft behouden), omdat runtime-bezorging deze nooit leest
jobs-quarantine.json naast de actieve opslag voordat ze uit jobs.json worden verwijderd; doctor rapporteert in quarantaine geplaatste rijen zodat je ze handmatig kunt beoordelen of repareren.Bij het opstarten normaliseert de Gateway de runtime-projectie en negeert de notify-markering op topniveau, maar laat de opgeslagen cron-configuratie staan voor reparatie door doctor. Wanneer cron.webhook niet is ingesteld, verwijdert doctor de inerte markering voor taken zonder migratiedoel (delivery.mode none/afwezig, een onbruikbaar Webhook-doel, of bestaande aankondigings-/chatbezorging), waarbij de bestaande bezorging ongemoeid blijft, zodat herhaalde doctor --fix-runs niet langer opnieuw waarschuwen over dezelfde taak. Als cron.webhook is ingesteld maar geen geldige HTTP(S)-URL is, waarschuwt doctor nog steeds en laat het de markering staan zodat je de URL kunt herstellen.Op Linux waarschuwt doctor ook wanneer de crontab van de gebruiker nog steeds het verouderde ~/.openclaw/bin/ensure-whatsapp.sh aanroept. Dat host-lokale script wordt niet onderhouden door de huidige OpenClaw en kan onjuiste Gateway inactive-berichten schrijven naar ~/.openclaw/logs/whatsapp-health.log wanneer cron de systemd-gebruikersbus niet kan bereiken. Verwijder de verouderde crontab-vermelding met crontab -e; gebruik openclaw channels status --probe, openclaw doctor en openclaw gateway status voor huidige gezondheidscontroles.3c. Opschoning van sessievergrendelingen
3c. Opschoning van sessievergrendelingen
--fix / --repair verwijdert het automatisch vergrendelingen met dode, verweesde, hergebruikte, misvormd-oude of niet-OpenClaw-eigenaars. Oude vergrendelingen die nog steeds eigendom zijn van een live OpenClaw-proces worden gerapporteerd maar blijven staan, zodat doctor geen actieve transcriptieschrijver onderbreekt.3d. Reparatie van sessietranscript-branches
3d. Reparatie van sessietranscript-branches
--fix / --repair maakt doctor naast het origineel een back-up van elk getroffen bestand en herschrijft het transcript naar de actieve branch, zodat Gateway-geschiedenis en geheugenlezers geen dubbele beurten meer zien.4. Integriteitscontroles van state (sessiepersistentie, routing en veiligheid)
4. Integriteitscontroles van state (sessiepersistentie, routing en veiligheid)
- State-map ontbreekt: waarschuwt voor catastrofaal state-verlies, vraagt om de map opnieuw te maken en herinnert je eraan dat ontbrekende gegevens niet kunnen worden hersteld.
- Machtigingen van state-map: verifieert schrijfbaarheid; biedt aan machtigingen te repareren (en geeft een
chown-hint wanneer een mismatch in eigenaar/groep wordt gedetecteerd). - macOS-cloudgesynchroniseerde state-map: waarschuwt wanneer state wordt opgelost onder iCloud Drive (
~/Library/Mobile Documents/com~apple~CloudDocs/...) of~/Library/CloudStorage/..., omdat paden met synchronisatie tragere I/O en lock-/synchronisatieraces kunnen veroorzaken. - Linux SD- of eMMC-state-map: waarschuwt wanneer state wordt opgelost naar een
mmcblk*-mountbron, omdat willekeurige I/O op SD of eMMC trager kan zijn en sneller kan slijten bij het schrijven van sessies en referenties. - Linux-vluchtige state-map: waarschuwt wanneer state wordt opgelost naar
tmpfsoframfs, omdat sessies, referenties, configuratie en SQLite-state met de bijbehorende WAL-/journaal-sidecars bij herstart verdwijnen. Docker-overlay-mounts worden bewust niet gemarkeerd, omdat hun beschrijfbare lagen host-herstarts overleven zolang de container blijft bestaan. - Sessiemappen ontbreken:
sessions/en de sessieopslagmap zijn vereist om geschiedenis te bewaren enENOENT-crashes te voorkomen. - Transcriptmismatch: waarschuwt wanneer recente sessievermeldingen ontbrekende transcriptbestanden hebben.
- Hoofdsessie “1-regelige JSONL”: markeert wanneer het hoofdtranscript slechts één regel heeft (geschiedenis wordt niet opgebouwd).
- Meerdere state-mappen: waarschuwt wanneer meerdere
~/.openclaw-mappen bestaan in verschillende thuismappen of wanneerOPENCLAW_STATE_DIRergens anders naartoe wijst (geschiedenis kan tussen installaties worden opgesplitst). - Herinnering voor externe modus: als
gateway.mode=remote, herinnert doctor je eraan het op de externe host uit te voeren (de state bevindt zich daar). - Machtigingen van configuratiebestand: waarschuwt als
~/.openclaw/openclaw.jsonleesbaar is voor groep/wereld en biedt aan dit aan te scherpen naar600.
5. Gezondheid van modelauthenticatie (OAuth-verloop)
5. Gezondheid van modelauthenticatie (OAuth-verloop)
--non-interactive slaat vernieuwingspogingen over.Wanneer een OAuth-vernieuwing permanent mislukt (bijvoorbeeld refresh_token_reused, invalid_grant, of een provider die aangeeft dat je opnieuw moet inloggen), meldt doctor dat herauthenticatie vereist is en drukt het de exacte uit te voeren opdracht openclaw models auth login --provider ... af.Doctor rapporteert ook auth-profielen die tijdelijk onbruikbaar zijn door:- korte cooldowns (rate limits/time-outs/authenticatiefouten)
- langere uitschakelingen (facturerings-/tegoedfouten)
openclaw doctor --fix uit vanuit een interactieve terminal om verouderde Keychain-backed tokens inline naar auth-profiles.json te migreren; daarna lossen embedded beurten (Telegram, cron, sub-agentdispatch) ze op als canonieke OpenAI OAuth-profielen.6. Validatie van Hooks-model
6. Validatie van Hooks-model
hooks.gmail.model is ingesteld, valideert doctor de modelreferentie tegen de catalogus en allowlist en waarschuwt het wanneer deze niet kan worden opgelost of niet is toegestaan.7. Reparatie van sandbox-image
7. Reparatie van sandbox-image
7b. Opschoning van Plugin-installaties
7b. Opschoning van Plugin-installaties
openclaw doctor --fix / openclaw doctor --repair. Dit dekt verouderde gegenereerde afhankelijkheidsroots, oude install-stage-mappen, pakketlokale resten van eerdere reparatiecode voor afhankelijkheden van gebundelde Plugins, en verweesde of herstelde beheerde npm-kopieën van gebundelde @openclaw/*-Plugins die het huidige gebundelde manifest kunnen overschaduwen. Doctor koppelt ook het hostpakket openclaw opnieuw aan beheerde npm-Plugins die peerDependencies.openclaw declareren, zodat pakketlokale runtime-imports zoals openclaw/plugin-sdk/* na updates of npm-reparaties blijven oplossen.Doctor kan ook ontbrekende downloadbare Plugins opnieuw installeren wanneer de configuratie ernaar verwijst maar het lokale Plugin-register ze niet kan vinden. Voorbeelden zijn materiële plugins.entries, geconfigureerde channel-/provider-/zoekinstellingen en geconfigureerde agentruntimes. Tijdens pakketupdates vermijdt doctor het uitvoeren van pakketmanager-Plugin-reparatie terwijl het kernpakket wordt vervangen; voer na de update opnieuw openclaw doctor --fix uit als een geconfigureerde Plugin nog steeds herstel nodig heeft. Gateway-opstart en configuratieherlading voeren geen pakketmanagers uit; Plugin-installaties blijven expliciet doctor-/installatie-/updatewerk.8. Gateway-servicemigraties en opschoonhints
8. Gateway-servicemigraties en opschoonhints
openclaw gateway status --deep of openclaw doctor --deep, verwijder vervolgens het duplicaat of stel OPENCLAW_SERVICE_REPAIR_POLICY=external in wanneer een systeem-supervisor eigenaar is van de Gateway-lifecycle.8b. Migratie van Startup Matrix
8b. Migratie van Startup Matrix
--fix / --repair) een pre-migratiesnapshot en voert het daarna de best-effort migratiestappen uit: verouderde Matrix-state-migratie en verouderde voorbereiding van versleutelde state. Beide stappen zijn niet-fataal; fouten worden gelogd en het opstarten gaat door. In alleen-lezenmodus (openclaw doctor zonder --fix) wordt deze controle volledig overgeslagen.8c. Apparaatkoppeling en auth-drift
8c. Apparaatkoppeling en auth-drift
- lopende eerste koppelingsverzoeken
- lopende rolupgrades voor al gekoppelde apparaten
- lopende scope-upgrades voor al gekoppelde apparaten
- reparaties van public-key-mismatches waarbij de apparaat-id nog steeds overeenkomt maar de apparaatidentiteit niet langer overeenkomt met de goedgekeurde record
- gekoppelde records zonder actief token voor een goedgekeurde rol
- gekoppelde tokens waarvan scopes afwijken van de goedgekeurde pairing-baseline
- lokaal gecachete apparaat-tokenvermeldingen voor de huidige machine die ouder zijn dan een tokenrotatie aan Gateway-zijde of verouderde scopemetadata bevatten
- inspecteer lopende verzoeken met
openclaw devices list - keur het exacte verzoek goed met
openclaw devices approve <requestId> - roteer een nieuw token met
openclaw devices rotate --device <deviceId> --role <role> - verwijder een verouderde record en keur deze opnieuw goed met
openclaw devices remove <deviceId>
9. Beveiligingswaarschuwingen
9. Beveiligingswaarschuwingen
10. systemd-linger (Linux)
10. systemd-linger (Linux)
11. Werkruimtestatus (Skills, plugins en TaskFlows)
11. Werkruimtestatus (Skills, plugins en TaskFlows)
- Skills-status: telt in aanmerking komende Skills, Skills met ontbrekende vereisten en door allowlist geblokkeerde Skills.
- Pluginstatus: telt ingeschakelde/uitgeschakelde/foutieve plugins; vermeldt Plugin-ID’s voor eventuele fouten; rapporteert mogelijkheden van bundelplugins.
- Plugincompatibiliteitswaarschuwingen: markeert plugins die compatibiliteitsproblemen hebben met de huidige runtime.
- Plugindiagnostiek: toont eventuele waarschuwingen of fouten tijdens het laden die door het Plugin-register zijn uitgegeven.
- TaskFlow-herstel: toont verdachte beheerde TaskFlows die handmatige inspectie of annulering nodig hebben.
11b. Grootte van bootstrapbestanden
11b. Grootte van bootstrapbestanden
AGENTS.md, CLAUDE.md of andere geïnjecteerde contextbestanden) dicht bij of boven het geconfigureerde tekenbudget zitten. Het rapporteert per bestand ruwe versus geïnjecteerde tekentellingen, afkappingspercentage, afkappingsoorzaak (max/file of max/total) en totaal aantal geïnjecteerde tekens als fractie van het totale budget. Wanneer bestanden worden afgekapt of dicht bij de limiet zitten, drukt doctor tips af voor het afstemmen van agents.defaults.bootstrapMaxChars en agents.defaults.bootstrapTotalMaxChars.11d. Opschoning van verouderde kanaalplugin
11d. Opschoning van verouderde kanaalplugin
openclaw doctor --fix een ontbrekende kanaalplugin verwijdert, verwijdert het ook de loshangende kanaalgebonden configuratie die naar die Plugin verwees: channels.<id>-vermeldingen, Heartbeat-doelen die het kanaal noemden, en agents.*.models["<channel>/*"]-overrides. Dit voorkomt Gateway-opstartlussen waarbij de kanaalruntime verdwenen is, maar de configuratie de Gateway nog steeds vraagt eraan te binden.11c. Shellaanvulling
11c. Shellaanvulling
- Als het shellprofiel een traag dynamisch aanvullingspatroon gebruikt (
source <(openclaw completion ...)), werkt doctor dit bij naar de snellere variant met gecachet bestand. - Als aanvulling in het profiel is geconfigureerd maar het cachebestand ontbreekt, genereert doctor de cache automatisch opnieuw.
- Als er helemaal geen aanvulling is geconfigureerd, vraagt doctor om deze te installeren (alleen interactieve modus; overgeslagen met
--non-interactive).
openclaw completion --write-state uit om de cache handmatig opnieuw te genereren.12. Gateway-authenticatiecontroles (lokaal token)
12. Gateway-authenticatiecontroles (lokaal token)
- Als de tokenmodus een token nodig heeft en er geen tokenbron bestaat, biedt doctor aan er een te genereren.
- Als
gateway.auth.tokendoor SecretRef wordt beheerd maar niet beschikbaar is, waarschuwt doctor en overschrijft het dit niet met platte tekst. openclaw doctor --generate-gateway-tokendwingt generatie alleen af wanneer er geen token-SecretRef is geconfigureerd.
12b. Alleen-lezen SecretRef-bewuste reparaties
12b. Alleen-lezen SecretRef-bewuste reparaties
openclaw doctor --fixgebruikt nu hetzelfde alleen-lezen SecretRef-samenvattingsmodel als statusfamiliecommando’s voor gerichte configuratiereparaties.- Voorbeeld: Telegram
allowFrom/groupAllowFrom@username-reparatie probeert geconfigureerde botinloggegevens te gebruiken wanneer die beschikbaar zijn. - Als het Telegram-bottoken via SecretRef is geconfigureerd maar niet beschikbaar is in het huidige commandopad, meldt doctor dat de inloggegevens geconfigureerd-maar-niet-beschikbaar zijn en slaat automatische resolutie over in plaats van te crashen of het token onterecht als ontbrekend te rapporteren.
13. Gateway-gezondheidscontrole + herstart
13. Gateway-gezondheidscontrole + herstart
13b. Gereedheid van geheugenzoekfunctie
13b. Gereedheid van geheugenzoekfunctie
- QMD-backend: peilt of de
qmd-binary beschikbaar en startbaar is. Zo niet, drukt het reparatieadvies af, inclusief het npm-pakket en een optie voor een handmatig binarypad. - Expliciete lokale aanbieder: controleert op een lokaal modelbestand of een herkende externe/downloadbare model-URL. Als die ontbreekt, stelt het voor over te schakelen naar een externe aanbieder.
- Expliciete externe aanbieder (
openai,voyage, enz.): verifieert dat er een API-sleutel aanwezig is in de omgeving of auth-opslag. Drukt uitvoerbare reparatietips af als die ontbreekt. - Verouderde automatische aanbieder: behandelt
memorySearch.provider: "auto"als OpenAI, controleert OpenAI-gereedheid, endoctor --fixherschrijft dit naarprovider: "openai".
openclaw memory status --deep om embeddinggereedheid tijdens runtime te verifiëren.14. Kanaalstatuswaarschuwingen
14. Kanaalstatuswaarschuwingen
15. Audit + reparatie van supervisorconfiguratie
15. Audit + reparatie van supervisorconfiguratie
openclaw doctorvraagt om bevestiging voordat supervisorconfiguratie wordt herschreven.openclaw doctor --yesaccepteert de standaardreparatieprompts.openclaw doctor --fixpast aanbevolen oplossingen zonder prompts toe (--repairis een alias).openclaw doctor --fix --forceoverschrijft aangepaste supervisorconfiguraties.OPENCLAW_SERVICE_REPAIR_POLICY=externalhoudt doctor alleen-lezen voor de Gateway-servicelevenscyclus. Het rapporteert nog steeds servicestatus en voert niet-servicereparaties uit, maar slaat service-installatie/start/herstart/bootstrap, herschrijvingen van supervisorconfiguratie en opschoning van verouderde services over omdat een externe supervisor die levenscyclus beheert.- Op Linux herschrijft doctor geen commando-/entrypointmetadata terwijl de overeenkomende systemd-Gateway-unit actief is. Het negeert ook inactieve niet-verouderde extra Gateway-achtige units tijdens de scan op dubbele services, zodat begeleidende servicebestanden geen opschoonruis veroorzaken.
- Als tokenauthenticatie een token vereist en
gateway.auth.tokendoor SecretRef wordt beheerd, valideert doctor-service-installatie/-reparatie de SecretRef maar bewaart het opgeloste tokenwaarden in platte tekst niet in de omgevingsmetadata van de supervisorservice. - Doctor detecteert beheerde
.env-/SecretRef-ondersteunde serviceomgevingswaarden die oudere LaunchAgent-, systemd- of Windows Scheduled Task-installaties inline hebben ingesloten en herschrijft de servicemetadata zodat die waarden uit de runtimebron worden geladen in plaats van uit de supervisordefinitie. - Doctor detecteert wanneer het servicecommando nog steeds een oude
--portvastzet nadatgateway.portis gewijzigd en herschrijft de servicemetadata naar de huidige poort. - Als tokenauthenticatie een token vereist en de geconfigureerde token-SecretRef niet is opgelost, blokkeert doctor het installatie-/reparatiepad met uitvoerbare begeleiding.
- Als zowel
gateway.auth.tokenalsgateway.auth.passwordzijn geconfigureerd engateway.auth.modeniet is ingesteld, blokkeert doctor installatie/reparatie totdat de modus expliciet is ingesteld. - Voor Linux user-systemd-units omvatten doctor-tokenafwijkingscontroles nu zowel
Environment=- alsEnvironmentFile=-bronnen bij het vergelijken van authmetadata van services. - Doctor-servicereparaties weigeren een Gateway-service van een oudere OpenClaw-binary te herschrijven, te stoppen of opnieuw te starten wanneer de configuratie het laatst door een nieuwere versie is geschreven. Zie Gateway-probleemoplossing.
- Je kunt altijd een volledige herschrijving afdwingen via
openclaw gateway install --force.
16. Gateway-runtime + poortdiagnostiek
16. Gateway-runtime + poortdiagnostiek
18789) en rapporteert waarschijnlijke oorzaken (Gateway draait al, SSH-tunnel).17. Beste praktijken voor Gateway-runtime
17. Beste praktijken voor Gateway-runtime
nvm, fnm, volta, asdf, enz.). WhatsApp- en Telegram-kanalen vereisen Node, en versiebeheerderspaden kunnen na upgrades breken omdat de service je shell-initialisatie niet laadt. Doctor biedt aan te migreren naar een systeem-Node-installatie wanneer die beschikbaar is (Homebrew/apt/choco).Nieuw geïnstalleerde of gerepareerde macOS LaunchAgents gebruiken een canoniek systeem-PATH (/opt/homebrew/bin:/opt/homebrew/sbin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin) in plaats van het interactieve shell-PATH te kopiëren, zodat door Homebrew beheerde systeembinaries beschikbaar blijven terwijl Volta-, asdf-, fnm-, pnpm- en andere versiebeheerdersmappen niet wijzigen welke Node-subprocessen worden gevonden. Linux-services behouden nog steeds expliciete omgevingsroots (NVM_DIR, FNM_DIR, VOLTA_HOME, ASDF_DATA_DIR, BUN_INSTALL, PNPM_HOME) en stabiele user-bin-mappen, maar geraden fallbackmappen van versiebeheerders worden alleen naar het service-PATH geschreven wanneer die mappen op schijf bestaan.18. Configuratie wegschrijven + wizardmetadata
18. Configuratie wegschrijven + wizardmetadata
19. Werkruimtetips (back-up + geheugensysteem)
19. Werkruimtetips (back-up + geheugensysteem)