---
title: "Memoria del agente"
description: "Memoria duradera del agente sobre el usuario y el proyecto: remember escribe notas legibles, recall respeta el presupuesto, search deduplica antes."
---

# Memoria del agente

La memoria del agente en Notarium no es magia oculta ni una base de datos aparte: son notas corrientes de la clase `agent-memory`, que el agente escribe a partir de sus observaciones y que tú puedes leer, corregir y borrar. El agente guarda hechos mediante `remember_about_user` y `remember_about_project`, y recupera contexto mediante `recall`. La disciplina clave es **buscar antes de escribir**, para no generar duplicados.

## Dos ejes: sobre el usuario y sobre el proyecto

La memoria vive en dos ejes ortogonales:

- **Sobre el usuario** — `remember_about_user` escribe hechos de larga duración sobre ti (preferencias, contexto, trabajo actual) en la memoria privada de tu dominio personal. Es la misma memoria sin importar en qué espacio trabajes: no se mezcla en cada espacio.
- **Sobre el proyecto** — `remember_about_project` escribe memoria sobre un proyecto concreto en su subdirectorio. Es simétrico a escribir sobre el usuario, pero ligado al proyecto.

Ambos ejes usan la clase `agent-memory`. El agente **no elige** ni la clase, ni la carpeta, ni el espacio: es la propia herramienta la que impone todo eso. El conocimiento compartido que debe vivir en el árbol del proyecto como `user-doc` lo escribe una herramienta aparte, [`create_note`](/docs/agents/intent-tools/), no «remember».

## Un archivo por categoría, no un archivo por observación

`remember_about_user(observation, category)` **añade** la observación al archivo de la categoría en lugar de generar un microarchivo por cada hecho. `category` es una etiqueta («preferences»), no una ruta. Una categoría nueva significa un archivo nuevo. El `summary` opcional es un resumen de una línea de la categoría, que alimenta el índice derivado del perfil.

Corregir o borrar un solo hecho registrado es simplemente editar una nota corriente: `edit_note` por el id de la nota de memoria (que devuelve `remember_*`) en modo `findReplace` (un `content` vacío elimina el fragmento) o en modo `replace` para toda la categoría. No hay un «direccionamiento por observación» aparte: la memoria se edita con los mismos modos basados en palabras que cualquier nota.

## recall ≠ search

Ambas herramientas leen, pero resuelven problemas distintos:

| | `search` | `recall` |
|---|---|---|
| Qué devuelve | fragmentos ordenados con `score` y `path` | un paquete de contexto coherente dentro de un presupuesto de tokens |
| Alcance | notas relevantes | notas relevantes **más** sus vecinas en el grafo (`depth` saltos por el grafo) |
| Memoria | ve la memoria (para deduplicar) | recupera del conocimiento y de la memoria personal |
| Cuándo llamarla | encontrar algo concreto, comprobar antes de escribir | armar contexto en torno a un tema para trabajar |

`recall` es más rico: recorre el grafo alrededor de lo que encontró y empaqueta el resultado dentro de `budgetTokens`, mientras que `maxPerSource` evita que una nota grande se coma todo el paquete. `search` es preciso: es el mecanismo mismo que hay detrás de «buscar antes de escribir».

## Buscar antes de escribir

La memoria es la única clase sin protección contra duplicados por título, así que `search` deliberadamente **cubre también la memoria del agente**. Busca siempre antes de escribir: esto deduplica tanto el conocimiento como la memoria.

> [!tip] La disciplina de la deduplicación
> Antes de `remember_*`, llama a `search` sobre el tema del hecho. Si la categoría ya existe, añade a ella mediante el mismo `remember_*` (que añade) o corrígela con `edit_note`, en lugar de crear un sinónimo.

## Qué ve el propietario

La memoria está **oculta de la navegación normal** (el árbol, el Feed, la búsqueda corriente), pero no está escondida de ti: se ve a través de una lente **Memory** dedicada en el árbol del explorador (las notas se abren como cualquier otra, en `/m/<id>`), y puedes silenciar una categoría en **Agents → Context**. La entrada del [registro de revisiones](/docs/concepts/versioning/) muestra exactamente lo que el agente registró: así es como detectas cualquier cosa que una inyección haya podido colar. No puedes reorganizar la memoria: la sección es propiedad del agente (un conjunto plano más un índice derivado), pero moverla de sitio es técnicamente seguro, porque la identidad va en el id de la nota.

## Siguiente

- [Conjuntos de contexto y pins](/docs/agents/context-pins/) — cómo silenciar una categoría de memoria y qué se carga al arrancar.
- [Auditoría de recuperación](/docs/agents/audit/) — qué buscó el agente mediante `search`/`recall` y si lo encontró.
- [Herramientas de intención](/docs/agents/intent-tools/) — el conjunto completo de herramientas.
