CLI commands
Actualizar
openclaw update
Actualiza OpenClaw y cambia entre los canales stable/extended-stable/beta/dev.
Si se instaló mediante npm/pnpm/bun (instalación global, sin metadatos de git), las actualizaciones siguen el flujo del gestor de paquetes descrito en Actualización.
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 se reescribe como openclaw update (útil para shells y
scripts de lanzamiento).
Opciones
| Indicador | Descripción |
|---|---|
--no-restart |
Omite el reinicio del servicio Gateway después de una actualización correcta. Las actualizaciones mediante el gestor de paquetes que sí reinician verifican que el servicio reiniciado indique la versión esperada antes de que el comando se complete correctamente. |
--channel <stable|extended-stable|beta|dev> |
Establece el canal de actualización y lo conserva después de que la actualización del núcleo se complete correctamente. Extended-stable solo está disponible mediante paquetes. |
--tag <dist-tag|version|spec> |
Reemplaza el destino del paquete solo para esta actualización. No se puede combinar con un canal extended-stable efectivo, cuyo destino exacto verificado es obligatorio. Para otras instalaciones de paquetes, main se asigna a github:openclaw/openclaw#main; las especificaciones de origen de GitHub/git se empaquetan en un tarball temporal antes de la instalación global preparada con npm. |
--dry-run |
Muestra una vista previa de las acciones previstas (flujo de canal/etiqueta/destino/reinicio) sin escribir la configuración, instalar, sincronizar plugins ni reiniciar. |
--json |
Imprime JSON UpdateRunResult legible por máquina. Incluye postUpdate.plugins.warnings cuando un plugin administrado necesita reparación, detalles de la alternativa de plugins del canal beta y postUpdate.plugins.integrityDrifts cuando se detecta una divergencia en los artefactos de plugins de npm durante la sincronización posterior a la actualización. |
--timeout <seconds> |
Tiempo de espera por paso. Valor predeterminado: 1800. |
--yes |
Omite las solicitudes de confirmación (por ejemplo, la confirmación de una reversión de versión). |
--acknowledge-clawhub-risk |
Permite que la sincronización de plugins posterior a la actualización continúe pese a las advertencias de confianza de la comunidad de ClawHub sin una solicitud interactiva. Sin esta opción, las versiones riesgosas de la comunidad se omiten y permanecen sin cambios cuando OpenClaw no puede solicitar confirmación. Los paquetes oficiales de ClawHub y las fuentes de plugins incluidas omiten esta solicitud. |
No existe ningún indicador --verbose. Se usa --dry-run para obtener una vista previa de las acciones previstas,
--json para obtener resultados legibles por máquina y openclaw update status --json
solo para consultar el canal y la disponibilidad. El nivel de detalle de la consola del Gateway (--verbose) y
el nivel de registro de archivos (logging.level: "debug"/"trace") son controles independientes; véase
Registro del Gateway.
update status
Muestra el canal de actualización activo, la etiqueta/rama/SHA de git (solo en checkouts de código fuente) y la disponibilidad de actualizaciones.
openclaw update statusopenclaw update status --jsonopenclaw update status --timeout 10| Indicador | Valor predeterminado | Descripción |
|---|---|---|
--json |
false |
Imprime el JSON de estado legible por máquina. |
--timeout <seconds> |
3 |
Tiempo de espera para las comprobaciones. |
Para las instalaciones de paquetes extended-stable, el estado realiza la misma selección pública
y verificación exacta del paquete que la actualización en primer plano. Puede indicar
ahead of extended-stable cuando la versión instalada es más reciente. Los errores JSON
incluyen registry.reason (selector_missing, selector_query_failed,
exact_package_mismatch o unsupported_git_channel).
update repair
Vuelve a ejecutar la finalización de la actualización después de que el paquete del núcleo ya haya cambiado,
pero las tareas de reparación posteriores no hayan terminado correctamente. Esta es la ruta de recuperación compatible cuando
openclaw update instaló el nuevo paquete del núcleo, pero la sincronización de plugins posterior a la actualización del núcleo,
los metadatos de plugins de npm administrados, la actualización del registro o la reparación de Doctor no
convergieron.
openclaw update repairopenclaw update repair --channel betaopenclaw update repair --acknowledge-clawhub-riskopenclaw update repair --json| Indicador | Descripción |
|---|---|
--channel <stable|extended-stable|beta|dev> |
Conserva el canal de actualización del núcleo antes de la reparación. Para extended-stable, los plugins oficiales de npm aptos que siguen la intención básica/predeterminada o latest usan como destino la versión exacta instalada del núcleo. La reparación de extended-stable se rechaza en checkouts de Git sin modificar la configuración. |
--json |
Imprime el JSON de finalización legible por máquina. |
--timeout <seconds> |
Tiempo de espera para los pasos de reparación. Valor predeterminado: 1800. |
--yes |
Omite las solicitudes de confirmación. |
--acknowledge-clawhub-risk |
Mismo comportamiento que en openclaw update. |
--no-restart |
Se acepta por coherencia; la reparación nunca reinicia el Gateway. |
update repair ejecuta openclaw doctor --fix, vuelve a cargar la configuración reparada y
los registros de instalación, sincroniza los plugins rastreados para el canal de actualización activo, actualiza
las instalaciones administradas de plugins de npm, repara las cargas útiles faltantes de los plugins configurados,
actualiza el registro de plugins y escribe los metadatos convergentes de los registros de instalación.
No instala un nuevo paquete del núcleo ni reinicia el Gateway.
update wizard
Flujo interactivo para elegir un canal de actualización y confirmar si se debe reiniciar el
Gateway después (de forma predeterminada, se reinicia). Al seleccionar dev sin un checkout de git,
se ofrece la posibilidad de crear uno.
| Indicador | Valor predeterminado | Descripción |
|---|---|---|
--timeout <seconds> |
1800 |
Tiempo de espera para cada paso de actualización. |
Qué hace
Cambiar de canal explícitamente (--channel ...) también mantiene alineado el método
de instalación:
dev-> garantiza que exista un checkout de git (de forma predeterminada,~/openclaw, o$OPENCLAW_HOME/openclawcuando se estableceOPENCLAW_HOME; se puede reemplazar conOPENCLAW_GIT_DIR), lo actualiza e instala la CLI global desde ese checkout.stable-> instala desde npm mediantelatest.extended-stable-> resuelve el selector públicoextended-stablede npm, verifica el paquete exacto seleccionado e instala esa versión exacta. No recurre a otro selector y se rechaza para los checkouts de Git.beta-> da preferencia a la etiqueta de distribuciónbetade npm y recurre alatestcuando la versión beta no existe o es anterior a la versión estable actual.
Transferencia del reinicio
El actualizador automático del núcleo del Gateway (cuando está habilitado mediante la configuración) inicia la ruta
de actualización de la CLI fuera del controlador de solicitudes activo del Gateway. Las actualizaciones del gestor de paquetes
update.run del plano de control y las actualizaciones supervisadas de checkouts de git usan
la misma transferencia del servicio administrado en lugar de reemplazar el árbol de paquetes o
recompilar dist/ dentro del proceso activo del Gateway: el Gateway inicia un
proceso auxiliar independiente y finaliza, y ese proceso auxiliar ejecuta openclaw update --yes --json
desde fuera del árbol de procesos del Gateway. Si la transferencia no está disponible,
update.run devuelve una respuesta estructurada con el comando de shell seguro que se debe ejecutar
manualmente.
Las selecciones de estabilidad extendida almacenadas reciben indicaciones de inicio de solo lectura y de actualización cada 24 horas
cuando update.checkOnStart está habilitado. Estas comprobaciones nunca aplican una actualización,
inician un traspaso, reinician el Gateway, usan el retraso o la variación aleatoria de stable, ni usan la
cadencia de sondeo de beta. Las actualizaciones explícitas en primer plano, las actualizaciones sin argumentos en primer plano con
update.channel: "extended-stable" almacenado, el estado bajo demanda y su traspaso administrado del
Gateway siguen siendo compatibles.
Cuando hay instalado un servicio Gateway administrado local y el reinicio está habilitado,
las actualizaciones mediante el gestor de paquetes y mediante un checkout de Git detienen el servicio en ejecución antes de
reemplazar el árbol de paquetes o modificar la salida del checkout o de la compilación. A continuación, el actualizador
renueva los metadatos del servicio, reinicia el servicio y verifica el
Gateway reiniciado antes de informar Gateway: restarted and verified..
Además, las actualizaciones mediante el gestor de paquetes verifican que el Gateway reiniciado informe la
versión esperada del paquete; las actualizaciones mediante un checkout de Git verifican el estado del Gateway y
la disponibilidad del servicio después de la recompilación.
Normalmente, las actualizaciones mediante el gestor de paquetes siguen usando el binario de Node registrado en el
servicio administrado. Si ese Node no puede ejecutar la versión de destino, pero el Node de la
CLI actual sí puede y se ha demostrado que el servicio pertenece al paquete que se está actualizando,
una actualización con reinicio habilitado usa el Node actual para la finalización y reescribe
los metadatos del servicio para ese entorno de ejecución. --no-restart no puede reparar los metadatos del
servicio, por lo que la misma incompatibilidad del entorno de ejecución detiene el proceso antes de modificar el paquete.
En macOS, la comprobación posterior a la actualización también verifica que el LaunchAgent esté
cargado y en ejecución para el perfil activo y que el puerto de bucle invertido configurado
funcione correctamente. Si el plist está instalado, pero launchd no lo está supervisando, OpenClaw
vuelve a inicializar automáticamente el LaunchAgent y repite las comprobaciones de estado, versión y
disponibilidad del canal (una inicialización nueva carga directamente el trabajo RunAtLoad,
por lo que la recuperación no ejecuta inmediatamente kickstart -k en el Gateway recién iniciado). Si
el Gateway sigue sin alcanzar un estado correcto, el comando termina con un código distinto de cero e
imprime la ruta del registro de reinicio, además de instrucciones para reiniciar, reinstalar y revertir
el paquete.
Si no se puede ejecutar el reinicio, el comando imprime Gateway: restart skipped (...) o
Gateway: restart failed: ... con una indicación manual de openclaw gateway restart.
Con --no-restart, el reemplazo del paquete o la recompilación de Git se siguen ejecutando, pero el
servicio administrado no se detiene ni se reinicia, por lo que el Gateway en ejecución conserva el código
anterior hasta que se reinicie manualmente.
Formato de respuesta del plano de control
Cuando update.run se ejecuta a través del plano de control del Gateway en una instalación
mediante un gestor de paquetes o un checkout de Git supervisado, el controlador informa el inicio del traspaso
por separado de la actualización de la CLI que continúa después de que el Gateway termine:
ok: true,result.status: "skipped",result.reason: "managed-service-handoff-started"yhandoff.status: "started": el Gateway creó el traspaso del servicio administrado y programó su propio reinicio para que el proceso auxiliar desacoplado pueda ejecutaropenclaw update --yes --jsonfuera del proceso activo del servicio.ok: false,result.reason: "managed-service-handoff-unavailable"yhandoff.status: "unavailable": OpenClaw no pudo encontrar un límite de servicio supervisado ni una identidad de servicio persistente para realizar un traspaso seguro (por ejemplo, el traspaso de systemd requiere la identidad de unidadOPENCLAW_SYSTEMD_UNIT, no solo indicadores de procesos systemd del entorno). La respuesta incluyehandoff.command, el comando de shell que se debe ejecutar desde fuera del Gateway.ok: false,result.reason: "managed-service-handoff-failed": el Gateway intentó crear el traspaso, pero no pudo iniciar el proceso auxiliar desacoplado.
La carga útil sentinel se escribe antes de que el Gateway termine, y el traspaso de la CLI
actualiza ese mismo indicador de reinicio después de que finalicen las comprobaciones de estado
del reinicio del servicio administrado. Durante el traspaso, el indicador puede contener
stats.reason: "restart-health-pending" sin continuación de éxito; el
Gateway reiniciado lo sondea y activa la continuación únicamente después de que la CLI haya
verificado el estado del servicio y reescrito el indicador con el resultado final ok.
openclaw status y openclaw status --all muestran una fila Update restart
mientras ese indicador está pendiente o ha fallado, y update.status actualiza y
devuelve el indicador más reciente.
Flujo de checkout de Git
Selección del canal
stable: obtiene la etiqueta no beta más reciente y, a continuación, compila y ejecuta doctor.beta: prioriza la etiqueta-betamás reciente y recurre a la etiqueta stable más reciente cuando no existe una beta o esta es más antigua.dev: obtienemainy, a continuación, descarga los cambios y ejecuta rebase.extended-stable: no es compatible con los checkouts de Git; no se produce ninguna modificación del checkout.
Pasos de actualización
Verificar que el árbol de trabajo esté limpio
Requiere que no haya cambios sin confirmar.
Cambiar de canal
Cambia al canal seleccionado (etiqueta o rama).
Obtener cambios del repositorio remoto
Solo para dev.
Compilación preliminar (solo para dev)
Ejecuta la compilación de TypeScript en un árbol de trabajo temporal. Si la punta falla, retrocede hasta 10 commits para encontrar el commit compilable más reciente. Configure OPENCLAW_UPDATE_PREFLIGHT_LINT=1 para ejecutar también el lint durante esta comprobación preliminar; el lint se ejecuta en un modo en serie restringido porque los hosts de actualización de los usuarios suelen ser más pequeños que los ejecutores de CI.
Ejecutar rebase
Ejecuta rebase sobre el commit seleccionado (solo para dev).
Instalar dependencias
Usa el gestor de paquetes del repositorio. Para los checkouts de pnpm, el actualizador inicializa pnpm bajo demanda (primero mediante corepack y después mediante una alternativa temporal npm install pnpm@11) en lugar de ejecutar npm run build dentro de un espacio de trabajo de pnpm. Si la inicialización de pnpm sigue fallando, el actualizador se detiene anticipadamente con un error específico del gestor de paquetes en lugar de intentar ejecutar npm run build en el checkout.
Compilar la interfaz de control
Compila el Gateway y la interfaz de control.
Ejecutar doctor
openclaw doctor se ejecuta como comprobación final de actualización segura.
Sincronizar plugins
Sincroniza los plugins con el canal activo. Dev usa plugins incluidos; stable y beta usan npm. Actualiza las instalaciones de plugins con seguimiento.
Detalles de la sincronización de plugins
En el canal beta, las instalaciones de plugins de npm y ClawHub con seguimiento que siguen la
línea predeterminada/latest intentan primero una versión @beta del plugin. Si el plugin no tiene
una versión beta, OpenClaw recurre a la especificación predeterminada/latest registrada e
informa de una advertencia. Para los plugins de npm, OpenClaw también recurre a la alternativa cuando el
paquete beta existe, pero no supera la validación de instalación. Estas advertencias de uso de alternativas no
hacen que falle la actualización del núcleo. Las versiones exactas y las etiquetas explícitas nunca se reescriben.
Después de que una actualización del núcleo de estabilidad extendida se complete correctamente, la integridad y
la convergencia de los plugins posteriores al núcleo se aplican a los plugins oficiales de npm aptos en la versión
exacta instalada del núcleo. Para la intención predeterminada/latest, OpenClaw no consulta
@extended-stable del plugin ni recurre a latest de npm; deriva la versión del paquete
a partir del núcleo instalado. Las versiones fijadas explícitamente, las etiquetas explícitas distintas de latest,
los paquetes de terceros y las fuentes que no sean npm conservan su intención existente.
Para las instalaciones mediante gestores de paquetes, openclaw update resuelve la versión de destino del paquete
antes de invocar el gestor de paquetes. Las instalaciones globales de npm usan una instalación por etapas:
OpenClaw instala el nuevo paquete en un prefijo temporal de npm,
permite que el paquete candidato valide la versión de Node del host durante preinstall,
y verifica allí el inventario empaquetado dist. Una protección de finalización empaquetada
permanece fuera de ese inventario hasta que preinstall se completa correctamente, por lo que los gestores de paquetes
que omiten los scripts del ciclo de vida también se detienen antes de la activación. En npm 12 y versiones posteriores,
el actualizador aprueba únicamente el ciclo de vida de la versión candidata de OpenClaw; los scripts de
dependencias transitivas permanecen bloqueados. A continuación, OpenClaw intercambia el árbol de paquetes limpio
en el prefijo global real. Si la verificación falla, doctor posterior a la actualización, la sincronización de plugins
y las tareas de reinicio no se ejecutan desde el árbol sospechoso. Incluso cuando la
versión instalada ya coincide con la de destino, el comando renueva la
instalación global del paquete y, a continuación, ejecuta la sincronización de plugins, una renovación de finalización
de los comandos del núcleo y las tareas de reinicio. Esto mantiene los componentes auxiliares empaquetados y los registros
de plugins propiedad del canal alineados con la compilación instalada de OpenClaw, mientras que reserva las
recompilaciones completas de finalización de comandos de plugins para ejecuciones explícitas de
openclaw completion --write-state.
Contenido relacionado
openclaw doctor(ofrece ejecutar primero la actualización en los checkouts de Git)- Canales de desarrollo
- Actualización
- Referencia de la CLI