CLI commands
Aggiorna
openclaw update
Aggiorna OpenClaw e passa tra i canali stable/extended-stable/beta/dev.
Se l'installazione è stata eseguita tramite npm/pnpm/bun (installazione globale, senza metadati git), gli aggiornamenti seguono il flusso del gestore di pacchetti descritto in Aggiornamento.
Utilizzo
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 viene riscritto come openclaw update (utile per shell e
script di avvio).
Opzioni
| Flag | Descrizione |
|---|---|
--no-restart |
Evita di riavviare il servizio Gateway dopo un aggiornamento riuscito. Gli aggiornamenti tramite gestore di pacchetti che eseguono il riavvio verificano che il servizio riavviato segnali la versione prevista prima che il comando termini correttamente. |
--channel <stable|extended-stable|beta|dev> |
Imposta il canale di aggiornamento e lo rende persistente dopo il completamento dell'aggiornamento del core. Extended-stable è disponibile solo per i pacchetti. |
--tag <dist-tag|version|spec> |
Sostituisce la destinazione del pacchetto solo per questo aggiornamento. Non può essere combinato con un canale extended-stable effettivo, per il quale è obbligatoria la destinazione esatta verificata. Per le altre installazioni di pacchetti, main corrisponde a github:openclaw/openclaw#main; le specifiche sorgente GitHub/git vengono impacchettate in un tarball temporaneo prima dell'installazione npm globale a fasi. |
--dry-run |
Mostra un'anteprima delle azioni pianificate (flusso di canale/tag/destinazione/riavvio) senza scrivere la configurazione, installare, sincronizzare i plugin o riavviare. |
--json |
Stampa JSON UpdateRunResult leggibile dalla macchina. Include postUpdate.plugins.warnings quando un plugin gestito richiede una riparazione, i dettagli del fallback dei plugin del canale beta e postUpdate.plugins.integrityDrifts quando viene rilevata una divergenza nell'artefatto di un plugin npm durante la sincronizzazione successiva all'aggiornamento. |
--timeout <seconds> |
Timeout per ciascun passaggio. Valore predefinito: 1800. |
--yes |
Ignora le richieste di conferma (ad esempio, la conferma del downgrade). |
--acknowledge-clawhub-risk |
Consente alla sincronizzazione dei plugin successiva all'aggiornamento di proseguire nonostante gli avvisi di attendibilità di ClawHub relativi alla community, senza una richiesta interattiva. In sua assenza, le versioni rischiose della community vengono ignorate e lasciate invariate quando OpenClaw non può richiedere conferma. I pacchetti ufficiali ClawHub e le sorgenti dei plugin inclusi non richiedono questa conferma. |
Non esiste alcun flag --verbose. Utilizzare --dry-run per visualizzare in anteprima le azioni pianificate,
--json per ottenere risultati leggibili dalla macchina e openclaw update status --json
solo per il canale e la disponibilità. Il livello di dettaglio della console del Gateway (--verbose) e
il livello di log dei file (logging.level: "debug"/"trace") sono controlli indipendenti; consultare
Log del Gateway.
update status
Mostra il canale di aggiornamento attivo, il tag/ramo/SHA git (solo per i checkout del codice sorgente) e la disponibilità degli aggiornamenti.
openclaw update statusopenclaw update status --jsonopenclaw update status --timeout 10| Flag | Valore predefinito | Descrizione |
|---|---|---|
--json |
false |
Stampa lo stato in formato JSON leggibile dalla macchina. |
--timeout <seconds> |
3 |
Timeout per i controlli. |
Per le installazioni di pacchetti extended-stable, lo stato esegue lo stesso selettore pubblico
e la stessa verifica esatta del pacchetto dell'aggiornamento in primo piano. Può segnalare
ahead of extended-stable quando la versione installata è più recente. Gli errori JSON
includono registry.reason (selector_missing, selector_query_failed,
exact_package_mismatch o unsupported_git_channel).
update repair
Esegue nuovamente la finalizzazione dell'aggiornamento dopo che il pacchetto core è già stato modificato, ma le successive
operazioni di riparazione non sono state completate correttamente. Questo è il percorso di ripristino supportato quando
openclaw update ha installato il nuovo pacchetto core, ma la sincronizzazione dei plugin successiva all'aggiornamento del core,
i metadati dei plugin npm gestiti, l'aggiornamento del registro o la riparazione tramite Doctor non
sono giunti a convergenza.
openclaw update repairopenclaw update repair --channel betaopenclaw update repair --acknowledge-clawhub-riskopenclaw update repair --json| Flag | Descrizione |
|---|---|
--channel <stable|extended-stable|beta|dev> |
Rende persistente il canale di aggiornamento del core prima della riparazione. Per extended-stable, i plugin npm ufficiali idonei che seguono una destinazione bare/predefinita o l'intento latest usano come destinazione la versione esatta del core installato. La riparazione extended-stable viene rifiutata nei checkout Git senza modificare la configurazione. |
--json |
Stampa il JSON di finalizzazione leggibile dalla macchina. |
--timeout <seconds> |
Timeout per i passaggi di riparazione. Valore predefinito: 1800. |
--yes |
Ignora le richieste di conferma. |
--acknowledge-clawhub-risk |
Stesso comportamento di openclaw update. |
--no-restart |
Accettato per uniformità; la riparazione non riavvia mai il Gateway. |
update repair esegue openclaw doctor --fix, ricarica la configurazione riparata e
i record di installazione, sincronizza i plugin monitorati per il canale di aggiornamento attivo, aggiorna
le installazioni dei plugin npm gestiti, ripara i payload mancanti dei plugin configurati,
aggiorna il registro dei plugin e scrive i metadati convergenti dei record di installazione.
Non installa un nuovo pacchetto core e non riavvia il Gateway.
update wizard
Flusso interattivo per scegliere un canale di aggiornamento e confermare se riavviare
successivamente il Gateway (l'impostazione predefinita prevede il riavvio). Se si seleziona dev senza un checkout git,
viene proposta la creazione di un checkout.
| Flag | Valore predefinito | Descrizione |
|---|---|---|
--timeout <seconds> |
1800 |
Timeout per ciascun passaggio dell'aggiornamento. |
Funzionamento
Il passaggio esplicito da un canale all'altro (--channel ...) mantiene inoltre allineato il metodo
di installazione:
dev-> assicura la presenza di un checkout git (valore predefinito~/openclawo$OPENCLAW_HOME/openclawquando è impostatoOPENCLAW_HOME; sostituibile conOPENCLAW_GIT_DIR), lo aggiorna e installa la CLI globale da tale checkout.stable-> esegue l'installazione da npm utilizzandolatest.extended-stable-> risolve il selettore npm pubblicoextended-stable, verifica il pacchetto esatto selezionato e installa quella versione esatta. Non utilizza un altro selettore come fallback e viene rifiutato per i checkout Git.beta-> preferisce il dist-tag npmbeta, utilizzando come fallbacklatestquando la versione beta è assente o precedente alla versione stable corrente.
Passaggio di consegne per il riavvio
Il programma di aggiornamento automatico del core del Gateway (quando abilitato tramite configurazione) avvia il percorso di
aggiornamento della CLI al di fuori del gestore delle richieste del Gateway attivo. Gli aggiornamenti tramite gestore di pacchetti
update.run del piano di controllo e gli aggiornamenti supervisionati dei checkout git utilizzano
lo stesso passaggio di consegne del servizio gestito, anziché sostituire l'albero dei pacchetti o
ricompilare dist/ all'interno del processo Gateway attivo: il Gateway avvia un
processo ausiliario separato e termina, quindi tale processo esegue openclaw update --yes --json
all'esterno dell'albero dei processi del Gateway. Se il passaggio di consegne non è disponibile,
update.run restituisce una risposta strutturata contenente il comando shell sicuro da eseguire
manualmente.
Le selezioni extended-stable memorizzate ricevono suggerimenti di avvio in sola lettura e di aggiornamento ogni 24 ore
quando update.checkOnStart è abilitato. Questi controlli non applicano mai un aggiornamento,
non avviano un passaggio di consegne, non riavviano il Gateway, non usano il ritardo/jitter di stable né la
cadenza di polling di beta. Restano supportati gli aggiornamenti espliciti in primo piano, gli aggiornamenti
in primo piano senza argomenti con update.channel: "extended-stable" memorizzato, lo stato su richiesta e il relativo
passaggio di consegne gestito del Gateway.
Quando è installato un servizio Gateway gestito locale e il riavvio è abilitato,
gli aggiornamenti tramite gestore di pacchetti e checkout Git arrestano il servizio in esecuzione prima
di sostituire l'albero dei pacchetti o modificare l'output del checkout/della build. Il programma di aggiornamento
aggiorna quindi i metadati del servizio, riavvia il servizio e verifica il
Gateway riavviato prima di segnalare Gateway: restarted and verified..
Gli aggiornamenti tramite gestore di pacchetti verificano inoltre che il Gateway riavviato segnali la
versione del pacchetto prevista; gli aggiornamenti del checkout Git verificano l'integrità del gateway e
la disponibilità del servizio dopo la nuova build.
Gli aggiornamenti tramite gestore di pacchetti normalmente continuano a usare il binario Node registrato nel
servizio gestito. Se quel Node non può eseguire la release di destinazione, ma il Node della
CLI corrente può farlo e viene dimostrato che il servizio appartiene al pacchetto in corso di aggiornamento,
un aggiornamento con riavvio abilitato usa il Node corrente per la finalizzazione e riscrive
i metadati del servizio affinché usino tale runtime. --no-restart non può riparare i metadati del
servizio, pertanto la stessa incompatibilità del runtime causa l'arresto prima della modifica del pacchetto.
Su macOS, il controllo successivo all'aggiornamento verifica inoltre che LaunchAgent sia
caricato/in esecuzione per il profilo attivo e che la porta di loopback configurata sia
operativa. Se il plist è installato ma launchd non lo supervisiona, OpenClaw
riesegue automaticamente il bootstrap di LaunchAgent e ripete i controlli di integrità/versione/
disponibilità del canale (un nuovo bootstrap carica direttamente il job RunAtLoad,
quindi il ripristino non esegue immediatamente kickstart -k sul Gateway appena avviato). Se
il Gateway continua a non diventare operativo, il comando termina con un codice diverso da zero e
stampa il percorso del log di riavvio, oltre alle istruzioni per il riavvio, la reinstallazione e il rollback
del pacchetto.
Se il riavvio non può essere eseguito, il comando stampa Gateway: restart skipped (...) o
Gateway: restart failed: ... con un suggerimento per eseguire manualmente openclaw gateway restart.
Con --no-restart, la sostituzione del pacchetto o la nuova build Git viene comunque eseguita, ma il
servizio gestito non viene arrestato né riavviato, quindi il Gateway in esecuzione continua a usare il vecchio
codice finché non viene riavviato manualmente.
Struttura della risposta del piano di controllo
Quando update.run viene eseguito tramite il piano di controllo del Gateway in un'installazione
tramite gestore di pacchetti o in un checkout Git supervisionato, il gestore segnala l'avvio del passaggio di consegne
separatamente dall'aggiornamento della CLI che continua dopo l'uscita del Gateway:
ok: true,result.status: "skipped",result.reason: "managed-service-handoff-started"ehandoff.status: "started": il Gateway ha creato il passaggio di consegne del servizio gestito e ha pianificato il proprio riavvio, in modo che l'helper separato possa eseguireopenclaw update --yes --jsonal di fuori del processo del servizio attivo.ok: false,result.reason: "managed-service-handoff-unavailable"ehandoff.status: "unavailable": OpenClaw non ha potuto trovare un confine di servizio supervisionato e un'identità persistente del servizio per un passaggio di consegne sicuro (ad esempio, il passaggio di consegne di systemd richiede l'identità dell'unitàOPENCLAW_SYSTEMD_UNIT, non soltanto indicatori ambientali dei processi systemd). La risposta includehandoff.command, il comando della shell da eseguire dall'esterno del Gateway.ok: false,result.reason: "managed-service-handoff-failed": il Gateway ha tentato di creare il passaggio di consegne, ma non è riuscito ad avviare l'helper separato.
Il payload sentinel viene scritto prima dell'uscita del Gateway e il passaggio di consegne della
CLI aggiorna lo stesso sentinel di riavvio al termine dei controlli di integrità
successivi al riavvio del servizio gestito. Durante il passaggio di consegne, il sentinel può contenere
stats.reason: "restart-health-pending" senza alcuna continuazione in caso di successo; il
Gateway riavviato lo interroga ed esegue la continuazione soltanto dopo che la CLI ha
verificato l'integrità del servizio e riscritto il sentinel con il risultato finale ok.
openclaw status e openclaw status --all mostrano una riga Update restart
mentre tale sentinel è in sospeso o non è riuscito, mentre update.status aggiorna e
restituisce il sentinel più recente.
Flusso del checkout Git
Selezione del canale
stable: esegue il checkout del tag non beta più recente, quindi esegue la build e doctor.beta: preferisce il tag-betapiù recente, ripiegando sul tag stable più recente quando beta è assente o meno recente.dev: esegue il checkout dimain, quindi esegue il fetch e il rebase.extended-stable: non supportato per i checkout Git; non viene eseguita alcuna modifica del checkout.
Passaggi dell'aggiornamento
Verifica un worktree pulito
Richiede l'assenza di modifiche non sottoposte a commit.
Cambia canale
Passa al canale selezionato (tag o branch).
Recupera dall'upstream
Solo dev.
Build preliminare (solo dev)
Esegue la build TypeScript in un worktree temporaneo. Se il commit più recente non riesce, torna indietro fino a 10 commit per trovare il commit compilabile più recente. Impostare OPENCLAW_UPDATE_PREFLIGHT_LINT=1 per eseguire anche il lint durante questo controllo preliminare; il lint viene eseguito in modalità seriale con risorse limitate perché gli host di aggiornamento degli utenti sono spesso meno potenti dei runner CI.
Esegui il rebase
Esegue il rebase sul commit selezionato (solo dev).
Installa le dipendenze
Usa il gestore di pacchetti del repository. Per i checkout pnpm, il programma di aggiornamento esegue il bootstrap di pnpm su richiesta (prima tramite corepack, quindi con un fallback temporaneo npm install pnpm@11) anziché eseguire npm run build all'interno di un workspace pnpm. Se anche il bootstrap di pnpm non riesce, il programma di aggiornamento si arresta anticipatamente con un errore specifico del gestore di pacchetti anziché tentare npm run build nel checkout.
Compila l'interfaccia di controllo
Compila il gateway e l'interfaccia di controllo.
Esegui doctor
openclaw doctor viene eseguito come controllo finale di aggiornamento sicuro.
Sincronizza i plugin
Sincronizza i plugin con il canale attivo. Dev usa i plugin inclusi; stable e beta usano npm. Aggiorna le installazioni dei plugin monitorate.
Dettagli della sincronizzazione dei plugin
Sul canale beta, le installazioni dei plugin npm e ClawHub monitorate che seguono la
linea predefinita/latest provano prima una release @beta del plugin. Se il plugin non dispone di una
release beta, OpenClaw ripiega sulla specifica predefinita/latest registrata e
segnala un avviso. Per i plugin npm, OpenClaw ripiega inoltre quando il pacchetto
beta esiste ma non supera la convalida dell'installazione. Questi avvisi di fallback non
causano il fallimento dell'aggiornamento principale. Le versioni esatte e i tag espliciti non vengono mai riscritti.
Dopo il completamento di un aggiornamento extended-stable del core, l'integrità e
la convergenza dei plugin successive al core hanno come destinazione i plugin npm ufficiali idonei nella versione esatta
del core installato. Per l'intento predefinito/latest, OpenClaw non interroga
@extended-stable del plugin né ripiega su latest di npm; ricava la versione del pacchetto
dal core installato. Le versioni associate esplicitamente, i tag espliciti diversi da latest,
i pacchetti di terze parti e le origini diverse da npm mantengono l'intento esistente.
Per le installazioni tramite gestore di pacchetti, openclaw update risolve la versione del pacchetto
di destinazione prima di invocare il gestore di pacchetti. Le installazioni globali npm usano un'installazione
preliminare: OpenClaw installa il nuovo pacchetto in un prefisso npm temporaneo,
consente al pacchetto candidato di convalidare la versione Node dell'host durante preinstall
e verifica lì l'inventario dist incluso nel pacchetto. Una protezione di completamento inclusa nel pacchetto
rimane fuori da tale inventario finché preinstall non riesce, in modo che anche i gestori di pacchetti
che ignorano gli script del ciclo di vita si arrestino prima dell'attivazione. Su npm 12 e versioni successive,
il programma di aggiornamento approva soltanto il ciclo di vita del pacchetto OpenClaw candidato; gli script delle
dipendenze transitive rimangono bloccati. OpenClaw scambia quindi l'albero dei pacchetti pulito
nel prefisso globale reale. Se la verifica non riesce, doctor successivo all'aggiornamento, la sincronizzazione dei plugin
e il riavvio non vengono eseguiti dall'albero sospetto. Anche quando la
versione installata corrisponde già alla destinazione, il comando aggiorna
l'installazione globale del pacchetto, quindi esegue la sincronizzazione dei plugin, un aggiornamento del completamento
dei comandi principali e il riavvio. Ciò mantiene i componenti ausiliari inclusi nel pacchetto e i record dei
plugin appartenenti al canale allineati con la build OpenClaw installata, lasciando le ricostruzioni complete
del completamento dei comandi dei plugin alle esecuzioni esplicite di
openclaw completion --write-state.
Correlati
openclaw doctor(propone di eseguire prima l'aggiornamento nei checkout Git)- Canali di sviluppo
- Aggiornamento
- Riferimento della CLI