Hermes Agent v0.20.5
Overview
v0.20.5 — La release de mantenimiento. Publicada el 19 de agosto de 2026. ~323 PR fusionados · ~746 commits · ~1.250 archivos modificados (+111.500 / −20.701) desde v0.20.4.
Este periodo no tiene una única función estrella: cierra una pila de tareas que llevaban mucho tiempo pendientes. La noticia principal es que los chats de grupo de Bot Mode por fin aceptan archivos: PDF, imágenes y adjuntos arbitrarios mediante drag & drop, visibles para todos los bots que responden; las conversaciones más antiguas se pliegan en resúmenes de una línea para que las salas dejen de desplazarse hasta el infinito; y los avatares se convierten en caras blob deterministas dibujadas a partir del nombre del agente, con cuatro siluetas nuevas. Para el desarrollo diario, hermes worktree list/prune ofrece a los flujos multiagente un canal seguro y asistido para recuperar los worktrees acumulados y las ramas fusionadas; hermes update --plan y los recibos de actualización estructurados hacen auditable por primera vez «qué ocurrió realmente durante la actualización»; los cron jobs ganan memoria persistente como cualquier otro agente y esfuerzo de razonamiento por job; y opencode-free se convierte en un modelo gratuito realmente sin clave: sin variable de entorno, sin cuenta, disponible directamente en /model y en el selector del escritorio.
Al tratarse de una release de parche, las notas oficiales son breves y la documentación completa y curada llegará con v0.21.0. Esta página cubre las partes más valiosas de este periodo.
Destacados
1. Chats de grupo de Bot Mode: archivos dentro, mensajes antiguos plegados
Los chats de grupo antes eran solo de texto; ahora los archivos son ciudadanos de primera clase: las salas aceptan PDF, archivos y drag & drop, y todos los bots que responden al turno ven los adjuntos (#97b41f8cf, #b359db72e). Las salas largas dejan de desplazarse para siempre: 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).
Los avatares también estrenan aspecto: los avatares de Bot Mode usan por defecto 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).
2. hermes worktree list/prune — recuperación segura de los worktrees acumulados
Los flujos multiagente (hermes -w / /worktree new) acumulan decenas de árboles y cientos de ramas fusionadas en .worktrees/ con el tiempo. El podador silencioso del arranque solo toca los árboles limpios y totalmente fusionados; todo lo demás permanece para siempre. Ahora existe una recuperación explícita, que primero ofrece una simulación (dry-run):
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
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 (la equivalencia de parche de git cherry decide qué es «único»), 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 (#f309f92d3).
3. hermes update --plan + recibos estructurados — actualizaciones auditables
El actualizador ahora demuestra su resultado en lugar de darlo por hecho (#0aecadc17, #1d74833d8):
hermes update --plan: de solo lectura. Enumera el 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 updateescribe 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 elgateway_state.jsonde cada profile, compara elcode_shade 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 (la clase #88654) se convierten en un informe visible y accionable en lugar de un estado latente.
4. Los cron jobs tienen memoria — y esfuerzo de razonamiento por job
Los cron jobs se creaban con skip_memory=True y una denegación dura del toolset de memoria, por lo que MEMORY.md/USER.md nunca se cargaban y la herramienta de memoria se eliminaba incluso de los enabled_toolsets por job. 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.
5. opencode-free: un modelo gratuito realmente 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 muertos (#624723130). Los proveedores keyless cuentan como autenticados en todas partes: opencode-free aparece en /model y en los selectores del escritorio sin configuración alguna (#2a2307e68).
hermes model # elige opencode-free — no se necesita clave
6. Disciplina de ejecución y protecciones contra bloqueos en tiempo de ejecución
Un lote de endurecimiento de «disciplina de ejecución» a partir de los hallazgos de la evaluación Composio: la cancelación de revisiones en segundo plano se sincroniza con la prioridad correcta de primer plano (#37da0d4d5, #b883756b7), el esfuerzo de razonamiento de Ox Alpha llega al cable recortado (clamp) en los proveedores zen y free (#d4d04098a), y la decoración cache-control del prompt-caching es idempotente (#0fc52b055). Nada vistoso que demostrar — pero las tareas de larga duración se bloquean menos y gastan tokens de forma más predecible.
Mejoras
- Rendimiento del escritorio: hidratación paint-first de Bot Mode, spinners del compositor, React Compiler en ambos renderers — el escritorio se siente más rápido y más receptivo.
- Editar mensajes de sesiones antiguas ya no falla (BD del profile + ordinal relativo a la ventana, #02e270a47).
- Los borradores de DMs de Telegram conservan el formato enriquecido después del streaming (también para envíos persistentes nuevos, #790c85014, #216c98aae).
- El arranque Docker stage2 de
API_SERVER_KEYya no depende de que exista.env(#7a17a1b8a). - Bot Mode: los turnos largos de los miembros de chats de grupo ya no se pierden (seguimientos de #88885), el enrutamiento de grupos entre máquinas sobrevive a los cambios de conexión (#88921), un bot puede estar en varios chats de grupo a la vez (#88980).
Correcciones
- La compactación nativa conserva los mensajes de resumen de compresión durante la poda previa al checkpoint (#fb27614ad).
- Los cron jobs programados ya no meten MEMORY.md en el prompt del job (semántica final: los jobs pueden leer/escribir la memoria persistente, pero el lado del programador no hace ninguna inyección extra; #fc9cbc872).
- Sincronización de deriva del catálogo: slugs gratuitos muertos retirados, modelos gratuitos activos de OpenRouter incorporados (#624723130).
- Gateway: la exclusión del servicio recolector de huérfanos se amplía a toda la flota launchd; flags de ps compatibles con BSD + descubrimiento de pids de launchd en todos los profiles (#42bd567a8, #d8047c303).
- El adaptador de OpenAI tolera objetos de respuesta dispersos; el relay desenvuelve los flujos completados de forma perezosa y usa nombres canónicos de operaciones gestionadas (#85581, #85579, #85582).
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. Para ver qué tocará la próxima actualización antes de ejecutarla: hermes update --plan.