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:

CamadaPropósitoAnalogia Humana
Grafo de ConhecimentoEntidades e fatos sobre o mundoMemória declarativa
Notas DiáriasTimeline crua de eventosMemória episódica
Conhecimento TácitoPadrões e preferênciasMemó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:

CampoPropósito
categoryrelationship, milestone, status, preference, context
statusactive ou superseded
supersededByAponta para fato que substituiu este
relatedEntitiesReferências cruzadas (o que faz ser um grafo)
lastAccessed/accessCountUsado 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 é incrementado
  • lastAccessed é definido para hoje
Tiers de Recência

Durante a reescrita semanal do resumo, fatos são ordenados em três tiers:

TierCritérioTratamento
HotAcessado nos últimos 7 diasProeminente no summary.md
WarmAcessado 8-30 dias atrásIncluído com menor prioridade
ColdNão acessado em 30+ diasOmitido 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:

  1. Escaneia conversas recentes para nova informação
  2. Extrai fatos duráveis (relacionamentos, mudanças de status, marcos, decisões)
  3. Escreve esses fatos na entidade apropriada no grafo
  4. Atualiza notas diárias com entradas de timeline
  5. 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:

ModoUso
Full-text (BM25)Quando sabe o que procura
Similaridade vetorialQuando não sabe a frase exata
Consulta combinadaPadrã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:

  1. Carregar todos os fatos ativos de items.json
  2. Ordenar por tier de recência (Hot → Warm → Cold)
  3. Dentro de cada tier, ordenar por accessCount (decrescente)
  4. Escrever fatos Hot e Warm em summary.md
  5. 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
PropriedadeBenefício
Separação de responsabilidadesCada camada tem função clara
Degradação graciosaSe extração falhar, ainda está nas notas diárias
Sem perda de informaçãoRegra de não-deleção + sistema de arquivo
Eficiência de contextoRecuperação em camadas evita estourar contexto
Ciclo de vida naturalEntidades 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
  1. Crie a estrutura de diretórios. PARA folders e index.md.

  2. Escolha uma entidade. Um projeto ativo e uma pessoa importante. Crie summary.md e items.json.

  3. Adicione notas diárias. Arquivos markdown datados. Não precisam ser bonitos.

  4. Automatize extração depois. Faça manualmente na primeira semana para construir intuição.

  5. 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.