v0.13.0

Hermes Agent v0.13.0 — La Versión Tenacidad


Resumen

v0.13.0 — La Versión Tenacidad. Publicada el 7 de mayo de 2026. 864 commits · 588 PRs fusionados · 829 archivos modificados · 128.366 inserciones · 282 incidencias cerradas (13 P0, 36 P1) · 295 colaboradores de la comunidad (incluyendo coautores).

La Versión Tenacidad responde una sola pregunta con tres mecanismos distintos: ¿cómo logra un agente terminar lo que empieza? Antes de v0.13, Hermes era inteligente pero no persistente — podía iniciar una tarea de varios pasos, encontrar un obstáculo y desviarse o morir silenciosamente. v0.13 incorpora tres soluciones entrelazadas: Kanban multi-agente duradero (tableros de tareas con heartbeat, detección de zombies y recuperación de alucinaciones), /goal (el bucle Ralph — fija al agente en un objetivo a través de los turnos) y Checkpoints v2 (persistencia de estado reescrita con poda real). Juntos convierten a Hermes en el primer framework de agentes de código abierto con garantías de finalización integradas.

Esta es también la versión con mayores mejoras de seguridad en la historia del proyecto — 8 cierres P0 en una sola versión. La redacción de datos sensibles ahora está ACTIVADA por defecto. Las listas de roles permitidos de Discord tienen ámbito por servidor. WhatsApp rechaza a desconocidos por defecto. Las ventanas TOCTOU se cierran en auth.json y MCP OAuth. La superficie de ataque del agente se reduce drásticamente mientras su alcance se expande: Google Chat se une como la vigésima plataforma de mensajería, los proveedores se vuelven una superficie conectable, y la CLI y el gateway ahora hablan siete idiomas.


Funcionalidades Principales

1. Kanban Multi-Agente — Delega en un Equipo de IA que Realmente Termina

La funcionalidad estrella de v0.13. Kanban convierte a Hermes en un tablero de tareas multi-agente duradero. Crea un tablero, coloca tareas en él y deja que múltiples workers de Hermes las tomen, las transfieran y las cierren. Lo importante es la infraestructura interna: heartbeats, recuperación por timeout, detección de zombies, presupuesto de reintentos por tarea, bloqueo automático al salir sin completar y una barrera de recuperación de alucinaciones.

Crear y gestionar un tablero kanban:

# Crear un nuevo tablero y cambiar a él
hermes kanban boards create project-a --name "Project A" --switch

# Añadir tareas
hermes kanban create "Implementar flujo OAuth" \
  --priority 1 \
  --body "Añadir OAuth 2.0 con soporte PKCE al servicio de autenticación"

hermes kanban create "Escribir tests de integración" \
  --priority 2 \
  --body "Cobertura de tests para todos los endpoints de autenticación"

# Listar todas las tareas
hermes kanban list

# Ver estadísticas del tablero
hermes kanban stats

Cómo funciona la maquinaria de durabilidad:

Cuando un worker toma una tarea, comienza a enviar heartbeats. Si los heartbeats se detienen (crash, pérdida de red, OOM), otro worker reclama la tarea tras un timeout configurable. La detección de zombies identifica workers que parecen vivos pero no están progresando — se marcan como muertos y sus tareas se redistribuyen. Si una tarea falla N veces seguidas, el presupuesto de reintentos la envía a una vía de revisión humana en lugar de iterar infinitamente. Los workers que salen sin completar su tarea actual se bloquean automáticamente para evitar el abandono silencioso.

La barrera de alucinaciones es lo que hace que esto sea calidad producción, no una demo. Cuando un worker afirma haber completado una tarea, el sistema verifica la afirmación antes de aceptarla — comprobando que haya evidencia de trabajo realmente realizado, no solo declarado.

# hermes.config.yaml — perfil de worker kanban
kanban:
  board: project-a
  worker:
    max_spawn: 5              # hasta 5 workers concurrentes
    heartbeat_interval: 30s
    reclaim_timeout: 120s     # cuánto tarda en reclamarse una tarea inactiva
    max_retries: 3            # presupuesto de reintentos por defecto por tarea
    auto_block_on_exit: true  # bloquear tareas incompletas al salir

También puedes sobrescribir los reintentos por tarea para tareas que necesiten más (o menos) intentos:

hermes kanban create "Migración de datos frágil" --max-retries 1
hermes kanban create "Trabajo de búsqueda por fuerza bruta" --max-retries 10

Bajo el capó, el sistema Kanban incluye:

  • Tableros multi-proyecto — una instalación de Hermes, muchos kanbans independientes
  • Escrituras de estado atómicas — sin corrupción parcial del tablero ante crashes
  • Notificaciones de canal principal por plataforma — recibe notificaciones en Telegram, Discord o Slack cuando las tareas cambien de estado
  • Un motor de diagnóstico genérico para señales de socorro de tareas — los workers pueden indicar “estoy atascado, este es el motivo”
  • Integración con el dashboard — vista del tablero en tiempo real, creación de tareas en línea, entradas de workspace y ruta

2. /goal — El Agente No Olvida lo que le Pediste

El bucle Ralph, ahora un primitivo de primera clase. /goal fija al agente en un objetivo y lo mantiene ahí a través de los turnos. Si el usuario intenta desviar la conversación, el agente reconoce el desvío y vuelve al objetivo. Si una herramienta falla, encuentra otro camino. Si la sesión dura horas, el objetivo permanece fijado.

# Establecer un objetivo persistente
/goal "Investiga los 5 mejores CRM, compara sus precios y resume la mejor opción para una startup de 50 personas"

# El agente permanece fijado en esto a través de los turnos.
# Puedes hacer preguntas no relacionadas — responderá y luego retomará el objetivo.

El sistema /goal utiliza un modelo juez para evaluar si el objetivo se ha cumplido. El juez se ejecuta después de cada turno, evaluando el progreso respecto al objetivo declarado. El agente puede tomar desvíos (tareas secundarias, aclaraciones, fallos de herramientas) pero no puede abandonar permanentemente el objetivo hasta que el juez lo declare completado.

# Verificar el estado del objetivo en cualquier momento
/goal status

# Pausar y reanudar
/goal pause
/goal resume

# Limpiar y establecer uno nuevo
/goal clear

/goal se empareja con /subgoal (previsto para v0.14.0) para permitir añadir criterios de éxito sobre la marcha. Juntos se aproximan a lo que hace un plan de proyecto tradicional — un objetivo más refinamientos según avanzas.

3. Checkpoints v2 — Persistencia de Estado Reescrita

El antiguo sistema de checkpoints acumulaba repositorios sombra huérfanos, no tenía poda real y crecía sin límites. Checkpoints v2 es una reescritura completa:

  • Arquitectura de almacén único — sin estado disperso entre directorios
  • Poda real — los checkpoints antiguos se eliminan realmente, con retención configurable
  • Barandillas de disco — rechaza hacer checkpoint cuando el disco está críticamente bajo
  • Sin repositorios huérfanos — cada sombra git tiene un ciclo de vida rastreado

Combinado con la nueva funcionalidad de auto-reanudación del gateway, el agente ahora sobrevive a los reinicios de forma transparente. ¿El gateway se reinicia a mitad de agente? La conversación se reanuda. ¿/update reinicia el proceso? Vuelves donde lo dejaste. ¿Se recargan los archivos fuente? La sesión continúa.

4. Oleada de Seguridad — 8 Cierres P0

Esta es la versión más reforzada en seguridad de la historia de Hermes. Ocho vulnerabilidades críticas cerradas en una sola versión:

# Corrección Severidad Qué cambió
1 Redacción de datos sensibles ACTIVADA por defecto P0 La salida del agente redacta contenido sensible automáticamente — no necesitas activarlo, ya lo está
2 Listas de roles permitidos de Discord con ámbito por servidor CVSS 8.1 Antes, los roles de un servidor podían autorizar acceso en otro (bypass de DM entre servidores)
3 WhatsApp rechaza a desconocidos P0 Nuevas conexiones de WhatsApp bloqueadas a menos que estén explícitamente en la lista blanca; nunca responde en auto-chat
4 TOCTOU de MCP OAuth cerrado P0 Ventana de tiempo de verificación a tiempo de uso cerrada al guardar credenciales OAuth
5 TOCTOU de auth.json cerrado P0 Escritores de credenciales reforzados contra condiciones de carrera
6 Barrera SSRF de metadatos cloud del navegador P0 El enrutamiento híbrido fuerza el bloqueo de endpoints de metadatos cloud incluso en backends CDP no locales
7 Análisis de inyección de prompts en cron P0 El contenido de habilidades ensambladas se analiza contra inyección de prompts antes de la ejecución cron
8 Redacción en hermes debug share P0 El contenido de logs se redacta en el momento de subida, no después

Más refuerzos adicionales:

  • .env, auth.json y state.db restaurados con permisos 0600 — solo lectura/escritura del propietario
  • Integridad SRI para scripts de plugins del dashboard
  • Servidor de nodo Meet vinculado solo a localhost, archivo de token restringido a lectura del propietario
  • Objetivo de escritura sensible ampliado para cubrir archivos RC de shell y archivos de credenciales
  • Modo YOLO reforzado contra análisis de cadenas booleanas entrecomilladas
  • OSV-Scanner CI + Dependabot para monitoreo de vulnerabilidades en dependencias

5. Google Chat — La Vigésima Plataforma de Mensajería

Hermes ahora soporta 20 plataformas de mensajería de forma nativa, con Google Chat como la incorporación más reciente. La lista completa:

Telegram, Discord, Slack, WhatsApp, Signal, DingTalk, SMS (Twilio), Mattermost, Matrix, Webhook, Email (IMAP/SMTP), Home Assistant, Feishu/Lark, WeCom, Weixin, BlueBubbles (iMessage), QQBot, Yuanbao, Microsoft Teams, Google Chat.

Las 20 plataformas funcionan desde un solo proceso gateway con gestión de sesiones unificada, manejo de reinicios y enrutamiento de hilos. La arquitectura del gateway ahora incluye hooks genéricos de plugin de plataformaenv_enablement_fn y cron_deliver_env_var — para que los adaptadores de terceros se integren sin tocar el núcleo. IRC y Teams ya han sido migrados a esta superficie.

Nuevas capacidades multiplataforma en esta versión:

  • allowed_channels / allowed_chats / allowed_rooms configurable en Slack, Telegram, Mattermost, Matrix y DingTalk — restringe con qué canales puede interactuar el agente
  • Flag gateway_restart_notification por plataforma — controla si cada plataforma recibe un mensaje “he vuelto” tras el reinicio
  • Configuración busy_ack_enabled — suprime los mensajes de confirmación “estoy trabajando en ello”
  • Eliminación automática de avisos del sistema de comandos slash tras TTL
  • Directiva [[as_document]] — las habilidades pueden forzar al gateway a entregar la salida como documento en plataformas que lo soporten

6. Los Proveedores se Convierten en una Superficie Conectable

Los proveedores de inferencia ya no están hardcodeados en el núcleo. Una nueva clase abstracta ProviderProfile y el directorio plugins/model-providers/ los convierten en una superficie de plugin de primera clase:

# plugins/model-providers/my_provider.py
from hermes.abc import ProviderProfile

class MyProvider(ProviderProfile):
    name = "my-custom-provider"
    display_name = "My Custom Provider"

    def list_models(self) -> list[ModelInfo]:
        ...
    
    def chat_completion(self, request: ChatRequest) -> ChatResponse:
        ...

Coloca los plugins de proveedor en el directorio y aparecerán en el selector de modelo junto a OpenAI, Anthropic y el conjunto integrado. Sin necesidad de modificar el código del núcleo.

Nuevos modelos añadidos en esta versión:

Modelo Proveedor Notas
deepseek/deepseek-v4-pro OpenRouter + Nous Portal Último buque insignia de DeepSeek
x-ai/grok-4.3 OpenRouter + Nous Portal Lo más reciente de xAI
openrouter/owl-alpha OpenRouter Nivel gratuito
tencent/hy3-preview OpenRouter Ruta de pago
Arcee Trinity Large Thinking OpenRouter Sobrescrituras de temperatura + compresión

La caché de respuestas de OpenRouter ahora está soportada para modelos que la expongan — reduce costes en contexto repetido.

Nous OAuth ahora persiste entre perfiles a través de un almacén de tokens compartido: inicia sesión una vez y cada perfil hereda la sesión. Sin necesidad de reautenticarse para cada perfil.

7. Internacionalización — 7 Idiomas

Hermes ahora habla chino, japonés, alemán, español, francés, ucraniano y turco — además de inglés. Los mensajes estáticos del gateway (texto de ayuda de CLI, estado del agente, mensajes de error) están completamente traducidos. El sitio de documentación incorpora el idioma chino (zh-Hans).

# hermes.config.yaml
display:
  language: es  # o zh, ja, de, fr, uk, tr

8. Video y Voz — Ver y Hablar

video_analyze proporciona a Hermes comprensión nativa de video en Gemini y modelos multimodales compatibles:

# Analizar un video desde un archivo
hermes run "Mira meeting-recording.mp4 y resume las decisiones tomadas"

# Desde una URL
hermes run "Analiza https://example.com/demo.mp4 — ¿qué flujo de trabajo se muestra?"

xAI Custom Voices llega como proveedor TTS con soporte de clonación de voz. Graba una muestra de voz y Hermes responderá con tu voz — o cualquier voz que proporciones.

9. Delta Linting — El Agente Revisa su Propio Código

Después de cada operación write_file o patch, Hermes ahora ejecuta linters en proceso para Python, JSON, YAML y TOML. Los errores de sintaxis aparecen inmediatamente en lugar de propagarse:

WRITE src/auth.py
  ✓ Sintaxis OK (Python 3.12)
  ✓ Verificación de imports superada

WRITE config.json
  ✗ Error de sintaxis: Token inesperado en línea 14, columna 3

Se acabó descubrir sintaxis rota diez turnos después cuando intentas ejecutar el código.


Nuevas Herramientas y Comandos Integrados

Herramienta / Comando Descripción Uso
/goal Seguimiento persistente de objetivos entre turnos (bucle Ralph) /goal "Investiga X y resume"
/goal status Verificar el progreso del objetivo actual /goal status
/goal pause / /goal resume Pausar o reanudar la persecución del objetivo /goal pause
/goal clear Limpiar el objetivo actual /goal clear
video_analyze Comprensión nativa de video en modelos multimodales video_analyze ruta/al/video.mp4
hermes curator archive Archivar habilidades curadas hermes curator archive
hermes curator prune Podar entradas antiguas/consolidadas del curador hermes curator prune
hermes curator list-archived Listar todas las entradas archivadas hermes curator list-archived
[[as_document]] Directiva de habilidad — entrega la salida como documento Añadir [[as_document]] en el frontmatter de la habilidad
transform_llm_output Hook de plugin — reformar/filtrar la salida del LLM Implementar en el plugin
X-Hermes-Session-Key Cabecera API para ámbito estable de memoria de sesión Pasar mediante cabecera HTTP
Modo cron no_agent Vigilante solo scripts — ejecutar scripts sin un agente Establecer no_agent: true en la configuración del trabajo cron
Control de caché OpenRouter Caché explícita para modelos compatibles Mediante cache: true en la configuración del proveedor

Mejoras

Agente Principal y Conversación

  • Directiva de habilidad [[as_document]] — las habilidades pueden forzar al gateway a entregar la salida como documento descargable en lugar de texto en línea
  • Hook de plugin transform_llm_output — nuevo hook de ciclo de vida que permite a los plugins reformar o filtrar la salida del LLM antes de que llegue a la conversación; útil para reductores de ventana de contexto y filtros de contenido
  • Conteo de compresión de contexto mostrado en la barra de estado (CLI + TUI) — ver cuántas veces se ha comprimido el contexto
  • Caché aislada de get_tool_definitions — deduplica la inyección LCM y evita consultas redundantes de esquemas de herramientas
  • Barandillas de bucle de llamadas a herramientas con advertencia previa — el agente advierte antes de entrar en bucles infinitos de herramientas en lugar de girar en silencio
  • Romper bucles de respuesta vacía permanente — las colas de herramientas huérfanas ya no causan ciclos infinitos de respuesta vacía
  • ContextVars propagadas a hilos de trabajo de herramientas concurrentes
  • Mostrar resúmenes de revisión de automejora en CLI, TUI y gateway
  • Las estimaciones de tokens ahora incluyen prompt del sistema + esquemas de herramientas para disparadores de compresión precisos

Listas de Permitidos por Plataforma

  • allowed_channels (Slack), allowed_chats (Telegram), allowed_rooms (Mattermost, Matrix) y allowed_robots (DingTalk) — restringe la interacción del agente a canales específicos
  • gateway_restart_notification por plataforma — control granular sobre los mensajes posteriores al reinicio
  • busy_ack_enabled — suprime los mensajes de confirmación “estoy trabajando en ello”
  • Limpieza automática de burbujas de progreso temporales

Durabilidad de Sesión

  • El gateway reanuda automáticamente sesiones interrumpidas tras el reinicio — sin conversaciones perdidas
  • Avisos de actualización pendientes preservados entre reinicios
  • Destinos de hilos del canal principal preservados entre notificaciones de reinicio
  • Enrutamiento de hilos preservado desde fuentes de sesión en vivo en caché
  • Metadatos del asistente preservados al ramificar sesiones
  • Tipo de documento preservado al fusionar eventos en cola

Curator (de v0.12, madurado en v0.13)

  • hermes curator archive — archivar entradas curadas para almacenamiento a largo plazo
  • hermes curator prune — limpiar entradas antiguas, consolidadas o huérfanas
  • hermes curator list-archived — ver entradas archivadas
  • hermes curator run manual síncrono — ver resultados inmediatamente sin polling
  • Protegido contra la sobrescritura de habilidades empaquetadas y del hub

MCP (Model Context Protocol)

  • Transporte SSE con reenvío OAuth y sse_read_timeout aumentado
  • Reintentos de transporte por tubería obsoleta como sesión expirada (reconexión automática)
  • Resultados de herramientas de imagen se muestran como etiquetas MEDIA en lugar de descartarse silenciosamente
  • Keepalive periódico en esperas de ciclo de vida prolongadas
  • Reconexión automática en sesiones terminadas
  • Coerción defensiva de argumentos numéricos de herramientas en mcp_serve
  • Stubs de utilidad condicionados a capacidades anunciadas por el servidor

Dashboard de Kanban

  • Entradas de tipo de workspace + ruta en la creación de tareas en línea
  • Interruptores de notificación por plataforma para alertas del canal principal
  • Área de texto multilínea para títulos de tareas
  • Los tableros se filtran por tenant seleccionado
  • El pin del tablero del dashboard es autoritativo sobre el archivo actual del servidor

QQBot

  • Teclados de aprobación nativos — botones Aprobar/Denegar en línea para autorización de herramientas
  • Carga fragmentada para archivos grandes
  • Soporte de adjuntos citados

TUI y CLI

  • 100 nuevos consejos de inicio de CLI cubriendo cron, kanban, curator, plugins y flags menos conocidos
  • Selector /model coincide con hermes model con autenticación en línea para todos los proveedores
  • Secciones colapsables en el banner de inicio (habilidades, prompt del sistema, MCP)
  • /new acepta nombre de sesión opcional: /new mi-sesion-refactor
  • hermes update --yes/-y para omitir los prompts interactivos

Dashboard

  • Página de plugins — gestionar, activar/desactivar y verificar el estado de autenticación de todos los plugins
  • Página de gestión de perfiles — crear, editar y eliminar perfiles desde la interfaz web
  • Ordenación interactiva de columnas en tablas de analíticas
  • Tema default-large con tamaño de fuente base de 18px
  • Soporte de proxy inverso mediante cabecera X-Forwarded-Prefix
  • Lanzar como proceso lateral mediante HERMES_DASHBOARD=1 en Docker

Herramientas Web

  • SearXNG se incluye como backend de búsqueda nativo
  • Selección de backend por capacidad — elige diferentes backends para búsqueda, extracción y navegación

ACP (VS Code / Zed / JetBrains)

  • Comando slash /steer — dirigir al agente en vuelo
  • Comando slash /queue — encolar tareas de seguimiento
  • Persistencia atómica de sesión mediante replace_messages
  • Metadatos de razonamiento del asistente preservados en la persistencia de sesión
  • Traducción de cwd de Windows para sesiones WSL

Seguridad y Fiabilidad

Correcciones de Errores Críticos

  • Crash de CLI al iniciar — Invalid key 'c-S-c' (P0): prompt_toolkit no soporta el modificador Shift; la combinación de teclas fue eliminada
  • Auditoría de fuga de fd CLOSE_WAIT: keepalive de httpx + fuga aiohttp de WhatsApp + higiene de Feishu — todo corregido
  • El gateway crea AIAgent con clave API de OpenRouter vacía cuando falta OPENROUTER_API_KEY — los proveedores de respaldo ahora se respetan correctamente
  • Revisión en segundo plano + curator protegidos contra la sobrescritura de habilidades empaquetadas/del hub
  • Sesiones fantasma de continuación de compresión en TUI con metadatos incompletos — corregido
  • hermes mcp add lanza el chat silenciosamente en lugar de registrar el servidor MCP — corregido
  • Propagación de entorno de ejecución del agente de revisión en segundo plano — proveedor/modelo/credenciales ahora heredan realmente del padre
  • Rutas de host de documentos entrantes traducidas a rutas de contenedor para el backend Docker
  • Condición de carrera en el gateway Matrix entre redacción automática y entrega de mensajes con modelos de alta velocidad — corregido
  • /new durante sesión activa del agente nunca envía respuesta en Telegram — corregido
  • Config.yaml prevalece sobre .env para configuraciones de agente/pantalla/zona horaria
  • SHA de HEAD de Git usado para verificación de código obsoleto, no mtimes de archivos
  • Paradas del servicio Plan manejadas sin errores falsos fatales
  • Reinicio automático de archivos fuente cuando los archivos cambian bajo el gateway

Refuerzo de WhatsApp

Además de la corrección P0 de rechazo a desconocidos:

  • Cargar canal principal desde sobrescrituras de variables de entorno
  • Nunca responder en auto-chat (previene la amplificación de bucles)

Fiabilidad de Plataforma

  • Gateway reinicia fallos antes de cada reinicio de respaldo — previene estados varados del gateway
  • Marcadores de reinicio atómicos + desplazamiento de bloqueo de tiempo de ejecución en Windows
  • Higiene de apagado y reinicio — timeout de drenaje, falso fatal, registro de éxito
  • PIDs ancestros excluidos del análisis de procesos del gateway
  • Despacho de alias de comandos rápidos movido antes de los integrados (previene sobrescritura accidental)
  • Otros perfiles mostrados en gateway status para evitar confusiones

Seguridad de Archivos

  • Restaurar .env / auth.json / state.db con permisos 0600
  • Servidor de nodo Meet vinculado solo a localhost
  • Archivo de token restringido a lectura del propietario
  • Objetivo de escritura sensible ampliado a archivos RC de shell y archivos de credenciales

Actualización

hermes update

Para nuevas instalaciones, visita la guía de instalación.


Changelog completo en GitHub

← Hermes Agent Changelog