Como funciona a memória no OpenCode? Entenda o que a ferramenta guarda e por quê

A memória no OpenCode é feita de duas coisas que muita gente confunde: as instruções persistentes de projeto, guardadas em arquivos AGENTS.md (na raiz do projeto e no global ~/.config/opencode/AGENTS.md), e a compactação, que gerencia a janela de contexto dentro de uma conversa longa. O AGENTS.md você cria com o comando /init. A compactação roda sozinha e você força com /compact. Memória durável entre sessões diferentes não é recurso oficial: vem de plugins da comunidade. Bora entender cada parte 🙂
Você abre o OpenCode, trabalha uma hora numa feature, e do nada bate a dúvida: o que essa ferramenta realmente lembra?
É uma pergunta boa, e a resposta engana muita gente
Quando a gente fala de memória no OpenCode, na verdade estamos falando de duas coisas bem diferentes que costumam ser jogadas no mesmo balde
Uma é o que o agente lembra de propósito entre sessões, as instruções fixas do seu projeto
A outra é como ele lida com uma conversa que ficou longa demais e ameaça estourar a janela de contexto
São mecanismos separados, com arquivos e comandos próprios. Bora destrinchar os dois
O que ‘memória’ significa no OpenCode
Antes de sair configurando qualquer coisa, vale entender o mapa
Formação Vibe Coding
Do Prompt ao Produto: Crie Software Real com IA
- 474 aulas
- 20 projetos
- 39h 27min
Existem dois conceitos aqui, e confundir eles é a raiz de metade da frustração de quem acha que o OpenCode ‘esquece’ as coisas
O primeiro é a memória intencional entre sessões: aquilo que você quer que o agente sempre saiba sobre o projeto, não importa quantas vezes você feche e abra a ferramenta. Isso vive nos arquivos AGENTS.md
O segundo é o gerenciamento de contexto dentro de uma sessão: o que acontece quando a conversa cresce tanto que não cabe mais inteira na janela do modelo. Isso é a compactação (compaction)
Um é sobre lembrar de propósito
O outro é sobre não perder o fio da meada numa conversa gigante
Entendendo essa divisão, o resto do post fica fácil. Se liga
AGENTS.md: as instruções que o OpenCode sempre carrega
Se você conhece o jeito que outras ferramentas de IA usam um arquivo de regras, o AGENTS.md é bem semelhante
É um arquivo de instruções persistentes que entra no contexto do modelo pra personalizar o comportamento do agente naquele projeto
E ele existe em dois lugares, cada um com um propósito
O AGENTS.md na raiz do projeto guarda as regras específicas daquele repositório: convenções de código, comandos de build, estrutura de pastas, o que for do time
Como ele fica junto do projeto, todo mundo que clona o repo herda essas regras. É a memória compartilhada do time
Já o ~/.config/opencode/AGENTS.md é o arquivo global, aplicado em todas as suas sessões, em qualquer projeto
Esse aqui é pessoal: ele não é commitado no Git nem compartilhado com o time. Por isso a recomendação é usar ele pras suas preferências pessoais, aquele jeitão que você gosta de trabalhar e que não faz sentido impor pros outros
Os dois se combinam: o global vale pra tudo, o do projeto entra por cima com o que é específico dali
Quer a documentação oficial na fonte? Está no OpenCode docs de rules
Como criar o AGENTS.md com o comando /init
Você não precisa escrever esse arquivo na unha. O OpenCode tem um comando pra isso
- Rode
/initdentro do OpenCode, na raiz do projeto
/init
Ele vai escanear os arquivos importantes do repositório, montar comandos de build, lint e test, mapear a estrutura, e pode até te fazer perguntas direcionadas pra entender melhor o projeto
- Deixe ele fazer as perguntas e responda o que ele pedir
Quanto mais contexto ele coletar agora, menos você vai ter que corrigir depois. O resultado é um AGENTS.md já com a cara do seu repo
- Se já existe um
AGENTS.md, rode/initsem medo
O erro comum aqui é achar que o /init vai apagar o trabalho anterior e escrever tudo do zero. Não é isso: quando o arquivo já existe, ele melhora no lugar em vez de substituir. Então rodar de novo depois de mudanças grandes no projeto é seguro e até recomendado
Compactação: como o OpenCode não estoura o contexto em conversas longas
Agora o segundo pilar. E esse aqui é o que salva as conversas longas
Todo modelo tem uma janela de contexto, um limite de quanto texto ele consegue segurar de uma vez. Numa sessão comprida, cheia de código e idas e vindas, você chega nesse teto
A solução do OpenCode se chama compactação (compaction), e ela já vem ativada por padrão
O que ela faz: substitui a parte mais antiga da sessão por um checkpoint. Esse checkpoint é um resumo estruturado, mais uma cauda serializada do contexto recente
Traduzindo: ele pega o começão da conversa (que já rendeu o que tinha que render), condensa num resumo, e mantém intacto o pedaço recente que ainda está quente. Com isso, libera espaço na janela
Um ponto importante pra não gerar susto: a compactação é lossy, ou seja, ela perde parte do detalhe fino ao resumir
Mas ela não apaga as mensagens duráveis anteriores da sessão. O contexto ativo encolhe, o histórico durável continua guardado
Em projetos maiores isso é o que segura a barra: você consegue tocar uma sessão longa sem que o agente colapse por falta de espaço
Como forçar a compactação manualmente (/compact e /summarize)
A compactação roda sozinha, mas às vezes você quer disparar na hora que achar melhor. Dá pra fazer isso
- Use o comando
/compact
/compact
Existe um alias que faz a mesma coisa, o /summarize. Use o que for mais natural pra você
- Ou use o keybind
session_compact
O padrão é <leader>c. Vale lembrar que keybind pode variar conforme a config de cada um, então se o seu estiver diferente, confira suas configurações
- Saiba o que entra no resumo antes de disparar
O resumo gerado pela compactação registra objetivo, detalhes importantes, trabalho concluído e ativo, bloqueios, próximos passos e arquivos relevantes
Ele usa o modelo selecionado da sessão, com as ferramentas desativadas, e tem um teto de 4096 tokens de saída
Quando vale a pena disparar você mesmo? Quando você acabou uma etapa grande e quer ‘fechar o capítulo’ antes de partir pra próxima, garantindo que o resumo pegue o estado num ponto limpo em vez de no meio de uma bagunça
Memória persistente entre sessões: os plugins da comunidade
Depois de tudo isso, cabe um esclarecimento honesto
Memória durável e automática entre sessões TOTALMENTE diferentes não é um recurso oficial nativo do OpenCode. O que é oficial é o AGENTS.md (instruções persistentes) e a compactação (gestão de contexto dentro da sessão)
Quando você quer ir além disso, entram os plugins da comunidade. Existem alguns:
- opencode-agent-memory, do joshuadavidthomas, inspirado no Letta
- opencode-mem, do tickernelz, que usa um banco vetorial local
- Supermemory, que oferece um plugin pro OpenCode
Todos são de terceiros, não recursos oficiais. Então antes de adotar, vale olhar cada um com calma
Quando faz sentido considerar? Quando o AGENTS.md mais a compactação não dão conta do seu fluxo, e você precisa mesmo de uma camada de memória que atravesse sessões independentes de forma automática
Conclusão
No fim, a memória no OpenCode se apoia em dois pilares, e agora eles não se confundem mais na sua cabeça
O AGENTS.md é a memória intencional: o que o agente sempre carrega sobre o projeto (na raiz, pro time) e sobre você (no global, pessoal e não versionado)
A compactação é a gestão de contexto: o que segura as conversas longas sem estourar a janela, resumindo o antigo e mantendo o histórico durável
O próximo passo prático é simples: roda /init no seu projeto pra gerar o AGENTS.md, e define suas regras globais no ~/.config/opencode/AGENTS.md
Começa por aí e já sente a diferença 🙂 até o próximo post!
Perguntas frequentes
O AGENTS.md do projeto vai pro Git e fica visível pra todo o time?
Sim, o AGENTS.md na raiz do projeto é versionado normalmente, então todo mundo que clonar o repo vai receber as mesmas regras automaticamente. É exatamente por isso que ele serve pras convenções do time. Se a regra for só sua, o lugar certo é o arquivo global em ~/.config/opencode/AGENTS.md, que não vai pro Git e não é compartilhado
Tem como o OpenCode lembrar coisas entre sessões diferentes, tipo uma memória contínua?
Nativamente não, o OpenCode não tem memória persistente entre sessões fora do que você coloca no AGENTS.md. Mas existem plugins de terceiros/comunidade que adicionam isso: opencode-agent-memory (de joshuadavidthomas, inspirado no Letta), opencode-mem (de tickernelz, com banco vetorial local) e o Supermemory também oferece plugin pro OpenCode. Todos são projetos de terceiros, não recursos oficiais da ferramenta
A compactação apaga as mensagens antigas da sessão no OpenCode?
Não apaga do histórico durável, mas reduz o contexto ativo. O que acontece é que a parte mais antiga da conversa vira um resumo estruturado no lugar de ficar inteira, então alguns detalhes finos se perdem (a compactação é lossy por design). O histórico durável anterior continua guardado, só a janela de contexto que é aliviada
Qual a diferença entre /compact e /summarize no OpenCode?
Nenhuma. O /summarize é só um alias do /compact, os dois disparam exatamente a mesma operação de compactação. Use o que vier mais natural na hora, o resultado é idêntico
O /init sobrescreve o AGENTS.md se o arquivo já existir?
Não substitui, ele melhora no lugar. Quando o AGENTS.md já existe, o /init atualiza o conteúdo em vez de jogar fora o que estava ali. Isso significa que rodar /init de novo depois de mudanças grandes no repositório é seguro, e até recomendado pra manter as instruções alinhadas com a evolução do projeto
A compactação do OpenCode é automática ou preciso ativar manualmente?
É automática e já vem ativada por padrão, então em conversas longas ela dispara sozinha quando o contexto começa a pesar. Mas você pode forçar na hora que quiser usando /compact (ou /summarize) ou o keybind session_compact, o que é útil quando você quer ‘fechar um capítulo’ num ponto limpo antes de partir pra próxima etapa
Formações
Formação SAAS com IA
Tire usas ideias do papel criando softwares com IA, integre pagamentos e lance seu projeto!
- 291 aulas
- 18 projetos
- 24h 17min
Blog | Mais populares
As diferenças de var, let e const
Como fazer redirecionamento com PHP
Neste artigo você vai aprender a como fazer redirecionamento com PHP, utilizaremos abordagens fáceis de entender e de aplicar Fala programador(a), beleza? Bora aprender mais […]
Checklist de segurança n8n VPS pública: guia essencial para proteger sua instalação
Checklist de segurança n8n VPS pública: guia essencial para proteger sua instalação A popularidade da automação de processos com o n8n está em alta, principalmente […]
