Gestión de Memoria (Versión DSH)
Memoria persistente entre sesiones: Índice L1 inyectado en cada ronda + Hechos del entorno L2 + Experiencia de tareas L3.
Cuándo se Activa
Lectura (¿cuándo consultar la memoria?)
- Al iniciar una nueva tarea: si la tarea involucra el entorno local, configuración de herramientas, una pila tecnológica específica o algo similar ya realizado antes → primero usa
memory_listpara ver qué hay, luegomemory_readpara recuperar las entradas relevantes. - Al encontrar dificultades/obstáculos:
memory_readpara buscar SOPs relacionados (coincidencia por palabras clave en el nombre del archivo en sops/ o la sección de hechos). - Índice de memoria en el prompt del modelo (memory:index): índice de existencia L1 visible en cada ronda. Si ves términos desencadenantes relevantes, debes usar activamente
memory_read/memory_listpara obtener los detalles.
Escritura (¿cuándo consolidar memoria?)
Cuando una tarea finaliza (o al completar una fase) y existe información verificada por una acción exitosa, llama a memory_write:
Lo que se puede escribir (debe incluir pruebas/evidencia):
- Hechos específicos del entorno: rutas, configuraciones, parámetros reales medidos, comportamiento de herramientas (→
entry_type: fact) - Experiencia de tareas complejas: puntos críticos que requirieron múltiples reintentos, condiciones previas ocultas, pasos estables (→
entry_type: sop) - Reglas generales de prevención de errores (→ también se puede escribir a través de memory_write sop o sugerir directamente mantener en [RULES])
Prohibido escribir (escribir esto es contaminar):
- ❌ Información sin evidencia verificada (sin acción, no hay memoria)
- ❌ Conocimiento inherente del modelo, conjeturas razonadas, hipótesis no verificadas.
- ❌ Estados volátiles: marcas de tiempo, PID, rutas temporales, IDs de un solo uso.
- ❌ Sentido común general, registros de log, detalles del proceso de razonamiento.
Sincronización del índice
memory_writeya sincroniza automáticamente el índice L1, normalmente no es necesario hacerlo manualmente.- Después de modificar manualmente facts.md o los archivos en sops/ → ejecuta
memory_indexpara reconstruir el índice. - Si el índice supera las 30 líneas: simplifica [RULES] (modificaciones a nivel de palabra, prohibido sobrescribir todo el contenido).
Estructura de almacenamiento
<home>/.dsh/memory/
├── memory_management_sop.md Reglas meta L0 (cómo gestionar la memoria)
├── index.txt Índice L1 (≤30 líneas: lista de existencia L2/L3 + RULES)
├── facts.md Hechos del entorno L2 (## SECTION)
├── sops/*.md Experiencia de tareas L3
└── file_access_stats.json Estadísticas de frecuencia de acceso
Herramientas
| Herramienta | Propósito |
|---|---|
memory_list | Listar toda la memoria (hechos + SOPs + número de líneas del índice) |
memory_read | Leer una memoria específica (índice / tema de hecho / nombre de archivo SOP) |
memory_write | Escribir una memoria (fact/sop, evidencia obligatoria) |
memory_index | Reconstruir la sección automática del índice L1 |
Principios
- Verificación por acción: No Execution, No Memory. Solo escribe información que haya sido verificada exitosamente.
- Mínimo suficiente: el contenido debe ser lo más breve posible; solo guarda información cuyo olvido llevaría a costosos reintentos.
- No eliminar ni modificar hechos verificados: se puede comprimir o reubicar, pero está terminantemente prohibido descartarlos.
- Escritura activa: la escritura de memoria siempre la inicia el modelo o el usuario de forma activa; nunca modifica automáticamente la configuración ni instala plugins.