CLI commands
Diagnosehulpmiddel
openclaw doctor
Gezondheidscontroles en snelle oplossingen voor de Gateway, kanalen, plugins, Skills, modelroutering, lokale status en configuratiemigraties. Gebruik dit wanneer iets niet werkt zoals verwacht en je met één opdracht wilt achterhalen wat er mis is.
Wanneer de Gateway-status gedegradeerde SecretRef-eigenaren meldt, toont doctor een waarschuwing Degradatie van de secretruntime met elke koude of verouderde eigenaar, het betreffende configuratiepad, de geredigeerde reden en de opdracht openclaw secrets reload om het opnieuw te proberen.
Wanneer binnenkomende kanaalgebeurtenissen naar de dead-letter-wachtrij worden verplaatst, noemt doctor elk betrokken kanaalaccount en verwijst het voor inspectie en herstel naar openclaw channels dead-letters list.
Gerelateerd:
- Probleemoplossing: Probleemoplossing
- Beveiligingsaudit: Beveiliging
Modi
Doctor heeft vijf modi:
| Modus | Opdracht | Gedrag |
|---|---|---|
| Inspectie | openclaw doctor |
Mensgerichte controles en begeleide prompts. |
| Reparatie | openclaw doctor --fix |
Voert ondersteunde reparaties uit en gebruikt prompts, tenzij niet-interactieve reparatie veilig is. |
| Lint | openclaw doctor --lint |
Alleen-lezen gestructureerde bevindingen voor CI, preflightcontroles en reviewpoorten. |
| Gedeeld SQLite-onderhoud | openclaw doctor --state-sqlite compact |
Voert expliciet een checkpoint, compactie en verificatie uit op de canonieke gedeelde statusdatabase. |
| SQLite-sessiemigratie | openclaw doctor --session-sqlite <mode> |
Inspecteert, importeert, valideert, compacteert, herstelt of zet sessiestatus terug. |
Gebruik bij voorkeur --lint wanneer automatisering een stabiel resultaat nodig heeft. Gebruik bij voorkeur --fix wanneer een menselijke operator wil dat doctor de configuratie of status bewerkt.
Voorbeelden
openclaw doctoropenclaw doctor --lintopenclaw doctor --lint --jsonopenclaw doctor --lint --severity-min warningopenclaw doctor --lint --allopenclaw doctor --lint --allow-execopenclaw doctor --deepopenclaw doctor --fixopenclaw doctor --fix --non-interactiveopenclaw doctor --generate-gateway-tokenopenclaw doctor --post-upgradeopenclaw doctor --post-upgrade --jsonopenclaw doctor --state-sqlite compactopenclaw doctor --state-sqlite compact --jsonopenclaw doctor --session-sqlite inspect --session-sqlite-all-agentsopenclaw doctor --session-sqlite dry-run --session-sqlite-agent main --jsonopenclaw doctor --session-sqlite import --session-sqlite-all-agentsopenclaw doctor --session-sqlite validate --session-sqlite-all-agents --jsonopenclaw doctor --session-sqlite compact --session-sqlite-all-agentsopenclaw doctor --session-sqlite recover --github-issueopenclaw doctor --session-sqlite restore --session-sqlite-all-agentsGebruik voor kanaalspecifieke machtigingen de kanaalprobes in plaats van doctor:
openclaw channels capabilities --channel discord --target channel:<channel-id>openclaw channels status --probechannels capabilities meldt de effectieve machtigingen van de bot voor een specifiek kanaaldoel. channels status --probe controleert alle geconfigureerde kanalen en doelen voor automatisch deelnemen aan spraakkanalen.
Opties
| Optie | Effect |
|---|---|
--no-workspace-suggestions |
Schakelt suggesties voor werkruimtegeheugen en zoeken uit. |
--yes |
Accepteert standaardwaarden zonder prompt. |
--repair / --fix |
Voert aanbevolen reparaties buiten services uit zonder prompt (--fix is een alias). Installaties en herschrijvingen van de Gateway-service vereisen nog steeds interactieve bevestiging of expliciete gateway-opdrachten. |
--force |
Voert ingrijpende reparaties uit, waaronder het overschrijven van aangepaste serviceconfiguratie. |
--non-interactive |
Wordt zonder prompts uitgevoerd; alleen veilige migraties en reparaties buiten services. |
--generate-gateway-token |
Genereert en configureert een Gateway-token. |
--allow-exec |
Staat doctor toe geconfigureerde exec-SecretRefs uit te voeren tijdens het verifiëren van secrets. |
--deep |
Scant systeemservices op extra Gateway-installaties en meldt recente overdrachten van herstarts door de Gateway-supervisor. |
--lint |
Voert gemoderniseerde gezondheidscontroles uit in alleen-lezenmodus en geeft diagnostische bevindingen weer. |
--post-upgrade |
Voert na een upgrade compatibiliteitsprobes voor plugins uit; bevindingen gaan naar stdout; afsluitcode 1 als er een bevinding op foutniveau aanwezig is. |
--state-sqlite <mode> |
Voert expliciet SQLite-onderhoud voor de gedeelde status uit. De enige modus is compact. |
--session-sqlite <mode> |
Voert de gerichte SQLite-sessiemigratiemodus uit: inspect, dry-run, import, validate, compact, recover of restore. |
--session-sqlite-store <path> |
Met --session-sqlite: selecteert één verouderd sessions.json-opslagpad. |
--session-sqlite-agent <id> |
Met --session-sqlite: selecteert één geconfigureerde agent. |
--session-sqlite-all-agents |
Met --session-sqlite: selecteert geconfigureerde en gedetecteerde agentopslaglocaties. |
--github-issue |
Met --session-sqlite recover: bereidt een geschoond probleemrapport voor openclaw/openclaw voor; doctor maakt dit met gh na --yes of interactieve bevestiging. |
--json |
Met --lint: JSON-bevindingen. Met --post-upgrade: { probesRun, findings }. Met --state-sqlite of --session-sqlite: het onderhoudsrapport als JSON. |
--severity-min <level> |
Met --lint: laat bevindingen onder info, warning of error weg. |
--all |
Met --lint: voert alle geregistreerde controles uit, inclusief optionele controles die van de standaardset zijn uitgesloten. |
--skip <id> |
Met --lint: slaat een controle-id over. Herhaalbaar. |
--only <id> |
Met --lint: voert alleen de opgegeven controle-id('s) uit. Herhaalbaar. |
--severity-min, --all, --only en --skip worden alleen samen met --lint geaccepteerd; --json wordt geaccepteerd met --lint, --post-upgrade, --state-sqlite en --session-sqlite.
Lintmodus
openclaw doctor --lint is alleen-lezen: geen prompts, geen reparatie en geen herschrijvingen van configuratie of status.
openclaw doctor --lintopenclaw doctor --lint --severity-min warningopenclaw doctor --lint --jsonopenclaw doctor --lint --allopenclaw doctor --lint --allow-execopenclaw doctor --lint --only core/doctor/gateway-config --jsonopenclaw doctor --lint --only core/doctor/local-audio-acceleration --severity-min infoVoor mensen leesbare uitvoer is compact:
doctor --lint: 6 controle(s) uitgevoerd, 1 bevinding(en) [warning] core/doctor/gateway-config gateway.mode - gateway.mode is niet ingesteld; het starten van de Gateway wordt geblokkeerd. oplossing: Voer `openclaw configure` uit en stel de Gateway-modus (local/remote) in, of voer `openclaw config set gateway.mode local` uit.JSON-uitvoer is de interface voor scripts:
{ "ok": false, "checksRun": 5, "checksSkipped": 0, "findings": [ { "checkId": "core/doctor/gateway-config", "severity": "warning", "message": "gateway.mode is niet ingesteld; het starten van de Gateway wordt geblokkeerd.", "path": "gateway.mode", "fixHint": "Voer `openclaw configure` uit en stel de Gateway-modus (local/remote) in, of voer `openclaw config set gateway.mode local` uit." } ]}Afsluitcodes:
| Code | Betekenis |
|---|---|
0 |
Geen bevindingen op of boven de geselecteerde ernstgrens. |
1 |
Minstens één bevinding voldoet aan de geselecteerde grens. |
2 |
Opdracht- of runtimefout voordat lintbevindingen kunnen worden geproduceerd. |
--severity-min bepaalt zowel welke bevindingen worden weergegeven als de afsluitgrens: openclaw doctor --lint --severity-min error kan niets weergeven en afsluiten met 0, zelfs wanneer bevindingen met een lagere ernstgraad van info/warning bestaan.
--all bepaalt welke controles vóór de ernstfiltering worden geselecteerd. De standaard-lintuitvoering sluit controles uit die diepgaand of historisch zijn, of die eerder herstelbare verouderde restanten aan het licht brengen; gebruik --all voor de volledige inventaris. --only <id> is de nauwkeurigste selector en kan elke geregistreerde controle op id uitvoeren.
core/doctor/local-audio-acceleration meldt de automatisch geselecteerde lokale STT-opdracht, afzonderlijk bewijs voor geschikte, aangevraagde en waargenomen backends, en de terugvalvolgorde zonder een spraakmodel te laden. Dit levert een informatieve bevinding op; neem daarom --severity-min info op om deze weer te geven.
Gestructureerde gezondheidscontroles
Moderne doctor-controles gebruiken een klein opgesplitst contract:
detect(ctx, scope?) -> HealthFinding[]repair?(ctx, findings) -> HealthRepairResultdetect() vormt de basis voor doctor --lint. repair() is optioneel en wordt alleen uitgevoerd onder doctor --fix / doctor --repair. Controles die nog niet naar deze vorm zijn gemigreerd, gebruiken nog steeds de verouderde doctor-bijdrageflow.
Herstelcontexten kunnen dryRun- en diff-verzoeken bevatten; herstelresultaten kunnen gestructureerde diffs (configuratie-/bestandsbewerkingen) en effects (neveneffecten voor services, processen, pakketten, status of andere onderdelen) retourneren, zodat geconverteerde controles kunnen doorgroeien naar doctor --fix --dry-run zonder de planning van wijzigingen naar detect() te verplaatsen.
repair() rapporteert status: "repaired" | "skipped" | "failed" (een weggelaten status betekent repaired). Wanneer herstel skipped of failed retourneert, rapporteert Doctor de reden en slaat het de validatie voor die controle over. Na een geslaagd herstel voert Doctor detect() opnieuw uit, beperkt tot de herstelde bevindingen; als de bevinding nog steeds aanwezig is, rapporteert Doctor een herstelwaarschuwing in plaats van de wijziging als voltooid te beschouwen.
Een bevinding bevat:
| Veld | Doel |
|---|---|
checkId |
Stabiele id voor skip/only-filters en CI-toelatingslijsten. |
severity |
info, warning of error. |
message |
Voor mensen leesbare probleembeschrijving. |
path |
Configuratie-, bestands- of logisch pad indien beschikbaar. |
line / column |
Bronlocatie indien beschikbaar. |
ocPath |
Nauwkeurig oc://-adres wanneer een controle ernaar kan verwijzen. |
fixHint |
Voorgestelde operatoractie of herstelsamenvatting. |
Gemoderniseerde controles van de kern-Doctor blijven gekoppeld aan de geordende Doctor-bijdrage die eigenaar is van hun menselijke doctor- / doctor --fix-gedrag. Het gedeelde gestructureerde gezondheidsregister is het uitbreidingspunt: gebundelde en door plugins ondersteunde controles worden na de controles van de kern-Doctor uitgevoerd zodra het pakket dat er eigenaar van is deze registreert in het actieve opdrachtpad. openclaw/plugin-sdk/health stelt hetzelfde contract beschikbaar aan auteurs van plugins.
Controles selecteren
openclaw doctor --lint --only core/doctor/gateway-config --jsonopenclaw doctor --lint --skip core/doctor/skills-readinessopenclaw doctor --lint --all --skip core/doctor/session-locks--only en --skip accepteren volledige controle-id's en mogen worden herhaald. Als een --only-id niet is geregistreerd, wordt voor die id geen controle uitgevoerd; gebruik checksRun/checksSkipped in de uitvoer om te bevestigen dat een gerichte gate de verwachte controles selecteert.
Modus na upgrade
openclaw doctor --post-upgrade voert compatibiliteitsproeven voor plugins uit om na een build of upgrade aaneen te schakelen. Bevindingen gaan naar stdout; de afsluitcode is 1 als een bevinding level: "error" heeft. Voeg --json toe voor een machineleesbare envelop ({ probesRun, findings }), geschikt voor CI, de communityskill fork-upgrade en andere smoketesttools voor na een upgrade. Als de index van geïnstalleerde plugins ontbreekt of ongeldig is, geeft de JSON-modus nog steeds de envelop uit met een plugin.index_unavailable-foutbevinding.
Het opstarten van een containerimage is de uitzondering op de gebruikelijke stroom 'Doctor uitvoeren na
bijwerken'. Wanneer openclaw gateway run op een nieuwe OpenClaw-versie start, voert het
veilige herstelbewerkingen voor status en plugins uit voordat het gereedheid rapporteert. Als herstel niet
veilig kan worden voltooid, stopt het opstartproces en krijg je de instructie om dezelfde image eenmaal uit te voeren met
openclaw doctor --fix voor dezelfde gekoppelde status/configuratie voordat je
de container normaal opnieuw start.
Migratie van verouderde status
openclaw doctor --fix is de enige eigenaar van permanente migraties van bestanden naar SQLite. Het valideert en claimt elke herkende bron, schrijft en verifieert canonieke rijen, legt een migratiebewijs vast en verwijdert vervolgens de buiten gebruik gestelde bron. Runtimecode voert geen luie imports of fallbacklezingen uit.
Dit omvat buiten gebruik gestelde MCP OAuth-bestanden onder <state-dir>/mcp-oauth/*.json. Stop de Gateway vóór herstel. Doctor importeert geldige inloggegevens in <state-dir>/state/openclaw.sqlite, behoudt een bestaande canonieke SQLite-sessie wanneer beide opslagplaatsen bestaan, verwijdert de verouderde opgeslagen OAuth-waarde state en gebruikt het bewijs om te voorkomen dat een opnieuw aangemaakt verouderd bestand uitgelogde inloggegevens opnieuw activeert. Buiten gebruik gestelde .lock-sidecars worden gesloten bij fouten: als Doctor een verouderde eigenaar rapporteert, controleer dan of er geen ouder OpenClaw-proces actief is, verwijder die sidecar en voer Doctor opnieuw uit.
Compaction van gedeelde status in SQLite
Zie Databaseschema's voor schemaversiebeheer, integriteitscontroles en herstel na een downgrade.
openclaw doctor --state-sqlite compact is expliciet offline onderhoud voor
de canonieke database met gedeelde status op
<state-dir>/state/openclaw.sqlite. Het accepteert geen willekeurig databasepad,
wordt nooit aangeroepen door de normale werking van de Gateway en maakt geen deel uit van
openclaw doctor --fix. De opdracht verkrijgt dezelfde eigendomsvergrendeling voor status als
bij het opstarten van de Gateway en houdt deze vast tijdens validatie, checkpointing, VACUUM en
de laatste integriteitscontroles. De opdracht weigert te worden uitgevoerd zolang een Gateway of een andere
SQLite-onderhoudsopdracht eigenaar is van die vergrendeling. De statusvergrendeling blijft actief wanneer
OPENCLAW_ALLOW_MULTI_GATEWAY=1 de Gateway-singleton per configuratie overslaat, zodat een
operatorshell de omgeving van de Gateway-service niet hoeft over te nemen om
deze tijdens onderhoud te detecteren.
Stop de Gateway en maak eerst een geverifieerde back-up:
openclaw gateway stopopenclaw backup create --verifyopenclaw doctor --state-sqlite compact --jsonopenclaw gateway startDe opdracht:
- Vereist een regulier bestand op het canonieke pad voor gedeelde status. Een ontbrekende
database wordt gerapporteerd als
skippeden de opdracht wordt succesvol afgesloten. - Valideert de huidige ondersteunde schemaversie en
schema_meta.role = "global"voordat een checkpoint wordt gemaakt of het bestand wordt gewijzigd. - Vereist een niet-bezette
wal_checkpoint(TRUNCATE). Stop alle resterende OpenClaw- processen en probeer het opnieuw als het checkpoint bezet is. - Stelt
auto_vacuumin opINCREMENTAL, voert een volledigeVACUUMuit en maakt opnieuw een checkpoint. - Voert
quick_check,integrity_checkenforeign_key_checkuit en past vervolgens opnieuw uitsluitend-eigenaarmachtigingen toe op de database en SQLite-sidecarbestanden.
JSON-uitvoer rapporteert vóór en na Compaction de grootte van de database en WAL,
freelist-pagina's, paginagrootte en de waarde
auto_vacuum, plus het aantal teruggewonnen bytes en de resultaten van
quick_check en integrity_check. foreign_key_check wordt
gesloten bij fouten afgedwongen en heeft geen afzonderlijk succesveld. SQLite rapporteert auto_vacuum als
0 voor geen, 1 voor volledig en 2 voor incrementeel.
Compaction mislukt zonder wijzigingen wanneer het schema oud is, nieuwer is dan de
actieve OpenClaw-build of bij een agentdatabase hoort. Voer voor een ouder schema van gedeelde status
eerst openclaw doctor --fix uit. Herstel een
compatibele back-up of upgrade OpenClaw voor een nieuwer schema.
SQLite-migratie van sessies
OpenClaw importeert verouderde sessierijen en transcriptgeschiedenis automatisch in de SQLite-database van elke agent
tijdens het opstarten van de Gateway en tijdens
openclaw doctor --fix. openclaw doctor --session-sqlite <mode> is het
gerichte hulpmiddel voor inspectie en validatie van die migratie. Actuele runtimesessierijen
bevinden zich in
~/.openclaw/agents/<agentId>/agent/openclaw-agent.sqlite. Verouderde
sessions.json-bestanden zijn migratiebronnen. Actieve JSONL-transcriptbestanden worden
geïmporteerd en na een geslaagde import uit de actieve sessiemap gearchiveerd;
JSONL-bestanden in de archieflaag blijven ondersteuningsartefacten, geen runtime-
fallbacks.
Modi:
| Modus | Gedrag |
|---|---|
inspect |
Leest aantallen uit verouderde bronnen en SQLite, plus JSONL-bestanden zonder verwijzing, zonder te importeren. |
dry-run |
Parseert verouderde vermeldingen en JSONL-transcriptbestanden, telt importeerbare rijen en rapporteert problemen zonder SQLite-rijen te schrijven. |
import |
Importeert verouderde vermeldingen en transcriptgebeurtenissen in SQLite voor de geselecteerde doelen. |
validate |
Vergelijkt de geselecteerde verouderde bronnen met SQLite-rijen en aantallen transcriptgebeurtenissen. |
compact |
Maakt checkpoints en voert VACUUM uit op geselecteerde SQLite-agentdatabases om vrije pagina's terug te winnen na grote verwijderingen of het opschonen van archieven. |
recover |
Herstelt de laatst mislukte migratie-uitvoering, valideert de doelen ervan en stelt een opgeschoond GitHub-issuereport op. |
restore |
Herstelt gearchiveerde transcriptartefacten vanuit vastgelegde migratiemanifesten zonder SQLite-gegevens te verwijderen. |
Selectors:
- Standaard: de geconfigureerde opslag van de standaardagent, wanneer dat verouderde opslagbestand bestaat.
--session-sqlite-agent <id>: één geconfigureerde agent.--session-sqlite-all-agents: geconfigureerde agentopslagplaatsen plus ontdekte agentopslagplaatsen.--session-sqlite-store <path>: één expliciet pad naar een verouderdesessions.json.
Handmatige inspectiereeks:
openclaw doctor --session-sqlite inspect --session-sqlite-all-agentsopenclaw doctor --session-sqlite dry-run --session-sqlite-all-agents --jsonopenclaw doctor --session-sqlite import --session-sqlite-all-agentsopenclaw doctor --session-sqlite validate --session-sqlite-all-agents --jsonopenclaw doctor --session-sqlite compact --session-sqlite-all-agentsopenclaw doctor --session-sqlite recover --github-issueMaak een back-up van de OpenClaw-statusmap voordat je import uitvoert op een installatie met
belangrijke geschiedenis. validate wordt afgesloten met een niet-nulcode wanneer een geselecteerde verouderde vermelding
ontbreekt in SQLite, een sessie-id afwijkt of het aantal transcriptgebeurtenissen afwijkt.
Controleer bij gebruik van --session-sqlite-store <path> of het rapport het
verwachte aantal doelen bevat; een niet-bestaand expliciet opslagpad selecteert geen doelen.
SQLite-verwijderingen winnen eerst pagina's binnen de database terug; ze verkleinen
het databasebestand niet noodzakelijk onmiddellijk. Voer na het verwijderen of archiveren van grote
transcripten openclaw doctor --session-sqlite compact --session-sqlite-all-agents uit
om checkpoints voor WAL-bestanden te maken, VACUUM uit te voeren en de grootte van database en WAL
vóór en na de bewerking te rapporteren. Compaction vereist een regulier bestand met het huidige agentschema, de
duurzame eigenaarsmetadata van de geselecteerde agent en geen open handle in het Doctor-
proces. De destructieve modi import, compact, recover en restore
houden gedurende hun volledige werking dezelfde eigendomsvergrendeling voor status vast als bij het opstarten van de Gateway;
inspect, dry-run en validate blijven alleen-lezen en verkrijgen deze niet. Stop
eerst de Gateway. Destructieve modi mislukken in plaats van te wedijveren met actieve schrijfbewerkingen of
een andere onderhoudsopdracht. Een destructief --session-sqlite-store-
doel moet zich in de actieve statusmap bevinden; stel OPENCLAW_STATE_DIR in op
de statusmap die eigenaar is van de opslag voordat je een andere installatie onderhoudt.
Bestaande hardgekoppelde doelen worden geweigerd omdat een ander pad
dezelfde database-inode buiten de vergrendelde statusmap kan delen. Dezelfde eigendomscontroles
gelden voor SQLite-WAL-, gedeeld-geheugen- en rollback-journal-sidecars.
Elke import schrijft een manifest onder
~/.openclaw/session-sqlite-migration-runs/ voordat transcriptartefacten
naar het archief worden verplaatst. Als het opstarten een mislukte SQLite-sessiemigratie rapporteert nadat
artefacten zijn verplaatst, voer je herstel uit:
openclaw doctor --session-sqlite recover --github-issueHerstel selecteert het nieuwste manifest van een mislukte migratie, herstelt alleen de
gearchiveerde artefacten van het manifest, valideert de betrokken doelen, vernieuwt de
opgeschoonde rapporten .failure.md en .failure.json en bereidt de hoofdtekst
van een GitHub-issue voor zonder transcriptinhoud, onbewerkte omgevingsgegevens, geheimen
en onbegrensde configuratie. Als er geen manifest van een mislukte migratie bestaat, maar
een geselecteerde SQLite-database van een agent beschadigd of geen database is, of
journaal-sidecars zonder hoofddatabase bevat, kopieert herstel de volledige bestandenset
naar een tijdelijke inspectiemap. SQLite kan een geldig actief journaal in die tijdelijke
kopie terugdraaien voordat quick_check, integrity_check en foreign_key_check
worden uitgevoerd, terwijl de oorspronkelijke forensische bestanden onaangeroerd blijven.
Bij mislukte integriteitscontroles of verweesde sidecars worden de DB-, WAL-, SHM- en
rollbackjournaalbestanden behouden door de volledige aangetroffen set te hernoemen met één
achtervoegsel .corrupt-<timestamp>. Bij een opgevangen fout tijdens het hernoemen worden
reeds verplaatste bestanden teruggezet voordat de fout wordt gemeld, zodat een herstelbare
bestandenset niet ongemerkt wordt opgesplitst. Stop de Gateway vóór herstel; het kopiëren
of hernoemen van een actief veranderende SQLite-bestandenset is onveilig en gedraagt zich
verschillend per besturingssysteem. Met --github-issue --yes gebruikt doctor de GitHub CLI
om het issue in openclaw/openclaw aan te maken; zonder bevestiging schrijft doctor het
lokale ondersteuningsrapport en toont het een vooraf ingevulde issue-URL.
restore blijft de onderliggende bewerking voor ongedaan maken. Deze gebruikt
sourcePath -> archivePath-records uit het manifest, verplaatst gearchiveerde artefacten alleen
terug als het oorspronkelijke pad ontbreekt, meldt conflicten wanneer beide paden bestaan
en laat de SQLite-database staan.
Downgraden na de SQLite-migratie van sessies
Herstel de gearchiveerde verouderde transcriptartefacten voordat je een oudere, bestandsgebaseerde versie van OpenClaw start:
openclaw doctor --session-sqlite restore --session-sqlite-all-agentsOudere versies lezen sessions.json-vermeldingen en de in die vermeldingen vastgelegde
sessionFile-paden. Na de SQLite-migratie verplaatsen geslaagde imports actieve
JSONL-transcripten naar session-sqlite-import-archive/, waardoor de oudere runtime die geschiedenis
pas kan zien nadat herstel de in het manifest vastgelegde artefacten naar hun
oorspronkelijke paden heeft teruggezet.
Herstel verwijdert geen SQLite-gegevens. Sessies die na de overstap naar SQLite zijn aangemaakt, bestaan alleen in SQLite en zijn niet zichtbaar voor de oudere runtime. Als je later opnieuw upgradet, voer dan de normale bovenstaande validatiereeks voor migratie uit, zodat OpenClaw de herstelde verouderde artefacten met de SQLite-rijen kan vergelijken voordat ze worden geïmporteerd.
Opmerkingen
- In Nix-modus (
OPENCLAW_NIX_MODE=1) werken alleen-lezencontroles van doctor nog steeds, maardoctor --fix,doctor --repair,doctor --yesendoctor --generate-gateway-tokenzijn uitgeschakeld omdatopenclaw.jsononveranderlijk is. Bewerk in plaats daarvan de Nix-bron voor deze installatie; gebruik voor nix-openclaw de agentgerichte Snelstart. - Interactieve prompts (oplossingen voor sleutelhangertoegang/OAuth enzovoort) worden alleen uitgevoerd wanneer stdin een TTY is en
--non-interactiveniet is ingesteld. Headless-uitvoeringen (cron, Telegram, geen terminal) slaan prompts over. - Niet-interactieve uitvoeringen van
doctorslaan het vroegtijdig laden van plugins over, zodat headless-statuscontroles snel blijven. Interactieve sessies laden nog steeds de pluginoppervlakken die nodig zijn voor de verouderde status-/reparatiestroom. --lintis strenger dan--non-interactive: altijd alleen-lezen, toont nooit prompts en past nooit veilige migraties toe. Gebruikdoctor --fixofdoctor --repairwanneer je wilt dat doctor wijzigingen aanbrengt.- Doctor voert bij het standaard controleren van geheimen geen
execSecretRefs uit. Gebruik--allow-exec(met of zonder--lint) alleen wanneer je doctor bewust die geconfigureerde geheimoplossers wilt laten uitvoeren. - Bij elke configuratieschrijfactie (inclusief een reparatie met
--fix) wordt een back-up geroteerd naar~/.openclaw/openclaw.json.bak(met een genummerde ring van.bak.1...bak.4).--fixverwijdert ook onbekende configuratiesleutels die door schemavalidatie zijn gemeld en vermeldt elke verwijdering; dit wordt overgeslagen terwijl een update wordt uitgevoerd, zodat gedeeltelijk geschreven upgradestatus niet wordt verwijderd voordat de migratie is voltooid. - Als
openclaw.jsonniet kan worden geparseerd en geen laatst bekende werkende configuratie kan worden hersteld, bewaartdoctor --fixhet origineel alsopenclaw.json.clobbered.<timestamp>, laat het huidige bestand ongewijzigd en sluit af met een fout in plaats van een gedeeltelijke vervanging te schrijven. - Stel
OPENCLAW_SERVICE_REPAIR_POLICY=externalin wanneer een andere supervisor de levenscyclus van de Gateway beheert. Doctor rapporteert nog steeds de status van Gateway/services en past reparaties buiten services toe, maar slaat installatie/start/herstart/bootstrap van services en het opschonen van verouderde services over. - Doctor rapporteert de toegepaste heaplimiet van de beheerde Gateway en de adaptieve afleiding die voor de huidige geheugenlimiet van de host of container wordt gebruikt. Gebruik
openclaw gateway statusvoor hetzelfde rapport buiten een reparatieronde. - Op Linux negeert doctor inactieve extra systemd-eenheden die op een Gateway lijken en herschrijft tijdens reparatie geen opdracht-/toegangspuntmetadata voor een actieve systemd-Gatewayservice. Stop eerst de service of gebruik
openclaw gateway install --forceom het actieve startprogramma te vervangen. doctor --fix --non-interactiverapporteert ontbrekende of verouderde Gateway-servicedefinities, maar installeert of herschrijft ze niet buiten de reparatiemodus voor updates. Voeropenclaw gateway installuit voor een ontbrekende service ofopenclaw gateway install --forceom het startprogramma te vervangen.- Controles van de statusintegriteit detecteren verweesde transcriptbestanden in de sessiemap. Voor archivering ervan als
.deleted.<timestamp>is interactieve bevestiging vereist;--fix,--yesen headless-uitvoeringen laten ze staan. - Doctor scant
~/.openclaw/cron/jobs.json(ofcron.store) op verouderde cron-taakstructuren en herschrijft deze voordat canonieke rijen in SQLite worden geïmporteerd. - Doctor rapporteert cron-taken met een expliciete
payload.model-overschrijving, inclusief aantallen per providernamespace en afwijkingen ten opzichte vanagents.defaults.model, zodat geplande taken die het standaardmodel niet overnemen zichtbaar zijn tijdens onderzoek naar authenticatie of facturering. - Doctor rapporteert cron-taken die nog als actief zijn gemarkeerd (
state.runningAtMs), waardooropenclaw cron listze alsrunningkan weergeven. Deze controle is alleen-lezen: als momenteel geen Gateway een gemarkeerde taak uitvoert, registreert de volgende start van de cron-service de onderbroken uitvoering en wist deze de markering. - Op Linux waarschuwt doctor wanneer de crontab van de gebruiker nog steeds de niet-onderhouden verouderde
~/.openclaw/bin/ensure-whatsapp.shuitvoert, dieGateway inactiveonjuist kan rapporteren wanneer cron niet over de systemd-gebruikersbusomgeving beschikt. - Wanneer WhatsApp is ingeschakeld, controleert doctor op een verslechterde Gateway-gebeurtenislus terwijl lokale
openclaw-tui-clients nog actief zijn.doctor --fixstopt alleen geverifieerde lokale TUI-clients, zodat WhatsApp-antwoorden niet achter verouderde TUI-verversingslussen in de wachtrij komen. - Wanneer HTTP(S)-proxyomgevingsvariabelen aanwezig zijn maar
tools.web.fetch.useTrustedEnvProxyis uitgeschakeld, legt doctor uit datweb_fetchnog steeds directe routering gebruikt, voert het een korte directe TLS-verbindingscontrole uit en noemt het de expliciete opt-in. Proxyvertrouwen wordt nooit automatisch ingeschakeld. - Doctor herschrijft verouderde
codex/*- enopenai-codex/*-modelverwijzingen naar canoniekeopenai/*-verwijzingen voor primaire modellen, fallbacks, modeltoelatingslijsten, modellen voor beeld-/videogeneratie, Heartbeat-/subagent-/Compaction-overschrijvingen, hooks, kanaalmodeloverschrijvingen, cron-payloads en verouderde routepinnen voor sessies/transcripten.--fixvoegt ook veilig verouderde configuratie vanmodels.providers.codexenmodels.providers.openai-codexsamen, migreert verouderde authenticatieprofielen vanopenai-codex:*enauth.order.openai-codex-vermeldingen naaropenai:*, verplaatst Codex-intentie naar provider-/modelgebondenagentRuntime.id: "codex"-vermeldingen, verwijdert verouderde runtimepinnen voor volledige agents/sessies en houdt gerepareerde OpenAI-agentverwijzingen op Codex-authenticatieroutering in plaats van directe authenticatie met een OpenAI-API-sleutel. - Doctor rapporteert niet-lege
auth.order.<provider>-lijsten waarvan alle profielen waarnaar wordt verwezen verdwenen zijn, terwijl compatibele opgeslagen inloggegevens bestaan.doctor --fixverwijdert alleen die verouderde overschrijvingen en herstelt daarmee de automatische selectie van inloggegevens per agent; expliciete lege volgorden, gedeeltelijk actieve lijsten en volgorden zonder compatibele opgeslagen inloggegevens blijven ongewijzigd. Als een actieve SQLite-authenticatieopslag onleesbaar of onjuist gevormd is, legt doctor uit waarom deze reparatie is overgeslagen. Herstart een actieve Gateway voordat je de authenticatiestatus opnieuw controleert als de herlaadmodus voor de configuratie de schrijfactie niet automatisch toepast. - Doctor ruimt verouderde voorbereidingsstatus van plugin-afhankelijkheden uit oudere OpenClaw-versies op en koppelt het
openclaw-pakket van de host opnieuw voor beheerde npm-plugins die dit als peerafhankelijkheid declareren. Het repareert ook ontbrekende downloadbare plugins waarnaar de configuratie verwijst (plugins.entries, geconfigureerde kanalen, geconfigureerde provider-/zoekinstellingen en geconfigureerde agentruntimes). Tijdens pakketupdates slaat doctor reparatie van plugins via de pakketbeheerder over totdat de pakketwisseling is voltooid; voer daarnaopenclaw doctor --fixopnieuw uit als een geconfigureerde plugin nog moet worden hersteld. Als een download mislukt, rapporteert doctor de installatiefout en behoudt het de geconfigureerde pluginvermelding voor de volgende reparatiepoging. - Doctor repareert verouderde pluginconfiguratie door ontbrekende plugin-id's te verwijderen uit
plugins.allow/plugins.deny/plugins.entries, samen met overeenkomende loshangende kanaalconfiguratie, Heartbeat-doelen en kanaalmodeloverschrijvingen, wanneer plugindetectie correct werkt. - Doctor plaatst ongeldige pluginconfiguratie in quarantaine door de betreffende
plugins.entries.<id>-vermelding uit te schakelen en de ongeldigeconfig-payload ervan te verwijderen. Bij het starten slaat de Gateway alleen die onjuiste plugin al over, zodat andere plugins en kanalen actief blijven. - Doctor verwijdert de buiten gebruik gestelde
plugins.entries.codex.config.codexDynamicToolsProfile; de Codex-app-server houdt werkruimtetools die eigen zijn aan Codex altijd native. - Doctor migreert verouderde platte Talk-configuratie (
talk.voiceId,talk.modelIden verwante instellingen) automatisch naartalk.provider+talk.providers.<provider>. Herhaalde uitvoeringen vandoctor --fixrapporteren/passen geen Talk-normalisatie meer toe wanneer alleen de sleutelvolgorde van objecten verschilt. - Doctor bevat een gereedheidscontrole voor geheugenzoekopdrachten en kan
openclaw configure --section modelaanbevelen wanneer inloggegevens voor embeddings ontbreken. - Doctor waarschuwt wanneer geen opdrachteigenaar is geconfigureerd. De opdrachteigenaar is het account van de menselijke beheerder dat alleen-voor-eigenaar-opdrachten mag uitvoeren en gevaarlijke acties mag goedkeuren. DM-koppeling staat alleen toe dat iemand met de bot praat; als je een afzender hebt goedgekeurd voordat bootstrap voor de eerste eigenaar bestond, stel dan
commands.ownerAllowFromexpliciet in. - Doctor rapporteert een informatieve melding wanneer agents in Codex-modus zijn geconfigureerd en persoonlijke Codex CLI-assets in de Codex-basismap van de beheerder aanwezig zijn. Lokale Codex-app-serverstarts gebruiken geïsoleerde basismappen per agent; installeer indien nodig eerst de Codex-plugin en gebruik daarna
openclaw migrate plan codexom assets te inventariseren die bewust moeten worden gepromoveerd. - Doctor waarschuwt wanneer Skills die voor de standaardagent zijn toegestaan niet beschikbaar zijn in de huidige runtimeomgeving (ontbrekende uitvoerbare bestanden, omgevingsvariabelen, configuratie of OS-vereisten).
doctor --fixkan die niet-beschikbare Skills uitschakelen metskills.entries.<skill>.enabled=false; installeer/configureer in plaats daarvan de ontbrekende vereiste als je de Skill actief wilt houden. - Als de sandboxmodus is ingeschakeld maar Docker niet beschikbaar is, rapporteert doctor een duidelijke waarschuwing met herstelopties (
install Dockerofopenclaw config set agents.defaults.sandbox.mode off). - Als verouderde sandboxregisterbestanden of shardmappen aanwezig zijn (
~/.openclaw/sandbox/containers.json,~/.openclaw/sandbox/browsers.json,~/.openclaw/sandbox/containers/of~/.openclaw/sandbox/browsers/), rapporteert doctor deze;--fixmigreert geldige vermeldingen naar SQLite en plaatst ongeldige verouderde bestanden in quarantaine. - Als
gateway.auth.token/gateway.auth.passworddoor SecretRef worden beheerd en niet beschikbaar zijn in het huidige opdrachtpad, rapporteert doctor een alleen-lezenwaarschuwing en schrijft het geen platte-tekstfallbackinloggegevens. Voor door exec ondersteunde SecretRefs slaat doctor de uitvoering over tenzij--allow-execaanwezig is. - Als inspectie van een kanaal-SecretRef in een reparatiepad mislukt, gaat doctor door en rapporteert het een waarschuwing in plaats van vroegtijdig af te sluiten.
- Na migraties van de statusmap waarschuwt doctor wanneer ingeschakelde standaardaccounts van Telegram of Discord afhankelijk zijn van een omgevingsfallback en
TELEGRAM_BOT_TOKENofDISCORD_BOT_TOKENniet beschikbaar is voor het doctor-proces. - Voor automatische omzetting van Telegram-
allowFrom-gebruikersnamen (doctor --fix) is een omzetbaar Telegram-token in het huidige opdrachtpad vereist. Als tokeninspectie niet beschikbaar is, rapporteert doctor een waarschuwing en slaat het de automatische omzetting voor die ronde over.
macOS: omgevingsoverschrijvingen voor launchctl
Als je eerder launchctl setenv OPENCLAW_GATEWAY_TOKEN ... (of ...PASSWORD) hebt uitgevoerd, overschrijft die waarde je configuratiebestand en kan dit aanhoudende fouten met "niet geautoriseerd" veroorzaken.
launchctl getenv OPENCLAW_GATEWAY_TOKENlaunchctl getenv OPENCLAW_GATEWAY_PASSWORD launchctl unsetenv OPENCLAW_GATEWAY_TOKENlaunchctl unsetenv OPENCLAW_GATEWAY_PASSWORD