Hola, soy Lena. Tenía una pregunta que seguía posponiendo sobre la memoria del Agente Hermes. Cada vez que alguien la describía como "el agente que aprende", me detenía por un momento. ¿Aprende qué, exactamente? ¿Y recuerda dónde estaba? Volví a los documentos varias veces antes de sentir que tenía siquiera media respuesta. Esto es lo que noté.
Escribo esto no como alguien que construyó Hermes, sino como alguien que observó el sistema lo suficiente para ver dónde su memoria hace lo que la gente espera, y dónde silenciosamente no lo hace. La brecha entre estos dos puntos es más grande de lo que sugiere el lenguaje de marketing, y vale la pena ser honesto al respecto.
Lo que la memoria de Hermes realmente almacena
Lo primero que tuve que desaprender: Hermes no tiene un único sistema de memoria. Tiene varios, y no hacen el mismo trabajo. La mayor parte de la confusión que he visto proviene de tratarlos como una sola cosa.
MEMORY.md, USER.md y capturas de sesión congeladas
La capa incorporada son dos archivos markdown que viven en ~/.hermes/memories/. Según la documentación oficial de la memoria de Hermes, MEMORY.md está limitada a alrededor de 2,200 caracteres (aproximadamente 800 tokens) y contiene hechos del entorno, convenciones del proyecto y lecciones que el agente considera que vale la pena guardar. USER.md es más pequeño — unos 1,375 caracteres, alrededor de 500 tokens — y contiene preferencias sobre ti.
Ambos se cargan al inicio de la sesión como una instantánea congelada inyectada en el sistema de prompt. Esa palabra — congelada — es la parte que seguía pasando por alto en la primera lectura. Las escrituras a mitad de sesión se guardan en el disco inmediatamente, pero la instantánea en el prompt activo no se actualiza hasta que comienza la siguiente sesión.
Me quedé con esto un momento. Explica un comportamiento que había observado y no podía identificar: el agente guarda algo, dice que lo guardó, y luego actúa como si no lo tuviera del todo aún. Eso no es un error — es el modelo de instantánea. Una vez que entendí eso, algunas pequeñas inconsistencias dejaron de sentirse inconsistentes.
Lo que "persistente" significa en la práctica
"Persistente" aquí significa realizar un trabajo real, pero un tipo de trabajo más limitado de lo que sugiere la palabra de marketing. Los archivos sobreviven entre sesiones. Son curados por el agente, no grabados por el agente: el LLM decide qué vale la pena guardar. Y están limitados a propósito: un prompt de sistema pequeño y estable es lo que hace que la caché de prefijos sea eficiente, y la caché de prefijos es parte de la razón por la que el agente se siente receptivo.
Entonces, cuando alguien dice que Hermes "recuerda", lo que normalmente quiere decir, más precisamente, es que se recarga un pequeño cuaderno deliberadamente limitado al inicio de cada sesión, y existe un archivo separado y buscable de conversaciones pasadas junto a él. Dos cosas diferentes, con dos patrones de acceso diferentes.
En qué es buena la memoria de Hermes
Quiero ser justo aquí. El sistema incorporado es realmente útil — simplemente no es lo que la mayoría de la gente imagina al principio.
Preferencias, hechos del entorno, contexto recurrente
El punto ideal son hechos pequeños, duraderos y frecuentemente relevantes. Cosas como:
- "El proyecto del usuario es un servicio web en Rust usando Axum + SQLx"
- "El usuario prefiere respuestas concisas, no le gustan las explicaciones extensas"
- "Esta máquina ejecuta Ubuntu 22.04, tiene Docker instalado"
Ese tipo de contexto pertenece al prompt del sistema cada vez, y Hermes lo maneja bien. El agente guarda automáticamente cuando juzga que algo vale la pena conservar, y consolida cuando las entradas se acumulan — fusionando, por ejemplo, tres líneas de “el proyecto usa X” en una sola descripción del proyecto. En sesiones cortas o estrechamente enfocadas, puede que no veas nada escrito en absoluto — eso es una característica, no un fallo. La mayoría de las tareas cortas no deberían contaminar tu cuaderno de memoria a largo plazo.
También hay un paso de escaneo de seguridad en las entradas de memoria para detectar intentos de inyección de prompts, lo cual me pareció interesante al notar en el código fuente de Hermes en GitHub. Es un detalle pequeño, pero del tipo de detalle que te indica que alguien pensó en lo que podría salir mal cuando un LLM está a cargo de escribir su propia memoria.
Lo que la memoria de Hermes no resuelve
Aquí fue donde tuve que ralentizar el ritmo. Muchas expectativas se rompen aquí, y no creo que sea porque el sistema esté haciendo algo mal — creo que es porque la palabra memoria tiene demasiadas connotaciones.
Memoria limitada, reinicios de sesión, sin validación automática de comportamiento aprendido
Algunas cosas merecen honestidad:
La memoria es limitada. ~2,200 caracteres para el entorno, ~1,375 para el usuario. Cuando se alcanza el límite, el agente tiene que consolidar o eliminar entradas antes de agregar nuevas. Los detalles matizados pueden perderse en ese proceso. Esta es la sorpresa más común — la gente asume que la memoria crece; no lo hace. Un pequeño presupuesto fijo es el diseño.
Las escrituras a mitad de sesión no aparecen en la misma sesión. El modelo de instantáneas congeladas significa que el agente actúa sobre lo que cargó al inicio, incluso después de escribir nuevas entradas. Reinicia la sesión y están en contexto. Si necesitas que el agente actúe sobre algo que acaba de escribir, regítalo explícitamente en la conversación — no esperes que aparezca automáticamente.
El agente tiene que decidir guardar. La memoria incorporada se basa en el juicio. No hay transcripción automática. Un nudge_interval configurable periódicamente pide al agente que reflexione, pero en sesiones cortas puede que realmente veas archivos vacíos. Quizá estoy leyendo demasiado esto, pero creo que es la parte menos comunicada del diseño.
No hay validación automática. Si el agente guarda una "lección aprendida" y la lección era realmente errónea, nada lo señala. El hecho permanece en la instantánea hasta que algo lo reemplaza. La memoria no es lo mismo que el conocimiento verificado — es simplemente lo que un modelo pensó, en algún momento, que valía la pena conservar.
La memoria no es lo mismo que la capacidad reutilizable
Esta es la parte sobre la que tuve que releer mis propias notas. Hermes también tiene skills — documentos de markdown en ~/.hermes/skills/ que capturan procedimientos, herramientas usadas y pasos que funcionaron. Las habilidades se crean de forma reactiva tras tareas complejas (normalmente 5+ llamadas a herramientas) y se cargan bajo demanda usando divulgación progresiva: el Nivel 0 es solo una lista de nombres de habilidades y breves descripciones, el Nivel 1 carga todo el contenido de una habilidad específica cuando es necesario.
La memoria y las habilidades son cosas diferentes, aunque ambas parecen archivos de markdown.**
La memoria es "lo que prefiere este usuario y en qué entorno estamos." Las habilidades son "cómo realizar este tipo de tarea." Una preferencia no le dice al agente cómo depurar un flujo OAuth; una habilidad podría hacerlo. Confundir ambas es, creo, la mayor fuente de confusión cuando la gente dice "el agente no está aprendiendo." Puede que esté aprendiendo, solo que no en la capa que están comprobando.
Recuperación entre sesiones, búsqueda de sesión y donde la gente se confunde
Más allá de MEMORY.md y USER.md, Hermes almacena todas las sesiones de CLI y mensajería en SQLite a ~/.hermes/state.db con búsqueda de texto completo FTS5. El agente puede llamar a una herramienta session_search para recuperar conversaciones pasadas, que luego se resumen usando un pequeño modelo.
Dos detalles que merece la pena conocer.
FTS5 se basa en palabras clave. Es un índice potente y bien diseñado: la documentación de SQLite FTS5 describe cómo tokeniza el contenido y cómo hace coincidir esos tokens, pero hace coincidir tokens exactos, no significados. Si en una sesión anterior se dijo "el microservicio de autenticación usa Redis", preguntar "¿qué te dije sobre el servicio de autenticación?" puede no recuperarlo. El agente tiene que saber llamar a session_search, y usar los términos de consulta correctos. No hay resolución de entidades, ni seguimiento de relaciones, ni reformulación semántica.
La búsqueda en sesión no es automática. Es una herramienta que el agente decide llamar. Si el agente no piensa llamarla antes de responder, no se consulta la conversación pasada. Esa es una brecha de comportamiento, no de almacenamiento: los datos están allí, simplemente no se recuperaron.
Aquí es donde veo que la gente se frustra más. Vieron que el agente discutió algo hace tres semanas y suponen que surgirá de manera natural. A veces sucede. A menudo no, porque nada activó la búsqueda. Vectorize tiene un desglose útil de estos modos de fallos en su artículo de resolución de problemas sobre la memoria Hermes al que volví dos veces.
Consejos prácticos de diseño para flujos de trabajo de Hermes a largo plazo
Me siento reacio a dar consejos: soy un solo punto de datos. Pero algunas cosas me llamaron la atención al observar esto por un tiempo.
Trata la memoria incorporada como un cuaderno pequeño, no como una base de datos. Todo lo que necesita escalar con la longitud de la conversación no pertenece allí. Úsala para hechos estables que deben estar siempre en contexto y acepta que los detalles se comprimirán cuando se agote el presupuesto.
Sé explícito cuando algo importa. "Recuerda que mi base de datos de producción funciona en el puerto 5433" funciona mejor que esperar que el agente lo señale por sí mismo. La memoria incorporada está curada, no grabada, y el juicio del agente sobre lo que importa no siempre coincidirá con el tuyo.
Acude a un proveedor externo cuando necesites recordatorio estructurado. La página de proveedores de memoria Hermes lista ocho opciones conectables: Honcho, OpenViking, Mem0, Hindsight, Holographic, RetainDB, ByteRover y Supermemory. Se sitúan aditivamente sobre MEMORY.md y USER.md, que siguen funcionando sin cambios. La capa incorporada no desaparece; la externa completa lo que no puede hacer.
Para la modelación de usuarios a través de sesiones específicamente, Honcho adopta un enfoque basado en pares: tanto el usuario como la IA se modelan como pares, cada uno con su propia representación que se actualiza a partir de observaciones a lo largo del tiempo. Es una filosofía de diseño diferente a la de una simple base de datos de hechos, y todavía estoy determinando en qué situaciones lo utilizaría en lugar de un almacén vectorial más simple. Pero el razonamiento dialéctico de múltiples pasadas es interesante, especialmente la distinción entre inicio en frío y sesión caliente.
No confundas memoria con capacidad. Si quieres que el agente haga algo mejor la próxima vez, probablemente quieras una habilidad, no una entrada de memoria. Y si quieres que sea correcto la próxima vez, ni la memoria ni las habilidades lo validarán por ti; tú debes hacerlo. Esa es la parte a la que siempre regreso.
Preguntas frecuentes
¿La memoria del agente Hermes se vuelve más inteligente con el tiempo?
Los archivos acumulan hechos. Si eso constituye "más inteligente" depende de lo que quieras decir. El agente utiliza lo que está en la instantánea, pero no razona sobre el historial de ediciones de memoria a menos que hayas añadido un proveedor externo que lo haga. Yo tendría cuidado con la palabra aprender aquí.
¿Por qué está vacío MEMORY.md después de varias sesiones?
Lo más probable es que el agente nunca haya considerado algo digno de guardar: las sesiones cortas o enfocadas en tareas a menudo no producen escrituras. Revisa tu configuración de nudge_interval, o recurre a un proveedor externo si quieres capturar automáticamente sin depender del juicio del agente.
¿Puedo simplemente hacer que el límite sea mayor?
Puedes hacerlo. Los límites de caracteres son configurables en ~/.hermes/config.yaml. Pero el tope existe por una razón: instantánea más grande significa menos espacio para la conversación real y beneficios más débiles de la caché de prefijo. Más grande no es gratis.
¿Qué ocurre con la memoria a mitad de sesión?
Las escrituras se guardan en disco. El prompt activo no se actualiza hasta la siguiente sesión. Esto es esperado, y tratar de basarse en actualizaciones de memoria dentro de la sesión te costará tiempo de depuración.
¿Es la búsqueda en sesión lo mismo que la memoria?
No. La memoria es la instantánea siempre cargada. La búsqueda en sesión es una búsqueda por palabras clave bajo demanda sobre conversaciones pasadas. Mecanismos diferentes, latencia diferente, modos de fallo diferentes.
No estoy listo para cerrar este tema todavía. Hay mucho en la pila de memoria del agente Hermes que quiero seguir observando, especialmente cómo se comportan los proveedores externos una vez que un perfil tiene meses de datos. Por ahora, aquí se sitúa mi entendimiento.
Publicaciones anteriores:
- 👉 Comprende cómo la memoria de Hermes se compara con las arquitecturas de memoria más amplias de los agentes
- 👉 Explora por qué los agentes tienen dificultades para aprender de manera consistente a lo largo de las sesiones
- 👉 Aprende la verdadera diferencia entre las habilidades de los agentes y las capacidades reutilizables
- 👉 Ve cómo las habilidades autoevolutivas mejoran el rendimiento a largo plazo de los agentes
- 👉 Comprende cómo los activos de los agentes difieren del simple almacenamiento de memoria




