---
title: "Memória do agente"
description: "Memória durável do agente sobre o usuário e o projeto: remember grava notas legíveis, recall respeita o orçamento, search deduplica antes de gravar."
---

# Memória do agente

A memória do agente no Notarium não é mágica escondida nem um banco à parte: são notas comuns da classe `agent-memory`, que o agente escreve a partir de suas observações e que você pode ler, corrigir e apagar. O agente guarda fatos por meio de `remember_about_user` e `remember_about_project`, e puxa contexto por meio de `recall`. A disciplina central é **buscar antes de gravar**, para não criar duplicatas.

## Dois eixos: sobre o usuário e sobre o projeto

A memória vive em dois eixos ortogonais:

- **Sobre o usuário** — `remember_about_user` grava fatos duradouros sobre você (preferências, contexto, trabalho atual) na memória privada do seu domínio pessoal. É a mesma memória em qualquer espaço em que você trabalhe — ela não é misturada a cada espaço.
- **Sobre o projeto** — `remember_about_project` grava memória sobre um projeto específico no subdiretório dele. Simétrico à gravação sobre o usuário, mas atrelado ao projeto.

Ambos os eixos usam a classe `agent-memory`. O agente **não escolhe** nem a classe, nem a pasta, nem o espaço: a própria ferramenta impõe tudo isso. O conhecimento compartilhado que deve viver na árvore do projeto como `user-doc` é gravado por uma ferramenta separada, [`create_note`](/docs/agents/intent-tools/), e não pelo "remember".

## Um arquivo por categoria, não um arquivo por observação

`remember_about_user(observation, category)` **anexa** a observação ao arquivo da categoria em vez de criar um microarquivo para cada fato. `category` é um rótulo ("preferences"), não um caminho. Uma nova categoria significa um novo arquivo. O `summary` opcional é um resumo de uma linha da categoria que alimenta o índice derivado do perfil.

Corrigir ou apagar um único fato registrado é apenas editar uma nota comum: `edit_note` pelo id da nota de memória (retornado por `remember_*`) no modo `findReplace` (um `content` vazio remove o trecho) ou no modo `replace` para toda a categoria. Não existe um "endereçamento por observação" separado — a memória é editada com os mesmos modos baseados em palavras de qualquer nota.

## recall ≠ search

As duas ferramentas leem, mas resolvem problemas diferentes:

| | `search` | `recall` |
|---|---|---|
| O que retorna | trechos ranqueados com `score` e `path` | um pacote de contexto coerente dentro de um orçamento de tokens |
| Escopo | notas relevantes | notas relevantes **mais** seus vizinhos no grafo (`depth` saltos pelo grafo) |
| Memória | enxerga a memória (para deduplicar) | puxa do conhecimento e da memória pessoal |
| Quando chamar | achar algo específico, verificar antes de gravar | montar contexto em torno de um tema para trabalhar |

`recall` é mais rico: percorre o grafo ao redor do que encontrou e empacota o resultado dentro de `budgetTokens`, enquanto `maxPerSource` impede que uma nota grande consuma o pacote inteiro. `search` é preciso: é justamente o mecanismo por trás do "buscar antes de gravar".

## Buscar antes de gravar

A memória é a única classe sem proteção contra duplicatas por título, então o `search` deliberadamente **abrange também a memória do agente**. Sempre busque antes de gravar: isso deduplica tanto o conhecimento quanto a memória.

> [!tip] A disciplina de deduplicação
> Antes de `remember_*`, chame `search` sobre o tema do fato. Se a categoria já existir, anexe a ela pelo próprio `remember_*` (ele anexa) ou conserte-a com `edit_note`, em vez de criar um sinônimo.

## O que o dono vê

A memória fica **oculta da navegação normal** (a árvore, o Feed, a busca comum), mas não está escondida de você: ela é visível por uma lente **Memory** dedicada na árvore do explorador (as notas abrem como qualquer outra, em `/m/<id>`), e você pode silenciar uma categoria em **Agents → Context**. A entrada no [registro de revisões](/docs/concepts/versioning/) mostra exatamente o que o agente registrou — é assim que você pega qualquer coisa que uma injeção possa ter enfiado ali. Você não pode reorganizar a memória: a seção pertence ao agente (um conjunto plano mais um índice derivado), mas movê-la de lugar é tecnicamente seguro — a identidade se apoia no id da nota.

## Próximo

- [Conjuntos de contexto e fixações](/docs/agents/context-pins/) — como silenciar uma categoria de memória e o que carrega na inicialização.
- [Auditoria de recuperação](/docs/agents/audit/) — o que o agente buscou via `search`/`recall` e se encontrou.
- [Ferramentas de intenção](/docs/agents/intent-tools/) — o conjunto completo de ferramentas.
