CLI commands
Atualizar
openclaw update
Atualize o OpenClaw e alterne entre os canais stable/extended-stable/beta/dev.
Se a instalação foi feita via npm/pnpm/bun (instalação global, sem metadados do git), as atualizações seguem o fluxo do gerenciador de pacotes descrito em Atualização.
Uso
openclaw updateopenclaw update statusopenclaw update repairopenclaw update wizardopenclaw update --channel extended-stableopenclaw update --channel betaopenclaw update --channel devopenclaw update --tag betaopenclaw update --tag mainopenclaw update --dry-runopenclaw update --no-restartopenclaw update --yesopenclaw update --acknowledge-clawhub-riskopenclaw update --jsonopenclaw --updateopenclaw --update é reescrito como openclaw update (útil para shells e
scripts de inicialização).
Opções
| Opção | Descrição |
|---|---|
--no-restart |
Não reinicia o serviço do Gateway após uma atualização bem-sucedida. As atualizações pelo gerenciador de pacotes que reiniciam o serviço verificam se o serviço reiniciado informa a versão esperada antes de o comando ser concluído com sucesso. |
--channel <stable|extended-stable|beta|dev> |
Define o canal de atualização e o mantém após a atualização bem-sucedida do núcleo. Extended-stable está disponível somente por pacote. |
--tag <dist-tag|version|spec> |
Substitui o pacote de destino somente para esta atualização. Não pode ser combinado com um canal extended-stable efetivo, cujo destino exato verificado é obrigatório. Para outras instalações de pacotes, main é mapeado para github:openclaw/openclaw#main; especificações de origem do GitHub/git são empacotadas em um tarball temporário antes da instalação global preparada pelo npm. |
--dry-run |
Visualiza as ações planejadas (fluxo de canal/tag/destino/reinicialização) sem gravar a configuração, instalar, sincronizar plugins ou reiniciar. |
--json |
Exibe JSON UpdateRunResult legível por máquina. Inclui postUpdate.plugins.warnings quando um plugin gerenciado precisa de reparo, detalhes do fallback de plugins do canal beta e postUpdate.plugins.integrityDrifts quando é detectada divergência no artefato de um plugin npm durante a sincronização posterior à atualização. |
--timeout <seconds> |
Tempo limite por etapa. Padrão: 1800. |
--yes |
Ignora as solicitações de confirmação (por exemplo, a confirmação de downgrade). |
--acknowledge-clawhub-risk |
Permite que a sincronização de plugins após a atualização prossiga apesar dos avisos de confiança do ClawHub para a comunidade, sem uma solicitação interativa. Sem essa opção, versões arriscadas da comunidade são ignoradas e permanecem inalteradas quando o OpenClaw não pode solicitar confirmação. Pacotes oficiais do ClawHub e fontes de plugins incluídos ignoram essa solicitação. |
Não há uma opção --verbose. Use --dry-run para visualizar as ações planejadas,
--json para resultados legíveis por máquina e openclaw update status --json
somente para canal/disponibilidade. O nível de detalhamento do console do Gateway (--verbose) e
o nível de log em arquivo (logging.level: "debug"/"trace") são controles independentes; consulte
Logs do Gateway.
update status
Mostra o canal de atualização ativo, a tag/branch/SHA do git (somente em checkouts do código-fonte) e a disponibilidade de atualizações.
openclaw update statusopenclaw update status --jsonopenclaw update status --timeout 10| Opção | Padrão | Descrição |
|---|---|---|
--json |
false |
Exibe o JSON de status legível por máquina. |
--timeout <seconds> |
3 |
Tempo limite para as verificações. |
Para instalações por pacote extended-stable, o status realiza a mesma seleção pública
e verificação exata do pacote que a atualização em primeiro plano. Ele pode informar
ahead of extended-stable quando a versão instalada é mais recente. As falhas em JSON
incluem registry.reason (selector_missing, selector_query_failed,
exact_package_mismatch ou unsupported_git_channel).
update repair
Executa novamente a finalização da atualização após o pacote principal já ter sido alterado, mas o
trabalho de reparo posterior não ter sido concluído corretamente. Esse é o caminho de recuperação compatível quando
openclaw update instalou o novo pacote principal, mas a sincronização de plugins posterior à atualização do núcleo,
os metadados de plugins npm gerenciados, a atualização do registro ou o reparo do Doctor
não convergiram.
openclaw update repairopenclaw update repair --channel betaopenclaw update repair --acknowledge-clawhub-riskopenclaw update repair --json| Opção | Descrição |
|---|---|
--channel <stable|extended-stable|beta|dev> |
Mantém o canal de atualização do núcleo antes do reparo. Para extended-stable, plugins npm oficiais qualificados que seguem uma intenção simples/padrão ou latest têm como destino a versão exata instalada do núcleo. O reparo de extended-stable é rejeitado em checkouts do Git sem alterar a configuração. |
--json |
Exibe o JSON de finalização legível por máquina. |
--timeout <seconds> |
Tempo limite para as etapas de reparo. Padrão: 1800. |
--yes |
Ignora as solicitações de confirmação. |
--acknowledge-clawhub-risk |
Mesmo comportamento que em openclaw update. |
--no-restart |
Aceito para manter a equivalência; o reparo nunca reinicia o Gateway. |
update repair executa openclaw doctor --fix, recarrega a configuração reparada e
os registros de instalação, sincroniza os plugins rastreados para o canal de atualização ativo, atualiza
as instalações de plugins npm gerenciados, repara os conteúdos ausentes de plugins configurados,
atualiza o registro de plugins e grava metadados convergentes nos registros de instalação.
Ele não instala um novo pacote principal nem reinicia o Gateway.
update wizard
Fluxo interativo para escolher um canal de atualização e confirmar se o
Gateway deve ser reiniciado depois (o padrão é reiniciar). Selecionar dev sem um checkout
do git oferece a opção de criar um.
| Opção | Padrão | Descrição |
|---|---|---|
--timeout <seconds> |
1800 |
Tempo limite para cada etapa da atualização. |
O que ele faz
Alternar explicitamente os canais (--channel ...) também mantém o método de instalação
alinhado:
dev-> garante um checkout do git (o padrão é~/openclaw, ou$OPENCLAW_HOME/openclawquandoOPENCLAW_HOMEestá definido; substitua comOPENCLAW_GIT_DIR), atualiza-o e instala a CLI global a partir desse checkout.stable-> instala a partir do npm usandolatest.extended-stable-> resolve o seletor públicoextended-stabledo npm, verifica o pacote exato selecionado e instala essa versão exata. Ele não recorre a outro seletor como fallback e é rejeitado para checkouts do Git.beta-> prioriza a dist-tagbetado npm, recorrendo alatestquando a versão beta está ausente ou é anterior à versão stable atual.
Transferência da reinicialização
O atualizador automático do núcleo do Gateway (quando habilitado pela configuração) inicia o caminho de
atualização da CLI fora do manipulador de solicitações ativo do Gateway. As atualizações pelo gerenciador de pacotes do
plano de controle update.run e as atualizações supervisionadas de checkouts do git usam
a mesma transferência para o serviço gerenciado, em vez de substituir a árvore de pacotes ou
recompilar dist/ dentro do processo ativo do Gateway: o Gateway inicia um
auxiliar desanexado e encerra, e esse auxiliar executa openclaw update --yes --json
fora da árvore de processos do Gateway. Se a transferência não estiver disponível,
update.run retorna uma resposta estruturada com o comando seguro do shell que deve ser executado
manualmente.
As seleções de estabilidade estendida armazenadas recebem dicas de inicialização
somente leitura e de atualização a cada 24 horas quando update.checkOnStart está
habilitado. Essas verificações nunca aplicam uma atualização, iniciam uma
transferência, reiniciam o Gateway, usam atraso/jitter do canal estável nem usam
a cadência de sondagem beta. Atualizações explícitas em primeiro plano,
atualizações simples em primeiro plano com update.channel: "extended-stable" armazenado, status
sob demanda e a transferência do Gateway gerenciado correspondente continuam
sendo compatíveis.
Quando um serviço local de Gateway gerenciado está instalado e a reinicialização
está habilitada, as atualizações pelo gerenciador de pacotes e por checkout do
git interrompem o serviço em execução antes de substituir a árvore do pacote ou
modificar a saída do checkout/build. Em seguida, o atualizador renova os
metadados do serviço, reinicia o serviço e verifica o Gateway reiniciado antes
de informar Gateway: restarted and verified.. As atualizações pelo gerenciador de pacotes
também verificam se o Gateway reiniciado informa a versão esperada do pacote;
as atualizações por checkout do git verificam a integridade do gateway e a
prontidão do serviço após a recompilação.
As atualizações pelo gerenciador de pacotes normalmente continuam usando o
binário do Node registrado no serviço gerenciado. Se esse Node não puder
executar a versão de destino, mas o Node atual da CLI puder e for comprovado que
o serviço pertence ao pacote que está sendo atualizado, uma atualização com
reinicialização habilitada usa o Node atual para a finalização e reescreve os
metadados do serviço para esse runtime. --no-restart não pode reparar os
metadados do serviço, portanto a mesma incompatibilidade de runtime interrompe
o processo antes da modificação do pacote.
No macOS, a verificação pós-atualização também confirma se o LaunchAgent está
carregado/em execução para o perfil ativo e se a porta de loopback configurada
está íntegra. Se o plist estiver instalado, mas o launchd não o estiver
supervisionando, o OpenClaw reinicializa o bootstrap do LaunchAgent
automaticamente e executa novamente as verificações de integridade/versão/
prontidão do canal (um novo bootstrap carrega diretamente o trabalho
RunAtLoad, portanto a recuperação não kickstart -k
imediatamente o Gateway recém-iniciado). Se o Gateway ainda não ficar íntegro,
o comando será encerrado com código diferente de zero e exibirá o caminho do
log de reinicialização, além de instruções de reinicialização, reinstalação e
reversão do pacote.
Se não for possível executar a reinicialização, o comando exibirá
Gateway: restart skipped (...) ou Gateway: restart failed: ... com uma dica manual de
openclaw gateway restart. Com --no-restart, a substituição do pacote ou a
recompilação do git ainda é executada, mas o serviço gerenciado não é
interrompido nem reiniciado; portanto, o Gateway em execução mantém o código
antigo até ser reiniciado manualmente.
Formato da resposta do plano de controle
Quando update.run é executado pelo plano de controle do Gateway em uma
instalação por gerenciador de pacotes ou um checkout do git supervisionado, o
manipulador informa o início da transferência separadamente da atualização da
CLI que continua após o encerramento do Gateway:
ok: true,result.status: "skipped",result.reason: "managed-service-handoff-started"ehandoff.status: "started": o Gateway criou a transferência do serviço gerenciado e agendou a própria reinicialização para que o auxiliar desanexado possa executaropenclaw update --yes --jsonfora do processo ativo do serviço.ok: false,result.reason: "managed-service-handoff-unavailable"ehandoff.status: "unavailable": o OpenClaw não conseguiu encontrar um limite de serviço supervisor e uma identidade durável de serviço para uma transferência segura (por exemplo, a transferência do systemd exige a identidade da unidadeOPENCLAW_SYSTEMD_UNIT, não apenas marcadores de processo do systemd presentes no ambiente). A resposta incluihandoff.command, o comando de shell a ser executado fora do Gateway.ok: false,result.reason: "managed-service-handoff-failed": o Gateway tentou criar a transferência, mas não conseguiu iniciar o auxiliar desanexado.
O payload sentinel é gravado antes do encerramento do Gateway, e a
transferência da CLI atualiza esse mesmo sentinela de reinicialização depois que
as verificações de integridade da reinicialização do serviço gerenciado são
concluídas. Durante a transferência, o sentinela pode conter
stats.reason: "restart-health-pending" sem continuação de sucesso; o Gateway reiniciado o consulta
periodicamente e aciona a continuação somente depois que a CLI verifica a
integridade do serviço e reescreve o sentinela com o resultado final
ok. openclaw status e openclaw status --all mostram uma linha
Update restart enquanto esse sentinela está pendente ou apresenta falha, e
update.status atualiza e retorna o sentinela mais recente.
Fluxo de checkout do Git
Seleção de canal
stable: faz checkout da tag não beta mais recente e, em seguida, executa o build e o doctor.beta: dá preferência à tag-betamais recente, recorrendo à tag estável mais recente quando a beta estiver ausente ou for mais antiga.dev: faz checkout demaine, em seguida, busca e executa o rebase.extended-stable: incompatível com checkouts do Git; nenhuma modificação do checkout ocorre.
Etapas da atualização
Verificar se a árvore de trabalho está limpa
Exige que não haja alterações não confirmadas.
Alternar canal
Alterna para o canal selecionado (tag ou branch).
Buscar do upstream
Somente para desenvolvimento.
Build de pré-verificação (somente desenvolvimento)
Executa o build do TypeScript em uma árvore de trabalho temporária. Se a ponta falhar, retrocede até 10 commits para encontrar o commit compilável mais recente. Defina OPENCLAW_UPDATE_PREFLIGHT_LINT=1 para também executar o lint durante essa pré-verificação; o lint é executado no modo serial restrito porque as máquinas dos usuários que executam atualizações costumam ser menores que os runners de CI.
Executar rebase
Executa o rebase sobre o commit selecionado (somente desenvolvimento).
Instalar dependências
Usa o gerenciador de pacotes do repositório. Para checkouts do pnpm, o atualizador inicializa pnpm sob demanda (primeiro por meio de corepack e depois usando temporariamente npm install pnpm@11 como alternativa), em vez de executar npm run build dentro de um workspace do pnpm. Se a inicialização do pnpm ainda falhar, o atualizador será interrompido antecipadamente com um erro específico do gerenciador de pacotes, em vez de tentar executar npm run build no checkout.
Compilar a interface de controle
Compila o gateway e a interface de controle.
Executar o doctor
openclaw doctor é executado como a verificação final de atualização segura.
Sincronizar plugins
Sincroniza os plugins com o canal ativo. O desenvolvimento usa plugins incluídos; os canais estável e beta usam npm. Atualiza as instalações de plugins rastreadas.
Detalhes da sincronização de plugins
No canal beta, as instalações rastreadas de plugins do npm e do ClawHub que
seguem a linha padrão/mais recente tentam primeiro uma versão
@beta do plugin. Se o plugin não tiver uma versão beta, o OpenClaw
recorrerá à especificação padrão/mais recente registrada e informará um aviso.
Para plugins do npm, o OpenClaw também recorrerá à alternativa quando o pacote
beta existir, mas falhar na validação da instalação. Esses avisos de alternativa
não causam falha na atualização do núcleo. Versões exatas e tags explícitas
nunca são reescritas.
Após uma atualização bem-sucedida do núcleo de estabilidade estendida, a
integridade e a convergência pós-núcleo dos plugins têm como alvo os plugins npm
oficiais qualificados na versão exata instalada do núcleo. Para a intenção
padrão/latest, o OpenClaw não consulta o
@extended-stable do plugin nem recorre ao latest do npm; ele
deriva a versão do pacote a partir do núcleo instalado. Fixações de versão
explícitas, tags explícitas diferentes de latest, pacotes de
terceiros e fontes que não sejam npm mantêm a intenção existente.
Para instalações por gerenciador de pacotes, openclaw update resolve a
versão de destino do pacote antes de invocar o gerenciador de pacotes. As
instalações globais do npm usam uma instalação em estágio: o OpenClaw instala o
novo pacote em um prefixo temporário do npm, permite que o pacote candidato
valide a versão do Node do host durante preinstall e verifica ali o
inventário empacotado dist. Uma proteção de conclusão empacotada
permanece fora desse inventário até preinstall ser concluído com
sucesso; assim, os gerenciadores de pacotes que ignoram scripts de ciclo de vida
também são interrompidos antes da ativação. No npm 12 e posteriores, o
atualizador aprova somente o ciclo de vida do OpenClaw candidato; os scripts de
dependências transitivas permanecem bloqueados. Em seguida, o OpenClaw troca a
árvore de pacotes limpa pelo prefixo global real. Se a verificação falhar, o
doctor pós-atualização, a sincronização de plugins e o trabalho de
reinicialização não serão executados a partir da árvore suspeita. Mesmo quando a
versão instalada já corresponde à versão de destino, o comando renova a
instalação global do pacote e depois executa a sincronização de plugins, uma
renovação da conclusão dos comandos do núcleo e o trabalho de reinicialização.
Isso mantém os componentes auxiliares empacotados e os registros de plugins
pertencentes ao canal alinhados ao build instalado do OpenClaw, enquanto deixa
as recompilações completas da conclusão dos comandos de plugins para execuções
explícitas de openclaw completion --write-state.
Relacionado
openclaw doctor(oferece executar a atualização primeiro em checkouts do git)- Canais de desenvolvimento
- Atualização
- Referência da CLI