Hermes v0.20.5: los chats de grupo por fin aceptan archivos, limpieza de primavera de worktrees y recibos para las actualizaciones


Tienes una máquina con varios flujos de Hermes en paralelo y un día decides poner orden: ls .worktrees/ muestra dos docenas de árboles y la lista de ramas ocupa tres pantallas — pero no te atreves a borrar nada, porque no puedes saber qué árbol guarda todavía trabajo sin subir. Mientras tanto, montas un chat de grupo de Bot Mode con tres bots siguiendo un proyecto y, cuando intentas compartir un documento de diseño en PDF, descubres que la sala simplemente no acepta archivos. Estas son las tareas que nadie pidió explícitamente pero con las que todo el mundo se ha topado — y de eso trata exactamente v0.20.5 (tag v2026.8.19, publicada el 19 de agosto de 2026).

En este periodo se fusionaron aproximadamente 323 PR y ~746 commits en ~1.250 archivos desde v0.20.4. No hay una única función estrella: la historia es que los chats de grupo de Bot Mode por fin aceptan archivos, los worktrees por fin tienen un comando seguro de limpieza, las actualizaciones por fin producen recibos auditables y los cron jobs por fin tienen memoria. Vamos a verlos uno a uno.

Los chats de grupo aceptan archivos — y los mensajes antiguos se pliegan solos

Los chats de grupo de Bot Mode antes eran solo de texto: para mostrar un PDF a los bots de una sala tenías que dejar el archivo en algún sitio y referenciar la ruta en tu prompt. Ahora los archivos son ciudadanos de primera clase: las salas aceptan PDF, archivos arbitrarios y drag & drop, y todos los bots que responden al turno ven los adjuntos (PR #97b41f8cf, #b359db72e). El escenario de seguimiento de proyectos con varios bots por fin funciona sin rodeos.

Las salas largas también tienen solución: las conversaciones antiguas se pliegan automáticamente en resúmenes de una línea («▸ Diseño de API … 14 respuestas · hace 2 h») mientras que la conversación más reciente permanece completamente abierta (#8505559fa) — las salas dejan de crecer sin límite y el historial sigue siendo escaneable. Los avatares también estrenan aspecto: por defecto son caras blob dibujadas de forma determinista a partir del nombre del agente (mismo nombre, misma cara, siempre), con cuatro siluetas nuevas de blobatar 2.0.0 (#a77ee88ce, #cb0fd836a). Para un recorrido sistemático por las funciones de los chats de grupo, consulta nuestra guía de chats de grupo de Bot Mode.

hermes worktree list/prune: limpieza de primavera segura para worktrees

Volvamos a la escena inicial. Los flujos multiagente (hermes -w o /worktree new) acumulan decenas de árboles y cientos de ramas fusionadas en .worktrees/. El podador silencioso del arranque solo toca los árboles limpios y totalmente fusionados; todo lo demás permanece para siempre — conservador por diseño, pero eso significa que acabas auditando a mano.

v0.20.5 añade un comando de recuperación explícito que primero ofrece una simulación (dry-run) (#f309f92d3):

hermes worktree list              # auditoría: una fila por árbol — antigüedad, tamaño, veredicto, motivo
hermes worktree prune --dry-run   # muestra el plan, no cambia nada
hermes worktree prune             # recupera árboles seguros + ramas fusionadas

list imprime una tabla: nombre del árbol, antigüedad, tamaño, veredicto (reap/keep) y motivo, con un pie que resume «N árboles, X en total, Y recuperables ahora mismo». Las invariantes de seguridad son idénticas a las del podador de arranque: las modificaciones rastreadas nunca se eliminan, sea cual sea su antigüedad, los commits únicos sin subir nunca se eliminan (git cherry decide qué es «único»; los repos shallow se profundizan antes sin blobs), los árboles bloqueados en uso no se tocan, una rama solo se elimina después de que la eliminación de su worktree haya tenido éxito, y el trabajo temporal sin rastrear se archiva en ~/.hermes/archive/worktree-prune/ antes de retirar su árbol: la basura se va, el trabajo vivo se queda.

Las actualizaciones ahora traen recibos: hermes update --plan

«Qué ocurrió realmente durante la actualización» solía ser una caja negra: imprimir ✓ Code updated! y dar por hecho — el helper muere después de imprimir, el reinicio se omite en silencio, el escritorio muestra un fallo en una actualización exitosa — las clases de fallo silencioso (#88848, #74973, #85753, #81193) eran todo conjeturas a posteriori. v0.20.5 hace que el actualizador demuestre su resultado (#0aecadc17, #1d74833d8):

  • hermes update --plan: de solo lectura. Enumera lo que tocará la actualización — tipo de instalación (git/docker/nix), todos los servicios de Hermes en ejecución en todos los profiles con su supervisor y la versión de código en uso, y cómo se reiniciará cada uno. Seguro de ejecutar en una flota en vivo.
  • Recibos estructurados: cada hermes update escribe un registro JSON legible por máquina — qué descubrió, qué hizo, qué omitió (y por qué) — en <HERMES_HOME>/logs/update_receipts/. Tras la fase de reinicio, lee el gateway_state.json de cada profile, compara el code_sha de cada gateway activo con el HEAD del checkout recién actualizado e imprime una matriz de versiones de la flota — las flotas con versiones mixtas se convierten en un informe visible y accionable en lugar de un estado latente.

Ejecuta hermes update --plan antes de actualizar para ver qué cambiará y revisa el recibo después: quién está en qué versión se ve de un vistazo. Esto continúa la línea iniciada con el hermes update honesto de v0.20.4: actualizar pasa de «confía en mí» a «verificable».

Los cron jobs tienen memoria — y esfuerzo de razonamiento por job

Los cron jobs se trataban de forma distinta: skip_memory=True, MEMORY.md/USER.md nunca se cargaban y la herramienta de memoria se eliminaba a cal y canto — incluso si la nombrabas en los enabled_toolsets de un job. Los usuarios recurrían a soluciones chapuceras. Ahora los agentes cron se ejecutan con la memoria persistente activada como cualquier otro agente (#ef04d846e): los jobs pueden leer — y actualizar — tu memoria persistente.

Cada job también puede fijar su propio esfuerzo de razonamiento, independiente del agent.reasoning_effort global y de los reasoning_overrides por modelo (#4e1dd1a74):

# análisis programado pesado en high, job recurrente barato en minimal — el valor global no se toca
hermes cron create "0 7 * * *" --reasoning-effort high --prompt "Deep weekly repo-trend analysis"
hermes cron create "every 5m"  --reasoning-effort minimal --prompt "Health check and report"

Niveles: none/minimal/low/medium/high/xhigh/max/ultra; los niveles que un modelo no soporta se recortan (clamp) en el proveedor en el momento de la petición (fijar xhigh en un modelo que limita en high se ejecuta en high). Pasa una cadena vacía al editar para quitar la fijación. Para más patrones de cron, consulta nuestra guía completa de automatización con cron.

opencode-free: un modelo gratuito de verdad sin clave

opencode-free ahora es totalmente keyless — sin variable de entorno, sin cuenta, conexión anónima (#ca06b8768) — y la sincronización de deriva del catálogo incorpora los modelos gratuitos activos de OpenRouter a la lista mientras retira los slugs gratuitos muertos (#624723130). Los proveedores keyless cuentan como autenticados en todas partes: opencode-free aparece directamente en /model y en los selectores del escritorio sin configuración alguna (#2a2307e68):

hermes model    # elige opencode-free — no se necesita clave

Si todavía no has configurado un modelo gratuito, esto te da una opción que funciona desde el primer momento. Combinado con nuestros cinco canales de búsqueda gratuitos, una instalación nueva de Hermes puede funcionar completamente keyless.

Otras mejoras de «nadie lo hace pero todos lo necesitan»

  • Disciplina de ejecución y protecciones contra bloqueos (a partir de los hallazgos de la evaluación Composio): cancelación de revisiones en segundo plano sincronizada con la prioridad correcta de primer plano (#37da0d4d5, #b883756b7), esfuerzo de razonamiento de Ox Alpha recortado de forma fiable en los proveedores zen y free (#d4d04098a), decoración cache-control del prompt-caching idempotente (#0fc52b055) — las tareas de larga duración se bloquean menos y gastan tokens de forma más predecible.
  • Rendimiento del escritorio: hidratación paint-first de Bot Mode, spinners del compositor, React Compiler en ambos renderers.
  • Editar mensajes en sesiones antiguas ya no falla (#02e270a47); los borradores de DMs de Telegram conservan el formato enriquecido después del streaming (#790c85014); el arranque Docker stage2 de API_SERVER_KEY ya no depende de que exista .env (#7a17a1b8a).

Para el desglose completo punto por punto (incluidas las listas de Mejoras y Correcciones), consulta nuestras notas de la release v0.20.5. Actualizar es sencillo:

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. Para ver qué tocará la próxima actualización antes de ejecutarla, empieza con hermes update --plan. Esta release no tiene un titular vistoso — pero liquida una pila de tareas con las que todo el mundo se ha topado, y una buena limpieza de primavera sienta genial cuando termina.