Hermes v0.20.1: 18 plataformas y 13 mejoras de eficiencia ocultas que probablemente te perdiste

Ayer ejecutaste hermes update, la terminal imprimió “Updated to v0.20.1” y ya está. Tiene sentido: v0.20.1 es un parche silencioso: las notas oficiales son de pocas líneas y dicen que la documentación completa “llegará con v0.21.0”.
Pero detrás de ese silencio hay 656 PR fusionadas, 1.444 commits y 481 issues cerradas. Escondidas dentro están 13 mejoras de eficiencia que las notas de la versión nunca anuncian — cosas que te ahorran tiempo y dinero todos los días. Vamos a desenterrarlas todas.
El cambio principal: la lista de plataformas creció a 18
Durante la ventana de v0.20.x, los documentos oficiales de mensajería crecieron hasta cubrir 18 plataformas, todas atendidas por un único proceso de gateway:
Telegram, Discord, Slack, WhatsApp (personal + Cloud API), Signal, Email, Matrix, IRC, QQ, Yuanbao, Feishu, Weixin, iMessage (BlueBubbles), LINE, DingTalk, Google Chat y SMS.
Sin importar en qué plataforma estés, hermes gateway ejecuta un solo proceso y las conversaciones fluyen sin fricciones entre ellas.
Las 13 mejoras de eficiencia ocultas
A. Instalaciones más rápidas y fiables (2)
1. La instalación en Windows ya no se cuelga para siempre (#85529 / #85539 / #81390)
La etapa “Installing Node.js dependencies” del instalador de Windows podía quedarse colgada indefinidamente — npm install y la descarga de Chromium no tenían límite de tiempo, y un usuario la dejó corriendo toda la noche (un temporizador de etapa que marcaba 744:38). Ahora: cada paso tiene un timeout, los fallos fallan ruidosamente en lugar de fingir éxito, “Already up to date” ya no se salta la reparación de dependencias rotas, y el instalador puede recuperarse tras un bloqueo.
2. La actualización del catálogo de modelos ya no bloquea las rutas críticas (#85555)
La actualización de models.dev ahora usa GET condicionales con ETag: solo vuelve a descargar cuando el contenido realmente cambió, y una ruta rápida sin red evita que el arranque y el cambio de modelo tengan que esperar a la red.
B. Ahorra tokens, ahorra dinero (2)
3. El prompt caching de Anthropic volvió en silencio (#85554)
Si usas un endpoint personalizado compatible con Anthropic (api_mode: anthropic_messages), es posible que el prompt caching se perdiera en silencio durante la ventana de v0.20.0 — ahora cada modelo puede declarar prompt_caching: true|false, e incluso los alias simples (p. ej. fable → claude-fable-5) vuelven a obtener breakpoints de cache_control. Las conversaciones largas consiguen ahorros de tokens inmediatos.
4. La caché de context_length ya no se puede “envenenar” (#85507 / #85509 / #85506)
Una entrada de caché corrupta (context_length: 0) solía envenenar toda la cadena de resolución, entregándole al compresor y a cada vista un 0 permanente. Ahora: los valores no positivos se rechazan al escribirse, la caché se escribe de forma atómica, y los subregistros obsoletos de 32K (la clase MiniMax/Kimi) se descartan y se vuelven a resolver. Tus números de ventana de contexto vuelven a ser fiables.
C. Reanudación de sesiones (1)
5. Reanudar una sesión restaura el modelo que realmente usaste (#85261 / #85558)
hermes --resume o /resume solían volver en silencio al valor por defecto de la configuración — quizá anoche estabas con Grok y reanudaste con otra cosa sin darte cuenta. Ahora se restauran el modelo, el proveedor y el endpoint reales de la sesión, y los cambios de /model persisten su ruta completa en la fila de la sesión.
D. Experiencia de entrada en CLI / escritorio (3)
6. La entrada congelada del CLI ahora se cura sola (#85630)
Cuando la terminal volvía al modo cooked, el CLI “dejaba de aceptar entrada” — antes, solo funcionaba rescatarlo desde fuera con stty. Ahora el CLI detecta la deriva y se autocura.
7. Suggestion pills, tres arreglos en total (#85661 / #85698 / #85091)
- Las pills ahora esperan a que termines una palabra antes de dispararse (se acabó el “use skill: hermes-agent” apareciendo solo porque mencionaste un repo);
- El directorio de conexión de MCP más que se duplicó (antes solo cubría 8 proveedores);
- El fantasma del “hiciste clic una vez y el botón quedó muerto” desapareció.
8. Escribir durante prompts bloqueantes ya no se pierde (#85045 / #84971)
En el escritorio, los mensajes escritos mientras hay un diálogo de confirmación abierto ahora se ejecutan como el siguiente turno, y los prompts en cola se fusionan con el turno en curso — se acabó el “estoy seguro de que escribí eso, ¿por qué no pasó nada?”.
E. Gateway / plataformas (3)
9. Las alertas de cron empezaron a decir la verdad (#85536 / #85508)
Los fallos de los trabajos de script solían reportarse como “errores de proveedor” (y los 429 sueltos se emparejaban mal). Ahora los fallos de no_agent y de scripts, los timeouts, las cadenas de fallback y la deriva se reportan con honestidad; las alertas de deriva se disparan una vez por trabajo en lugar de una vez por tick.
10. La voz/activación ya no paraliza todo el gateway (#85438)
voice.toggle / record / tts y wake.start / status ahora se enrutan por pool — una instalación perezosa síncrona de STT (faster-whisper, ~50 MB, timeout de 300 s) ya no puede bloquear los envíos de WebSocket. Los comandos de voz y las respuestas del modelo dejan de pelearse por el mismo hilo.
11. Tarjetas en vivo nativas en Slack (#85476)
Las respuestas de Slack ahora se transmiten como mensajes nativos de live-typing, con tarjetas opcionales de progreso de plan/tarea — puedes ver qué está pensando el agente y hasta dónde ha avanzado, justo en Slack.
F. Herramientas y seguridad de datos (2)
12. La generación de imágenes ya no evita a tu proveedor (#85520)
El handler de WebSocket image.generate solía llamar directamente al nodo hoja de FAL del árbol interno, evitando en silencio a los proveedores de imágenes registrados por plugins y el enrutamiento de Krea — un usuario de plugins obtuvo resultados incorrectos por eso. Ahora pasa por el dispatcher de proveedores, así que se usa quien hayas configurado.
13. state.db se autocura: sobrevive incluso a un archivo de base de datos sustituido (#84885 / #84886 / #84881)
- Si el archivo de base de datos subyacente se reemplaza con una conexión activa, entra en acción una reconexión de autocuración de un solo disparo en lugar de quedarse atascada hasta el reinicio;
- Los errores transitorios de EIO se reintentan 4×;
hermes sessions recover --allow-partialahora recupera las filas finales que se descartaban en silencio, con un carril lost_and_found como último recurso;- Los checkpoints de WAL son uniformemente PASSIVE, nunca TRUNCATE.
(Esto continúa el endurecimiento del incidente de amnesia de 798 mensajes — otra capa de defensa a nivel de base de datos.)
Cómo actualizar
hermes update
Tras actualizar, ejecuta hermes doctor para confirmar que todo está en orden y luego reinicia el gateway (hermes gateway) para que los cambios de plataforma surtan efecto.
Para cerrar
v0.20.1 es la versión “trabajadora silenciosa”: sin fanfarrias, pero 656 PR con exactamente los arreglos que terminarás necesitando. Dieciocho plataformas, más estas 13 mejoras de eficiencia — es una versión en la que todo usuario de largo plazo debería estar.
¿Quieres profundizar? Consulta las referencias de los comandos hermes update, hermes sessions, hermes cron y hermes model; la versión principal anterior está cubierta en las notas de la versión v0.20.0.