Memória para IA: Como Construir um Sistema de Conhecimento Pessoal com PARA e QMD
Aprenda a criar memória persistente para seu assistente de IA usando o método PARA, fatos atômicos e busca semântica com QMD. Baseado no artigo de Nat Eliason.
A maioria dos assistentes de IA tem memória de peixe dourado. Cada conversa começa do zero. Você repete constantemente quem são seus colegas, o que está construindo, como prefere as coisas. Este guia apresenta uma arquitetura de memória real para seu assistente pessoal, baseado no sistema descrito por Nat Eliason.
O Problema da Memória de IA
Plataformas oferecem “memória”, mas são rasas: uma lista plana de fatos sem estrutura, sem hierarquia, sem decaimento. Se você quer um assistente que funcione como um chefe de gabinete, não um chatbot, precisa de arquitetura de memória real.
As Três Camadas
O sistema separa memória em três camadas distintas:
| Camada | Propósito | Analogia Humana |
|---|---|---|
| Grafo de Conhecimento | Entidades e fatos sobre o mundo | Memória declarativa |
| Notas Diárias | Timeline crua de eventos | Memória episódica |
| Conhecimento Tácito | Padrões e preferências | Memória procedural |
Camada 1: Grafo de Conhecimento (PARA)
O núcleo do sistema é uma árvore de diretórios organizada usando o método PARA de Tiago Forte:
life/
├── projects/ # Trabalho ativo com metas/prazos
│ └── <nome>/
│ ├── summary.md
│ └── items.json
├── areas/ # Responsabilidades contínuas
│ ├── people/<nome>/
│ └── companies/<nome>/
├── resources/ # Tópicos de interesse, referência
│ └── <topico>/
├── archives/ # Itens inativos
├── index.md
└── README.md
Por Que PARA?
PARA oferece quatro categorias que cobrem tudo:
Projects (Projetos) — Trabalho ativo com objetivo ou prazo. Um lançamento de produto, um projeto de escrita, uma reforma. Quando termina, vai para Archives.
Areas (Áreas) — Responsabilidades contínuas sem data de fim. Pessoas que você conhece, empresas com que trabalha, papéis que desempenha. Persistem.
Resources (Recursos) — Material de referência e tópicos de interesse. Coisas que pode precisar depois mas não está trabalhando ativamente.
Archives (Arquivos) — Itens inativos de qualquer categoria acima. Nada é deletado — apenas movido aqui quando não está mais ativo.
Recuperação em Camadas
Cada entidade tem dois arquivos:
- summary.md — Visão geral concisa. O agente carrega primeiro para contexto rápido.
- items.json — Array de fatos atômicos. Só carregado quando precisa de detalhes granulares.
Essa abordagem mantém janelas de contexto enxutas. Na maioria das vezes, o resumo é suficiente.
Schema de Fatos Atômicos
Cada fato em items.json segue um schema consistente:
{
"id": "entity-001",
"fact": "Entrou na empresa como CTO em março de 2025",
"category": "milestone",
"timestamp": "2025-03-15",
"source": "2025-03-15",
"status": "active",
"supersededBy": null,
"relatedEntities": ["companies/acme", "people/jane"],
"lastAccessed": "2026-01-28",
"accessCount": 12
}
Campos importantes:
| Campo | Propósito |
|---|---|
| category | relationship, milestone, status, preference, context |
| status | active ou superseded |
| supersededBy | Aponta para fato que substituiu este |
| relatedEntities | Referências cruzadas (o que faz ser um grafo) |
| lastAccessed/accessCount | Usado para decaimento de memória |
Regra de Não-Deleção
Fatos nunca são deletados. Quando algo muda, o fato antigo é supersedido e um novo é criado. Isso significa que você sempre tem histórico completo — pode rastrear como um relacionamento evoluiu, quando o escopo de um projeto mudou, ou quando alguém trocou de papel.
Camada 2: Notas Diárias
memory/
├── 2026-01-28.md
├── 2026-01-29.md
├── 2026-01-30.md
└── 2026-01-31.md
Notas diárias são a timeline crua — a camada “quando”. Capturam o que aconteceu em cada conversa sem preocupação com estrutura ou categorização.
O agente escreve em notas diárias continuamente durante conversas. São bagunçadas, cronológicas e completas. Pense como um log de trabalho.
Durante extração periódica, fatos duráveis são extraídos das notas diárias e escritos no grafo de conhecimento. As notas diárias são mantidas como fonte de verdade da timeline.
Camada 3: Conhecimento Tácito
A terceira camada é um único arquivo que captura como o usuário opera — não fatos sobre o mundo, mas fatos sobre o usuário:
- Preferências de comunicação (ferramentas, formatos, verbosidade)
- Padrões de estilo de trabalho (como faz brainstorm, toma decisões)
- Preferências de ferramentas e workflows
- Regras e limites que o agente deve seguir
Esta camada muda lentamente. É atualizada quando o agente nota um novo padrão — não a cada conversa.
Decaimento de Memória
Memória humana não trata todos os fatos igualmente — informação recente e frequentemente acessada é mais disponível. O sistema implementa isso através de pesos de recência.
Rastreamento de Acesso
Toda vez que um fato é usado em uma conversa:
accessCounté incrementadolastAccessedé definido para hoje
Tiers de Recência
Durante a reescrita semanal do resumo, fatos são ordenados em três tiers:
| Tier | Critério | Tratamento |
|---|---|---|
| Hot | Acessado nos últimos 7 dias | Proeminente no summary.md |
| Warm | Acessado 8-30 dias atrás | Incluído com menor prioridade |
| Cold | Não acessado em 30+ dias | Omitido do summary.md |
Importante: Fatos cold não são deletados — permanecem em items.json e podem ser recuperados via busca a qualquer momento. Acessar um fato cold o “reaquece” para Hot.
Resistência por Frequência
Fatos com alto accessCount resistem ao decaimento. Um fato que você referencia toda semana por seis meses permanece warm mesmo se pular algumas semanas.
Extração Automatizada: Heartbeats
O sistema usa um processo de heartbeat — uma tarefa periódica em background que:
- Escaneia conversas recentes para nova informação
- Extrai fatos duráveis (relacionamentos, mudanças de status, marcos, decisões)
- Escreve esses fatos na entidade apropriada no grafo
- Atualiza notas diárias com entradas de timeline
- Atualiza metadados de acesso em fatos referenciados
Heurísticas de Criação de Entidades
Nem todo substantivo merece sua própria pasta. Regras simples:
- Criar entidade se: mencionado 3+ vezes, tem relacionamento direto com você, ou é projeto/empresa significativo
- Caso contrário: apenas capture em notas diárias
A Camada de Busca: QMD
Uma base de conhecimento é tão boa quanto sua capacidade de encontrar coisas. Conforme o número de entidades cresce, abordagens ingênuas param de escalar.
QMD é uma ferramenta de indexação e recuperação local que senta em cima da base de arquivos. Indexa arquivos markdown em banco SQLite e oferece três modos de busca:
| Modo | Uso |
|---|---|
| Full-text (BM25) | Quando sabe o que procura |
| Similaridade vetorial | Quando não sabe a frase exata |
| Consulta combinada | Padrão - mescla ambos com reranking |
Configuração de Collections
# O grafo de conhecimento
qmd collection add ~/life --name life --mask "**/*.md"
# Notas diárias
qmd collection add ~/clawd/memory --name memory --mask "**/*.md"
# Workspace do agente
qmd collection add ~/clawd --name clawd --mask "*.md"
Como o Agente Usa
# Encontrar fatos sobre pessoa específica
qmd search "papel da Maria na Acme" -c life
# Busca semântica
qmd vsearch "aquela conversa sobre estratégia de preços"
# Busca combinada com reranking
qmd query "quando o escopo do projeto mudou"
QMD retorna trechos rankeados com caminhos de arquivo e números de linha. O agente carrega apenas o relevante.
Mantendo o Índice Atualizado
# Re-indexar todas as collections
qmd update
# Re-indexar e git pull primeiro
qmd update --pull
# Reconstruir embeddings vetoriais
qmd embed
Síntese Semanal
Uma vez por semana, arquivos summary.md são reescritos a partir de fatos ativos:
- Carregar todos os fatos ativos de
items.json - Ordenar por tier de recência (Hot → Warm → Cold)
- Dentro de cada tier, ordenar por
accessCount(decrescente) - Escrever fatos Hot e Warm em
summary.md - Omitir fatos Cold do resumo (permanecem em items.json)
Resultado: summary.md sempre reflete seu modelo mental atual de uma entidade, não seu histórico completo.
Por Que Isso Funciona
| Propriedade | Benefício |
|---|---|
| Separação de responsabilidades | Cada camada tem função clara |
| Degradação graciosa | Se extração falhar, ainda está nas notas diárias |
| Sem perda de informação | Regra de não-deleção + sistema de arquivo |
| Eficiência de contexto | Recuperação em camadas evita estourar contexto |
| Ciclo de vida natural | Entidades fluem naturalmente entre estados |
Implementando com OpenClaw
O OpenClaw já suporta grande parte dessa arquitetura:
Estrutura Existente
~/clawd/
├── MEMORY.md # Conhecimento tácito
├── memory/ # Notas diárias
│ ├── 2026-01-30.md
│ └── 2026-01-31.md
├── SOUL.md # Personalidade do agente
└── USER.md # Informações sobre o usuário
Adicionando PARA
Crie a estrutura de grafo de conhecimento:
mkdir -p ~/life/{projects,areas/people,areas/companies,resources,archives}
echo "# Life Knowledge Graph" > ~/life/index.md
Configurando QMD
# Instalar QMD
pip install qmd
# Adicionar collections
qmd collection add ~/life --name life --mask "**/*.md"
qmd collection add ~/clawd/memory --name memory
# Indexar
qmd update
qmd embed
Heartbeat para Extração
No HEARTBEAT.md do OpenClaw:
## Extração de Memória (a cada 4 heartbeats)
1. Revisar conversas recentes
2. Identificar fatos duráveis sobre pessoas/projetos/empresas
3. Criar/atualizar entidades em ~/life/
4. Atualizar índice QMD
Começando Hoje
Crie a estrutura de diretórios. PARA folders e index.md.
Escolha uma entidade. Um projeto ativo e uma pessoa importante. Crie summary.md e items.json.
Adicione notas diárias. Arquivos markdown datados. Não precisam ser bonitos.
Automatize extração depois. Faça manualmente na primeira semana para construir intuição.
Adicione decaimento por último. Só vai precisar quando tiver fatos suficientes para resumos ficarem inchados.
Recursos
O sistema é deliberadamente low-tech — arquivos markdown e JSON, backup em git privado. Sem banco de dados, sem ferramentas especiais, sem lock-in de fornecedor. Seu assistente lê e escreve arquivos plain text. Se trocar de assistente amanhã, sua memória vai junto.
Quer implementar esse sistema? O OpenClaw já inclui a estrutura base de memória. Combine com QMD para busca semântica poderosa.