Hermes Agent v0.20.4
Overview
v0.20.4 — The Glass Release (la versión Glass). Lanzada el 18 de agosto de 2026. ~74 PR fusionados · ~146 commits · ~265 archivos modificados (+21,697 / −2,217) desde v0.20.3.
Un día después del Resilience Patch llegó la ventana que nadie pidió y todos querían: el escritorio por fin deja de pelearse contigo. El plato fuerte es Glass — un modo de translucidez de macOS que difumina la ventana sin desteñir el texto — y a su alrededor aterrizan una barra lateral SESSIONS|BOTS con pestañas permanentes, un roster de bots que por fin se puede ordenar (ocultar, mostrar, disolver), chats grupales de Bot Mode que ya no pierden turnos de larga duración, un escaneo consultivo de NVIDIA SkillEvaluator en cada instalación de skills, el endurecimiento del envío de medios de cron (timeout configurable, adjuntos de ejecuciones manuales que sobreviven), correcciones de contención en SessionDB que desbloquean gateways atascados, un hermes update que dice la verdad sobre las ramas aparcadas y notificaciones nativas de Kanban.
Al ser una versión de parche, las notas oficiales son breves y la documentación curada completa llegará con v0.21.0. Esta página cubre las partes más valiosas de este ciclo.
Destacados
1. Glass de escritorio — translucidez a través de la que se puede leer (macOS)
La translucidez de ventana solía mapearse a la opacidad nativa de la ventana, que desvanecía toda la ventana — texto incluido —, así que cualquiera con un fondo de pantalla ocupado tenía que clavarla en 0. Glass le da una segunda interpretación a la palanca en macOS: la ventana permanece opaca a nivel nativo y, en su lugar, las superficies del renderer se adelgazan sobre el material de vibrancy que ya llevan todas las ventanas de chat. Obtienes un difuminado mate mientras el texto, las tarjetas, los popovers y el composer mantienen contraste pleno (#88744).
Una vez activado Glass, tres controles lo moldean:
- Intensity — la misma palanca, recorriendo todo el rango. Arriba del todo el tinte desaparece por completo: un difuminado puro, sin teñir, con texto y tarjetas todavía opacos.
- Frost — Deep / Soft / Bright / Glare. macOS no expone ninguna perilla de radio de difuminado, así que el material de vibrancy es el control de escarcha.
- Area — toda la ventana, o solo la barra lateral (la forma del Finder: carril de cristal, columna de contenido opaca).
Ajustar cualquiera de ellos asoma: el overlay de configuración cubre exactamente el efecto que controla su slider, así que mantener pulsado el slider desvanece el overlay y la ventana en vivo se convierte en la vista previa. Los perfiles nuevos de macOS ahora arrancan con Glass preseleccionado — la intensidad sigue por defecto en 0, así que nada cambia visiblemente hasta que mueves la palanca, y los perfiles que ajustaron deliberadamente la claridad siguen claros. Windows y Linux ven exactamente lo que ven hoy (#88956).
2. La barra lateral SESSIONS | BOTS es una tira de pestañas — y los bots se pueden ocultar
La barra lateral izquierda del escritorio ahora siempre arranca con SESSIONS | BOTS como pestañas lado a lado en una sola zona. El panel de Bots impone un invariante de dock: en la primera pasada de adopción de cada arranque, cualquier disposición apilada de Sessions-sobre-Bots se recoloca como pestaña central — esa disposición no debe volver a sobrevivir a una actualización (#88872).
El roster también está más ordenado: clic derecho en una fila de bot → Hide Bot lo elimina del roster y de la tira de Activos (sin tocar las @menciones, la pertenencia a grupos ni los chats abiertos), y un toggle de ojo en la cabecera — que solo se renderiza mientras al menos un bot está oculto — revela los bots ocultos atenuados, con clic derecho → Unhide Bot. El estado oculto se sincroniza entre máquinas a través de ui_meta de profile.yaml (#88800).
3. Los chats grupales de Bot Mode dejan de perder turnos de larga duración
Un turno de miembro de un chat grupal solía llevar un plazo fijo de 3 minutos; un turno que lo superaba devolvía null, que el bucle round-robin trata como un pase — así que una respuesta que terminaba en el minuto 7 no tenía adónde ir. Ahora el plazo se extiende mientras la sesión del miembro reporta visiblemente inflight/running, acotado por un tope duro de 20 minutos, y un turno que aun así agota el tiempo registra una línea base stranded que se cosecha de vuelta en la sala en el siguiente límite de turno — tarde, nunca perdido, sobreviviendo a las recargas de ventana (#88885). A su alrededor: los mensajes de los chats grupales renderizan Markdown (#88553), el enrutamiento grupal entre máquinas sobrevive a los cambios de conexión (#88921), un bot puede estar en varios chats grupales a la vez (#88980), los chats grupales son filas de primera clase estilo Discord que se abren en la ventana principal (#88738), y por fin se pueden disolver desde la GUI (#88659).
4. NVIDIA SkillEvaluator: una segunda opinión consultiva al instalar skills
hermes skills install ahora ejecuta NVIDIA SkillEvaluator Tier 1 (PII, contrabando de unicode, lint de scripts) como escaneo consultivo en cada instalación del hub — los hallazgos se muestran con file:line antes de la confirmación de instalación, y la instalación siempre continúa. Es deliberadamente solo-aviso: el escáner PII aguas arriba tiene clases de falsos positivos conocidas (sintaxis SSH como [email protected], correos de ejemplo de la documentación, referencias a gestores de secretos op://), así que los hallazgos informan tu decisión en lugar de bloquearla. Los hallazgos de clase secreto (claves privadas, claves de nube, tokens, cadenas de conexión con credenciales) se renderizan en rojo con una advertencia de revisión explícita. El escaneo es opcional — sin el binario skillevaluator se degrada a un no-op silencioso — y se puede desactivar con skills.tier1_advisory: false (#88573).
5. Endurecimiento del envío de medios de cron
Tres huecos de entrega de cron se cerraron en esta ventana:
- Timeout configurable: los envíos de adjuntos de medios tenían una ventana fija de 30 segundos que las exportaciones grandes (audio TTS largo, PDFs grandes) reventaban, registrando un fallo sin nada después de los dos puntos. El timeout ahora es
HERMES_CRON_MEDIA_SEND_TIMEOUT→cron.media_send_timeout_seconds→ 300 s por defecto, y los timeouts siempre registran una razón de fallo no vacía (#88787). - Las ejecuciones manuales ya no pierden adjuntos:
hermes cron run <job-id>podía entregar el texto de un trabajo mientras descartaba en silencio sus adjuntos PDF/imagen y aun así reportar éxito — el sender independiente registraba los fallos de subida solo enwarnings, que nadie leía. Los fallos de adjuntos ahora son visibles en el estado de la ejecución en ambos carriles de entrega (#88631). - Los disparos perdidos son visibles: cuando la ruta de disparo alojada no puede alcanzar el gateway, el trabajo recibe una marca duradera
last_fire_errorque aparece encronjob list, enhermes cron listy en el dashboard — y se limpia en la siguiente ejecución exitosa (#88555).
6. SessionDB deja de bloquear el event loop
Una flota empresarial se topó con un gateway que no podía volver a levantarse: un apagado sucio en carrera con una segunda instancia hacía que cada reinicio se bloqueara dentro de la migración de esquema v25 en el hilo del event loop, el watchdog de vivacidad del loop disparaba la salida 75, y el supervisor reiniciaba directo al mismo estado. SessionDB (inicialización de esquema + migración contra un state.db en contención) ya no se construye nunca en el hilo del event loop: ante un fallo de caché arranca un bootstrap de fondo de un solo disparo y espera hasta 250 ms — una inicialización sana termina dentro de la ventana, una en contención se degrada a None (todo caller ya lo maneja) con el loop detenido muy por debajo del timeout de sondeo del watchdog (#88753).
7. hermes update dice la verdad sobre las ramas aparcadas
En un checkout de fuente aparcado en una rama de funcionalidad, hermes update solía hacer stash, sincronizar, imprimir ✓ Code updated! — y dejar el checkout en la rama obsoleta sin nada del código nuevo de main. Ahora vuelve automáticamente a main cuando la rama aparcada es demostrablemente segura de dejar (árbol limpio + totalmente fusionada), advierte en voz alta y marca la actualización de código como SKIPPED cuando no lo es, y las líneas de resumen llevan la rama real + el short-sha de HEAD para que la deriva sea visible de un vistazo:
✓ Update complete! [main @ 30fcf9580]
(#88928)
8. Las tareas de Kanban te avisan de forma nativa
El escritorio ahora eleva una notificación nativa del sistema operativo cuando una tarea de Kanban se completa, choca con un bloqueador o falla — el conjunto completo de eventos de terminal (completed, blocked, gave_up, crashed, timed_out, block_loop_detected) con severidad por tipo, para que un worker atascado en un bloqueador mientras estás en otra app ya no muera en silencio. Se controla desde Configuración ▸ Notificaciones ▸ Notificaciones de plugins (#88765).
Mejoras
- Cuarentena de escaneo de skills de proyecto + herencia de confianza no interactiva (seguridad): los skills de proyecto ahora pasan cuarentena de escaneo contra inyecciones en el momento de carga, y las superficies no interactivas (cron/API/ACP) heredan la decisión de confianza por repositorio del humano en lugar de preguntar o auto-confiar — completando los ítems de skills restantes de la épica de skills locales de proyecto (#88643).
- Los turnos de un solo disparo persisten: los turnos de un solo disparo de
hermes chat -Q/-qahora persisten en la sesión reanudada — incluidos los mensajes de Bot Chat de bot a bot (#88763). - Las salas de chat grupal de Bot Mode muestran fotos de perfil (#88746); las sesiones de Bot Mode ocultas nacidas de la CLI se mantienen fuera de la barra lateral global de Sessions (#88677).
- Página de configuración de Gateways del escritorio: Gateway + Connections se unifican en una sola página a nivel de máquina (#88735, #88812); una fila de roster por bot incluso cuando un backend se registra bajo dos direcciones (#88828).
- Providers: Muse Spark 1.2 añadido al selector curado de OpenRouter (#88600), y
api.meta.aienruta a través de la Responses API para el cacheo de prompts (#88601).
Correcciones
- Bloqueo del hilo del event loop de SessionDB (ver Destacado 6); la fuga de alias de modelos virtuales se cierra en la escritura, la lectura y la caché de recuperación (#88761); las sesiones multiplex ahora se almacenan en el
state.dbdel perfil propietario, no en la raíz (#88734). - Borrar bots/perfiles en Windows ya no falla con WinError 32 — la memoria se libera antes de eliminar el directorio (#88727).
- El adaptador de OpenAI tolera objetos de respuesta dispersos; el relay desenvuelve los streams completados de forma perezosa y usa nombres canónicos de operaciones gestionadas (#85581, #85579, #85582).
- Escritorio: sin escritorio local fantasma en los escritorios de gateway remoto (#88554); los perfiles eliminados dejan de reconectarse y los 404 a mitad de cambio ya no se tratan como eliminación de sesión (#88638, #88699); el panel de Bots siempre abre el Bot Chat canónico fijado (#88690).
Actualización
hermes update
Después de actualizar, ejecuta hermes doctor para verificar la instalación y reinicia el gateway (hermes gateway) para que los cambios de plataforma surtan efecto. Usuarios de macOS: el modo Glass aparece en Apariencia ▸ Translucidez de ventana cuando la app de escritorio se refresque.