Sistema de Memoria del Agente Hermes: Cómo Funciona Realmente la Memoria Persistente de la IA

La memoria es la diferencia entre una herramienta y un compañero.

Índice

Ya conoces el procedimiento. Abres un chat con un agente de IA, explicas tu proyecto, compartes tus preferencias, haces algo de trabajo y cierras la pestaña. Regresas la semana siguiente y es como hablar con un extraño: todo el contexto ha desaparecido, cada preferencia ha sido olvidada y el proyecto debe explicarse desde cero.

Esto no es un error. Es así como funcionan los Modelos de Lenguaje Grande por diseño. Son sin estado: cada solicitud es independiente, cada respuesta se genera a partir del prompt que envías en ese momento, sin memoria, sin historial y sin continuidad más allá de los tokens en la ventana de contexto actual.

Para interacciones de un solo turno, está bien. Haces una pregunta, obtienes una respuesta y pasas a la siguiente. Pero para los agentes —sistemas que se supone que hacen cosas a través de las sesiones, aprenden de los errores y evolucionan contigo— la ausencia de estado es un límite arquitectónico difícil. Es uno de los problemas centrales sin resolver en los sistemas de IA autoalojados.

3d electro tetris como sistema de memoria para agente de ia

La industria ha intentado resolver esto. LangChain añadió módulos de memoria. OpenAI introdució asistentes con hilos de conversación. Marcos de trabajo como Letta, Zep y Cognee construyeron arquitecturas enteras en torno a la memoria persistente. Databricks publicó sobre la “escalabilidad de la memoria”, la idea de que el rendimiento del agente mejora con la experiencia acumulada. Desde 2024, han surgido conjuntos de pruebas dedicados, encuestas sobre memoria episódica y un ecosistema rápidamente creciente de herramientas para abordar lo que se reconoce cada vez más como uno de los problemas centrales sin resolver en la IA agéntica.

La mayoría de estos enfoques comparten un problema común: tratan la memoria como un pensamiento tardío: una base de datos que consultas, una ventana de contexto que rellenas, un sistema de recuperación que añade latencia y ruido en lugar de claridad.

Hermes Agent adopta un enfoque fundamentalmente diferente. La memoria no es algo que el agente recupera cuando es necesario. Es algo que el agente es en todo momento: integrado en el prompt del sistema, curado, delimitado y siempre activo. Es lo suficientemente pequeño para ser rápido, lo suficientemente estructurado para ser útil y lo suficientemente disciplinado para saber qué olvidar.

Este artículo explica exactamente cómo funciona: la capa específica de Hermes dentro del modelo de marco cruzado en Sistemas de Memoria en Asistentes de IA y la pila más amplia en Arquitectura de Asistentes de IA. Para comandos de activación e inspección (hermes memory, hermes dump, registro de cola), combínalo con la Hoja de trucos de la CLI de Hermes Agent. Para el lado complementario del “conocimiento a largo plazo” de Hermes: procedimientos reutilizables en SKILL.md en lugar de archivos de memoria curados, consulta Autoría de Habilidades de Hermes Agent — Estructura y Mejores Prácticas de SKILL.md.


Parte 1: El Problema de la Memoria del Agente de IA

Por qué “Solo Añadir Contexto” No Escala para Agentes

La solución obvia a la IA sin estado es añadir contexto. Adjuntar la conversación anterior. Incluir la documentación del proyecto. Enviar todo el historial.

Por un tiempo, eso funciona. Tienes una ventana de contexto de 128K. Puedes meter mucho texto ahí.

Pero el contexto no es memoria — hay una diferencia real e importante entre ellos. El contexto es todo lo que se te muestra en este momento; la memoria es lo que mantienes activamente y llevas contigo.

El contexto no tiene curación. Es un volcado: a medida que crece, el modelo tiene que procesar miles de tokens de historial irrelevante para encontrar el único hecho que necesita. Eso cuesta tokens y dinero, complica la latencia y eventualmente choca con el límite.

La memoria está curada. Es la destilación de la experiencia en algo compacto y accionable. No crece indefinidamente — se consolida, actualiza y olvida.

La memoria humana funciona de la misma manera. No recuerdas cada conversación que has tenido. Recuerdas las partes que importan: con quién estás hablando, qué les importa, en qué han acordado, lo que has aprendido. El resto se olvida o es buscable cuando lo necesitas.

El Panorama de la Investigación

El espacio de memoria de agentes de IA ha explotado desde 2024, con conjuntos de pruebas dedicados, una literatura de investigación en crecimiento y una brecha de rendimiento medible entre diferentes enfoques arquitectónicos. Así es como están las cosas.

Letta (anteriormente MemGPT) fue uno de los primeros marcos en tratar la memoria persistente como una preocupación de primera clase, alcanzando 21.7K estrellas en GitHub. Utiliza un modelo de tres capas inspirado en un sistema operativo: memoria central (pequeña, siempre en contexto), memoria de recuerdo (historial de conversaciones buscable) y memoria archivada (almacenamiento frío a largo plazo). El insight de que no toda la memoria es igual era correcto. Sin embargo, la implementación requiere que los agentes se ejecuten completamente dentro del runtime de Letta — adoptarlo significa adoptar toda la plataforma, no solo una capa de memoria.

Zep / Graphiti se centra en la memoria conversacional con seguimiento de entidades temporales — los hechos llevan ventanas de validez para que el grafo sepa cuándo algo fue cierto. Es fuerte para chatbots que necesitan grafos de relaciones, menos adecuado para agentes autónomos que rastrean hechos del entorno y convenciones del proyecto.

Cognee está construido para la extracción de conocimiento de documentos y datos estructurados, con más de 30 conectores de ingestión y un backend de grafo de conocimiento. Excelle en el conocimiento institucional y pipelines de RAG pero está menos enfocado en la memoria personal del agente. Consulta autoalojamiento de Cognee con LLM locales para una guía de configuración práctica.

Hindsight hace recuperación basada en grafos de conocimiento con relaciones de entidades y una herramienta de síntesis reflect única que realiza síntesis cruzada de memoria — combinando múltiples memorias en nuevos insights. Está entre los mejores en benchmarks de memoria de agentes y está disponible como proveedor de memoria para Hermes Agent.

Mem0 maneja la extracción de memoria en el lado del servidor mediante análisis de LLM, requiriendo una configuración mínima. El paper de investigación de Mem0, publicado en ECAI 2025 (arXiv:2504.19413), benchmarkó diez enfoques distintos para la memoria de IA y validó el enfoque de extracción selectiva — almacenando hechos discretos, deduplicando y recuperando solo lo relevante. Mem0 ha crecido a aproximadamente 48K estrellas en GitHub y soporta 21 integraciones de marcos. La compensación es la dependencia en la nube y el costo.

La investigación sobre escalabilidad de memoria de Databricks introdujo el concepto de que el rendimiento del agente mejora con la experiencia acumulada. Su arquitectura mantiene prompts del sistema, activos empresariales y memorias episódicas/semánticas con alcance a nivel de organización y usuario, validando la idea de que la calidad de la memoria importa tanto como la capacidad del modelo.

El hilo común en la mayoría de los marcos es que tratan la memoria como un problema de recuperación: almacenarla en algún lugar, consultarla cuando sea necesario, inyectarla en el contexto. Hermes hace lo contrario — la memoria no se recupera bajo demanda, se inyecta al inicio de la sesión y está siempre presente. Siempre activa, siempre disponible, curada lo suficiente para permanecer útil.


Parte 2: Arquitectura

Lee esta parte de arriba a abajo — capas y recuperación/almacenamiento por turno primero, luego qué vive en MEMORY.md y USER.md, luego cómo adjuntar un proveedor externo.

Dos capas

Hermes apila la memoria en dos capas:

  1. IntegradoMEMORY.md y USER.md, respaldados por archivos, siempre activos. Límites duros de 2,200 caracteres (notas del agente) y 1,375 caracteres (perfil del usuario).
  2. Un proveedor externo (opcional) — Honcho, OpenViking, Mem0, Hindsight, Holographic, RetainDB, ByteRover, Supermemory y pares que habilitas mediante configuración. Solo un backend externo se ejecuta a la vez. Añade recuperación y retención junto a los archivos; no los reemplaza.

El modelo mental es aditivo — archivos centrales congelados más como máximo un plugin. Los ganchos de prefetch y sync orquestan la capa externa; los dos archivos permanecen inyectados por separado como parte del prompt del sistema congelado.

Flujo de tiempo de ejecución (prefetch y sync)

La recuperación ocurre antes de que el modelo responda; la persistencia ocurre después del mensaje del asistente. En el gestor de memoria de Hermes Agent esto se mapea a prefetch al entrar y sync al salir. Los nombres a continuación coinciden con la superficie de implementación (MemoryManager, prefetch / sync_turn / queue_prefetch por proveedor).

Mensaje del usuario
    |
    v
MemoryManager.prefetch_all(query)        <-- fase de recuperación
    |
    +-- provider.prefetch(query)        <-- cada proveedor externo busca en su almacén
    |
    v
Contexto inyectado en el turno del LLM
    |
    v
LLM responde (mensaje del asistente)
    |
    v
MemoryManager.sync_all(user, assistant)  <-- fase de almacenamiento
    |
    +-- provider.sync_turn(user, assistant)
    +-- provider.queue_prefetch(user)    <-- búsqueda en segundo plano hacia el siguiente turno

Los archivos integrados MEMORY.md y USER.md no se obtienen a través de prefetch_all — ya son parte del prompt del sistema congelado. Los backends externos se conectan a prefetch_all / sync_all; queue_prefetch permite que un proveedor caliente la recuperación para el siguiente turno sin bloquear la respuesta actual.

Tres caminos hacia la memoria a largo plazo

  1. Herramienta memory integrada. El modelo llama a memory con add, replace o remove cuando las instrucciones dicen que algo debe persistir — hechos duraderos, preferencias, correcciones, notas del entorno. target='user' mantiene USER.md; target='memory' mantiene MEMORY.md. Forma de ejemplo: memory(action='add', target='user', content='…').

  2. Retención pasiva en proveedores externos. Cada turno el marco invoca el camino de sync del proveedor para que la conversación pueda ser segmentada, resumida o extraída sin que el modelo nombre cada hecho. El comportamiento difiere por backend — por ejemplo, Hindsight agrupa turnos y ejecuta retención estructurada con entidades y relaciones; Honcho envía el diálogo a través de su pipeline dialéctico; las pilas estilo Mem0 y Supermemory extraen hechos pasivamente de los turnos.

  3. Herramientas específicas del proveedor. Cuando el plugin las expone, escrituras explícitas como honcho_conclude, hindsight_retain o honcho_profile almacenan slices duraderos bajo demanda.

Recuperación automática versus herramientas del proveedor

La memoria central no necesita una herramienta de lectura — ya está en el prompt. Los backends externos añaden o inyección automática desde prefetch (sin llamada de herramienta de recuperación separada para esa porción de contexto) o herramientas de recuperación explícitas (honcho_search, honcho_reasoning, honcho_context, hindsight_recall, hindsight_reflect y pares) cuando el modelo necesita una consulta más afilada que solo prefetch.

Modos de recuperación (proveedores externos)

Los plugins soportan un modo de recuperación configurable (típicamente recall_mode junto a memory.provider en la configuración) que intercambia tokens por control.

Modo Auto-inyección desde prefetch Herramientas del proveedor disponibles Ajuste típico
context No Sin manos, contexto predecible
tools No El modelo elige cuándo recuperar
hybrid Contexto más rico; mayor uso de tokens

Cuando no se establece un proveedor externo (memory.provider vacío o no establecido), solo se aplican los archivos integrados y la búsqueda de sesión — sin prefetch/sync de un plugin.

Rutas en disco y presupuestos

La memoria integrada de Hermes Agent vive en dos archivos.

  • ~/.hermes/memories/MEMORY.md — Notas personales del agente (2,200 caracteres, ~800 tokens)
  • ~/.hermes/memories/USER.md — Perfil del usuario (1,375 caracteres, ~500 tokens)

Esa es toda la superficie de memoria persistente: dos archivos, menos de 3,600 caracteres en total, menos de 1,300 tokens. Parece deliberadamente pequeño porque lo es — y esa es exactamente la intención del diseño.

MEMORY.md: Las Notas del Agente

Aquí es donde el agente almacena todo lo que aprende sobre su entorno, el proyecto, las herramientas, las convenciones y las lecciones aprendidas. Así es como se ve:

El proyecto del usuario es un microservicio Go en ~/code/gateway usando gRPC + PostgreSQL
Esta máquina ejecuta Ubuntu 22.04, tiene Docker y kubectl instalados
El usuario prefiere snake_case para nombres de variables y evita camelCase

Estos no son registros. Son hechos. Densos, declarativos, cargados de información. Sin marcas de tiempo, sin relleno, sin “el 5 de enero el usuario me pidió que…”

USER.md: El Perfil del Usuario

Aquí es donde el agente almacena todo lo que sabe sobre ti.

El usuario es un desarrollador full-stack cómodo con TypeScript, Go y Python.
El usuario prefiere snake_case para nombres de variables y evita camelCase.
El usuario utiliza principalmente Linux Ubuntu 22.04.
El usuario despliega a AWS usando Terraform.

Identidad, rol, preferencias, habilidades técnicas, estilo de comunicación, preocupaciones menores. Lo que hace que el agente responda de manera diferente a ti que a cualquier otra persona.

El Patrón de Instantánea Congelada

Al inicio de la sesión, ambos archivos se cargan desde el disco e inyectan como un bloque congelado en el prompt del sistema. Así es como se ve:

══════════════════════════════════════════════
MEMORIA (tus notas personales) [7% — 166/2,200 caracteres]
══════════════════════════════════════════════
El proyecto del usuario es un microservicio Go en ~/code/gateway usando gRPC + PostgreSQL
§
Esta máquina ejecuta Ubuntu 22.04, tiene Docker y kubectl instalados
§
El usuario prefiere snake_case para nombres de variables y evita camelCase
§
══════════════════════════════════════════════
PERFIL DE USUARIO (quién es el usuario) [8% — 110/1,375 caracteres]
══════════════════════════════════════════════
El usuario es un desarrollador full-stack cómodo con TypeScript, Go y Python.
§
El usuario prefiere snake_case para nombres de variables y evita camelCase.
§

El formato usa encabezados, porcentajes de uso, recuentos de caracteres y delimitadores § (signo de sección). Las entradas pueden ser multilínea. Está diseñado para ser analizable por el modelo mientras permanece legible para humanos.

¿Por qué congelado? Caché de prefijo. El prompt del sistema es el mismo en cada turno de una sesión. Al mantener la memoria estática después del inicio de la sesión, el modelo puede almacenar en caché el cálculo del prefijo y solo procesar las partes variables — la conversación. Esta es una optimización de rendimiento significativa. No estás re-computando la atención sobre los mismos tokens de memoria en cada turno.

Los cambios realizados durante una sesión persisten en el disco inmediatamente, pero solo aparecen en el prompt del sistema al inicio de la siguiente sesión. Las respuestas de las herramientas siempre muestran el estado en vivo, pero la “mente” del modelo no cambia en medio de la sesión. Esto evita que el modelo persiga su propia cola — actualizando la memoria y luego reaccionando a su propia actualización en la misma conversación.

Límites de Caracteres como Característica

2,200 caracteres. 1,375 caracteres. Estos no son límites arbitrarios. Son restricciones de diseño que fuerzan la curación.

La memoria ilimitada es un pasivo. Fomenta volcar todo, nunca consolidar y eventualmente convertirse en ruido. La memoria delimitada obliga al agente a ser selectivo. ¿Qué es realmente importante? ¿Qué necesitaré de nuevo? ¿Qué se puede comprimir sin perder significado?

Cuando la memoria está llena, el agente no falla en silencio. Obtiene un error con las entradas actuales y el uso, luego sigue un flujo de trabajo:

  1. Leer entradas actuales desde la respuesta de error
  2. Identificar entradas eliminables o consolidables
  3. Usar replace para fusionar entradas relacionadas en versiones más cortas
  4. Añadir la nueva entrada

Así es como la memoria permanece útil. No es una base de datos. Es una colección curada de hechos que importan.

Seguridad: Escaneo de Inyección de Prompt

Cada entrada de memoria se escanea antes de su aceptación. El sistema bloquea intentos de inyección de prompt, exfiltración de credenciales, puertas traseras SSH y caracteres Unicode invisibles.

La memoria también se deduplica. Las entradas duplicadas exactas se rechazan automáticamente. Esto evita que los adversarios intenten inyectar contenido malicioso a través de envíos repetidos.

Proveedores de memoria externa (activación y enlaces)

Más allá de los archivos integrados MEMORY.md y USER.md, Hermes Agent puede adjuntar un plugin de memoria externo a la vez — Honcho, OpenViking, Mem0, Hindsight, Holographic, RetainDB, ByteRover o Supermemory — para conocimiento persistente entre sesiones. Solo un proveedor externo está activo a la vez; los dos archivos centrales permanecen cargados junto a él (aditivo, no reemplazo).

Activa e inspecciona proveedores con hermes memory setup, hermes memory status y hermes memory off, o establece memory.provider y recall_mode en ~/.hermes/config.yaml. Los patrones de credenciales varían (por ejemplo HINDSIGHT_API_KEY, claves de Honcho bajo $HERMES_HOME/honcho.json); usa hermes memory setup para el cableado interactivo.

Forma YAML mínima solo integrada:

memory:
  provider: ""
  memory_enabled: true
  user_profile_enabled: true

Ejemplo de activación para un backend (cambia hindsight por honcho, mem0, supermemory u otros que tu instalación soporte):

memory:
  provider: "hindsight"

Para la tabla de comparación completa, notas de dependencia de LLM y embeddings, desgloses por proveedor y cómo estos backends se relacionan con OpenClaw y otras pilas, consulta Proveedores de memoria de agentes comparados.

Para cableado específico de perfil y flujos de trabajo de producción, consulta Configuración de producción de Hermes Agent. El hub de Memoria de Sistemas de IA lista esta guía junto con artículos relacionados de Cognee y capas de conocimiento.


Parte 3: Cuando la Memoria se Activa — Disparadores y Decisiones

La pregunta más común sobre la memoria de Hermes Agent es cuándo realmente guarda algo.

La respuesta es: constantemente, pero selectivamente. El agente gestiona su propia memoria a través de la herramienta memory, y la decisión de guardar está impulsada por una combinación de señales explícitas y patrones implícitos.

Disparadores de Escritura: ¿Cuándo Decide el Agente Guardar?

El agente guarda la memoria proactivamente. No espera a que le pidas. Esto es lo que lo dispara.

Correcciones del usuario. Cuando corriges al agente, esa es una señal para recordar. “No hagas eso de nuevo.” “Usa esto en su lugar.” “Recuerda esto.” Estas son instrucciones explícitas para actualizar la memoria.

Ejemplo: le pides al agente que configure un entorno Python. Sugiere pip. Dices “Uso poetry para todo”. El agente guarda: El usuario prefiere usar el gestor de paquetes 'poetry' para todos los proyectos Python.

Preferencias descubiertas. El agente observa patrones e infiere preferencias. Si usas consistentemente una cierta herramienta, marco o flujo de trabajo, se guarda.

Ejemplo: después de verte usar poetry múltiples veces en diferentes proyectos, el agente lo guarda como una preferencia.

Hechos del entorno. Cosas sobre la máquina, el proyecto, las herramientas instaladas. Estos se descubren a través de la exploración y se guardan como hechos.

Ejemplo: el agente verifica lo que está instalado y guarda: Esta máquina ejecuta Ubuntu 22.04, tiene Docker y kubectl instalados.

Convenciones del proyecto. Cómo está estructurado el proyecto, qué herramientas usa, qué patrones sigue. Estos se descubren a través de la inspección de código y se guardan.

Ejemplo: El proyecto del usuario es un microservicio Go en ~/code/gateway usando gRPC + PostgreSQL.

Flujos de trabajo complejos completados. Después de completar una tarea que tomó 5+ llamadas de herramienta, el agente considera guardar el enfoque como una habilidad o al menos anotar qué funcionó.

Rarezas de herramientas y soluciones alternativas. Cuando el agente descubre algo no obvio sobre una herramienta, API o sistema — una limitación, una solución alternativa, una convención — la guarda.

Qué se omite:

  • Información trivial u obvia
  • Cosas fácilmente redescubiertas
  • Volcados de datos crudos
  • Ephemeros específicos de la sesión
  • Información ya en archivos de contexto (SOUL.md, AGENTS.md)

Disparadores de Lectura: ¿Cuándo Recupera el Agente?

La memoria no se recupera — siempre está ahí. Pero hay diferentes niveles de acceso.

Inicio de sesión (automático). MEMORY.md y USER.md se inyectan en el prompt del sistema. El agente los tiene desde el primer token. Sin consulta, sin latencia, sin llamada de herramienta. Esta es la memoria central — siempre activa.

session_search (bajo demanda). Cuando el agente necesita encontrar algo de conversaciones pasadas que no está en la memoria central, usa la herramienta session_search. Esto consulta SQLite (~/.hermes/state.db) con búsqueda de texto completo FTS5 y resumen de Gemini Flash. Úsalo cuando la pregunta suene como “hablamos de esto antes” en lugar de “recuerda este hecho para siempre”.

Ejemplo: preguntas “¿Discutimos la red de Docker la semana pasada?”. El agente busca en el historial de la sesión y devuelve un resumen de la conversación relevante.

Herramientas de proveedores externos (cuando se configuran). Cuando un proveedor de memoria externa está activo, el marco también ejecuta un paso de prefetch automático antes de cada respuesta (ver Parte 2). Herramientas adicionales como honcho_search, hindsight_recall o mem0_search son para búsquedas dirigidas cuando el agente elige recuperación explícita — dependiendo de recall_mode, la inyección automática, las herramientas o ambas pueden estar activas.

El Árbol de Decisiones

Así es como el agente pondera “¿vale la pena recordar esto?”:

¿Es esto una corrección o instrucción explícita?
  SÍ → Guardar en memoria
  NO → ¿Es esto una preferencia o patrón?
    SÍ → Guardar en perfil de usuario
    NO → ¿Es esto un hecho del entorno o convención?
      SÍ → Guardar en memoria
      NO → ¿Es esto fácilmente redescubrible?
        SÍ → Saltar
        NO → ¿Es esto específico de la sesión?
          SÍ → Saltar
          NO → Guardar en memoria

El agente no sobrepiensa esto. Guarda proactivamente, consolida cuando está lleno y confía en los límites de caracteres para mantener las cosas ajustadas.


Parte 4: Memoria Interna versus Bases de Conocimiento Externas

Aquí es donde a menudo ocurre la confusión. Hermes Agent tiene memoria interna (MEMORY.md, USER.md, proveedores externos) y bases de conocimiento externas (LLM Wiki, Obsidian, Notion, ArXiv, sistema de archivos), y sirven roles completamente diferentes. Esto es similar a la distinción entre pipelines de generación aumentada por recuperación y memoria de trabajo del agente — la recuperación externa es buena para búsquedas de conocimiento profundo, no para llevar identidad y preferencias. La memoria interna es el cerebro del agente — siempre activa, curada, llevada a cada sesión. Las bases de conocimiento externas son su biblioteca — vastos recursos de referencia consultados bajo demanda.

La Distinción

Memoria Interna (el cerebro):

  • Pequeña, persistente, inyectada en el prompt del sistema
  • Contiene: preferencias del usuario, convenciones del agente, lecciones inmediatas
  • Siempre “en mente” durante la conversación
  • Curada, delimitada, gestionada activamente
  • Ejemplos: MEMORY.md, USER.md, Honcho, Hindsight, Mem0

Bases de Conocimiento Externas (la biblioteca):

  • Vasta, solo de referencia, accedida bajo demanda
  • Contiene: documentos, papers, código, notas, bases de datos
  • Accedida mediante herramientas cuando sea necesario
  • No se “recuerda” — se busca
  • Ejemplos: LLM Wiki, Obsidian, Notion, ArXiv, sistema de archivos, GitHub

Cómo se Relacionan

El agente accede a las bases externas mediante herramientas cuando es necesario. No las “recuerda” — las busca.

LLM Wiki (llm-wiki): La base de conocimiento interconectada en Markdown de Karpathy para construir y consultar conocimiento de dominio. El agente usa la habilidad llm-wiki para leer, buscar y consultar. Es un recurso de referencia, no memoria.

Obsidian: Cofres de notas personales con enlaces bidireccionales. El agente usa la habilidad obsidian para leer, buscar y crear notas. Obsidian es parte del ecosistema más amplio de gestión del conocimiento personal en el que Hermes puede apoyarse como recurso de biblioteca.

Notion/Airtable: Bases de datos estructuradas y wikis accedidas vía API. El agente las consulta cuando es necesario.

ArXiv: Repositorios de papers académicos. El agente busca y extrae papers cuando investiga un tema.

Sistema de archivos: Código del proyecto, documentación, configuraciones. El agente lee archivos cuando trabaja en un proyecto.

El Patrón de Destilación

Aquí está el insight clave: los insights críticos de las bases externas pueden ser destilados en la memoria interna.

Ejemplo: el agente lee un paper de ArXiv sobre escalabilidad de memoria para agentes de IA. No guarda el paper completo en la memoria. Guarda el takeaway clave: Escalabilidad de memoria: el rendimiento del agente mejora con la experiencia acumulada a través de la interacción del usuario y el contexto empresarial almacenado en la memoria.

El recurso externo es vasto. La memoria interna es la destilación.

Cuándo Usar Cada Uno

Memoria interna para:

  • “¿A quién estoy ayudando?”
  • “¿Qué prefieren?”
  • “¿Qué acabamos de aprender?”
  • “¿Cuál es la configuración del proyecto?”
  • “¿Qué herramientas están disponibles?”

Bases de conocimiento externas para:

  • “¿Cuál es la última investigación sobre X?”
  • “¿Qué hay en la documentación de mi proyecto?”
  • “¿Qué discutimos el mes pasado?”
  • “¿Cuál es la API para este servicio?”
  • “¿Cuál es la estructura del código?”

El agente entiende la diferencia y usa cada uno apropiadamente — no confunde buscar un documento con recordar algo que ha aprendido sobre ti y tu entorno.


Parte 5: Cómo Funciona Realmente

Veamos la mecánica.

La Herramienta memory

El agente gestiona la memoria a través de una sola herramienta con tres acciones: add, replace, remove.

No hay acción read — el contenido de la memoria se inyecta automáticamente en el prompt del sistema. El agente no necesita leerlo porque siempre está ahí.

add — Añade una nueva entrada.

memory(action="add", target="memory",
       content="El usuario ejecuta macOS 14 Sonoma, usa Homebrew, tiene Docker Desktop instalado.")

replace — Reemplaza una entrada existente usando coincidencia de subcadenas.

memory(action="replace", target="memory",
       old_text="modo oscuro",
       content="El usuario prefiere modo claro en VS Code, modo oscuro en terminal")

remove — Elimina una entrada usando coincidencia de subcadenas.

memory(action="remove", target="memory",
       old_text="hecho temporal del proyecto")

Coincidencia de Subcadenas

replace y remove usan subcadenas cortas y únicas vía old_text. No necesitas el texto completo de la entrada. Esto hace posibles ediciones quirúrgicas sin conocer el contenido exacto.

Si una subcadena coincide con múltiples entradas, se devuelve un error solicitando una coincidencia más específica. El agente luego refina su consulta.

Almacenes Destino: memory vs user

El parámetro target determina qué archivo se actualiza.

  • memory — Notas personales del agente. Hechos del entorno, convenciones del proyecto, rarezas de herramientas, lecciones aprendidas.
  • user — Perfil del usuario. Identidad, rol, zona horaria, preferencias de comunicación, preocupaciones menores, hábitos de flujo de trabajo.

Gestión de Capacidad

Cuando la memoria está >80% llena, el agente consolida. Fusiona entradas relacionadas, elimina hechos desactualizados y comprime información.

Las buenas entradas de memoria son compactas y densas en información:

El usuario ejecuta macOS 14 Sonoma, usa Homebrew, tiene Docker Desktop instalado. Shell: zsh con oh-my-zsh. Editor: Neovim con plugin Telescope.

Las malas entradas de memoria son vagas o verbosas:

El usuario tiene un proyecto.
El 5 de enero de 2026, el usuario me pidió que mirara su proyecto que está ubicado en ~/code/gateway y usa Go con gRPC y PostgreSQL para la capa de base de datos.

La primera es densa y útil. La segunda es demasiado vaga o demasiado verbosa.

Búsqueda de Sesión versus Memoria Persistente

session_search y la memoria persistente sirven propósitos diferentes.

Característica Memoria Persistente Búsqueda de Sesión
Capacidad ~1,300 tokens en total Ilimitada (todas las sesiones)
Velocidad Instantánea (en el prompt del sistema) Requiere búsqueda + resumen de LLM
Caso de Uso Hechos clave siempre disponibles Encontrar conversaciones pasadas específicas
Gestión Curada manualmente por el agente Automática — todas las sesiones almacenadas
Costo de Tokens Fijo por sesión (~1,300 tokens) Bajo demanda (buscado cuando sea necesario)

Regla general: usa la memoria para hechos críticos que deben estar siempre en el contexto. Usa la búsqueda de sesión para búsquedas históricas.


Parte 6: La Filosofía

Por Qué la Memoria Delimitada Supera a la Memoria Ilimitada

El instinto es hacer la memoria lo más grande posible. Almacenar todo. Recuperar lo que necesitas.

La memoria delimitada funciona mejor. Aquí está el porqué.

La curación fuerza la calidad. Cuando tienes espacio limitado, solo guardas lo que importa. Comprimas, consolidas y priorizas. La memoria ilimitada fomenta volcar todo y nunca limpiar.

La velocidad importa. 1,300 tokens en el prompt del sistema es rápido. 100,000 tokens recuperados de una base de datos es lento. La memoria debería ser instantánea, no una consulta.

El ruido degrada el rendimiento. Más memoria no es mejor memoria. Es memoria más ruidosa. El modelo tiene que distinguir la señal del ruido, y eso toma atención — atención que debería gastarse en la tarea real.

Olvidar es una característica. La memoria humana olvida. Eso no es un error — es cómo priorizamos. Los agentes también deberían olvidar. No todo merece ser recordado.

El Problema del “Olvido”

Los agentes necesitan desaprender. No solo olvidar, sino activamente eliminar información desactualizada.

Así es como Hermes Agent lo maneja:

  • Acción remove: Eliminar entradas que ya no son relevantes.
  • Acción replace: Actualizar entradas con nueva información.
  • Presión de capacidad: Cuando la memoria está llena, el agente consolida y elimina entradas antiguas.
  • Escaneo de seguridad: Bloquea entradas maliciosas o corruptas.

Olvidar no es fracaso — es mantenimiento. Un agente que no puede desaprender eventualmente llevará tanto ruido como señal.

Escalabilidad de Memoria

Databricks introdujo el concepto de “escalabilidad de memoria”: ¿un agente con miles de usuarios rinde mejor que uno con un solo usuario?

Su investigación sugiere que sí, pero con matices. La escalabilidad de memoria requiere:

  1. Extracción de calidad: No todas las interacciones valen la pena recordar. El agente debe extraer insights, no registros.
  2. Recuperación efectiva: Las memorias recuperadas deben ser relevantes. El ruido degrada el rendimiento.
  3. Generalización: Las memorias deben ser patrones, no especificidades. “El usuario prefiere Python” escala. “El usuario ejecutó el comando X en la marca de tiempo Y” no lo hace.

La memoria delimitada de Hermes Agent soporta naturalmente la escalabilidad de memoria. Al forzar la curación, asegura que las memorias sean generalizables, compactas y útiles.

Qué Significa Esto para el Futuro

La memoria se está convirtiendo en la fosa competitiva en la IA agéntica — no el modelo en sí, sino lo que el modelo lleva entre sesiones. Dos agentes con modelos subyacentes idénticos pueden rendir muy diferente: uno recuerda tus preferencias, tu entorno y tus errores pasados; el otro comienza en frío cada vez.

La pregunta ya no es si los agentes deberían tener memoria persistente. Está resuelto: deben. La pregunta abierta es cómo diseñar esa memoria bien — qué mantener, qué descartar, cómo hacerla instantánea y cómo evitar que se convierta en ruido.

La respuesta de Hermes Agent es mantener la memoria pequeña, curada y siempre activa — no una base de datos que consultas, sino un modelo de trabajo del usuario que el agente lleva consigo en cada conversación.


Conclusión

El sistema de memoria de Hermes Agent es deliberadamente simple: dos archivos, límites de caracteres firmes, sin pipeline de recuperación, sin base de datos vectorial y sin latencia por consulta. Lo que suena como una restricción es todo el punto.

Funciona porque trata la memoria como funciona un cerebro en lugar de como funciona una base de datos — pequeña, curada y siempre activa. El agente no recupera la memoria cuando la necesita; la memoria simplemente siempre está ahí, tejida en el prompt del sistema desde el primer token de cada sesión.

Los proveedores de memoria externa extienden este sistema para usuarios que necesitan más: grafos de conocimiento, soporte multi-agente, almacenamiento autoalojado, características empresariales. Pero el núcleo permanece igual: delimitado, curado, siempre disponible.

Y las bases de conocimiento externas — LLM Wiki, Obsidian, Notion, ArXiv — sirven un rol diferente. Son la biblioteca, no el cerebro. El agente las busca, no las recuerda. Los insights críticos se destilan en la memoria interna; el resto permanece en la biblioteca.

Así es como un agente de IA te recuerda. No almacenando todo, sino recordando lo que importa.


Hermes Agent fue lanzado por Nous Research en febrero de 2026 y alcanzó más de 64,000 estrellas en GitHub para abril de 2026 (v0.9.0), con más de 242 contribuyentes. Es de código abierto y está disponible en github.com/NousResearch/hermes-agent. Para instalación, configuración y guías de flujo de trabajo, consulta la visión general de Hermes Agent.

Suscribirse

Recibe nuevas publicaciones sobre sistemas, infraestructura e ingeniería de IA.