Cuando se habla de «agente de IA con memoria», muchos imaginan una única base de datos vectorial y una recuperación mágica. En la práctica, casi nunca es suficiente.

En Volna, mi agente de Telegram, la memoria está organizada en varias capas diferentes. Porque en un diálogo real hay que resolver tres tareas a la vez: almacenar hechos a largo plazo, tener a mano el contexto reciente y no saturar el modelo con tokens innecesarios.


La memoria de Volna se compone aproximadamente de 4 partes:

- Bloques permanentes en Letta. Son dos bloques básicos de unos 3 mil caracteres cada uno.

El primero es el retrato del usuario: quién es, a qué se dedica, qué es importante para él, cuáles son sus intereses y contextos estables.

El segundo es el perfil de la propia Volna: estilo de comunicación, reglas de comportamiento, cómo reacciona a las correcciones y qué considera importante en el diálogo.

- Memoria de archivo. Es una capa para hechos detallados que no es necesario mantener constantemente en el prompt, pero que es importante poder encontrar rápidamente. La búsqueda es semántica, y sobre ella hay un reordenamiento por frescura para que un hecho antiguo pero similar no opaque a uno más actual.

- Registro episódico diario. Después de cada diálogo, el sistema extrae hechos breves y los escribe en un archivo markdown. Allí van decisiones, preferencias, reacciones explícitas. Al iniciar una nueva sesión, solo se devuelven al contexto los últimos 3 días y solo en forma comprimida.

- Grafo de relaciones en Neo4j. Por separado se construye una red de entidades: personas, proyectos, empresas, temas, herramientas, eventos. Si en un mensaje menciono algo conocido, Volna intenta recuperar las entidades y relaciones asociadas a su alrededor. En esencia, esta no es una capa de «memoria de hechos», sino de «memoria de estructura».


La idea clave es que estas capas no se mezclan en el modelo de la misma manera.

Cuando la sesión se reinicia o el contexto se reduce, Volna reconstruye la imagen desde cero. Y en el flujo normal, no arrastra todo el volcado de memoria, sino que utiliza la caché base y el contexto dinámico del mensaje.

Esto es importante tanto para la calidad como para la velocidad. Si siempre se alimenta al modelo con toda la memoria, comienza a ahogarse en su propio pasado. Si, por el contrario, solo se mantiene un breve resumen, se pierde la sensación de continuidad en la comunicación.


Particularmente me gusta cómo está organizada la actualización de la memoria después de la respuesta. Se realiza de forma asíncrona, en segundo plano. Es decir, el usuario ya ha recibido el mensaje, mientras el sistema paralelamente hace varias cosas:
- extrae hechos del intercambio,
- completa el registro diario,
- envía el diálogo a Letta para actualizar la memoria a largo plazo
- y actualiza el grafo de entidades.

Además, hay varios limitadores útiles. Por ejemplo, los intercambios demasiado cortos pueden no entrar en la extracción de hechos. Y la cantidad de hechos depende de la longitud del diálogo. Es algo simple, pero protege bien la memoria de la basura.


Otra capa importante son las instantáneas de sesiones. Cuando la conversación termina, el sistema guarda una breve instantánea JSON: resumen, últimas réplicas, número de turnos, a veces observaciones sobre el estado de ánimo o patrón de comportamiento. En el siguiente reinicio, esta instantánea se puede devolver al contexto una vez y dar la sensación de que el agente no «despertó desde cero».


Además, Volna tiene una capa de reflexión sobre la memoria.

Si la pregunta suena como «cómo ha cambiado la actitud de Vlad hacia el trabajo» o «cuál es su trayectoria en salud», la simple búsqueda ya es débil: devuelve fragmentos, no comprensión.

Para eso está memory_reflect. Primero recupera un conjunto de recuerdos relevantes mediante búsqueda semántica, luego los pasa al modelo con una tarea separada de construir una narrativa coherente a partir de registros dispersos. El resultado es una breve interpretación de 2 a 5 párrafos.


Y, por supuesto, la memoria necesita mantenimiento. De lo contrario, cualquier sistema de memoria se convierte rápidamente en un trastero digital. Por eso hay un proceso de mantenimiento separado.


En resumen, la memoria de Volna no es un solo prompt, ni una sola base de datos, ni una sola recuperación. Es un enrutamiento de diferentes tipos de memoria con diferente vida útil, diferente costo y diferente forma de inyección en el contexto.


❗️❗️❗️❗️❗️❗️❗️❗️ / No prohibido en la Federación Rusa