openclaw update
Mettez à jour OpenClaw et basculez entre les canaux stable/extended-stable/beta/dev.
Si vous avez effectué l’installation via npm/pnpm/bun (installation globale, sans métadonnées git),
les mises à jour suivent le processus du gestionnaire de paquets décrit dans
Mise à jour.
Utilisation
openclaw --update est réécrit en openclaw update (utile pour les shells et les
scripts de lancement).
Options
Il n’existe aucun indicateur
--verbose. Utilisez --dry-run pour afficher un aperçu des actions prévues,
--json pour obtenir des résultats lisibles par une machine et openclaw update status --json
uniquement pour le canal et la disponibilité. Le niveau de détail de la console du Gateway (--verbose) et
le niveau de journalisation des fichiers (logging.level: "debug"/"trace") sont des réglages indépendants ; consultez
Journalisation du Gateway.
En mode Nix (
OPENCLAW_NIX_MODE=1), les exécutions de openclaw update qui effectuent des modifications sont désactivées. Mettez plutôt à jour la source Nix ou l’entrée flake de cette installation ; pour nix-openclaw, utilisez le Démarrage rapide centré sur l’agent. openclaw update status et openclaw update --dry-run restent en lecture seule.update status
Affichez le canal de mise à jour actif, le tag/la branche/le SHA git (uniquement pour les extractions du code source)
et la disponibilité des mises à jour.
Pour les installations du paquet extended-stable, l’état applique le même sélecteur public
et la même vérification exacte du paquet que la mise à jour au premier plan. Il peut indiquer
ahead of extended-stable lorsque la version installée est plus récente. Les échecs JSON
incluent registry.reason (selector_missing, selector_query_failed,
exact_package_mismatch ou unsupported_git_channel).
update repair
Relancez la finalisation de la mise à jour lorsque le paquet principal a déjà été modifié, mais que les travaux de
réparation ultérieurs ne se sont pas achevés correctement. Il s’agit du processus de récupération pris en charge lorsque
openclaw update a installé le nouveau paquet principal, mais que la synchronisation des plugins après la mise à jour du cœur,
les métadonnées des plugins npm gérés, l’actualisation du registre ou la réparation par Doctor n’ont pas
convergé.
update repair exécute openclaw doctor --fix, recharge la configuration réparée et
les enregistrements d’installation, synchronise les plugins suivis pour le canal de mise à jour actif, met à jour
les installations gérées de plugins npm, répare les charges utiles manquantes des plugins configurés,
actualise le registre des plugins et écrit les métadonnées convergées des enregistrements d’installation.
Cette commande n’installe pas de nouveau paquet principal et ne redémarre pas le Gateway.
update wizard
Processus interactif permettant de choisir un canal de mise à jour et de confirmer s’il faut ensuite redémarrer le
Gateway (le redémarrage est le choix par défaut). La sélection de dev sans extraction git
propose d’en créer une.
Fonctionnement
Le changement explicite de canal (--channel ...) maintient également la méthode d’installation
alignée :
dev-> garantit la présence d’une extraction git (~/openclawpar défaut, ou$OPENCLAW_HOME/openclawlorsqueOPENCLAW_HOMEest défini ; remplacez-la avecOPENCLAW_GIT_DIR), la met à jour et installe la CLI globale à partir de cette extraction.stable-> effectue l’installation depuis npm à l’aide delatest.extended-stable-> résout le sélecteur npm publicextended-stable, vérifie le paquet exact sélectionné et installe cette version précise. Il ne se replie pas vers un autre sélecteur et est refusé pour les extractions Git.beta-> privilégie le dist-tag npmbeta, avec un repli verslatestlorsque la version beta est absente ou antérieure à la version stable actuelle.
Transfert du redémarrage
Le programme de mise à jour automatique du cœur du Gateway (lorsqu’il est activé dans la configuration) lance le processus de mise à jour de la CLI en dehors du gestionnaire de requêtes actif du Gateway. Les mises à jour du gestionnaire de paquetsupdate.run du plan de contrôle et les mises à jour supervisées des extractions git utilisent
le même transfert vers le service géré, au lieu de remplacer l’arborescence des paquets ou de
reconstruire dist/ dans le processus actif du Gateway : le Gateway lance un
assistant détaché et s’arrête, puis cet assistant exécute openclaw update --yes --json
en dehors de l’arborescence des processus du Gateway. Si le transfert n’est pas disponible,
update.run renvoie une réponse structurée contenant la commande shell sûre à exécuter
manuellement.
Les sélections extended-stable enregistrées reçoivent au démarrage des indications en lecture seule et des
indications de mise à jour toutes les 24 heures lorsque update.checkOnStart est activé. Ces vérifications n’appliquent jamais de mise à jour,
ne lancent pas de transfert, ne redémarrent pas le Gateway, n’utilisent pas le délai ni la gigue du canal stable, et n’utilisent pas
la cadence d’interrogation du canal bêta. Les mises à jour explicites au premier plan, les mises à jour simples au premier plan avec
update.channel: "extended-stable" enregistré, l’état à la demande et leur transfert géré
du Gateway restent pris en charge.
Lorsqu’un service Gateway géré local est installé et que le redémarrage est activé,
les mises à jour via le gestionnaire de paquets et celles des checkouts Git arrêtent le service en cours d’exécution avant de
remplacer l’arborescence du paquet ou de modifier la sortie du checkout/de la compilation. Le programme de mise à jour
actualise ensuite les métadonnées du service, redémarre le service et vérifie le
Gateway redémarré avant de signaler Gateway: restarted and verified..
Les mises à jour via le gestionnaire de paquets vérifient en outre que le Gateway redémarré indique la
version attendue du paquet ; les mises à jour des checkouts Git vérifient l’intégrité du Gateway et
la disponibilité du service après la recompilation.
Les mises à jour via le gestionnaire de paquets continuent normalement d’utiliser le binaire Node enregistré dans le
service géré. Si ce Node ne peut pas exécuter la version cible, mais que le Node
actuel de la CLI le peut et qu’il est établi que le service appartient au paquet en cours de mise à jour,
une mise à jour avec redémarrage utilise le Node actuel pour la finalisation et réécrit
les métadonnées du service pour cet environnement d’exécution. --no-restart ne peut pas réparer les métadonnées
du service ; la même incompatibilité d’environnement d’exécution provoque donc l’arrêt avant toute modification du paquet.
Sous macOS, la vérification après mise à jour confirme également que le LaunchAgent est
chargé/en cours d’exécution pour le profil actif et que le port de bouclage configuré est
opérationnel. Si le plist est installé mais que launchd ne le supervise pas, OpenClaw
réamorce automatiquement le LaunchAgent et relance les vérifications d’intégrité/de version/
de disponibilité du canal (un nouvel amorçage charge directement la tâche RunAtLoad,
de sorte que la récupération ne kickstart -k pas immédiatement le Gateway nouvellement lancé). Si
le Gateway ne devient toujours pas opérationnel, la commande se termine avec un code différent de zéro et
affiche le chemin du journal de redémarrage ainsi que des instructions de redémarrage, de réinstallation et de restauration
du paquet.
Si le redémarrage ne peut pas s’exécuter, la commande affiche Gateway: restart skipped (...) ou
Gateway: restart failed: ... avec une indication manuelle openclaw gateway restart.
Avec --no-restart, le remplacement du paquet ou la recompilation Git s’exécute tout de même, mais le
service géré n’est ni arrêté ni redémarré ; le Gateway en cours d’exécution conserve donc l’ancien
code jusqu’à ce que vous le redémarriez manuellement.
Format de réponse du plan de contrôle
Lorsqueupdate.run s’exécute par l’intermédiaire du plan de contrôle du Gateway sur une installation via le gestionnaire de paquets
ou un checkout Git supervisé, le gestionnaire signale le lancement du transfert
séparément de la mise à jour de la CLI qui se poursuit après l’arrêt du Gateway :
ok: true,result.status: "skipped",result.reason: "managed-service-handoff-started"ethandoff.status: "started": le Gateway a créé le transfert du service géré et planifié son propre redémarrage afin que l’assistant détaché puisse exécuteropenclaw update --yes --jsonen dehors du processus du service actif.ok: false,result.reason: "managed-service-handoff-unavailable"ethandoff.status: "unavailable": OpenClaw n’a pas pu trouver de limite de service de supervision ni d’identité de service durable permettant un transfert sûr (par exemple, le transfert systemd exige l’identité d’unitéOPENCLAW_SYSTEMD_UNIT, et non de simples marqueurs ambiants de processus systemd). La réponse incluthandoff.command, la commande shell à exécuter depuis l’extérieur du Gateway.ok: false,result.reason: "managed-service-handoff-failed": le Gateway a tenté de créer le transfert, mais n’a pas pu lancer l’assistant détaché.
sentinel est écrite avant l’arrêt du Gateway, et le transfert de la CLI
met à jour cette même sentinelle de redémarrage une fois les vérifications d’intégrité du redémarrage
du service géré terminées. Pendant le transfert, la sentinelle peut contenir
stats.reason: "restart-health-pending" sans continuation en cas de réussite ; le
Gateway redémarré l’interroge et ne déclenche la continuation qu’après que la CLI a
vérifié l’intégrité du service et réécrit la sentinelle avec le résultat final ok.
openclaw status et openclaw status --all affichent une ligne Update restart
tant que cette sentinelle est en attente ou en échec, et update.status actualise et
renvoie la sentinelle la plus récente.
Flux de checkout Git
Sélection du canal
stable: extraire le dernier tag non bêta, puis compiler et exécuter doctor.beta: privilégier le dernier tag-beta, avec repli sur le dernier tag stable si la version bêta est absente ou plus ancienne.dev: extrairemain, puis récupérer et rebaser.extended-stable: non pris en charge pour les checkouts Git ; aucune modification du checkout n’est effectuée.
Étapes de mise à jour
1
Vérifier la propreté de l’arborescence de travail
Exige l’absence de modifications non validées.
2
Changer de canal
Bascule vers le canal sélectionné (tag ou branche).
3
Récupérer depuis le dépôt amont
Développement uniquement.
4
Compilation préalable (développement uniquement)
Exécute la compilation TypeScript dans une arborescence de travail temporaire. Si la révision de tête échoue, remonte jusqu’à 10 commits pour trouver le commit compilable le plus récent. Définissez
OPENCLAW_UPDATE_PREFLIGHT_LINT=1 pour également exécuter le lint pendant cette vérification préalable ; le lint s’exécute en mode série contraint, car les hôtes de mise à jour des utilisateurs sont souvent moins puissants que les exécuteurs de CI.5
Rebaser
Rebase sur le commit sélectionné (développement uniquement).
6
Installer les dépendances
Utilise le gestionnaire de paquets du dépôt. Pour les checkouts pnpm, le programme de mise à jour amorce
pnpm à la demande (d’abord via corepack, puis au moyen d’un repli temporaire npm install pnpm@11) au lieu d’exécuter npm run build dans un espace de travail pnpm. Si l’amorçage de pnpm échoue encore, le programme de mise à jour s’arrête rapidement avec une erreur propre au gestionnaire de paquets au lieu d’essayer npm run build dans le checkout.7
Compiler l’interface de contrôle
Compile le Gateway et l’interface de contrôle.
8
Exécuter doctor
openclaw doctor s’exécute comme vérification finale de mise à jour sûre.9
Synchroniser les plugins
Synchronise les plugins avec le canal actif. Le développement utilise les plugins intégrés ; les canaux stable et bêta utilisent npm. Met à jour les installations de plugins suivies.
Détails de la synchronisation des plugins
Sur le canal bêta, les installations de plugins npm et ClawHub suivies qui suivent la ligne par défaut/la plus récente essaient d’abord une version@beta du plugin. Si le plugin ne dispose d’aucune
version bêta, OpenClaw se replie sur la spécification par défaut/la plus récente enregistrée et
signale un avertissement. Pour les plugins npm, OpenClaw se replie également lorsque le paquet
bêta existe, mais échoue à la validation de l’installation. Ces avertissements de repli ne font pas
échouer la mise à jour du cœur. Les versions exactes et les tags explicites ne sont jamais réécrits.
Les échecs de synchronisation de plugins après la mise à jour qui sont limités à un plugin géré et que le chemin de synchronisation peut contourner (par exemple, un registre npm inaccessible pour un plugin non essentiel) sont signalés sous forme d’avertissements après la réussite de la mise à jour du cœur. Le résultat JSON conserve
status: "ok" pour la mise à jour de premier niveau et indique postUpdate.plugins.status: "warning" avec les recommandations openclaw update repair et openclaw plugins inspect <id> --runtime --json. Les exceptions inattendues du programme de mise à jour ou de synchronisation font toujours échouer le résultat de la mise à jour. Corrigez l’erreur d’installation ou de mise à jour du plugin, puis relancez openclaw update repair. Lorsqu’une mise à jour échouée rend un plugin géré inutilisable, OpenClaw désactive son entrée d’environnement d’exécution et réinitialise les emplacements actifs sans modifier la stratégie plugins.allow ou plugins.deny définie par l’opérateur.Après l’étape de synchronisation de chaque plugin, openclaw update exécute une passe obligatoire de convergence après mise à jour du cœur avant le redémarrage du Gateway : elle répare les charges utiles manquantes des plugins configurés, valide sur disque chaque enregistrement d’installation suivi actif et vérifie statiquement que son package.json peut être analysé (et que tout main explicitement déclaré existe). Les échecs de cette passe, ainsi qu’un instantané de configuration non valide, renvoient postUpdate.plugins.status: "error" et font passer la mise à jour de premier niveau status à "error", de sorte que openclaw update se termine avec un code différent de zéro et que le Gateway ne soit pas redémarré avec un ensemble de plugins non vérifié. L’erreur inclut des lignes structurées postUpdate.plugins.warnings[].guidance pointant vers openclaw update repair et openclaw plugins inspect <id> --runtime --json. Les entrées de plugins désactivées et les enregistrements qui ne sont pas des cibles officielles de synchronisation liées à une source approuvée sont ignorés ici (conformément à la stratégie skipDisabledPlugins utilisée par la vérification des charges utiles manquantes), afin qu’un enregistrement obsolète de plugin désactivé ne puisse pas bloquer une mise à jour par ailleurs valide.Au démarrage du Gateway mis à jour, le chargement des plugins se limite à la vérification : le démarrage n’exécute pas de gestionnaires de paquets et ne modifie pas les arborescences de dépendances. Les redémarrages update.run du gestionnaire de paquets sont confiés au chemin de service géré de la CLI, de sorte que l’échange de paquets s’effectue en dehors de l’ancien processus du Gateway et que les vérifications d’intégrité du service déterminent si la mise à jour peut être signalée comme terminée.latest, OpenClaw n’interroge pas le
@extended-stable du plugin et ne se replie pas sur le latest de npm ; il déduit la version du paquet
à partir du cœur installé. Les épinglages explicites de version, les tags explicites autres que latest,
les paquets tiers et les sources autres que npm conservent leur intention existante.
Pour les installations via le gestionnaire de paquets, openclaw update résout la version cible du paquet
avant d’appeler le gestionnaire de paquets. Les installations globales npm utilisent une installation
intermédiaire : OpenClaw installe le nouveau paquet dans un préfixe npm temporaire,
permet au paquet candidat de valider la version de Node de l’hôte pendant preinstall,
et y vérifie l’inventaire dist du paquet. Un garde d’achèvement empaqueté
reste en dehors de cet inventaire jusqu’à la réussite de preinstall, afin que les gestionnaires de paquets
qui ignorent les scripts de cycle de vie s’arrêtent également avant l’activation. Sous npm 12 et versions ultérieures,
le programme de mise à jour n’autorise que le cycle de vie du candidat OpenClaw ; les scripts des
dépendances transitives restent bloqués. OpenClaw échange ensuite l’arborescence propre du paquet
dans le véritable préfixe global. Si la vérification échoue, les opérations doctor après mise à jour, de synchronisation des plugins
et de redémarrage ne s’exécutent pas depuis l’arborescence suspecte. Même lorsque la
version installée correspond déjà à la cible, la commande actualise
l’installation globale du paquet, puis exécute la synchronisation des plugins, une actualisation de l’autocomplétion
des commandes du cœur et les opérations de redémarrage. Cela maintient les composants annexes du paquet et les enregistrements de
plugins appartenant au canal alignés sur la version installée d’OpenClaw, tout en réservant les reconstructions complètes
de l’autocomplétion des commandes de plugins aux exécutions explicites de
openclaw completion --write-state.
Voir aussi
openclaw doctor(propose d’exécuter d’abord la mise à jour sur les checkouts Git)- Canaux de développement
- Mise à jour
- Référence de la CLI