MemRosetta -- motor de memória de longo prazo local para ferramentas de IA
(github.com/obst2580)Ao usar ferramentas de IA para programação (Claude Code, Cursor, Codex, Gemini etc.), o contexto se perde sempre que a sessão muda.
A arquitetura decidida ontem, o resultado da depuração da semana passada, o estilo de código que eu prefiro — é preciso explicar tudo de novo a cada vez.
MemRosetta é um motor de memória de longo prazo local para resolver esse problema.
Instalação em uma linha:
npm install -g memrosetta && memrosetta init --claude-code
Como funciona
Ele armazena todas as memórias em um único arquivo SQLite local (~/.memrosetta/memories.db). Claude Code, Cursor,
Codex e Gemini compartilham o mesmo banco de dados, então memórias salvas em uma ferramenta podem ser buscadas em outra.
Em vez de dividir documentos em pedaços de texto (chunk) como no RAG tradicional, ele armazena em unidades de memória atômica (atomic memory).
Um fato corresponde a um registro.
// Sessão de segunda-feira — Claude chama automaticamente o MCP durante a conversa
store({
"content": "A autenticação foi definida como OAuth2 + PKCE",
"memoryType": "decision",
"keywords": ["auth", "oauth2", "pkce"]
})
// Nova sessão de terça-feira — Claude faz a busca via MCP
search({ "query": "auth" })
→ [0.95] A autenticação foi definida como OAuth2 + PKCE (decision, 2026-03-31)
→ [0.82] O rate limit da API é 100req/min por usuário (fact, 2026-03-31)
→ [0.41] UI da página de login concluída (event, 2026-03-28)
Mesmo com 100 memórias acumuladas, ele combina correspondência por palavras-chave + similaridade semântica + pontuação de ativação ACT-R e retorna apenas as
5 mais relevantes. É como o cérebro humano recupera memórias relacionadas — lembranças evocadas com frequência ficam mais fáceis
de recuperar, e as que não são usadas por muito tempo se tornam naturalmente mais fracas, mas não desaparecem.
Principais recursos
- Busca híbrida: correspondência por palavras-chave com FTS5 + similaridade semântica vetorial + fusão por Convex Combination
- Detecção de contradições: um modelo NLI local (71MB) detecta automaticamente contradições entre fatos novos e memórias existentes e as conecta por relações
- Esquecimento adaptativo: baseado no modelo ACT-R da ciência cognitiva. Memórias buscadas com frequência ganham pontuação de ativação, e memórias não usadas
enfraquecem naturalmente (não são apagadas) - Modelo temporal: cada memória tem 4 timestamps — quando foi armazenada, quando a conversa aconteceu, o momento real do evento,
e o momento de invalidação - Grafo de relações:
updates,extends,derives,contradicts,supports— conecta memórias entre si - LLM não necessário: o motor principal roda localmente sem chamadas a APIs externas. Tanto os embeddings (33MB) quanto o NLI (71MB) são locais
Integração por ferramenta
memrosetta init --claude-code # Claude Code: hooks + CLAUDE.md + MCP
memrosetta init --cursor # Cursor: MCP + .cursorrules
memrosetta init --codex # Codex: config.toml + AGENTS.md
memrosetta init --gemini # Gemini: settings.json + GEMINI.md
Por meio do MCP (Model Context Protocol), a IA armazena e busca memórias diretamente durante a sessão. No caso do Claude Code,
durante a sessão o próprio Claude salva via MCP (qualidade máxima, custo $0), e no encerramento da sessão um Stop Hook funciona como rede de segurança para complementar
o que tiver sido perdido.
Comparação com concorrentes
Soluções existentes de memória para IA, como Mem0, Zep e Letta, são baseadas em nuvem e dependem de LLM. O MemRosetta
funciona com um único SQLite local, e recursos como detecção de contradições, modelo de esquecimento ACT-R, modelo temporal e grafo de relações
não existem nas soluções atuais.
- GitHub: https://github.com/obst2580/memrosetta
- Site: https://memrosetta.liliplanet.net
- npm:
npm install -g memrosetta - 696+ testes, licença MIT
1 comentários
Olá, acho que é uma boa ideia.
Por acaso vocês não pensam em separar por projeto?