Dando memória para o agente de IA

No post anterior falei sobre como comecei a usar agentes de IA para programar. Desde então não parei, e um problema ficou cada vez mais evidente: o agente esquece tudo toda vez que você fecha o terminal.

Toda nova sessão começa do zero. Você re-explica o projeto, re-conta as decisões que tomou na semana passada, re-orienta o agente sobre o que estava fazendo. É frustrante — e caro, porque IA cobra por quantidade de texto processado.


O problema dos tokens

Quando você abre o OpenCode (ou qualquer agente de IA) num projeto, ele precisa ler os arquivos do seu código para entender o que está acontecendo. Um projeto médio, com uns 40 arquivos, pode gastar cerca de 20.000 tokens só pra o agente se orientar — antes de você fazer qualquer pergunta.

Se você trabalha num projeto assim e abre 10 sessões por dia, são 200.000 tokens desperdiçados com o agente "reaprendendo" algo que já sabia ontem.

Além disso, tem a amnésia entre sessões. Você gastou meia hora explicando a arquitetura do projeto, as regras de negócio, o que estava tentando resolver. Fechou o terminal. No dia seguinte: zero. Começa de novo.


A solução que encontrei

Encontrei um projeto do @lucasrosati chamado claude-code-memory-setup que resolve exatamente isso. A ideia central é simples: usar o Obsidian como a "memória de longo prazo" do agente.

O Obsidian é um aplicativo gratuito de anotações em Markdown. Mas o que importa aqui não é a interface bonita — é que ele funciona com arquivos locais, pode ser versionado no git, e tem um protocolo chamado MCP que permite que o agente leia e escreva notas diretamente nele.

A outra parte da solução é o Graphify, uma ferramenta que transforma o seu código-fonte num mapa de conhecimento. Em vez do agente ler todos os arquivos do projeto toda vez, ele consulta esse mapa — que é gerado uma vez e atualizado só quando necessário.

O resultado? Em vez de 20.000 tokens para se orientar, o agente usa cerca de 280. Uma redução de quase 70 vezes.


A adaptação para o OpenCode

O projeto original foi feito para o Claude Code, que é outra ferramenta de agente. Como uso o OpenCode, precisava adaptar.

O Claude Code usa um arquivo chamado CLAUDE.md para receber instruções. O OpenCode usa AGENTS.md. Mas a diferença maior é que o OpenCode tem recursos nativos que tornam a solução mais elegante: comandos customizados e skills.

Em vez de instruções de texto espalhadas num arquivo de configuração, criei dois comandos reais que aparecem no terminal com autocomplete:

  • /retomar — lê as últimas sessões salvas no vault e carrega o contexto do projeto
  • /salvar — escreve uma nota estruturada no vault com o que foi feito na sessão atual
  • /setup — roda uma vez quando você começa a trabalhar num projeto novo, verifica se tudo está configurado certo

Isso elimina os scripts Python e os cron jobs que o projeto original precisava. O MCP do Obsidian já faz a comunicação diretamente.


Como fica na prática

O fluxo do dia a dia ficou assim:

$ opencode                 # abre o agente

/setup                     # na primeira vez num projeto novo
                           # verifica vault, AGENTS.md e Graphify

/retomar                   # carrega contexto das sessões anteriores
                           # o agente já sabe o que estava sendo feito

[trabalha no projeto]      # agente usa o mapa do Graphify
                           # em vez de re-ler os arquivos

/salvar                    # persiste a sessão no vault
                           # cria uma nota com o que foi feito

O agente não precisa mais ser re-explicado. Ele lê o vault, entende o estado do projeto, e continua de onde parou.


O repositório

Empacotei tudo isso num repositório público chamado ia-brain, disponível no Codeberg. A ideia é que qualquer pessoa possa clonar e instalar com um único comando:

git clone https://codeberg.org/gomes-fdr/ia-brain.git
cd ia-brain
./install.sh

O instalador pergunta onde fica o seu vault do Obsidian, faz backup da configuração existente, e instala tudo nos lugares certos.

O repositório também inclui uma coleção de skills reutilizáveis — comportamentos que o agente aprende uma vez e usa em qualquer projeto, como gerar commits no padrão Conventional Commits ou organizar notas no Obsidian segundo as convenções Zettelkasten.

Todo o crédito pela ideia original vai para o @lucasrosati. O ia-brain é uma adaptação, não uma invenção.


Ainda estou aprendendo a trabalhar com agentes de forma produtiva. Mas tirar a amnésia do OpenCode foi um passo importante — agora pelo menos ele lembra quem eu sou quando abro o terminal de manhã.