openclaw doctor é a ferramenta de reparo e migração do OpenClaw. Ela corrige configurações e estados obsoletos, verifica a integridade e fornece etapas práticas de reparo.
Início rápido
Modos sem interface e de automação
- --yes
- --fix
- --lint
- --fix --force
- --non-interactive
- --deep
Modo lint somente leitura
openclaw doctor --lint é a alternativa voltada à automação de
openclaw doctor --fix. Ambos compartilham o mesmo registro de regras do Doctor, mas
não selecionam nem executam regras da mesma maneira:
doctor --lint executa o perfil de automação amplo e seguro: verificações
estáticas, locais e úteis na saída de CI ou de pré-verificação. Ele ignora verificações opcionais
que sejam consultivas, sensíveis ao ambiente, dependentes de serviços ativos, relacionadas ao
inventário de contas/workspaces ou à limpeza histórica. Use doctor --lint --all quando quiser a
auditoria lint completa registrada, incluindo essas verificações opcionais, ou --only <id> para
uma verificação específica.
doctor --fix não usa o perfil lint padrão e não aceita
--all. Ele executa o caminho ordenado de reparo do Doctor: verificações modernas de integridade podem fornecer
uma implementação opcional de repair(), enquanto áreas mais antigas ainda usam seu fluxo legado
de reparo do Doctor. Algumas constatações lint são intencionalmente apenas diagnósticas; portanto,
uma verificação aparecer em --lint --all não significa que --fix alterará essa área.
O contrato separa detect() (relata constatações) de repair() (relata
alterações/diffs/efeitos colaterais), o que mantém aberto um caminho para um futuro
doctor --fix --dry-run sem transformar verificações lint em planejadores de alterações.
Algumas verificações integradas ficam desabilitadas por padrão internamente para permanecerem disponíveis a
--all, --only e aos fluxos de reparo do Doctor sem fazerem parte do perfil de automação
doctor --lint padrão. A severidade ainda é emitida por constatação
(info, warning ou error); a seleção padrão não é um nível de severidade.
ok: indica se alguma constatação atingiu o limite de severidade selecionadochecksRun/checksSkipped: contagens (ignoradas pelo perfil, por--onlyou por--skip)findings: diagnósticos estruturados comcheckId,severity,messagee, opcionalmente,path,line,column,ocPath,source,target,requirement,fixHint
--severity-min info|warning|error(padrãowarning): controla tanto o que é exibido quanto o que causa uma saída diferente de zero.--all: executa todas as verificações lint registradas, incluindo verificações opcionais excluídas do conjunto de automação padrão.--only <id>(repetível): executa somente os IDs de verificação informados; um ID desconhecido é relatado como uma constatação de erro.--skip <id>(repetível): exclui uma verificação enquanto mantém o restante da execução ativo.--json,--severity-min,--all,--onlye--skipexigem--lint; execuções simples deopenclaw doctore--fixas rejeitam.
O que ela faz (resumo)
Integridade, interface e atualizações
Integridade, interface e atualizações
- Atualização opcional de pré-verificação para instalações via git (somente no modo interativo).
- Verificação de atualização do protocolo da interface (recompila a interface de controle quando o esquema do protocolo é mais recente).
- Verificação de integridade + solicitação de reinicialização.
- Observações somente sobre problemas de Skills e plugins; o inventário íntegro permanece em
openclaw skills checkeopenclaw plugins list.
Configuração e migrações
Configuração e migrações
- Normalização da configuração para formatos de valores legados.
- Migração da configuração de fala dos campos simples legados
talk.*paratalk.provider+talk.providers.<provider>. - Verificações de migração do navegador para configurações legadas da extensão do Chrome e prontidão do MCP do Chrome.
- Avisos de substituição do provedor OpenCode (
models.providers.opencode/opencode-zen/opencode-go). - Migração do provedor/perfil legado OpenAI Codex (
openai-codex→openai) e avisos de sombreamento paramodels.providers.openai-codexobsoleto. - Verificação dos pré-requisitos de TLS do OAuth para perfis OAuth do OpenAI Codex.
- Avisos da lista de permissões de plugins/ferramentas quando
plugins.allowé restritivo, mas a política de ferramentas ainda solicita curingas ou ferramentas pertencentes a plugins. - Migração de estado legado em disco (sessões/diretório do agente/autenticação do WhatsApp).
- Migração de chaves legadas do contrato de manifesto de plugins (
speechProviders,realtimeTranscriptionProviders,realtimeVoiceProviders,mediaUnderstandingProviders,imageGenerationProviders,videoGenerationProviders,webFetchProviders,webSearchProviders→contracts). - Migração do armazenamento Cron legado (
jobId,schedule.cron, campos de entrega/payload de nível superior, payloadprovider, tarefas de fallback de Webhooknotify: true). - Reparo da fixação do runtime da CLI do Codex (
agentRuntime.id: "codex-cli"→"codex") emagents.defaults,agents.list[]emodels.providers.*(incluindo entradas por modelo). - Limpeza de configurações obsoletas de plugins quando os plugins estão habilitados; quando
plugins.enabled=false, referências obsoletas de plugins são preservadas como configuração inerte de contenção.
Estado e integridade
Estado e integridade
- Inspeção de arquivos de bloqueio de sessão e limpeza de bloqueios obsoletos.
- Reparo de transcrições de sessão para ramificações duplicadas de reescrita de prompts criadas pelas compilações 2026.4.24 afetadas.
- Detecção de marcadores de recuperação de reinicialização de subagentes travados, com suporte a
--fixpara limpar sinalizadores obsoletos de recuperação abortada, evitando que a inicialização continue tratando o processo filho como abortado durante a reinicialização. - Verificações de integridade de estado e permissões (sessões, transcrições, diretório de estado).
- Verificações das permissões do arquivo de configuração (chmod 600) durante a execução local.
- Integridade da autenticação do modelo: verifica a expiração do OAuth, pode atualizar tokens prestes a expirar e relata estados de espera/desabilitação do perfil de autenticação.
Gateway, serviços e supervisores
Gateway, serviços e supervisores
- Reparo da imagem do sandbox quando o isolamento em sandbox está habilitado.
- Migração de serviços legados e detecção de Gateways adicionais.
- Migração de estado legado do canal Matrix (no modo
--fix/--repair). - Verificações do runtime do Gateway (serviço instalado, mas não em execução; rótulo launchd armazenado em cache).
- Avisos de status dos canais (consultados no Gateway em execução).
- As verificações de permissões específicas de canais ficam em
openclaw channels capabilities; por exemplo, as permissões de canais de voz do Discord são auditadas comopenclaw channels capabilities --channel discord --target channel:<channel-id>. - Verificações de responsividade do WhatsApp para detectar integridade degradada do loop de eventos do Gateway com clientes TUI locais ainda em execução;
--fixinterrompe somente clientes TUI locais verificados. - Reparo de rotas do Codex para referências legadas de modelos
openai-codex/*em modelos principais, fallbacks, modelos de geração de imagens/vídeos, substituições de heartbeat/subagente/Compaction, hooks, substituições de modelos por canal e fixações de rotas de sessão;--fixas reescreve comoopenai/*, migra perfis/ordem de autenticaçãoopenai-codex:*paraopenai:*, remove fixações obsoletas do runtime de sessão/agente inteiro e permite que a rota efetiva reparada determine se o Codex é compatível. - Auditoria da configuração do supervisor (launchd/systemd/schtasks) com reparo opcional.
- Limpeza do ambiente de proxy incorporado para serviços do Gateway que capturaram valores
HTTP_PROXY/HTTPS_PROXY/NO_PROXYdo shell durante a instalação ou atualização. - Verificações do runtime do Gateway (serviços Bun legados não compatíveis, caminhos de gerenciadores de versões).
- Diagnóstico de colisão de portas do Gateway (padrão
18789).
Autenticação, segurança e pareamento
Autenticação, segurança e pareamento
- Avisos de segurança para políticas abertas de mensagens diretas.
- Verificações de autenticação do Gateway para o modo de token local (oferece a geração de token quando não existe uma fonte de token; não sobrescreve configurações SecretRef de token).
- Detecção de problemas de pareamento de dispositivos (solicitações pendentes de primeiro pareamento, atualizações pendentes de função/escopo, divergência obsoleta do cache local de tokens de dispositivo e divergência de autenticação do registro pareado).
Workspace e shell
Workspace e shell
- Verificação de linger do systemd no Linux.
- Verificação do tamanho dos arquivos de inicialização do workspace (avisos de truncamento/proximidade do limite para arquivos de contexto).
- Verificação de prontidão das Skills para o agente padrão; relata Skills permitidas com requisitos ausentes de binários, ambiente, configuração ou sistema operacional, e
--fixpode desabilitar Skills indisponíveis emskills.entries. - Verificação do status de conclusão do shell e instalação/atualização automática.
- Verificação da prontidão do provedor de embeddings da busca de memória (modelo local, chave de API remota ou binário QMD).
- Verificações da instalação a partir do código-fonte (incompatibilidade do workspace pnpm, recursos da interface ausentes, binário tsx ausente).
- Grava a configuração atualizada + os metadados do assistente.
Preenchimento retroativo e redefinição da interface Dreams
A cena Dreams da Control UI inclui as ações Backfill, Reset e Clear Grounded para o fluxo de trabalho de Dreaming fundamentado. Elas usam métodos RPC no estilo do doctor do Gateway, mas não fazem parte do reparo/migração da CLIopenclaw doctor.
MEMORY.md, executa migrações completas do doctor ou prepara, por conta própria, candidatos fundamentados no armazenamento ativo de promoção de curto prazo. Para alimentar a reprodução histórica fundamentada na via normal de promoção profunda, use o fluxo da CLI:
DREAMS.md permanece como a superfície de revisão.
Comportamento detalhado e justificativa
0. Atualização opcional (instalações via git)
0. Atualização opcional (instalações via git)
1. Normalização da configuração
1. Normalização da configuração
talk.provider + talk.providers.<provider>, com a configuração de voz em tempo real em talk.realtime.*. O doctor reescreve os formatos antigos talk.voiceId / talk.voiceAliases / talk.modelId / talk.outputFormat / talk.apiKey no mapa de provedores e reescreve seletores legados de nível superior de tempo real (talk.mode, talk.transport, talk.brain, talk.model, talk.voice) em talk.realtime.O doctor também avisa quando plugins.allow não está vazio e a política de ferramentas usa curingas ou entradas de ferramentas pertencentes a plugins. tools.allow: ["*"] corresponde apenas a ferramentas de plugins que realmente são carregados; ele não ignora a lista de permissões exclusiva de plugins.2. Migrações de chaves de configuração legadas
2. Migrações de chaves de configuração legadas
openclaw doctor. O doctor explica quais chaves legadas foram encontradas, mostra a migração aplicada e reescreve ~/.openclaw/openclaw.json com o esquema atualizado. A inicialização do Gateway recusa formatos de configuração legados e solicita a execução de openclaw doctor --fix; ela não reescreve openclaw.json durante a inicialização. As migrações do armazenamento de trabalhos do Cron também são tratadas por openclaw doctor --fix.routing.queue, routing.bindings,
routing.agents/defaultAgentId, routing.transcribeAudio,
agent.* de nível superior ou identity de nível superior
do formato de configuração anterior ao suporte a múltiplos agentes) não
têm mais um caminho de migração; configurações que as utilizam agora
falham na validação em vez de serem reescritas. Corrija essas chaves
manualmente de acordo com a referência de configuração atual antes que
o doctor possa prosseguir.plugins.entries.voice-call.config.* acima são normalizadas pelo próprio Plugin
Voice Call a cada carregamento da configuração, não por
openclaw doctor. O Plugin também registra um aviso de inicialização que
aponta para openclaw doctor --fix, mas atualmente o doctor não reescreve
openclaw.json para essas chaves; é a normalização do próprio Plugin
que aplica a alteração em tempo de execução.- Se duas ou mais entradas
channels.<channel>.accountsforem configuradas semchannels.<channel>.defaultAccountouaccounts.default, o doctor avisará que o roteamento de fallback pode selecionar uma conta inesperada. - Se
channels.<channel>.defaultAccountestiver definido como um ID de conta desconhecido, o doctor avisará e listará os IDs das contas configuradas.
2b. Substituições do provedor OpenCode
2b. Substituições do provedor OpenCode
models.providers.opencode, opencode-zen ou opencode-go manualmente, isso substitui o catálogo integrado do OpenCode de openclaw/plugin-sdk/llm. Isso pode forçar os modelos a usar a API errada ou zerar os custos. O Doctor avisa para que você possa remover a substituição e restaurar o roteamento de API por modelo + os custos.2d. Pré-requisitos de TLS para OAuth
2d. Pré-requisitos de TLS para OAuth
UNABLE_TO_GET_ISSUER_CERT_LOCALLY, certificado expirado ou certificado autoassinado), o Doctor exibirá orientações de correção específicas para a plataforma. No macOS com um Node do Homebrew, a correção geralmente é brew postinstall ca-certificates. Com --deep, o teste é executado mesmo que o gateway esteja íntegro.2e. Substituições do provedor OAuth do Codex
2e. Substituições do provedor OAuth do Codex
models.providers.openai-codex, elas podem sobrepor o caminho integrado do provedor OAuth do Codex. O Doctor avisa quando encontra essas configurações antigas de transporte junto ao OAuth do Codex, para que você possa remover ou reescrever a substituição de transporte obsoleta e restaurar o comportamento atual de roteamento. Proxies personalizados e substituições somente de cabeçalhos continuam compatíveis e não acionam esse aviso, mas essas rotas de solicitação definidas pelo usuário não são qualificadas para a seleção implícita do Codex.2f. Reparo de rotas do Codex
2f. Reparo de rotas do Codex
openai-codex/*. O roteamento nativo do executor do Codex usa referências canônicas de modelos openai/*, mas o prefixo por si só nunca seleciona o Codex. Com a política de runtime não definida ou como auto, somente uma rota oficial HTTPS exata de Platform Responses ou ChatGPT Responses sem substituição de solicitação definida pelo usuário é qualificada. Consulte runtime implícito de agente da OpenAI.No modo --fix / --repair, o Doctor reescreve as referências afetadas do agente padrão e por agente, incluindo modelos primários, fallbacks, modelos de geração de imagens/vídeos, substituições de heartbeat/subagente/compaction, hooks, substituições de modelos de canais e o estado persistente obsoleto das rotas de sessão:openai-codex/gpt-*torna-seopenai/gpt-*.- A intenção do Codex é movida para entradas
agentRuntime.id: "codex"com escopo de provedor/modelo para as referências reparadas dos modelos de agente. - A configuração obsoleta de runtime do agente inteiro e as fixações persistentes de runtime da sessão são removidas porque a seleção de runtime tem escopo de provedor/modelo.
- A política existente de runtime do provedor/modelo é preservada, a menos que a referência reparada do modelo legado precise do roteamento do Codex para manter o caminho antigo de autenticação.
- As listas existentes de fallback de modelos são preservadas com suas entradas legadas reescritas; as configurações copiadas por modelo são movidas da chave legada para a chave canônica
openai/*. - As
modelProvider/providerOverride,model/modelOverridepersistentes da sessão, os avisos de fallback e as fixações de perfis de autenticação são reparados em todos os armazenamentos de sessões de agentes descobertos. - O Doctor repara separadamente fixações obsoletas de
agentRuntime.id: "codex-cli"(um ID de runtime legado distinto) para"codex"nas entradas de modelosagents.defaults,agents.list[]emodels.providers.*. /codex ...significa “controlar ou vincular uma conversa nativa do Codex pelo chat”./acp ...ouruntime: "acp"significa “usar o adaptador externo ACP/acpx”.
2g. Limpeza de rotas de sessão
2g. Limpeza de rotas de sessão
openclaw doctor --fix pode limpar estados obsoletos criados automaticamente, como fixações de modelos modelOverrideSource: "auto", metadados de modelos do runtime, IDs fixados do executor, vínculos de sessões da CLI e substituições automáticas de perfis de autenticação quando a rota proprietária correspondente não está mais configurada. As escolhas explícitas do usuário ou escolhas legadas de modelos de sessão são informadas para revisão manual e permanecem inalteradas; altere-as com /model ..., /new ou redefina a sessão quando essa rota não for mais desejada.3. Migrações de estado legado (layout do disco)
3. Migrações de estado legado (layout do disco)
- Armazenamento de sessões + transcrições: de
~/.openclaw/sessions/para~/.openclaw/agents/<agentId>/sessions/ - Diretório do agente: de
~/.openclaw/agent/para~/.openclaw/agents/<agentId>/agent/ - Estado de autenticação do WhatsApp (Baileys): de
~/.openclaw/credentials/*.jsonlegado (excetooauth.json) para~/.openclaw/credentials/whatsapp/<accountId>/...(ID padrão da conta:default)
openclaw doctor. A normalização de provedor/mapa de provedores do Talk compara por igualdade estrutural, portanto, diferenças apenas na ordem das chaves não acionam mais alterações doctor --fix repetidas e sem efeito.3a. Migrações de manifestos de plugins legados
3a. Migrações de manifestos de plugins legados
speechProviders, realtimeTranscriptionProviders, realtimeVoiceProviders, mediaUnderstandingProviders, imageGenerationProviders, videoGenerationProviders, webFetchProviders, webSearchProviders). Quando encontradas, ele oferece movê-las para o objeto contracts e reescrever o arquivo de manifesto no local. Essa migração é idempotente; se contracts já tiver os mesmos valores, a chave legada será removida sem duplicar dados.3b. Migrações do armazenamento legado do cron
3b. Migrações do armazenamento legado do cron
~/.openclaw/cron/jobs.json por padrão ou cron.store quando substituído) em busca de formatos antigos de tarefas que o agendador ainda aceita por compatibilidade.As limpezas atuais do cron incluem:jobId→idschedule.cron→schedule.expr- campos de payload no nível superior (
message,model,thinking, …) →payload - campos de entrega no nível superior (
deliver,channel,to,provider, …) →delivery - aliases de entrega
providerdo payload →delivery.channelexplícito - tarefas de fallback de webhook
notify: truelegadas → entrega explícita por webhook decron.webhookquando definida; as tarefas de anúncio mantêm sua entrega por chat e recebemdelivery.completionDestination. Quandocron.webhooknão está definida, o marcador inertenotifyno nível superior é removido das tarefas sem destino (a entrega existente, incluindo anúncios, é preservada), pois a entrega em runtime nunca o lê.
jobs-quarantine.json, ao lado do armazenamento ativo, antes de serem removidas de jobs.json; o Doctor informa as linhas em quarentena para que você possa revisá-las ou repará-las manualmente.A inicialização do Gateway normaliza a projeção do runtime e ignora o marcador notify no nível superior, mas deixa a configuração cron persistente para reparo pelo Doctor. Quando cron.webhook não está definida, o Doctor remove o marcador inerte das tarefas sem destino de migração (delivery.mode nenhum/ausente, um destino de webhook inutilizável ou uma entrega existente por anúncio/chat), deixando a entrega existente inalterada; assim, execuções repetidas de doctor --fix deixam de emitir avisos sobre a mesma tarefa. Se cron.webhook estiver definida, mas não for uma URL HTTP(S) válida, o Doctor ainda emitirá um aviso e manterá o marcador para que você possa corrigir a URL.No Linux, o Doctor também avisa quando o crontab do usuário ainda invoca o ~/.openclaw/bin/ensure-whatsapp.sh legado. Esse script local ao host não é mantido pelo OpenClaw atual e pode gravar mensagens Gateway inactive incorretas em ~/.openclaw/logs/whatsapp-health.log quando o cron não consegue acessar o barramento de usuário do systemd. Remova a entrada obsoleta do crontab com crontab -e; use openclaw channels status --probe, openclaw doctor e openclaw gateway status para as verificações de integridade atuais.3c. Limpeza de bloqueios de sessão
3c. Limpeza de bloqueios de sessão
--fix / --repair, ele remove automaticamente os bloqueios com proprietários inativos, órfãos, reciclados, antigos e malformados ou que não sejam do OpenClaw. Bloqueios antigos ainda pertencentes a um processo ativo do OpenClaw são informados, mas mantidos no local, para que o Doctor não interrompa um gravador de transcrição ativo.3d. Reparo de ramificações de transcrições de sessões
3d. Reparo de ramificações de transcrições de sessões
--fix / --repair, o Doctor cria um backup de cada arquivo afetado ao lado do original e reescreve a transcrição para a ramificação ativa, para que o histórico do gateway e os leitores de memória deixem de encontrar turnos duplicados.4. Verificações de integridade do estado (persistência de sessões, roteamento e segurança)
4. Verificações de integridade do estado (persistência de sessões, roteamento e segurança)
- Diretório de estado ausente: alerta sobre perda catastrófica do estado, solicita a recriação do diretório e lembra que não é possível recuperar dados ausentes.
- Permissões do diretório de estado: verifica se é possível gravar; oferece reparar as permissões (e emite uma dica
chownquando é detectada uma divergência de proprietário/grupo). - Diretório de estado sincronizado com a nuvem no macOS: alerta quando o estado é resolvido em iCloud Drive (
~/Library/Mobile Documents/com~apple~CloudDocs/...) ou~/Library/CloudStorage/..., pois caminhos com sincronização podem causar E/S mais lenta e condições de corrida de bloqueio/sincronização. - Diretório de estado em SD ou eMMC no Linux: alerta quando o estado é resolvido para uma origem de montagem
mmcblk*, pois a E/S aleatória baseada em SD/eMMC pode ser mais lenta e causar desgaste mais rápido durante gravações de sessões e credenciais. - Diretório de estado volátil no Linux: alerta quando o estado é resolvido para
tmpfsouramfs, pois sessões, credenciais, configuração e estado do SQLite (com arquivos auxiliares de WAL/diário) desaparecem ao reiniciar. Montagensoverlaydo Docker não são sinalizadas intencionalmente, pois suas camadas graváveis persistem entre reinicializações do host enquanto o contêiner permanece. - Diretórios de sessão ausentes:
sessions/e o diretório de armazenamento de sessões são necessários para persistir o histórico e evitar falhas deENOENT. - Incompatibilidade de transcrição: alerta quando entradas recentes de sessão têm arquivos de transcrição ausentes.
- Sessão principal com “JSONL de 1 linha”: sinaliza quando a transcrição principal tem apenas uma linha (o histórico não está sendo acumulado).
- Vários diretórios de estado: alerta quando existem várias pastas
~/.openclawem diretórios pessoais ou quandoOPENCLAW_STATE_DIRaponta para outro local (o histórico pode ficar dividido entre instalações). - Lembrete do modo remoto: se
gateway.mode=remote, o doctor lembra que ele deve ser executado no host remoto (o estado reside lá). - Permissões do arquivo de configuração: alerta se
~/.openclaw/openclaw.jsonpuder ser lido pelo grupo ou por todos e oferece restringir para600.
5. Integridade da autenticação do modelo (expiração do OAuth)
5. Integridade da autenticação do modelo (expiração do OAuth)
--non-interactive ignora as tentativas de atualização.Quando uma atualização OAuth falha permanentemente (por exemplo, refresh_token_reused, invalid_grant ou um provedor informa que é necessário entrar novamente), o doctor informa que uma nova autenticação é necessária e exibe o comando openclaw models auth login --provider ... exato a ser executado.O Doctor também informa perfis de autenticação que estão temporariamente indisponíveis devido a períodos curtos de espera (limites de taxa/tempos limite/falhas de autenticação) ou desativações mais longas (falhas de cobrança/crédito).Perfis OAuth legados do Codex cujos tokens residem nas Chaves do macOS (integração mais antiga, anterior ao layout de arquivo auxiliar baseado em arquivos) são reparados somente pelo doctor. Execute openclaw doctor --fix uma vez em um terminal interativo para migrar diretamente os tokens legados armazenados nas Chaves para auth-profiles.json; depois disso, execuções incorporadas (Telegram, cron, despacho de subagentes) os resolvem como perfis OAuth canônicos da OpenAI.6. Validação do modelo de hooks
6. Validação do modelo de hooks
hooks.gmail.model estiver definido, o doctor valida a referência do modelo em relação ao catálogo e à lista de permissões e alerta quando ela não puder ser resolvida ou não for permitida.7. Reparo da imagem do sandbox
7. Reparo da imagem do sandbox
7b. Limpeza da instalação de Plugins
7b. Limpeza da instalação de Plugins
openclaw doctor --fix / openclaw doctor --repair: raízes de dependências geradas obsoletas, diretórios antigos de preparação de instalação, resíduos locais de pacotes provenientes do código anterior de reparo de dependências de Plugins incluídos e cópias npm gerenciadas, órfãs ou recuperadas, de Plugins @openclaw/* incluídos que podem sobrepor o manifesto incluído atual. O Doctor também vincula novamente o pacote openclaw do host aos Plugins npm gerenciados que declaram peerDependencies.openclaw, para que importações de runtime locais do pacote, como openclaw/plugin-sdk/*, continuem sendo resolvidas após atualizações ou reparos do npm.O Doctor também pode reinstalar Plugins baixáveis ausentes quando a configuração os referencia, mas o registro local de Plugins não consegue encontrá-los (plugins.entries material, configurações definidas de canal/provedor/pesquisa, runtimes de agentes configurados). Durante atualizações de pacotes, o doctor evita reinstalar pacotes de Plugins enquanto o pacote principal está sendo substituído; execute openclaw doctor --fix novamente após a atualização se um Plugin configurado ainda precisar de recuperação. Fora da exceção de inicialização da imagem de contêiner descrita abaixo, a inicialização do Gateway e o recarregamento da configuração não executam o reparo de pacotes; as instalações de Plugins continuam sendo trabalho explícito de doctor/instalação/atualização.A inicialização do Gateway em contêiner tem uma exceção restrita de atualização: quando openclaw gateway run é iniciado em uma nova versão do OpenClaw, ele executa migrações seguras de estado e a convergência existente de Plugins pós-núcleo antes de ficar pronto e, em seguida, registra um ponto de controle por versão. Essa etapa de inicialização pode limpar registros obsoletos de Plugins incluídos, reparar links locais de Plugins, reinstalar pacotes de Plugins configurados quando o caminho de convergência exigir e verificar cargas úteis de Plugins ativos. Se a inicialização não puder realizar o reparo com segurança, execute a mesma imagem uma vez com openclaw doctor --fix no mesmo estado/configuração montado antes de reiniciar o contêiner normalmente.8. Migrações do serviço do Gateway e dicas de limpeza
8. Migrações do serviço do Gateway e dicas de limpeza
openclaw gateway status --deep ou openclaw doctor --deep e, em seguida, remova a duplicata ou defina OPENCLAW_SERVICE_REPAIR_POLICY=external quando um supervisor do sistema controlar o ciclo de vida do Gateway.8b. Migração do Matrix na inicialização
8b. Migração do Matrix na inicialização
--fix / --repair) cria um snapshot pré-migração e depois executa as etapas de migração em melhor esforço: migração do estado legado do Matrix e preparação do estado criptografado legado. Ambas as etapas não são fatais; os erros são registrados e a inicialização continua. No modo somente leitura (openclaw doctor sem --fix), essa verificação é totalmente ignorada.8c. Pareamento de dispositivos e divergência de autenticação
8c. Pareamento de dispositivos e divergência de autenticação
- solicitações pendentes de primeiro pareamento
- atualizações pendentes de função ou escopo para dispositivos já pareados
- reparos de incompatibilidade de chave pública nos quais o ID do dispositivo ainda corresponde, mas a identidade do dispositivo não corresponde mais ao registro aprovado
- registros pareados sem um token ativo para uma função aprovada
- tokens pareados cujos escopos divergem da linha de base de pareamento aprovada
- entradas de token de dispositivo armazenadas em cache localmente para a máquina atual que são anteriores a uma rotação de token no Gateway ou contêm metadados de escopo obsoletos
- inspecione solicitações pendentes com
openclaw devices list - aprove a solicitação exata com
openclaw devices approve <requestId> - gere um novo token com
openclaw devices rotate --device <deviceId> --role <role> - remova e aprove novamente um registro obsoleto com
openclaw devices remove <deviceId>
9. Alertas de segurança
9. Alertas de segurança
openclaw security audit para obter o inventário completo de segurança.10. Permanência do systemd (Linux)
10. Permanência do systemd (Linux)
11. Status do espaço de trabalho (Skills, Plugins e TaskFlows)
11. Status do espaço de trabalho (Skills, Plugins e TaskFlows)
- Skills: lista os nomes de Skills permitidas, mas inutilizáveis; use
openclaw skills checkpara obter detalhes dos requisitos e contagens completas. - Plugins: informa somente IDs de Plugins com erros; use
openclaw plugins listpara obter o inventário de Plugins carregados, importados, desabilitados e incluídos no pacote. - Alertas de compatibilidade de Plugins: sinaliza Plugins que têm problemas de compatibilidade com o runtime atual.
- Diagnóstico de Plugins: apresenta todos os alertas ou erros emitidos pelo registro de Plugins durante o carregamento.
- Recuperação de TaskFlow: apresenta TaskFlows gerenciados suspeitos que precisam de inspeção manual ou cancelamento.
- CLI do Claude: informa somente problemas de binário, autenticação, perfil, espaço de trabalho ou diretório de projeto; detalhes de sondagens íntegras são omitidos.
11b. Tamanho do arquivo de inicialização
11b. Tamanho do arquivo de inicialização
AGENTS.md, CLAUDE.md ou outros arquivos de contexto injetados) estão próximos ou acima do orçamento de caracteres configurado. Ele informa, por arquivo, a contagem de caracteres bruta em comparação com a injetada, a porcentagem de truncamento, a causa do truncamento (max/file ou max/total) e o total de caracteres injetados como fração do orçamento total. Quando os arquivos são truncados ou estão próximos do limite, o doctor exibe dicas para ajustar agents.defaults.bootstrapMaxChars e agents.defaults.bootstrapTotalMaxChars.11c. Preenchimento automático do shell
11c. Preenchimento automático do shell
- Se o perfil do shell usar um padrão lento de preenchimento dinâmico (
source <(openclaw completion ...)), o doctor o atualiza para a variante mais rápida de arquivo em cache. - Se o preenchimento estiver configurado no perfil, mas o arquivo de cache estiver ausente, o doctor regenerará o cache automaticamente.
- Se nenhum preenchimento estiver configurado, o doctor solicitará sua instalação (somente no modo interativo; ignorado com
--non-interactive).
openclaw completion --write-state para regenerar o cache manualmente.11d. Limpeza de Plugin de canal obsoleto
11d. Limpeza de Plugin de canal obsoleto
openclaw doctor --fix remove um Plugin de canal ausente, também remove a configuração pendente com escopo de canal que fazia referência a esse Plugin: entradas channels.<id>, destinos de Heartbeat que nomeavam o canal e substituições agents.*.models["<channel>/*"]. Isso evita ciclos de inicialização do Gateway nos quais o runtime do canal não existe mais, mas a configuração ainda solicita que o Gateway se vincule a ele.12. Verificações de autenticação do Gateway (token local)
12. Verificações de autenticação do Gateway (token local)
- Se o modo de token exigir um token e não existir nenhuma origem de token, o doctor oferece gerar um.
- Se
gateway.auth.tokenfor gerenciado por SecretRef, mas estiver indisponível, o doctor alertará e não o substituirá por texto simples. openclaw doctor --generate-gateway-tokenforça a geração somente quando nenhum SecretRef de token está configurado.
12b. Reparos somente leitura compatíveis com SecretRef
12b. Reparos somente leitura compatíveis com SecretRef
openclaw doctor --fixusa o mesmo modelo de resumo somente leitura de SecretRef que os comandos da família de status para reparos de configuração direcionados.- Exemplo: o reparo do
allowFrom/groupAllowFrom@usernamedo Telegram tenta usar as credenciais de bot configuradas quando disponíveis. - Se o token do bot do Telegram estiver configurado via SecretRef, mas indisponível no caminho do comando atual, o doctor informa que a credencial está configurada, porém indisponível, e ignora a resolução automática em vez de falhar ou informar incorretamente que o token está ausente.
13. Verificação de integridade e reinicialização do Gateway
13. Verificação de integridade e reinicialização do Gateway
13b. Prontidão da pesquisa de memória
13b. Prontidão da pesquisa de memória
- Backend QMD: verifica se o binário
qmdestá disponível e pode ser iniciado. Caso contrário, exibe orientações de correção, incluindonpm install -g @tobilu/qmd(ou o equivalente do Bun), e uma opção de caminho manual para o binário. - Provedor local explícito: verifica se há um arquivo de modelo local ou uma URL reconhecida de modelo remoto/para download. Se estiver ausente, sugere mudar para um provedor remoto.
- Provedor remoto explícito (
openai,voyageetc.): verifica se há uma chave de API no ambiente ou no armazenamento de autenticação. Exibe sugestões práticas de correção se estiver ausente. - Provedor automático legado: trata
memorySearch.provider: "auto"como OpenAI, verifica a prontidão da OpenAI edoctor --fixo reescreve comoprovider: "openai".
openclaw memory status --deep para verificar a prontidão dos embeddings em tempo de execução.14. Avisos de status dos canais
14. Avisos de status dos canais
15. Auditoria e reparo da configuração do supervisor
15. Auditoria e reparo da configuração do supervisor
openclaw doctorsolicita confirmação antes de reescrever a configuração do supervisor.openclaw doctor --yesaceita as solicitações de reparo padrão.openclaw doctor --fixaplica as correções recomendadas sem solicitar confirmação (--repairé um alias).openclaw doctor --fix --forcesobrescreve configurações personalizadas do supervisor.OPENCLAW_SERVICE_REPAIR_POLICY=externalmantém o doctor no modo somente leitura para o ciclo de vida do serviço do Gateway. Ele ainda informa a integridade do serviço e executa reparos que não envolvem serviços, mas ignora a instalação/inicialização/reinicialização/inicialização de bootstrap do serviço, as reescritas da configuração do supervisor e a limpeza de serviços legados, pois um supervisor externo gerencia esse ciclo de vida.- No Linux, o doctor não reescreve os metadados de comando/ponto de entrada enquanto a unidade systemd correspondente do Gateway estiver ativa. Ele também ignora unidades adicionais inativas, não legadas e semelhantes ao Gateway durante a verificação de serviços duplicados, para que arquivos de serviços complementares não gerem ruído de limpeza.
- Se a autenticação por token exigir um token e
gateway.auth.tokenfor gerenciado por SecretRef, a instalação/o reparo do serviço pelo doctor validará o SecretRef, mas não persistirá os valores resolvidos do token em texto simples nos metadados de ambiente do serviço do supervisor. - O doctor detecta valores gerenciados de
.env/ambiente de serviço respaldados por SecretRef que instalações antigas do LaunchAgent, systemd ou Tarefa Agendada do Windows incorporaram diretamente e reescreve os metadados do serviço para que esses valores sejam carregados da fonte de tempo de execução, em vez da definição do supervisor. - O doctor detecta quando o comando do serviço ainda fixa um
--portantigo após alterações emgateway.porte reescreve os metadados do serviço com a porta atual. - Se a autenticação por token exigir um token e o SecretRef do token configurado não estiver resolvido, o doctor bloqueará o caminho de instalação/reparo e fornecerá orientações práticas.
- Se
gateway.auth.tokenegateway.auth.passwordestiverem configurados egateway.auth.modenão estiver definido, o doctor bloqueará a instalação/o reparo até que o modo seja definido explicitamente. - Para unidades systemd de usuário no Linux, as verificações de divergência de token do doctor incluem as fontes
Environment=eEnvironmentFile=ao comparar os metadados de autenticação do serviço. - Os reparos de serviço do doctor se recusam a reescrever, interromper ou reiniciar um serviço do Gateway usando um binário antigo do OpenClaw quando a configuração tiver sido gravada pela última vez por uma versão mais recente. Consulte Solução de problemas do Gateway.
- Sempre é possível forçar uma reescrita completa por meio de
openclaw gateway install --force.
16. Diagnóstico do tempo de execução e da porta do Gateway
16. Diagnóstico do tempo de execução e da porta do Gateway
18789) e informa as causas prováveis (Gateway já em execução, túnel SSH).17. Práticas recomendadas para o tempo de execução do Gateway
17. Práticas recomendadas para o tempo de execução do Gateway
nvm, fnm, volta, asdf etc.). O Bun não consegue abrir o armazenamento de estado node:sqlite do OpenClaw, portanto os reparos migram serviços Bun legados para o Node. Caminhos de gerenciadores de versão podem deixar de funcionar após atualizações porque o serviço não carrega a inicialização do shell. O doctor oferece a migração para uma instalação do Node no sistema quando disponível (Homebrew/apt/choco).LaunchAgents recém-instalados ou reparados no macOS usam um PATH canônico do sistema (/opt/homebrew/bin:/opt/homebrew/sbin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin) em vez de copiar o PATH do shell interativo, para que os binários do sistema gerenciados pelo Homebrew permaneçam disponíveis, enquanto os diretórios do Volta, asdf, fnm, pnpm e outros gerenciadores de versão não alterem qual Node é resolvido pelos processos filhos. Os serviços Linux ainda mantêm raízes de ambiente explícitas (NVM_DIR, FNM_DIR, VOLTA_HOME, ASDF_DATA_DIR, BUN_INSTALL, PNPM_HOME) e diretórios estáveis de binários do usuário, mas os diretórios alternativos estimados de gerenciadores de versão só são gravados no PATH do serviço quando existem no disco.18. Gravação da configuração e metadados do assistente
18. Gravação da configuração e metadados do assistente
19. Dicas sobre o espaço de trabalho (backup e sistema de memória)
19. Dicas sobre o espaço de trabalho (backup e sistema de memória)