Cuando terminó la última tanda de releases, la langosta acababa de salir de un asedio de seguridad de diez días. La coraza estaba una capa más gruesa. Las pinzas, un poco más rápidas. Pero al nadar por el agua, todavía no se miraba mucho a sí misma.
Lo que hace 4.15 no es grande, pero la dirección es clara: darle a la langosta un cerebro mejor, enseñarle a mirar las llaves que tiene en la mano, y, de paso, mover la memoria a otro sitio sin hacer ruido.
Esta versión no va a salir en el hero de ninguna captura del producto. Pero cuando termines de actualizar, unos cuantos valores por defecto se habrán movido en silencio—y si dependías del comportamiento viejo en algún rincón, conviene saberlo antes.
Un cerebro nuevo: Opus 4.7
La selección por defecto de Anthropic ahora apunta a Claude Opus 4.7. Antes, el alias opus te obligaba a fijar una versión concreta en la configuración; ahora apunta directamente al último Opus. El valor por defecto vía Claude CLI también se alineó.
Junto con eso entra la comprensión de imágenes de Opus 4.7—esta parte antes requería un plugin extra o un vision provider externo, y esta vez viene directamente en el core. Sueltas una captura en la ventana de chat y la langosta ya sabe leerla por su cuenta. No hay que dar vueltas.
Si tenías el provider fijado a mano en algún Opus más viejo, esta actualización no toca tu configuración—el pin explícito sigue ganando. Pero si venías usando los valores por defecto, notarás que tanto la velocidad del chat como la lectura de imágenes avanzaron un paso.
Una salida para las máquinas que no dan abasto
Al mismo tiempo que el ascenso de Opus 4.7, aparece un flag apuntando en la dirección opuesta: agents.defaults.experimental.localModelLean: true.
Está pensado para los modelos locales pequeños. Cuando lo activas, el prompt deja de incluir herramientas pesadas que ahogan a los modelos chicos—browser, cron, esa familia—con lo que la ventana de contexto queda un poco más delgada y la carga de inferencia se alivia. El experimental en el nombre es honesto: sigue en ajuste. Pero si estás corriendo un 7B o un 13B en tu propia máquina, quizá sea más interesante para ti que el ascenso de Opus.
"Al fuerte, más fuerza; al débil, menos carga"—ese es el hilo menos visible que atraviesa esta release.
La primera vez que se le pueden ver las llaves
Es lo que más vale la pena contar de esta versión, y también lo más fácil de pasar por alto.
En la Control UI apareció una tarjeta nueva, Model Auth Status Card. Lo que hace suena poco llamativo: te dice si el token OAuth de cada provider vinculado está sano, cuánto le queda antes de caducar y si los rate limits lo han estado apretando últimamente.
Suena poco llamativo, pero esta tarjeta no existía antes. Te enterabas de que un token OAuth había caducado en el momento exacto en que el provider devolvía un 401; los rate limits se volvían reales cuando te quedabas atascado a mitad de ejecución. La langosta llevaba todo el tiempo usando estas credenciales, pero no había un sitio donde ella—ni tú—pudiera ver ese estado antes de que algo se rompiera.
El backend detrás de la tarjeta es un método nuevo del gateway: models.authStatus. Trae una caché de 60 segundos, así que la UI no está, en realidad, sondeando al provider una vez por segundo. Cuando varios clientes comparten la misma instancia de langosta, tampoco acaban tumbando el endpoint de introspection del provider.
Acompañando la tarjeta llegan un par de arreglos más de bajo nivel. Condición de carrera en credenciales—antes de reabrir el socket, los guardados de auth pendientes se vuelcan primero a disco. Así la reconexión deja de comerse una autenticación que estaba a punto de terminarse. Acceso a archivos del workspace—todas las operaciones de ruta pasan ahora por el helper compartido fs-safe, y los symlinks que apuntan a archivos de la allowlist se rechazan. Ninguno de los dos da para un video de demo, pero ambos encajan bajo el mismo tema: la langosta tiene una idea más clara de lo que está sosteniendo.
Memory se está mudando sin hacer ruido
En esta release cambiaron tres cosas en la capa de memory. Sumadas, componen un giro con dirección.
Primero, los índices de memory en LanceDB ahora aceptan almacenamiento remoto de objetos. Hasta ahora solo podían vivir en disco local, lo que significaba que cambiar de máquina obligaba a reconstruir el índice y que compartir la memoria entre dispositivos era, prácticamente, imposible. En esta versión, el mismo índice de LanceDB puede estar en S3 o en un almacén compatible con S3, y el disco local pasa a ser solo una capa de caché. Para quien tiene la langosta desplegada en varias máquinas, o va y viene entre un portátil y un VPS, este es el paso clave para pasar de "la memoria está atada a la máquina" a "la memoria está atada a la cuenta".
Segundo, GitHub Copilot entra al pool de embedding providers. La búsqueda en memory necesita un modelo de embedding para vectorizar las entradas, y hasta ahora tenías que elegir entre OpenAI, un sentence-transformers local y un puñado más. Ahora hay una opción extra: si ya tienes una suscripción de Copilot, la búsqueda en memory puede reutilizar ese mismo canal de autenticación—con un host helper dedicado que respeta los overrides remotos y el refresh de token.
Tercero—y el único con un borde rompedor—dreaming.storage.mode cambia su valor por defecto de inline a separate.
Dreaming es la fase en la que la langosta, en sus "ratos muertos", condensa y reordena la memoria. Los phase blocks que produce ese proceso iban, hasta ahora, directamente al archivo de memory del día. La ventaja era que todo quedaba en una misma línea de tiempo. La desventaja, que el archivo de memory engordaba por el contenido generado y los diffs se volvían ilegibles.
El nuevo default manda los phase blocks a una ruta aparte: memory/dreaming/{phase}/YYYY-MM-DD.md—un archivo por fase y por día, dejando el archivo de memory original únicamente con lo que escribiste a mano. Actualizar no reescribe los archivos de memory existentes, pero la próxima vez que corra dreaming, la salida irá al sitio nuevo. Si tenías scripts que leían contenido de dreaming desde el archivo de memory, a esos scripts hay que cambiarles la ruta.
Si prefieres conservar el comportamiento viejo, fija esta configuración en inline de forma explícita.
La voz de Google también entra
El plugin empaquetado de Google recibió soporte de Gemini TTS: selección de voz, salida en WAV y formato PCM pensado para telefonía. Si ya estabas usando Google Cloud para STT o para otras llamadas a Gemini, ya no hace falta un TTS provider por separado—la misma autenticación aguanta de principio a fin.
No es un cambio grande. Pero un pedazo que antes tenías que armar tú mismo ahora viene listo para usar.
Lo que no llegó a titular pero probablemente pisabas todos los días
El resto no gana sección propia. Pero juntos cubren bastante de la fricción que aparece en el día a día:
- •Los 404 del chat de Ollama están arreglados. Si tu ID de modelo llevaba el prefijo
ollama/, la versión vieja lo reenviaba tal cual al servidor de Ollama y se ganaba un 404. La versión nueva le quita el prefijo antes de lanzar la request. - •La descarga de imágenes de BlueBubbles vuelve a funcionar con Node 22+—y de paso se rehízo la lógica de reintentos del webhook y de la recuperación de adjuntos. Si en macOS usas BlueBubbles para puentear iMessage, cuando subas de Node sube también a esta release.
- •Watchdog de streaming en la TUI—si en 30 segundos no llega ningún delta de chat event, el indicador de streaming se resetea. Antes, cuando el provider cortaba el stream en silencio, la TUI se quedaba clavada en el estado "streaming". Ya no.
- •Invalidación del snapshot de skills—cambiar
skills.*solía dejar a las sesiones de agent ya abiertas corriendo con la lista vieja de skills; había que reiniciar para ver las nuevas. Ahora cualquier cambio en la configuración invalida el snapshot cacheado. - •Stream guard de herramientas desconocidas, activado por defecto—antes esto era una protección opt-in: cuando el modelo alucinaba el nombre de una herramienta inexistente, el guard evitaba que "Tool X not found" se convirtiera en un bucle infinito. Ahora está activado por defecto, sin configurar nada.
- •Resolución de rutas—las rutas con
~que caen fuera del workspace ahora se resuelven contra el home del sistema operativo, no contraOPENCLAW_HOME. Cuando esos dos directorios no coincidían, un mismo~/foo.txtpodía apuntar a lugares distintos entre edit y write; el fix los pone de acuerdo. - •Alineación de prompt cache—en las corridas del task-scoped adapter, el chat ID de entrada dentro del system prompt queda estabilizado, así que varias llamadas dentro de la misma task tienen una tasa de aciertos más alta en la prompt cache.
- •Passthrough de resultados MEDIA—antes, el passthrough
MEDIA:que venía de las herramientas locales de confianza hacía un match holgado con los nombres de las herramientas integradas. Ahora el match es exacto, y las herramientas de cliente cuyo nombre normalizado choca con uno integrado se rechazan directamente. Ya no se cuela nada aprovechando una colisión de nombres. - •Recuperación de replay—un
401 input item ID does not belong to this connectiondevuelto por el provider ahora queda clasificado como "replay-invalid", con la guía correcta de session reset, en vez de tratarse como un 401 cualquiera y reintentarse sin parar.
Valores por defecto que se movieron
En esta release se movieron unos cuantos valores por defecto; vale la pena listarlos juntos para tenerlos a mano:
- •
dreaming.storage.mode:inline→separate(los phase blocks aterrizan enmemory/dreaming/{phase}/YYYY-MM-DD.md) - •Stream guard de herramientas desconocidas: activado por defecto (era opt-in)
- •Proveedores de voz Microsoft / ElevenLabs empaquetados: activados por defecto
- •Selección por defecto de Anthropic: apunta a Opus 4.7
- •Default del Claude CLI: alineado con Opus 4.7
Los dos primeros son cambios de comportamiento. Si dependías del comportamiento viejo, sobrescríbelo de forma explícita en config antes de actualizar.
En una frase
Si solo te vas a llevar una cosa de este post: corre openclaw update y abre la Control UI para mirar la nueva Model Auth Status Card. Esa tarjeta te va a contar algo que antes no sabías—exactamente qué llaves está sosteniendo la langosta, cuál está a punto de caducar y a cuál le han venido apretando los rate limits.
Si eres un usuario pesado de dreaming, o si alguna vez hojeaste el contenido crudo de los phase blocks dentro de tus archivos de memory, presta atención al cambio de default en dreaming.storage.mode: las salidas nuevas de dreaming van al subdirectorio memory/dreaming/. La primera vez que corra dreaming después de actualizar, un vistazo a ese directorio te muestra la forma nueva.