3

Construí uma memória compartilhada para o Claude Code (open source, self-hosted)

Uso o Claude Code o dia todo, em vários repositórios e em três máquinas (notebook, desktop e uma VPS). A memória dele é por pasta de projeto: abriu uma sessão em outro lugar, ele não sabe nada do que aprendeu antes. Eu vivia explicando de novo qual servidor roda o quê, como chegar no banco de produção sem ser bloqueado e o que já tinha sido corrigido. E ele repetia tentativas que já tinham falhado.

Por isso escrevi o Hippocampus, um servidor MCP de memória que eu mesmo hospedo. Todas as sessões, em qualquer máquina, leem e gravam no mesmo lugar.

Como funciona

  • Memórias em Markdown. É o mesmo formato que o Claude Code já usa para a memória local, então as notas antigas entram como estão. O SQLite é só um índice: dá para apagar e reconstruir com hippocampus sync --full.
  • Busca híbrida. BM25 (FTS5 do SQLite) para termos exatos, embeddings locais (ONNX, modelo multilíngue, sem chave de API) para significado, fundidos por Reciprocal Rank Fusion. Por cima, um salto pelos links [[outra-memoria]] escritos à mão.
  • Status por memória: active, pending, resolved, superseded. O que foi resolvido continua encontrável, mas cai no ranking e chega marcado com a data, para o modelo tratar como histórico.
  • Hooks do Claude Code. Um busca na memória a cada prompt e injeta as notas relevantes antes de o Claude começar. Outro, no fim da sessão, lê a conversa, fecha pendências que foram feitas e grava fatos novos.

Por que BM25 junto com vetores

Nota de infraestrutura é cheia de token exato: porta 5432, flag --force, nome de host. Embedding costuma perder isso. O BM25 acha exatamente esses termos, e o vetor acha o resto pelo sentido. Vetor por seção ##, e não por arquivo, evita que uma nota longa vire uma média borrada de vários assuntos.

"Este backup depende daquele disco" é uma relação que a similaridade não descobre sozinha. Quando alguém (eu ou o Claude) escreve o link, a busca segue um salto e traz a nota vizinha. Um salto só, de propósito, para o resultado não se espalhar.

Uso real

Rodo numa VPS pequena (1 GB de RAM) há algumas semanas: são mais de 987 memórias em 43 projetos. A mesma memória funciona no claude.ai como conector personalizado, inclusive no celular. Desde ontem a VPS também revisa as pendências sozinha toda madrugada e só fecha o que tem prova citada.

Limitações

  • É memória pessoal: um token por servidor, sem multiusuário.
  • Os hooks automáticos existem só para o Claude Code. Outros clientes MCP recebem as ferramentas, mas precisam chamá-las por conta própria.
  • Está na versão 0.4.0

Código (MIT), com instalação local em uns 5 minutos: https://github.com/marcelinollima/hippocampus

Queria ouvir de quem usa agentes no dia a dia: como vocês resolvem memória entre projetos e máquinas?

Carregando publicação patrocinada...