openclaw doctor è lo strumento di riparazione e migrazione per OpenClaw. Corregge configurazioni e stati obsoleti, verifica l’integrità e fornisce passaggi di riparazione attuabili.
Avvio rapido
Modalità headless e di automazione
- --yes
- --fix
- --lint
- --fix --force
- --non-interactive
- --deep
Modalità lint in sola lettura
openclaw doctor --lint è la modalità complementare, adatta all’automazione, di
openclaw doctor --fix. Condividono lo stesso registro delle regole di Doctor, ma
non selezionano né applicano le regole allo stesso modo:
doctor --lint usa il profilo di automazione ampio e sicuro: controlli
statici, locali e utili nell’output di CI o dei controlli preliminari. Ignora i controlli facoltativi che
sono consultivi, sensibili all’ambiente, dipendenti da servizi attivi, relativi all’inventario di account o aree di lavoro
oppure alla pulizia storica. Usare doctor --lint --all per eseguire
l’intero audit lint registrato, inclusi tali controlli facoltativi, oppure --only <id> per
un controllo mirato.
doctor --fix non usa il profilo lint predefinito e non accetta
--all. Esegue il percorso di riparazione ordinato di Doctor: i moderni controlli di integrità possono fornire
un’implementazione facoltativa di repair(), mentre le aree più vecchie usano ancora il relativo
flusso di riparazione legacy di Doctor. Alcuni risultati lint sono intenzionalmente solo diagnostici, quindi la
presenza di un controllo in --lint --all non implica che --fix modificherà quell’area.
Il contratto separa detect() (segnala i risultati) da repair() (segnala
modifiche/differenze/effetti collaterali), mantenendo aperta la possibilità di un futuro
doctor --fix --dry-run senza trasformare i controlli lint in pianificatori di modifiche.
Alcuni controlli integrati sono disabilitati per impostazione predefinita internamente, affinché rimangano disponibili per
--all, --only e i flussi di riparazione di Doctor senza entrare a far parte del profilo di automazione
predefinito di doctor --lint. La gravità viene comunque indicata per ogni
risultato (info, warning o error); la selezione predefinita non è un livello di
gravità.
ok: indica se un risultato ha raggiunto la soglia di gravità selezionatachecksRun/checksSkipped: conteggi (ignorati dal profilo, da--onlyo da--skip)findings: diagnostica strutturata concheckId,severity,messagee, facoltativamente,path,line,column,ocPath,source,target,requirement,fixHint
--severity-min info|warning|error(valore predefinitowarning): controlla sia ciò che viene stampato sia ciò che determina un codice di uscita diverso da zero.--all: esegue tutti i controlli lint registrati, inclusi quelli facoltativi esclusi dall’insieme di automazione predefinito.--only <id>(ripetibile): esegue solo gli ID dei controlli specificati; un ID sconosciuto viene segnalato come risultato di errore.--skip <id>(ripetibile): esclude un controllo mantenendo attiva la parte restante dell’esecuzione.--json,--severity-min,--all,--onlye--skiprichiedono--lint; le esecuzioni semplici diopenclaw doctore--fixli rifiutano.
Funzionalità (riepilogo)
Integrità, interfaccia utente e aggiornamenti
Integrità, interfaccia utente e aggiornamenti
- Aggiornamento preliminare facoltativo per le installazioni git (solo in modalità interattiva).
- Controllo dell’aggiornamento del protocollo dell’interfaccia utente (ricompila la Control UI quando lo schema del protocollo è più recente).
- Controllo di integrità + richiesta di riavvio.
- Note relative solo a problemi di Skills e Plugin; l’inventario integro rimane in
openclaw skills checkeopenclaw plugins list.
Configurazione e migrazioni
Configurazione e migrazioni
- Normalizzazione della configurazione per i formati di valori legacy.
- Migrazione della configurazione Talk dai campi legacy semplici
talk.*atalk.provider+talk.providers.<provider>. - Controlli di migrazione del browser per le configurazioni legacy dell’estensione Chrome e la disponibilità di Chrome MCP.
- Avvisi sulle sostituzioni del provider OpenCode (
models.providers.opencode/opencode-zen/opencode-go). - Migrazione del provider/profilo legacy OpenAI Codex (
openai-codex→openai) e avvisi di occultamento permodels.providers.openai-codexobsoleti. - Controllo dei prerequisiti TLS OAuth per i profili OAuth di OpenAI Codex.
- Avvisi sull’elenco di elementi consentiti per Plugin/strumenti quando
plugins.allowè restrittivo, ma i criteri degli strumenti richiedono ancora caratteri jolly o strumenti appartenenti ai Plugin. - Migrazione dello stato legacy su disco (sessioni/directory dell’agente/autenticazione WhatsApp).
- Migrazione delle chiavi legacy del contratto del manifesto dei Plugin (
speechProviders,realtimeTranscriptionProviders,realtimeVoiceProviders,mediaUnderstandingProviders,imageGenerationProviders,videoGenerationProviders,webFetchProviders,webSearchProviders→contracts). - Migrazione dell’archivio Cron legacy (
jobId,schedule.cron, campi di consegna/payload di primo livello, payloadprovider, processi Webhook di fallbacknotify: true). - Riparazione della versione bloccata del runtime della CLI Codex (
agentRuntime.id: "codex-cli"→"codex") inagents.defaults,agents.list[]emodels.providers.*(incluse le voci per modello). - Pulizia della configurazione obsoleta dei Plugin quando questi sono abilitati; con
plugins.enabled=false, i riferimenti obsoleti ai Plugin vengono mantenuti come configurazione di contenimento inattiva.
Stato e integrità
Stato e integrità
- Ispezione dei file di blocco delle sessioni e pulizia dei blocchi obsoleti.
- Riparazione delle trascrizioni delle sessioni per i rami duplicati di riscrittura dei prompt creati dalle build 2026.4.24 interessate.
- Rilevamento degli indicatori di recupero dal riavvio dei sottoagenti bloccati, con supporto di
--fixper eliminare gli indicatori obsoleti di recupero interrotto, affinché l’avvio non continui a trattare il processo figlio come interrotto durante il riavvio. - Controlli di integrità dello stato e delle autorizzazioni (sessioni, trascrizioni, directory dello stato).
- Controlli delle autorizzazioni del file di configurazione (chmod 600) durante l’esecuzione locale.
- Integrità dell’autenticazione dei modelli: controlla la scadenza OAuth, può aggiornare i token in scadenza e segnala gli stati di sospensione temporanea/disabilitazione dei profili di autenticazione.
Gateway, servizi e supervisori
Gateway, servizi e supervisori
- Riparazione dell’immagine della sandbox quando l’isolamento è abilitato.
- Migrazione dei servizi legacy e rilevamento di Gateway aggiuntivi.
- Migrazione dello stato legacy del canale Matrix (in modalità
--fix/--repair). - Controlli del runtime del Gateway (servizio installato ma non in esecuzione; etichetta launchd memorizzata nella cache).
- Avvisi sullo stato dei canali (rilevati dal Gateway in esecuzione).
- I controlli delle autorizzazioni specifici per canale si trovano in
openclaw channels capabilities; ad esempio, le autorizzazioni dei canali vocali Discord vengono sottoposte ad audit conopenclaw channels capabilities --channel discord --target channel:<channel-id>. - Controlli della reattività di WhatsApp in caso di integrità degradata del ciclo di eventi del Gateway con client TUI locali ancora in esecuzione;
--fixarresta solo i client TUI locali verificati. - Riparazione delle route Codex per i riferimenti ai modelli legacy
openai-codex/*nei modelli principali, nei fallback, nei modelli di generazione di immagini/video, nelle sostituzioni di Heartbeat/sottoagenti/Compaction, negli hook, nelle sostituzioni dei modelli dei canali e nelle route bloccate delle sessioni;--fixli riscrive inopenai/*, migra i profili/l’ordine di autenticazioneopenai-codex:*aopenai:*, rimuove le versioni bloccate obsolete del runtime per sessione/intero agente e lascia che la route effettiva riparata determini la compatibilità di Codex. - Audit della configurazione del supervisore (launchd/systemd/schtasks) con riparazione facoltativa.
- Pulizia delle variabili d’ambiente proxy integrate per i servizi Gateway che hanno acquisito i valori della shell
HTTP_PROXY/HTTPS_PROXY/NO_PROXYdurante l’installazione o l’aggiornamento. - Controlli del runtime del Gateway (servizi Bun legacy non supportati, percorsi dei gestori di versioni).
- Diagnostica delle collisioni delle porte del Gateway (valore predefinito
18789).
Autenticazione, sicurezza e associazione
Autenticazione, sicurezza e associazione
- Avvisi di sicurezza per i criteri dei messaggi diretti aperti.
- Controlli di autenticazione del Gateway per la modalità token locale (propone la generazione di un token quando non esiste alcuna origine del token; non sovrascrive le configurazioni SecretRef dei token).
- Rilevamento dei problemi di associazione dei dispositivi (richieste in sospeso per la prima associazione, aggiornamenti in sospeso di ruolo/ambito, divergenza della cache locale obsoleta dei token dei dispositivi e divergenza dell’autenticazione dei record associati).
Area di lavoro e shell
Area di lavoro e shell
- Controllo della persistenza systemd su Linux.
- Controllo delle dimensioni dei file di bootstrap dell’area di lavoro (avvisi di troncamento/prossimità al limite per i file di contesto).
- Controllo della disponibilità delle Skills per l’agente predefinito; segnala le Skills consentite prive dei requisiti relativi a file binari, ambiente, configurazione o sistema operativo, mentre
--fixpuò disabilitare le Skills non disponibili inskills.entries. - Controllo dello stato del completamento della shell e installazione/aggiornamento automatici.
- Controllo della disponibilità del provider di embedding per la ricerca nella memoria (modello locale, chiave API remota o file binario QMD).
- Controlli dell’installazione dai sorgenti (incompatibilità dell’area di lavoro pnpm, risorse dell’interfaccia utente mancanti, file binario tsx mancante).
- Scrive la configurazione aggiornata + i metadati della procedura guidata.
Compilazione retroattiva e reimpostazione dell’interfaccia utente di Dreams
La scena Dreams della Control UI include le azioni Backfill, Reset e Clear Grounded per il flusso di lavoro Dreaming grounded. Queste usano metodi RPC in stile doctor del Gateway, ma non fanno parte della riparazione/migrazione CLI diopenclaw doctor.
MEMORY.md, esegue migrazioni doctor complete o inserisce autonomamente candidati grounded nell’archivio live per la promozione a breve termine. Per immettere la riproduzione storica grounded nella normale corsia di promozione profonda, usare invece il flusso CLI:
DREAMS.md rimane la superficie di revisione.
Comportamento dettagliato e motivazioni
0. Aggiornamento facoltativo (installazioni git)
0. Aggiornamento facoltativo (installazioni git)
1. Normalizzazione della configurazione
1. Normalizzazione della configurazione
talk.provider + talk.providers.<provider>, con la configurazione vocale in tempo reale in talk.realtime.*. Doctor riscrive le vecchie forme talk.voiceId / talk.voiceAliases / talk.modelId / talk.outputFormat / talk.apiKey nella mappa dei provider e riscrive i selettori legacy di primo livello per il tempo reale (talk.mode, talk.transport, talk.brain, talk.model, talk.voice) in talk.realtime.Doctor avvisa inoltre quando plugins.allow non è vuoto e la policy degli strumenti usa voci con caratteri jolly o appartenenti a Plugin. tools.allow: ["*"] corrisponde solo agli strumenti dei Plugin effettivamente caricati; non aggira l’allowlist esclusiva dei Plugin.2. Migrazioni delle chiavi di configurazione legacy
2. Migrazioni delle chiavi di configurazione legacy
openclaw doctor. Doctor spiega quali chiavi legacy sono state trovate, mostra la migrazione applicata e riscrive ~/.openclaw/openclaw.json con lo schema aggiornato. L’avvio del Gateway rifiuta i formati di configurazione legacy e richiede di eseguire openclaw doctor --fix; non riscrive openclaw.json all’avvio. Anche le migrazioni dell’archivio dei processi Cron sono gestite da openclaw doctor --fix.routing.queue, routing.bindings, routing.agents/defaultAgentId
originali, routing.transcribeAudio, agent.* di primo livello o
identity di primo livello della precedente forma di configurazione
multi-agente) non dispongono più di un percorso di migrazione; la configurazione
che le utilizza ora non supera la convalida anziché essere riscritta. Correggere
manualmente tali chiavi in base al riferimento della configurazione corrente
prima che doctor possa procedere.plugins.entries.voice-call.config.* riportate sopra vengono normalizzate dal
Plugin Voice Call stesso a ogni caricamento della configurazione, non da openclaw doctor. Il Plugin registra inoltre un avviso all’avvio che rimanda a openclaw doctor --fix, ma doctor attualmente non riscrive
openclaw.json per queste chiavi; è la normalizzazione del Plugin
stesso ad applicare la modifica in fase di esecuzione.- Se sono configurate due o più voci
channels.<channel>.accountssenzachannels.<channel>.defaultAccountoaccounts.default, doctor avvisa che il routing di fallback può selezionare un account imprevisto. - Se
channels.<channel>.defaultAccountè impostato su un ID account sconosciuto, doctor avvisa ed elenca gli ID degli account configurati.
2b. Override del provider OpenCode
2b. Override del provider OpenCode
models.providers.opencode, opencode-zen o opencode-go, questi sostituiscono il catalogo OpenCode integrato di openclaw/plugin-sdk/llm. Ciò può forzare i modelli a usare l’API errata o azzerare i costi. Doctor mostra un avviso per consentire di rimuovere l’override e ripristinare l’instradamento API e i costi specifici per modello.2c. Migrazione del browser e idoneità di Chrome MCP
2c. Migrazione del browser e idoneità di Chrome MCP
browser.profiles.*.driver: "extension" → "existing-session"; browser.relayBindHost rimosso).Doctor verifica inoltre il percorso Chrome MCP locale all’host quando si usa defaultProfile: "user" o un profilo existing-session configurato:- verifica se Google Chrome è installato sullo stesso host per i profili di connessione automatica predefiniti
- verifica la versione di Chrome rilevata e mostra un avviso se è precedente a Chrome 144
- ricorda di abilitare il debug remoto nella pagina di ispezione del browser (ad esempio
chrome://inspect/#remote-debugging,brave://inspect/#remote-debuggingoedge://inspect/#remote-debugging)
responsebody, l’esportazione PDF, l’intercettazione dei download e le azioni in batch richiedono comunque un browser gestito o un profilo CDP non elaborato. Questo controllo non si applica a Docker, sandbox, browser remoti o altri flussi headless, che continuano a usare CDP non elaborato.2d. Prerequisiti TLS per OAuth
2d. Prerequisiti TLS per OAuth
UNABLE_TO_GET_ISSUER_CERT_LOCALLY, certificato scaduto o autofirmato), doctor mostra indicazioni di correzione specifiche per la piattaforma. Su macOS con un Node di Homebrew, la correzione è in genere brew postinstall ca-certificates. Con --deep, il controllo viene eseguito anche se il Gateway è integro.2e. Override del provider OAuth Codex
2e. Override del provider OAuth Codex
models.providers.openai-codex, queste possono oscurare il percorso del provider OAuth Codex integrato. Doctor mostra un avviso quando rileva tali vecchie impostazioni di trasporto insieme a OAuth Codex, in modo da consentire la rimozione o la riscrittura dell’override di trasporto obsoleto e il ripristino del comportamento di instradamento attuale. I proxy personalizzati e gli override dei soli header rimangono supportati e non attivano questo avviso, ma le route di richiesta definite in questo modo non sono idonee alla selezione implicita di Codex.2f. Riparazione delle route Codex
2f. Riparazione delle route Codex
openai-codex/* legacy. L’instradamento nativo dell’harness Codex usa riferimenti di modello openai/* canonici, ma il solo prefisso non seleziona mai Codex. Quando la policy di runtime non è impostata o è auto, è idonea soltanto una route ufficiale HTTPS Platform Responses o ChatGPT Responses esatta, senza override della richiesta definito. Consultare runtime implicito dell’agente OpenAI.In modalità --fix / --repair, doctor riscrive i riferimenti interessati dell’agente predefinito e dei singoli agenti, inclusi i modelli primari, i fallback, i modelli di generazione di immagini/video, gli override di heartbeat/subagente/compaction, gli hook, gli override del modello del canale e lo stato obsoleto e persistente delle route di sessione:openai-codex/gpt-*diventaopenai/gpt-*.- L’intento Codex viene spostato nelle voci
agentRuntime.id: "codex"con ambito provider/modello per i riferimenti di modello dell’agente riparati. - La configurazione obsoleta del runtime dell’intero agente e i vincoli persistenti del runtime di sessione vengono rimossi, perché la selezione del runtime ha ambito provider/modello.
- La policy di runtime provider/modello esistente viene mantenuta, a meno che il riferimento di modello legacy riparato non richieda l’instradamento Codex per conservare il precedente percorso di autenticazione.
- Gli elenchi di fallback dei modelli esistenti vengono mantenuti riscrivendo le relative voci legacy; le impostazioni copiate per modello vengono spostate dalla chiave legacy alla chiave canonica
openai/*. - I valori persistenti di sessione
modelProvider/providerOverride,model/modelOverride, gli avvisi di fallback e i vincoli dei profili di autenticazione vengono riparati in tutti gli archivi di sessione degli agenti rilevati. - Doctor ripara separatamente i vincoli
agentRuntime.id: "codex-cli"obsoleti (un distinto ID di runtime legacy) impostandoli su"codex"nelle voci di modelloagents.defaults,agents.list[]emodels.providers.*. /codex ...significa “controllare o associare una conversazione Codex nativa dalla chat”./acp ...oruntime: "acp"significa “usare l’adattatore ACP/acpx esterno”.
2g. Pulizia delle route di sessione
2g. Pulizia delle route di sessione
openclaw doctor --fix può eliminare lo stato obsoleto creato automaticamente, come i vincoli di modello modelOverrideSource: "auto", i metadati del modello di runtime, gli ID dell’harness vincolati, le associazioni delle sessioni CLI e gli override automatici dei profili di autenticazione, quando la route proprietaria non è più configurata. Le scelte esplicite dell’utente o legacy relative al modello di sessione vengono segnalate per una revisione manuale e lasciate invariate; modificarle con /model ..., /new oppure reimpostare la sessione quando tale route non è più prevista.3. Migrazioni dello stato legacy (struttura su disco)
3. Migrazioni dello stato legacy (struttura su disco)
- Archivio delle sessioni e trascrizioni: da
~/.openclaw/sessions/a~/.openclaw/agents/<agentId>/sessions/ - Directory dell’agente: da
~/.openclaw/agent/a~/.openclaw/agents/<agentId>/agent/ - Stato di autenticazione WhatsApp (Baileys): dal percorso legacy
~/.openclaw/credentials/*.json(tranneoauth.json) a~/.openclaw/credentials/whatsapp/<accountId>/...(ID account predefinito:default)
openclaw doctor. La normalizzazione del provider Talk e della mappa dei provider esegue il confronto in base all’uguaglianza strutturale, pertanto le differenze relative al solo ordine delle chiavi non attivano più modifiche doctor --fix ripetute e senza effetto.3a. Migrazioni dei manifest dei Plugin legacy
3a. Migrazioni dei manifest dei Plugin legacy
speechProviders, realtimeTranscriptionProviders, realtimeVoiceProviders, mediaUnderstandingProviders, imageGenerationProviders, videoGenerationProviders, webFetchProviders, webSearchProviders). Quando le trova, propone di spostarle nell’oggetto contracts e riscrivere direttamente il file manifest. Questa migrazione è idempotente; se contracts contiene già gli stessi valori, la chiave legacy viene rimossa senza duplicare i dati.3b. Migrazioni dell'archivio Cron legacy
3b. Migrazioni dell'archivio Cron legacy
~/.openclaw/cron/jobs.json per impostazione predefinita oppure cron.store quando viene applicato un override) alla ricerca di vecchie strutture dei processi ancora accettate dallo scheduler per compatibilità.Le attuali operazioni di pulizia di Cron includono:jobId→idschedule.cron→schedule.expr- campi del payload di primo livello (
message,model,thinking, …) →payload - campi di consegna di primo livello (
deliver,channel,to,provider, …) →delivery - alias di consegna
providerdel payload →delivery.channelesplicito - processi di fallback Webhook
notify: truelegacy → consegna Webhook esplicita dacron.webhook, quando impostato; i processi di annuncio mantengono la consegna in chat e ricevonodelivery.completionDestination. Quandocron.webhooknon è impostato, l’indicatorenotifyinerte di primo livello viene rimosso per i processi privi di destinazione (la consegna esistente, inclusi gli annunci, viene mantenuta), poiché la consegna in fase di runtime non lo legge mai.
jobs.json, le righe non valide non elaborate vengono copiate in jobs-quarantine.json, accanto all’archivio attivo; doctor segnala le righe messe in quarantena per consentirne la revisione o la riparazione manuale.All’avvio, il Gateway normalizza la proiezione del runtime e ignora l’indicatore notify di primo livello, ma lascia invariata la configurazione Cron persistente affinché venga riparata da doctor. Quando cron.webhook non è impostato, doctor rimuove l’indicatore inerte dai processi privi di una destinazione di migrazione (delivery.mode assente/nessuna, una destinazione Webhook inutilizzabile o una consegna di annuncio/chat esistente), lasciando invariata la consegna esistente; in questo modo le esecuzioni ripetute di doctor --fix non mostrano più avvisi per lo stesso processo. Se cron.webhook è impostato ma non è un URL HTTP(S) valido, doctor mostra comunque un avviso e lascia l’indicatore affinché sia possibile correggere l’URL.Su Linux, doctor mostra inoltre un avviso quando il crontab dell’utente richiama ancora il comando legacy ~/.openclaw/bin/ensure-whatsapp.sh. Tale script locale all’host non è gestito dalla versione attuale di OpenClaw e può scrivere falsi messaggi Gateway inactive in ~/.openclaw/logs/whatsapp-health.log quando Cron non riesce a raggiungere il bus utente systemd. Rimuovere la voce obsoleta del crontab con crontab -e; usare openclaw channels status --probe, openclaw doctor e openclaw gateway status per gli attuali controlli di integrità.3c. Pulizia dei blocchi delle sessioni
3c. Pulizia dei blocchi delle sessioni
--fix / --repair, rimuove automaticamente i blocchi con proprietari non attivi, orfani, riciclati, non validi e obsoleti oppure non OpenClaw. I vecchi blocchi ancora appartenenti a un processo OpenClaw attivo vengono segnalati ma lasciati in posizione, affinché doctor non interrompa un processo attivo che scrive una trascrizione.3d. Riparazione dei rami delle trascrizioni di sessione
3d. Riparazione dei rami delle trascrizioni di sessione
--fix / --repair, doctor crea una copia di backup di ogni file interessato accanto all’originale e riscrive la trascrizione sul ramo attivo, affinché la cronologia del Gateway e i lettori della memoria non rilevino più turni duplicati.4. Controlli di integrità dello stato (persistenza delle sessioni, instradamento e sicurezza)
4. Controlli di integrità dello stato (persistenza delle sessioni, instradamento e sicurezza)
- Directory di stato mancante: avvisa della perdita catastrofica dello stato, invita a ricreare la directory e ricorda che non è possibile recuperare i dati mancanti.
- Permessi della directory di stato: verifica che sia scrivibile; propone di correggere i permessi (e mostra un suggerimento
chownquando rileva una mancata corrispondenza di proprietario/gruppo). - Directory di stato sincronizzata con il cloud su macOS: avvisa quando lo stato viene risolto sotto iCloud Drive (
~/Library/Mobile Documents/com~apple~CloudDocs/...) o~/Library/CloudStorage/..., perché i percorsi basati sulla sincronizzazione possono causare operazioni di I/O più lente e condizioni di competizione tra blocco e sincronizzazione. - Directory di stato su SD o eMMC in Linux: avvisa quando lo stato viene risolto in un’origine di montaggio
mmcblk*, perché le operazioni di I/O casuali su SD/eMMC possono essere più lente e causare un’usura più rapida durante le scritture di sessioni e credenziali. - Directory di stato volatile in Linux: avvisa quando lo stato viene risolto in
tmpfsoramfs, perché sessioni, credenziali, configurazione e stato SQLite (con file accessori WAL/journal) scompaiono al riavvio. I montaggi Dockeroverlaynon vengono intenzionalmente segnalati perché i relativi livelli scrivibili persistono tra i riavvii dell’host finché il container rimane presente. - Directory delle sessioni mancanti:
sessions/e la directory di archiviazione delle sessioni sono necessarie per conservare la cronologia ed evitare arresti anomaliENOENT. - Mancata corrispondenza delle trascrizioni: avvisa quando le voci di sessione recenti hanno file di trascrizione mancanti.
- Sessione principale con “JSONL su 1 riga”: segnala quando la trascrizione principale contiene una sola riga (la cronologia non si sta accumulando).
- Più directory di stato: avvisa quando esistono più cartelle
~/.openclawnelle directory home o quandoOPENCLAW_STATE_DIRpunta altrove (la cronologia può suddividersi tra le installazioni). - Promemoria della modalità remota: se
gateway.mode=remote, doctor ricorda di eseguirlo sull’host remoto (lo stato risiede lì). - Permessi del file di configurazione: avvisa se
~/.openclaw/openclaw.jsonè leggibile dal gruppo o da tutti e propone di restringere i permessi a600.
5. Stato dell'autenticazione del modello (scadenza OAuth)
5. Stato dell'autenticazione del modello (scadenza OAuth)
--non-interactive ignora i tentativi di aggiornamento.Quando un aggiornamento OAuth non riesce in modo permanente (ad esempio refresh_token_reused, invalid_grant oppure un provider richiede di accedere nuovamente), doctor segnala che è necessaria una nuova autenticazione e mostra il comando openclaw models auth login --provider ... esatto da eseguire.Doctor segnala inoltre i profili di autenticazione temporaneamente inutilizzabili a causa di brevi periodi di attesa (limiti di frequenza, timeout o errori di autenticazione) o disabilitazioni più lunghe (problemi di fatturazione o credito).I profili OAuth Codex legacy i cui token risiedono nel Portachiavi macOS (onboarding precedente al layout con file accessorio) vengono corretti esclusivamente da doctor. Eseguire openclaw doctor --fix una volta da un terminale interattivo per migrare direttamente i token legacy basati sul Portachiavi in auth-profiles.json; successivamente, le esecuzioni incorporate (Telegram, cron, invio a sotto-agenti) li risolvono come profili OAuth OpenAI canonici.6. Convalida del modello degli hook
6. Convalida del modello degli hook
hooks.gmail.model è impostato, doctor convalida il riferimento al modello rispetto al catalogo e all’elenco consentito e avvisa quando non può essere risolto o non è consentito.7. Riparazione dell'immagine sandbox
7. Riparazione dell'immagine sandbox
7b. Pulizia dell'installazione dei Plugin
7b. Pulizia dell'installazione dei Plugin
openclaw doctor --fix / openclaw doctor --repair: radici obsolete delle dipendenze generate, vecchie directory della fase di installazione, residui locali dei pacchetti prodotti dal precedente codice di riparazione delle dipendenze dei Plugin inclusi e copie npm gestite orfane o recuperate dei Plugin @openclaw/* inclusi, che possono oscurare il manifest incluso corrente. Doctor ricollega inoltre il pacchetto host openclaw nei Plugin npm gestiti che dichiarano peerDependencies.openclaw, affinché le importazioni di runtime locali del pacchetto, come openclaw/plugin-sdk/*, continuino a essere risolte dopo gli aggiornamenti o le riparazioni npm.Doctor può inoltre reinstallare i Plugin scaricabili mancanti quando sono referenziati dalla configurazione ma non vengono trovati dal registro locale dei Plugin (plugins.entries materiale, impostazioni configurate di canale/provider/ricerca, runtime degli agenti configurati). Durante gli aggiornamenti dei pacchetti, doctor evita di reinstallare i pacchetti dei Plugin mentre il pacchetto principale viene sostituito; eseguire nuovamente openclaw doctor --fix dopo l’aggiornamento se un Plugin configurato necessita ancora di ripristino. Al di fuori dell’eccezione per l’avvio dell’immagine del container descritta di seguito, l’avvio del Gateway e il ricaricamento della configurazione non eseguono la riparazione dei pacchetti; le installazioni dei Plugin restano operazioni esplicite di doctor/installazione/aggiornamento.L’avvio del Gateway in un container prevede una limitata eccezione per l’aggiornamento: quando openclaw gateway run viene avviato con una nuova versione di OpenClaw, esegue le migrazioni sicure dello stato e la convergenza post-core esistente dei Plugin prima di risultare pronto, quindi registra un checkpoint per versione. Questo passaggio di avvio può eliminare i record obsoleti dei Plugin inclusi, correggere i collegamenti locali dei Plugin, reinstallare i pacchetti dei Plugin configurati quando richiesto dal percorso di convergenza e controllare i payload dei Plugin attivi. Se l’avvio non riesce a eseguire la riparazione in sicurezza, eseguire una volta la stessa immagine con openclaw doctor --fix sullo stesso stato e sulla stessa configurazione montati, prima di riavviare normalmente il container.8. Migrazioni del servizio Gateway e suggerimenti per la pulizia
8. Migrazioni del servizio Gateway e suggerimenti per la pulizia
openclaw gateway status --deep o openclaw doctor --deep, quindi rimuovere il duplicato o impostare OPENCLAW_SERVICE_REPAIR_POLICY=external quando il ciclo di vita del Gateway è gestito da un supervisore di sistema.8b. Migrazione di Matrix all'avvio
8b. Migrazione di Matrix all'avvio
--fix / --repair) crea un’istantanea precedente alla migrazione, quindi esegue le fasi di migrazione secondo il principio del massimo sforzo: migrazione dello stato Matrix legacy e preparazione dello stato crittografato legacy. Entrambe le fasi non sono irreversibili; gli errori vengono registrati e l’avvio continua. In modalità di sola lettura (openclaw doctor senza --fix) questo controllo viene interamente ignorato.8c. Associazione dei dispositivi e divergenza dell'autenticazione
8c. Associazione dei dispositivi e divergenza dell'autenticazione
- richieste in sospeso di prima associazione
- aggiornamenti in sospeso di ruolo o ambito per dispositivi già associati
- correzioni delle mancata corrispondenza della chiave pubblica in cui l’ID del dispositivo corrisponde ancora, ma l’identità del dispositivo non corrisponde più al record approvato
- record associati privi di un token attivo per un ruolo approvato
- token associati i cui ambiti divergono dalla base di riferimento dell’associazione approvata
- voci memorizzate nella cache locale del token del dispositivo per la macchina corrente, precedenti a una rotazione del token sul lato Gateway o contenenti metadati di ambito obsoleti
- esaminare le richieste in sospeso con
openclaw devices list - approvare la richiesta esatta con
openclaw devices approve <requestId> - ruotare un nuovo token con
openclaw devices rotate --device <deviceId> --role <role> - rimuovere e approvare nuovamente un record obsoleto con
openclaw devices remove <deviceId>
9. Avvisi di sicurezza
9. Avvisi di sicurezza
openclaw security audit per l’inventario completo della sicurezza.10. Permanenza di systemd (Linux)
10. Permanenza di systemd (Linux)
11. Stato dell'area di lavoro (Skills, Plugin e TaskFlow)
11. Stato dell'area di lavoro (Skills, Plugin e TaskFlow)
- Skills: elenca i nomi delle Skills consentite ma inutilizzabili; usare
openclaw skills checkper i dettagli sui requisiti e i conteggi completi. - Plugin: segnala solo gli ID dei Plugin con errori; usare
openclaw plugins listper l’inventario dei Plugin caricati, importati, disabilitati e inclusi nel bundle. - Avvisi di compatibilità dei Plugin: segnala i Plugin che presentano problemi di compatibilità con il runtime corrente.
- Diagnostica dei Plugin: espone tutti gli avvisi o gli errori generati durante il caricamento dal registro dei Plugin.
- Ripristino dei TaskFlow: espone i TaskFlow gestiti sospetti che richiedono un’ispezione manuale o l’annullamento.
- CLI Claude: segnala esclusivamente problemi relativi al file binario, all’autenticazione, al profilo, all’area di lavoro o alla directory del progetto; i dettagli delle verifiche riuscite vengono omessi.
11b. Dimensione del file di bootstrap
11b. Dimensione del file di bootstrap
AGENTS.md, CLAUDE.md o altri file di contesto inseriti) sono vicini o superiori al limite di caratteri configurato. Segnala per ogni file il conteggio dei caratteri grezzi rispetto a quelli inseriti, la percentuale di troncamento, la causa del troncamento (max/file o max/total) e il totale dei caratteri inseriti come frazione del limite totale. Quando i file vengono troncati o sono vicini al limite, doctor mostra suggerimenti per regolare agents.defaults.bootstrapMaxChars e agents.defaults.bootstrapTotalMaxChars.11c. Completamento della shell
11c. Completamento della shell
- Se il profilo della shell utilizza un modello lento di completamento dinamico (
source <(openclaw completion ...)), doctor lo aggiorna alla variante più veloce basata su un file memorizzato nella cache. - Se il completamento è configurato nel profilo ma il file della cache è mancante, doctor rigenera automaticamente la cache.
- Se il completamento non è configurato, doctor propone di installarlo (solo in modalità interattiva; ignorato con
--non-interactive).
openclaw completion --write-state per rigenerare manualmente la cache.11d. Pulizia dei Plugin di canale obsoleti
11d. Pulizia dei Plugin di canale obsoleti
openclaw doctor --fix rimuove un Plugin di canale mancante, rimuove anche la configurazione pendente relativa al canale che faceva riferimento a tale Plugin: le voci channels.<id>, le destinazioni Heartbeat che indicavano il canale e le sostituzioni agents.*.models["<channel>/*"]. Ciò impedisce cicli di avvio del Gateway in cui il runtime del canale non è più presente, ma la configurazione richiede ancora al Gateway di associarsi a esso.12. Controlli di autenticazione del Gateway (token locale)
12. Controlli di autenticazione del Gateway (token locale)
- Se la modalità token richiede un token e non esiste alcuna origine del token, doctor propone di generarne uno.
- Se
gateway.auth.tokenè gestito tramite SecretRef ma non è disponibile, doctor avvisa e non lo sovrascrive con testo non cifrato. openclaw doctor --generate-gateway-tokenforza la generazione solo quando non è configurato alcun SecretRef per il token.
12b. Riparazioni di sola lettura compatibili con SecretRef
12b. Riparazioni di sola lettura compatibili con SecretRef
openclaw doctor --fixutilizza lo stesso modello di riepilogo SecretRef in sola lettura dei comandi della famiglia status per le riparazioni mirate della configurazione.- Esempio: il tentativo di riparazione di Telegram
allowFrom/groupAllowFrom@usernameprova a utilizzare le credenziali del bot configurate, quando disponibili. - Se il token del bot Telegram è configurato tramite SecretRef ma non è disponibile nel percorso del comando corrente, doctor segnala che la credenziale è configurata ma non disponibile e ignora la risoluzione automatica, anziché arrestarsi in modo anomalo o indicare erroneamente che il token è mancante.
13. Controllo di integrità e riavvio del Gateway
13. Controllo di integrità e riavvio del Gateway
13b. Disponibilità della ricerca in memoria
13b. Disponibilità della ricerca in memoria
- Backend QMD: verifica se il binario
qmdè disponibile e avviabile. In caso contrario, mostra indicazioni per la correzione, tra cuinpm install -g @tobilu/qmd(o l’equivalente Bun), e un’opzione per specificare manualmente il percorso del binario. - Provider locale esplicito: verifica la presenza di un file di modello locale o di un URL riconosciuto per un modello remoto/scaricabile. Se manca, suggerisce di passare a un provider remoto.
- Provider remoto esplicito (
openai,voyage, ecc.): verifica che sia presente una chiave API nell’ambiente o nell’archivio di autenticazione. Se manca, mostra suggerimenti pratici per la correzione. - Provider automatico legacy: considera
memorySearch.provider: "auto"come OpenAI, verifica la disponibilità di OpenAI edoctor --fixlo riscrive comeprovider: "openai".
openclaw memory status --deep per verificare in fase di esecuzione la disponibilità degli embedding.14. Avvisi sullo stato dei canali
14. Avvisi sullo stato dei canali
15. Controllo e riparazione della configurazione del supervisore
15. Controllo e riparazione della configurazione del supervisore
openclaw doctorrichiede conferma prima di riscrivere la configurazione del supervisore.openclaw doctor --yesaccetta le richieste di riparazione predefinite.openclaw doctor --fixapplica le correzioni consigliate senza richieste di conferma (--repairè un alias).openclaw doctor --fix --forcesovrascrive le configurazioni personalizzate del supervisore.OPENCLAW_SERVICE_REPAIR_POLICY=externalmantiene doctor in sola lettura per il ciclo di vita del servizio Gateway. Continua a segnalare l’integrità del servizio e a eseguire riparazioni non relative al servizio, ma ignora l’installazione, l’avvio, il riavvio e il bootstrap del servizio, le riscritture della configurazione del supervisore e la pulizia dei servizi legacy, poiché il ciclo di vita è gestito da un supervisore esterno.- Su Linux, doctor non riscrive i metadati del comando o del punto di ingresso mentre l’unità systemd corrispondente del Gateway è attiva. Durante la scansione dei servizi duplicati, ignora inoltre le unità aggiuntive inattive simili al Gateway che non sono legacy, affinché i file di servizio complementari non generino segnalazioni di pulizia superflue.
- Se l’autenticazione tramite token richiede un token e
gateway.auth.tokenè gestito tramite SecretRef, l’installazione o la riparazione del servizio da parte di doctor convalida SecretRef, ma non salva i valori del token in testo non crittografato risolti nei metadati dell’ambiente del servizio del supervisore. - Doctor rileva i valori gestiti
.envo basati su SecretRef dell’ambiente del servizio che le installazioni precedenti di LaunchAgent, systemd o delle attività pianificate di Windows incorporavano direttamente e riscrive i metadati del servizio affinché tali valori vengano caricati dall’origine di runtime anziché dalla definizione del supervisore. - Doctor rileva quando il comando del servizio è ancora vincolato a un vecchio
--portdopo le modifiche agateway.porte riscrive i metadati del servizio con la porta corrente. - Se l’autenticazione tramite token richiede un token e il SecretRef del token configurato non è risolto, doctor blocca il percorso di installazione o riparazione fornendo indicazioni pratiche.
- Se sono configurati sia
gateway.auth.tokensiagateway.auth.passwordegateway.auth.modenon è impostato, doctor blocca l’installazione o la riparazione finché la modalità non viene impostata esplicitamente. - Per le unità systemd utente di Linux, i controlli di doctor sulla divergenza dei token includono le origini
Environment=eEnvironmentFile=durante il confronto dei metadati di autenticazione del servizio. - Le riparazioni del servizio da parte di doctor rifiutano di riscrivere, arrestare o riavviare un servizio Gateway da un binario OpenClaw precedente quando la configurazione è stata scritta l’ultima volta da una versione più recente. Consultare Risoluzione dei problemi del Gateway.
- È sempre possibile forzare una riscrittura completa tramite
openclaw gateway install --force.
16. Diagnostica del runtime e della porta del Gateway
16. Diagnostica del runtime e della porta del Gateway
18789) e segnala le cause probabili (Gateway già in esecuzione, tunnel SSH).17. Procedure consigliate per il runtime del Gateway
17. Procedure consigliate per il runtime del Gateway
nvm, fnm, volta, asdf, ecc.). Bun non può aprire l’archivio di stato node:sqlite di OpenClaw, quindi le riparazioni migrano i servizi Bun legacy a Node. I percorsi dei gestori di versioni possono non funzionare dopo gli aggiornamenti, poiché il servizio non carica l’inizializzazione della shell. Doctor propone la migrazione a un’installazione di sistema di Node, quando disponibile (Homebrew/apt/choco).I LaunchAgent macOS appena installati o riparati utilizzano un PATH di sistema canonico (/opt/homebrew/bin:/opt/homebrew/sbin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin) anziché copiare il PATH della shell interattiva, in modo che i binari di sistema gestiti da Homebrew rimangano disponibili, mentre Volta, asdf, fnm, pnpm e le altre directory dei gestori di versioni non modifichino il Node risolto dai processi figlio. I servizi Linux continuano a mantenere radici di ambiente esplicite (NVM_DIR, FNM_DIR, VOLTA_HOME, ASDF_DATA_DIR, BUN_INSTALL, PNPM_HOME) e directory stabili dei binari utente, ma le directory alternative presunte dei gestori di versioni vengono scritte nel PATH del servizio solo quando esistono su disco.18. Scrittura della configurazione e metadati della procedura guidata
18. Scrittura della configurazione e metadati della procedura guidata
19. Suggerimenti per l'area di lavoro (backup e sistema di memoria)
19. Suggerimenti per l'area di lavoro (backup e sistema di memoria)