Mnemosyne para el agente Hermes: Guía rápida de memoria local

Memoria local de Hermes con escrituras controladas.

Índice

Mnemosyne es un proveedor de memoria local-first para Hermes Agent, que almacena memoria de trabajo, hechos estructurados, datos temporales e historia episódica en SQLite local: sin servicios alojados, sin llamadas de red obligatorias y con un control de escritura inusualmente granular.

Su propiedad más útil no es la calidad bruta de la recuperación. Es la cantidad de control que expone sobre la ruta de escritura: el autoguardado de conversaciones puede restringirse por rol o desactivarse por completo, el registro de resultados de herramientas está desactivado por defecto, las operaciones explícitas de recordar y olvidar permanecen disponibles independientemente, y las versiones más recientes añaden una supresión opcional del auto-eco en los límites de compresión de contexto. Esta combinación la convierte en una opción razonable cuando se desea una memoria persistente sin convertir automáticamente cada conversación en conocimiento permanente.

La disciplina de la ruta de escritura importa porque la memoria de agentes tiene un modo de fallo bien documentado: la propia inferencia de un modelo puede ser capturada, recuperada más tarde como si fuera una observación y usada para justificar una versión aún más fuerte de sí misma. Bucles de memoria auto-reforzados en agentes de IA cubre ese modo de fallo en profundidad; esta guía se centra en la configuración concreta de Mnemosyne que lo limita en la práctica. Para ver dónde se sitúa Mnemosyne respecto a los otros backends de memoria de Hermes, consulte Comparativa de proveedores de memoria para agentes.

Un búnker de base de datos local translúcido conectado a través de un candado y filtro brillantes a un pequeño módulo de agente amigable

Mnemosyne en un minuto

Un proveedor de memoria típico realiza alguna versión de captura, extracción, almacenamiento, recuperación e inyección en un futuro prompt. Mnemosyne añade varias capas distintas alrededor de ese bucle básico: memoria de trabajo, recuperación semántica y léxica, hechos estructurados, información temporal, enlaces de entidades, memoria episódica, consolidación, hechos canónicos y validación de memoria. El almacenamiento es SQLite local con FTS5 y recuperación vectorial opcional, lo que lo hace considerablemente más inspeccionable que un producto de memoria solo en la nube y más capaz que un archivo MEMORY.md plano.

Muy brevemente, en relación con el resto del ecosistema de proveedores de Hermes: Holographic es más simple y deliberadamente orientado a almacenes de hechos; Hindsight enfatiza la recuperación híbrida, los grafos de conocimiento y la reflexión; Honcho enfatiza la modelización de pares y usuarios con razonamiento dialéctico; Mem0 enfatiza la extracción automática de hechos basada en LLM; y Mnemosyne combina almacenamiento SQLite local, recuperación híbrida, consolidación, hechos estructurados y controles de retención inusualmente granulares. El desglose completo, incluyendo requisitos de infraestructura y notas de autoalojamiento para cada proveedor, está en Comparativa de proveedores de memoria para agentes.

Versiones actuales

A septiembre de 2026, la versión estable de PyPI es mnemosyne-memory 3.15.1, con la rama 4.0 disponible como pre-lanzamiento. Para una instalación de producción de Hermes, comience con la versión estable a menos que necesite específicamente una corrección o función de la 4.0 y esté preparado para probar la migración de la base de datos y el cambio de comportamiento. Verifique su versión instalada con:

hermes mnemosyne version

Instalación de Mnemosyne en Hermes

Active primero el entorno virtual propio de Hermes si utilizó la instalación local estándar:

source ~/.hermes/hermes-agent/venv/bin/activate

Para el soporte de incrustaciones local, instale el paquete principal con el extra de incrustaciones más el envoltorio de plugin de Hermes:

python -m pip install \
  "mnemosyne-memory[embeddings]" \
  mnemosyne-hermes

Luego registre el plugin:

mnemosyne-hermes install

Si está reemplazando un registro de plugin existente:

mnemosyne-hermes install --force

Active el proveedor y reinicie la puerta de enlace:

hermes config set memory.provider mnemosyne
hermes gateway restart

Verifique con:

hermes memory status

La salida esperada se parece a:

Provider: mnemosyne

Plugin: installed
Status: available

Instalaciones Docker y servidores persistentes

Si Hermes se ejecuta dentro de una implementación Docker persistente o basada en imágenes, instale en un entorno virtual secundario en el hogar de Hermes montado, en lugar del entorno Python reconstruible del contenedor, para que el plugin sobreviva a las reconstrucciones de la imagen:

export HERMES_HOME=/opt/data
VENV="$HERMES_HOME/.mnemosyne/venv"
python3 -m venv "$VENV"
"$VENV/bin/python" -m pip install --upgrade "mnemosyne-memory[embeddings]" mnemosyne-hermes
"$VENV/bin/mnemosyne-hermes" install --mode wrapper --python "$VENV/bin/python"
hermes config set memory.provider mnemosyne

El entorno virtual secundario debe usar la misma versión principal/secundaria de Python que la puerta de enlace de Hermes en ejecución; no lo apunte a un python3 no relacionado de PATH. Reinicie el contenedor o servicio real a continuación y verifique con "$VENV/bin/mnemosyne-hermes" status junto con hermes memory status.

No desactive todo el conjunto de herramientas de memoria de Hermes

Mantenga separados dos conceptos: la memoria integrada propia de Hermes (MEMORY.md / USER.md, cubierto a fondo en Sistema de memoria del agente Hermes) y el proveedor externo (Mnemosyne). No ejecute descuidadamente hermes tools disable memory al configurar un proveedor externo: dependiendo de la versión de Hermes, ese comando también puede ocultar las herramientas de proveedores de memoria externos. Use la configuración del proveedor en su lugar, como se muestra a continuación.

Estado e inspección básicos

hermes memory status
hermes mnemosyne stats
hermes mnemosyne stats --global
hermes mnemosyne inspect "query"

Exporte una copia de seguridad portátil:

hermes mnemosyne export \
  --output ~/mnemosyne-backup.json

La base de datos subyacente normalmente reside bajo ~/.hermes/mnemosyne/data/mnemosyne.db. Dado que es SQLite, la inspección y la copia de seguridad son sencillas con herramientas estándar. Para el resto de los comandos de puerta de enlace, sesión y diagnóstico referenciados en toda esta guía, la Hoja de referencia de la CLI del agente Hermes) es una referencia más rápida que buscar en la salida de --help.

La política de retención por defecto merece atención

El primer control que vale la pena entender es sync_roles. Los valores por defecto actuales de Mnemosyne ya son más conservadores que las primeras versiones: la sincronización automática de Hermes predetermina los turnos de usuario en lugar de los turnos de usuario y asistente, pero para una retención estrictamente explícita, desactivar por completo el autoguardado de turnos vale el paso extra. Edite ~/.hermes/config.yaml:

memory:
  provider: mnemosyne

  mnemosyne:
    sync_roles: []

Una lista vacía significa que los turnos de conversación ordinarios no se guardan automáticamente mediante sync_turn(). Las operaciones explícitas de mnemosyne_remember continúan funcionando independientemente: la conversación normal deja de fluir automáticamente a la memoria, mientras que un “recuerda esto” explícito aún llega a Mnemosyne.

Desactive el registro automático de resultados de herramientas

Mnemosyne también puede registrar ejecuciones de herramientas como memoria. Para una configuración conservadora, deje desactivado en ~/.hermes/.env:

MNEMOSYNE_LOG_TOOLS=0

Esto ya es el valor por defecto, pero establecerlo explícitamente documenta la política en lugar de depender de una suposición sobre los valores por defecto. Reinicie Hermes después:

hermes gateway restart

Con sync_roles: [] y MNEMOSYNE_LOG_TOOLS=0 juntos, ambas rutas principales de escritura automática: el autoguardado de conversación y el autoguardado de resultados de herramientas, están desactivadas.

Mantenga la recuperación automática

Desactivar las escrituras automáticas no requiere desactivar la recuperación. Una política útil mantiene la retención automática desactivada mientras que la recuperación automática, el recordar explícito y el olvidar explícito permanecen activos: la memoria debe ser fácil de leer y difícil de escribir, que es casi lo opuesto al valor por defecto de “capturar todo y ordenarlo después”.

Añada una instrucción de agente duradera

La configuración del proveedor bloquea la captura a nivel de proveedor, pero el modelo aún puede decidir llamar a una herramienta de escritura explícita por iniciativa propia. Añada una política explícita a SOUL.md:

## Política de memoria a largo plazo

Mnemosyne es el proveedor de memoria a largo plazo.

No escriba nada en Mnemosyne a menos que el usuario le pida explícitamente
recordar, guardar, retener o almacenar esa información.

Si la información parece útil para sesiones futuras pero el usuario no
solicitó explícitamente que se recuerde, pida permiso antes de llamar a
mnemosyne_remember u otra herramienta de escritura de Mnemosyne.

No cree memorias duraderas a partir de su propio razonamiento, suposiciones,
resúmenes, interpretaciones, conclusiones o preferencias inferidas.

No cree memorias duraderas a partir de la salida de herramientas a menos que
el usuario pida explícitamente que ese resultado se recuerde.

Al almacenar una memoria aprobada, preserve lo que el usuario realmente declaró.
No lo embellezca con contexto o conclusiones inferidas.

Leer y recuperar memorias de Mnemosyne está permitido sin pedir permiso.

Reinicie la puerta de enlace e inicie una sesión nueva después:

hermes gateway restart
/new

Esta es una política impuesta por el modelo, no un límite duro de permisos: complementa la configuración a nivel de proveedor anterior en lugar de reemplazarla.

¿Qué hay con memory.write_approval?

Hermes admite memory.write_approval: true para escrituras en MEMORY.md / USER.md integradas, y Mnemosyne implementa su propio almacenamiento intermedio específico del proveedor para escrituras explícitas en versiones más recientes. Esto es prometedor, pero hay una salvedad arquitectónica que vale la pena tomar en serio: Hermes aún no expone un contrato de aprobación uniforme y neutral del proveedor para todos los proveedores de memoria externos, y la implementación de pendiente/aplicar de Mnemosyne es específica del proveedor en lugar de ser parte de un estándar compartido. No asuma que la aprobación funciona correctamente solo porque la clave de configuración está presente: pruébela contra sus versiones exactas de Hermes y Mnemosyne. Hasta que la aprobación independiente del proveedor madure, combinar sync_roles: [], MNEMOSYNE_LOG_TOOLS=0 y la política de escritura explícita en SOUL.md anterior le da una línea base confiable, con la ruta de aprobación probada por separado si pretende depender de ella.

Habilite la supresión del auto-eco

Mnemosyne actual también ofrece una supresión opcional del auto-eco:

MNEMOSYNE_SELF_ECHO_ENABLED=1

Ponga esto en ~/.hermes/.env y luego reinicie:

hermes gateway restart

La supresión del auto-eco apunta específicamente a los límites de compresión de contexto: su propósito es reducir los casos donde la memoria que el proveedor acaba de crear se alimenta inmediatamente de vuelta al agente como si fuera contexto independiente. Es intencionalmente de mejor esfuerzo y no reemplaza el filtrado de escritura: los controles de escritura detienen que memorias cuestionables entren en primer lugar, mientras que los controles de auto-eco detienen que la salida reciente del proveedor rebote directamente de vuelta. Ambos importan, y ninguno sustituye al otro.

Una configuración conservadora de Mnemosyne

Juntando las piezas, una configuración inicial para un agente de ingeniería personal autoalojado se ve así. En ~/.hermes/config.yaml:

memory:
  provider: mnemosyne

  mnemosyne:
    sync_roles: []

En ~/.hermes/.env:

MNEMOSYNE_LOG_TOOLS=0
MNEMOSYNE_SELF_ECHO_ENABLED=1

Y en SOUL.md, al mínimo:

Solo almacene memoria a largo plazo cuando el usuario lo solicite explícitamente.
No promueva conclusiones generadas por el modelo o salida de herramientas a memoria
duradera sin permiso explícito.
flowchart LR U[Conversación del usuario] -.->|bloqueado| M[(Mnemosyne)] T[Resultados de herramientas] -.->|bloqueado| M R["Explícito: recuerda esto"] -->|mnemosyne_remember| M P[Pregunta futura] -->|recuperación| M

Pruebe que la conversación ordinaria no se retiene

Verifique primero la cuenta base:

hermes mnemosyne stats

Inicie una nueva sesión de Hermes y diga una declaración factual sencilla sin pedirle al agente que la recuerde, por ejemplo:

PurpleOtter usa el puerto 48123.

Después, busque por ella:

hermes mnemosyne inspect "PurpleOtter"

Esperado: Results for 'PurpleOtter': 0. Revise también hermes mnemosyne stats: la cuenta de memoria de trabajo no debería haber aumentado debido a ese turno ordinario.

Pruebe la memoria explícita

Ahora diga el mismo tipo de declaración, pero pida explícitamente retenerla:

Recuerda que BlueKoala usa el puerto 17321.

Inspecciónela, luego inicie una nueva sesión y pída de vuelta:

hermes mnemosyne inspect "BlueKoala"
/new
¿Qué puerto usa BlueKoala?

Hermes debería recuperar el valor correctamente: este par de pruebas aísla la política de la ruta de escritura (nada entra sin preguntar) del mecanismo de recuperación (lo que entra sale de vuelta de manera fiable).

Pruebe el registro de herramientas

Con MNEMOSYNE_LOG_TOOLS=0 establecido, pida a Hermes que ejecute un comando distintivo y único:

Use the terminal tool to run:
echo tool-canary-834729

Luego busque la cadena de canarí:

hermes mnemosyne inspect "tool-canary-834729"

Esperado: 0 results. Esta es una prueba mucho más fuerte que simplemente confiar en que la variable de entorno se respeta en todas partes.

Inspeccionando la base de datos

Dado que el almacenamiento es SQLite, el esquema interno es directamente inspeccionable:

sqlite3 ~/.hermes/mnemosyne/data/mnemosyne.db '.tables'

Dependiendo de la versión, puede ver tablas como working_memory, episodic_memory, facts, consolidated_facts, gists, graph_edges, memoria_facts y memory_embeddings. Esto importa al probar la eliminación: un sistema de memoria puede eliminar con éxito una fila de memoria de trabajo mientras deja un hecho derivado, gisto u objeto de grafo detrás. Mnemosyne ha tenido errores reales en esta área que involucran registros derivados huérfanos, y las versiones más recientes han ajustado tanto la eliminación como el diagnóstico en consecuencia. Prefiera las rutas de eliminación y doctor/reparación admitidas por el proveedor en lugar de eliminar manualmente filas de SQLite, a menos que entienda completamente el esquema actual.

Eliminando la memoria de trabajo de ámbito de sesión

Un matiz: las memorias de trabajo de Mnemosyne pueden tener ámbito de sesión, por lo que una fila con scope = session puede no ser visible para una eliminación independiente operando en la sesión default. Al depurar, inspeccione el ámbito directamente:

SELECT id, session_id, scope, content
FROM working_memory;

El proveedor o API necesita el ámbito de sesión correcto para mutar registros locales de sesión: otra razón para preferir herramientas de administración admitidas sobre ediciones SQL crudas.

Consolidación: no se apresure con sleep()

Mnemosyne puede consolidar la memoria de trabajo en representaciones de vida más larga, lo cual es útil pero es una operación que muta. Antes de habilitar una consolidación automática agresiva, inspeccione lo que realmente se está capturando, verifique que los turnos ordinarios no están entrando a la memoria inesperadamente, verifique la eliminación de punta a punta y haga una copia de seguridad de la base de datos. Luego experimente con:

hermes mnemosyne sleep

Los cambios recientes de Mnemosyne hicieron que el manejo de conflictos fuera más conservador: la similitud semántica por sí sola ya no prueba que una memoria deba invalidar a otra, que es exactamente la dirección en la que un sistema de memoria de agente duradero debería moverse, como se cubre en Bucles de memoria auto-reforzados en agentes de IA.

Copia de seguridad antes de las actualizaciones

Cree una exportación portátil antes de cualquier cambio significativo:

hermes mnemosyne export \
  --output ~/mnemosyne-backup.json

Para instalaciones importantes, también copie la base de datos local o el directorio de datos antes de actualizaciones mayores. Mnemosyne 4.x es actualmente una línea de pre-lanzamiento, por lo que una actualización de versión mayor merece más precaución que una actualización de parche de rutina.

Configuración final recomendada

Para una instalación de Hermes de larga duración donde la precisión de la memoria importa más que recordar todo, la configuración duradera es: almacenamiento local de Mnemosyne activado, recuperación automática activada, autoguardado de conversación desactivado, autoguardado de mensajes del asistente desactivado, registro de resultados de herramientas desactivado, recordar y olvidar explícito activado, supresión del auto-eco activada, búsqueda de sesión activada, y revisión humana deseable para escrituras sensibles una vez que la ruta de aprobación esté probada. Esto hace que Mnemosyne funcione principalmente como un almacén de memoria a largo plazo curado en lugar de un archivo de transcripciones: el objetivo no es hacer que Hermes recuerde todo lo que ha dicho alguna vez, sino hacer que recuerde las cosas que aún serán verdaderas cuando comience la próxima sesión. Si ejecuta varios perfiles con diferentes proveedores o políticas de retención, Configuración de producción del agente Hermes) cubre el cableado a nivel de perfil para mantenerlos consistentes. Si prefiere ejecutar la memoria como un servicio Docker separado con un grafo de conocimiento y operación de reflexión, Hindsight para Hermes Agent) es la guía del proveedor externo basado en Docker.

Suscribirse

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