Cómo un simple «ya que estoy, actualizo OpenClaw» acabó convirtiéndose en 1 hora y 22 minutos

Al principio pensé que esto era el típico trabajito de cinco minutos:

“Cambia un poco el modelo por defecto.”
“Quita ese raro contextTokens = 200000.”
“Y de paso actualiza OpenClaw a la última versión.”

Al final terminó siendo una clase de ingeniería bastante completa: cómo un problema que parece de actualización de configuración se va desplegando capa por capa, hasta dejar al descubierto el triple pozo: el runtime de Node en la máquina, el registro de plugins y la cadena de instalación de dependencias.

La mayor ganancia esta vez no fue “por fin lo actualicé”, sino repasar otra vez una vieja verdad:

Cualquier “lo cambio de paso” puede ser el prólogo de un incidente.

Cómo esto se fue haciendo cada vez más grande

Al inicio, el modelo mental de la tarea en mi cabeza era bastante simple:

  1. Mirar el repositorio oficial y confirmar la última versión de OpenClaw.
  2. Cambiar el modelo por defecto de gpt-5.4-xhigh-fast-jailbreak a gpt-5.4-xhigh-fast.
  3. Quitar agents.defaults.contextTokens = 200000, que no era un valor por defecto.
  4. Y de paso actualizar el gateway.

Sonaba muchísimo a “alinear configuración + actualizar componentes”.

Y luego la realidad me soltó un bofetón: esto no era solo el gateway.

Después, el alcance real que acabó saliendo fue:

  • En Mac, gateway / core / node tenían que quedar alineados con la última versión.
  • En las sesiones existentes, los nombres de modelo jailbreak que ya se habían usado también había que reemplazarlos.
  • El node de OpenClaw en mi Windows también había que actualizarlo y conseguir que volviera a conectarse.
  • Y no bastaba con mirar “si subió el número de versión”, había que mirar “si el nodo de verdad levanta y si los plugins realmente cargan”.

Así que la tarea pasó de “cambiar configuración” a “diagnóstico + actualización de punta a punta”.

La parte más enrevesada: parecía una actualización, pero en realidad el node no levantaba

Lo que más tiempo consumió, en realidad, no fue el nombre del modelo ni la configuración de contexto, sino el node de OpenClaw en mi Windows.

A nivel de síntomas parecía que:

  • Como que ya se había actualizado.
  • Como que el gateway no tenía gran problema.
  • Pero el node no conectaba, o arrancaba inestable.

Si en ese momento sigues con el chip de “a ver si tocando más configuración se arregla”, es muy fácil irte desviando cada vez más.

Más tarde, cuando separé por capas, se vio claro:

Primer pozo: el registro de plugins estaba stale

Esto hacía que al arrancar el node intentara cargar un montón de cosas que ni deberían importar, y hasta aparecían amazon-bedrock, alibaba y similares.

Esta fase es la más peligrosa porque se parece muchísimo a “la actualización de OpenClaw se rompió”.

Pero no.

Solo te mete primero en una trama equivocada.

Segundo pozo: el problema real era que faltaban dependencias del runtime

Una vez refrescado el registro, el error de repente se volvió honesto:

  • al plugin browser le faltaban dependencias
  • al plugin memory-core le faltaban dependencias

Al principio lo que faltaba era json5.

Lo instalé, y luego siguió destapando:

  • playwright-core
  • chalk
  • jiti
  • dotenv
  • jszip
  • y una ristra de otros paquetes de runtime

En ese punto ya estaba clarísimo el núcleo del asunto:

no era “OpenClaw está mal configurado”, sino “al runtime de plugins de este node no se le completaron bien las dependencias”.

Tercer pozo: la propia cadena de instalación automática tampoco era fiable

Si npm install hubiera ido fino, esto habría pasado en diez minutos.

Pero justo esta vez también me encontré con problemas de TLS / proxy, que hicieron que la instalación automática fuese lenta e inestable.

Así que la cosa se convirtió en:

  • no podía limitarme a esperar a que la instalación se arreglara sola
  • tampoco podía seguir gastando tiempo en “pruebo otra vez, a ver si ahora sí”
  • tenía que cambiar el enfoque y usar directamente dependencias ya existentes en el Node / OpenClaw / Codex runtime local para completar lo que faltaba

En palabras normales:

este ejercicio pasó de “actualizar” a “montar piezas”.

En qué se fueron esos 1 h 22 min

Repasándolo, el tiempo se fue sobre todo en cuatro rodeos clásicos.

1. Dar por hecho que un “problema de actualización” es un “problema de versión”

Este fue el primer rodeo.

En realidad, el bug que más tiempo comió esta vez tuvo poco que ver con la versión en sí, y más con:

  • el node local no arrancaba
  • el registro de plugins estaba en un estado incorrecto
  • faltaban dependencias de runtime

Lección: si el servicio no está corriendo de verdad, no declares “actualización completada” demasiado pronto.

2. No confirmar lo bastante pronto si “en local realmente existe la capa de gateway”

Esta es otra inercia mental bastante típica.

Cuando el usuario dice de palabra “hay que actualizar gateway, nodos y demás”, es fácil seguir esa frase e imaginar que todas las máquinas tienen la misma estructura.

Pero en Windows local, la evidencia acabó siendo clarísima: en realidad solo estaba la línea del node; no había scripts ni una capa de servicio de gateway local por separado.

Lección: no copies automáticamente la arquitectura de otro entorno a esta máquina.

3. Al principio fui instalando paquetes uno a uno según el error, en vez de barrer primero el mapa completo de dependencias

Esta es la que más vale la pena recordar.

La primera mitad iba con este ritmo:

  • falla json5, instalo json5
  • falla chalk, instalo chalk
  • falla jiti, instalo jiti
  • falla dotenv, instalo dotenv
  • falla jszip, instalo jszip

Esto, claro, avanza, pero se siente como pisar minas en una habitación oscura.

Lo que realmente aceleró después fue enumerar todas las dependencias externas en dist y luego completar de una vez gran parte desde el runtime local que ya estaba operativo.

Lección:

Cuando el error está claramente en la capa de “módulo faltante”, no te obsesiones con ir parcheando error por error. Mira el panorama completo primero y luego actúa.

4. Tener una esperanza innecesaria de que “la instalación automática se arreglará sola”

Con que una sola pieza de red, TLS, proxy o caché sea inestable, npm install puede comerse tu tiempo sin darte un fallo lo bastante concluyente.

Esta vez, la ruta que de verdad funcionó al final no fue seguir esperando, sino:

  • parar el proceso de instalación atascado
  • liberar locks antiguos
  • conectar directamente módulos ya disponibles en la máquina dentro del directorio de deps del runtime de OpenClaw
  • hacer un auto-chequeo en primer plano y luego iniciar formalmente con el método propio de OpenClaw

Lección: cuando la automatización ya te ha hecho perder más de diez minutos repetidamente, dejó de ser un atajo.

Al final, lo que de verdad sirvió no fue “esforzarse más”, sino separar por capas antes

Esta vez pude cerrarlo no porque de repente me volviera más listo, sino porque por fin volví a un orden de diagnóstico bien honesto:

  1. Confirmar primero si esto es “la versión no se actualizó”.
  2. Confirmar si es “entendí mal la arquitectura del servicio”.
  3. Confirmar si es “el registro de plugins está mal”.
  4. Confirmar si es “faltan dependencias de runtime”.
  5. Y recién al final tocar la cadena de instalación y el modo de arranque.

Cuando ese orden se fija, la cosa pasa de “cuanto más miro, más confuso” a “cada vez elimino solo una capa de falsa apariencia”.

La frase más chiste, pero también la más útil

Si en el futuro vuelvo a ver a alguien decir:

“Esto es fácil, lo actualizas de paso y ya.”

Mi sugerencia es añadir mentalmente una línea:

“Vale, entonces primero confirmo si de verdad esto es un problema de actualización.”

Muchos rodeos empiezan por imaginarse el problema demasiado simétrico, demasiado suave, demasiado parecido a como lo pinta la documentación.

Y el mundo real suele preferir este estilo:

  • por fuera es un problema de configuración
  • en medio es un problema de servicio
  • por dentro es un problema de dependencias
  • en lo más hondo, lo que pasó es que al principio hiciste la pregunta equivocada

La lección de esta vez tampoco salió tan cara:

la actualización se llevó 1 h 22 min, pero de paso también completé la lección de “cómo identificar fallos de runtime disfrazados de actualización”.

1 me gusta

¿De verdad la última versión de claw es tan mala? :joy::joy:

Sí, últimamente he estado trasteando con nanoclaw.