Memoria Persistente y Auto-Evolución (memory)
Principio clave: guardar activamente, sin esperar a que el usuario lo pida. Convierte el entorno del usuario en un sistema "te entiende mejor cuanto más lo usas": Memoria de tres niveles (hecho/patrón/lección) + resumen de sesión + enrutamiento de lecciones (auto-evolución).
🚀 Inicio de Sesión (cada sesión nueva)
- Si existe
~/.agents/memory/MEMORY.md, léelo primero para conocer rápidamente los antecedentes, preferencias y sesiones recientes del usuario. - Si necesitas detalles, usa
memory.py get <id>omemory.py search <palabras-clave>para profundizar. - Muestra al usuario la información clave recordada (de forma breve) para demostrar continuidad.
📌 Guardado Activo (SIEMPRE ACTIVO, guarda cuando lo encuentres, no esperes al final de la sesión)
Cuando ocurra alguna de las siguientes situaciones, inmediatamente llama a memory.py add <tipo> <contenido> para guardar:
| Tipo | Cuándo guardar | Ejemplo |
|---|---|---|
fact | El usuario revela preferencias/hábitos/información de identidad; decisiones importantes del proyecto, selección técnica, acuerdos; el usuario dice explícitamente "recuerda" | "El usuario prefiere respuestas en español" "El proyecto usa pnpm + TypeScript" |
pattern | El mismo comportamiento/problema aparece 2 o más veces (incluyendo esta) | "Cada vez que se instala una habilidad, el usuario pide evaluar las dependencias primero" |
lesson | Experiencia aprendida tras un error, conclusión de solución de problemas, problema descubierto | "El backend predeterminado de ddgs de DuckDuckGo pasa por Yandex y da timeout; hay que usar backend='html'" |
- Al guardar, puedes adjuntar
--tag a,bpara facilitar la búsqueda. - La herramienta realiza deduplicación aproximada automáticamente; si el contenido ya existe, lo indicará en lugar de almacenarlo de nuevo.
🗂️ Fin de Sesión (o cuando el usuario pida "resumir sesión/depurar")
Ejecuta en orden:
- Revisa esta sesión y extrae las 2~5 informaciones más importantes.
- Guarda por categorías:
fact(nuevas preferencias/decisiones) →pattern(nuevos patrones) →lesson(nuevas experiencias). - Enrutamiento de lecciones (auto-evolución): Para cada lesson, evalúa:
- ¿Es una metodología reutilizable (por ejemplo, "procedimiento estándar para cierto tipo de tarea")? → Crea o actualiza una habilidad en
~/.agents/skills/(usando herramientas write/edit) para que se active automáticamente la próxima vez. - ¿Es un hecho puntual? → Guárdalo como fact.
- ¿Es específico del entorno/cuenta (por ejemplo, configuración necesaria para una herramienta)? → Guárdalo solo como lesson.
- ¿Es una metodología reutilizable (por ejemplo, "procedimiento estándar para cierto tipo de tarea")? → Crea o actualiza una habilidad en
- Usa
memory.py session-save "<resumen de esta sesión en una frase>" --key palabra-clave1,palabra-clave2para guardar el registro de la sesión. - Ejecuta
memory.py syncpara actualizar la visión general en MEMORY.md.
🔍 Consulta de Memoria
Cuando el usuario pregunte "¿dije antes?/¿la última vez?/mis preferencias" → memory.py search <palabras-clave>; para listar todo → memory.py list.
⚙️ Referencia Rápida de Herramientas
P=~/.agents/skills/pi-memory-evo/memory.py
$P init # Primera inicialización
$P add fact "contenido" --tag preferencia # Guardar hecho/patrón/lección
$P session-save "resumen" --key a # Guardar resumen de sesión
$P search palabras-clave # Buscar
$P list # Listar todo
$P get <id> / update <id> <nuevo-contenido> / delete <id> # Gestionar
$P stats # Estadísticas
$P sync # Actualizar visión general MEMORY.md
📂 Ubicación de Almacenamiento
- Datos:
~/.agents/memory/memory.json(memoria de cuatro niveles, JSON) - Visión general:
~/.agents/memory/MEMORY.md(léelo al iniciar sesión) - Habilidad en sí:
~/.agents/skills/pi-memory-evo/(herramienta + esta documentación)
⚠️ Límites
- No almacenar credenciales sensibles: tokens, contraseñas, claves nunca se guardan.
- Respetar la voluntad del usuario: si el usuario dice "esto no lo guardes", no lo guardes; si dice "olvida X", usa
deletepara el elemento correspondiente. - La memoria es una ayuda, no un sustituto de la confirmación: para acciones importantes, la intención actual del usuario es la que prevalece.