Experimentos
Investigación de Memoria del Espacio de Trabajo
Objetivo: Espacio de trabajo estilo Clawd (agents.defaults.workspace, por defecto ~/.openclaw/workspace) donde la "memoria" se almacena como un archivo Markdown por día (memory/YYYY-MM-DD.md) más un pequeño conjunto de archivos estables (ej. memory.md, SOUL.md). Este documento propone una arquitectura de memoria offline-first que mantiene Markdown como la fuente de verdad canónica y revisable, pero añade recuerdo estructurado (búsqueda, resúmenes de entidades, actualizaciones de confianza) mediante un índice derivado.
¿Por qué cambiar?
La configuración actual (un archivo por día) es excelente para:
- llevar un diario de "solo añadir"
- edición humana
- durabilidad y auditabilidad respaldada por git
- captura de baja fricción ("simplemente escríbelo")
Es débil para:
- recuperación de alta precisión ("¿qué decidimos sobre X?", "¿la última vez que intentamos Y?")
- respuestas centradas en entidades ("háblame sobre Alice / El Castillo / warelay") sin releer muchos archivos
- estabilidad de opiniones/preferencias (y evidencia cuando cambian)
- restricciones de tiempo ("¿qué era cierto durante Nov 2025?") y resolución de conflictos
Objetivos de diseño
- Offline: funciona sin red; puede ejecutarse en portátil/Castle; sin dependencia de la nube.
- Explicable: los elementos recuperados deben ser atribuibles (archivo + ubicación) y separables de la inferencia.
- Baja ceremonia: el registro diario sigue siendo Markdown, sin trabajo pesado de esquemas.
- Incremental: la v1 es útil solo con FTS; las mejoras semánticas/vectoriales y de grafos son opcionales.
- Amigable para agentes: facilita el "recuerdo dentro de presupuestos de tokens" (devuelve pequeños paquetes de hechos).
Modelo estrella del norte (Hindsight × Letta)
Dos piezas para combinar:
- Bucle de control estilo Letta/MemGPT
- mantener un "núcleo" pequeño siempre en contexto (persona + datos clave del usuario)
- todo lo demás está fuera de contexto y se recupera mediante herramientas
- las escrituras de memoria son llamadas explícitas a herramientas (añadir/reemplazar/insertar), que se persisten y luego se reinyectan en el siguiente turno
- Sustrato de memoria estilo Hindsight
- separar lo observado vs lo creído vs lo resumido
- soportar retener/recordar/reflexionar
- opiniones con confianza que pueden evolucionar con evidencia
- recuperación consciente de entidades + consultas temporales (incluso sin grafos de conocimiento completos)
Arquitectura propuesta (Markdown como fuente de verdad + índice derivado)
Almacén canónico (amigable con git)
Mantener ~/.openclaw/workspace como memoria canónica legible por humanos. Diseño sugerido del espacio de trabajo:
~/.openclaw/workspace/
memory.md # pequeño: hechos duraderos + preferencias (similar al núcleo)
memory/
YYYY-MM-DD.md # registro diario (añadir; narrativa)
bank/ # páginas de memoria "tipadas" (estables, revisables)
world.md # hechos objetivos sobre el mundo
experience.md # lo que hizo el agente (en primera persona)
opinions.md # preferencias/juicios subjetivos + confianza + punteros a evidencia
entities/
Peter.md
The-Castle.md
warelay.md
...
Notas:
- El registro diario sigue siendo registro diario. No es necesario convertirlo en JSON.
- Los archivos en
bank/están curados, producidos por trabajos de reflexión, y aún pueden ser editados a mano. memory.mdpermanece "pequeño + similar al núcleo": las cosas que quieres que Clawd vea en cada sesión.
Almacén derivado (recuerdo de máquina)
Añadir un índice derivado bajo el espacio de trabajo (no necesariamente rastreado por git):
~/.openclaw/workspace/.memory/index.sqlite
Respaldarlo con:
- Esquema SQLite para hechos + enlaces de entidades + metadatos de opiniones
- FTS5 de SQLite para recuerdo léxico (rápido, pequeño, offline)
- tabla opcional de embeddings para recuerdo semántico (todavía offline)
El índice siempre es reconstruible desde Markdown.
Retener / Recordar / Reflexionar (bucle operativo)
Retener: normalizar registros diarios en "hechos"
La idea clave de Hindsight que importa aquí: almacenar hechos narrativos y autocontenidos, no fragmentos pequeños. Regla práctica para memory/YYYY-MM-DD.md:
- al final del día (o durante), añadir una sección
## Retaincon 2–5 viñetas que sean:- narrativas (contexto entre turnos preservado)
- autocontenidas (tienen sentido por sí solas más tarde)
- etiquetadas con tipo + menciones de entidades
Ejemplo:
## Retain
- W @Peter: Actualmente en Marrakech (27 nov – 1 dic, 2025) para el cumpleaños de Andy.
- B @warelay: Arreglé el fallo WS de Baileys envolviendo los manejadores connection.update en try/catch (ver memory/2025-11-27.md).
- O(c=0.95) @Peter: Prefiere respuestas concisas (<1500 caracteres) en WhatsApp; el contenido largo va a archivos.
Análisis mínimo:
- Prefijo de tipo:
W(mundo),B(experiencia/biográfico),O(opinión),S(observación/resumen; usualmente generado) - Entidades:
@Peter,@warelay, etc (los slugs se mapean abank/entities/*.md) - Confianza de opinión:
O(c=0.0..1.0)opcional
Si no quieres que los autores piensen en ello: el trabajo de reflexión puede inferir estas viñetas del resto del registro, pero tener una sección explícita ## Retain es la "palanca de calidad" más fácil.