From 0d1fe286ac6ea30b91c15b44c0872b57a864ea7f Mon Sep 17 00:00:00 2001 From: Elvis Claros Castro Date: Mon, 17 Aug 2026 15:12:12 -0300 Subject: =?UTF-8?q?Explorar=20tambi=C3=A9n=20las=20memorias=20de=20los=20p?= =?UTF-8?q?royectos?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Claude Code deja, además de las sesiones, un directorio memory/ por proyecto: un .md por recuerdo con frontmatter, y un MEMORY.md que hace de índice. Lo que no figura en ese índice sigue en disco pero deja de cargarse en contexto, así que la diferencia entre ambos es justamente lo que vale la pena mirar. -m cambia de sesiones a memorias y reusa los mismos verbos: claude-sesiones -m tabla de memorias claude-sesiones -m docker busca en nombre, descripción y cuerpo claude-sesiones -m -s 3 lee la nº 3 (o -s ) claude-sesiones -m --check audita índices, enlaces y orígenes claude-sesiones -m -D 3 la borra y la saca de MEMORY.md claude-sesiones -m --type feedback filtra por tipo declarado --check es la parte con criterio propio: reporta memorias que no están en MEMORY.md, entradas del índice que apuntan a archivos que ya no existen, enlaces [[...]] rotos y sesiones de origen que ya no están. El registro de una memoria usa claves cortas como el de sesiones, por el mismo motivo: viaja embebido en el HTML, que ahora tiene su propia pestaña de memorias. Claude-Session: https://claude.ai/code/session_01RmtZ9qBemrc9TncwVTG6ED --- tests/fixtures.py | 63 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 63 insertions(+) (limited to 'tests/fixtures.py') diff --git a/tests/fixtures.py b/tests/fixtures.py index 9b55c4b..52d5447 100644 --- a/tests/fixtures.py +++ b/tests/fixtures.py @@ -68,3 +68,66 @@ def simple_tree(root): user("hola", at=ts(0, hour=8), cwd="/home/u/otro"), ]) return root + + +# ──────────────────────────────── memorias ──────────────────────────────── + +def write_memory(root, project_dir, name, body="cuerpo", desc=None, + kind="project", origin=None, frontmatter=True): + """Escribe /memory/.md y devuelve su ruta.""" + d = os.path.join(root, project_dir, "memory") + os.makedirs(d, exist_ok=True) + path = os.path.join(d, name + ".md") + + partes = [] + if frontmatter: + campos = ["---", f"name: {name}"] + if desc is not None: + campos.append(f"description: {desc}") + campos += ["metadata:", " node_type: memory", f" type: {kind}"] + if origin: + campos.append(f" originSessionId: {origin}") + campos.append("---") + partes.append("\n".join(campos)) + partes.append(body) + + with open(path, "w", encoding="utf-8") as f: + f.write("\n".join(partes) + "\n") + return path + + +def write_index(root, project_dir, names, extra=()): + """Escribe el MEMORY.md que enlaza esos nombres.""" + d = os.path.join(root, project_dir, "memory") + os.makedirs(d, exist_ok=True) + lines = ["# Memory Index", ""] + for n in list(names) + list(extra): + lines.append(f"- [{n}]({n}.md) — pista de {n}") + path = os.path.join(d, "MEMORY.md") + with open(path, "w", encoding="utf-8") as f: + f.write("\n".join(lines) + "\n") + return path + + +def memory_tree(root): + """Memorias variadas: indexada, sin listar, y un proyecto sin índice.""" + write_memory(root, "-home-u-proj", "deploy-docker", + body="Se despliega con `make up`.\nVer [[roles-db]] y [[no-existe]].", + desc="Cómo se despliega el proyecto", + origin="aaaaaaaa-0000-0000-0000-000000000001") + write_memory(root, "-home-u-proj", "roles-db", body="Roles de la base.", + desc="Roles", kind="reference") + write_memory(root, "-home-u-proj", "suelta", body="No está en el índice.", + desc="Huérfana") + # El índice lista dos reales y una que ya no existe. + write_index(root, "-home-u-proj", ["deploy-docker", "roles-db"], + extra=["borrada-hace-rato"]) + + # Otro proyecto con memoria pero sin MEMORY.md. + write_memory(root, "-home-u-otro", "sin-indice", body="Nadie me indexa.", + desc="Sin índice", kind="user", + origin="ffffffff-0000-0000-0000-00000000000f") + + # Un memory/ vacío no cuenta como proyecto con memoria. + os.makedirs(os.path.join(root, "-home-u-vacio", "memory"), exist_ok=True) + return root -- cgit v1.2.3