memory-lean

Memória de longo prazo para agentes de codificação de IA que não consome a janela de contexto. Um substituto direto para o servidor de memória de referência, com respostas cerca de 40 vezes menores. Um único arquivo, zero dependências.

Documentação

memory-lean icon

memory-lean

Memória de longo prazo para agentes de codificação de IA que não queima a janela de contexto.

npm version npm downloads tests zero dependencies node 18 or newer MIT license

Início rápido · O que o agente vê · Por que ele permanece enxuto · Ferramentas · Protocolo do agente · Configurações · Contribuindo


memory-lean é um servidor MCP que dá ao Claude Code, Claude Desktop, Cursor e qualquer outro cliente MCP um grafo de conhecimento que persiste entre sessões. Ele é um substituto direto para o servidor de memória de referência (@modelcontextprotocol/server-memory): mesmo arquivo memory.jsonl, mesmos nove nomes de ferramentas, mais dois extras. O que muda é o quanto as ferramentas enviam de volta.

Chamada, em um grafo real de 237 entidadesServidor de referênciamemory-lean
read_graph~77.800 tokens~2.000 tokens40× menor
search_nodes (média de 5 palavras comuns)~31.000 tokens~770 tokens40× menor

Um arquivo. Sem dependências. Nada para compilar.

Início rápido

Claude Code: instale o plugin. Ele adiciona o servidor, uma skill com as instruções do agente e um lembrete curto no início de cada sessão.

/plugin marketplace add zamansheikh/memory-lean
/plugin install memory-lean@memory-lean

Qualquer outro agente: adicione o servidor à configuração MCP do agente e dê a ele as instruções.

{
  "mcpServers": {
    "memory": { "command": "npx", "args": ["-y", "memory-lean"] }
  }
}
npx -y memory-lean --protocol >> AGENTS.md   # into the rules file your agent reads

O arquivo de configuração e seu formato exato variam conforme o agente.

A configuração copiar-e-colar para cada agente está em docs/SETUP.md:

AgenteConfiguração do servidorInstruções
Claude Codepluginincluídas no plugin
Xiaomi MiMo Codemimocode.jsoncskill ou AGENTS.md
opencodeopencode.jsonAGENTS.md
OpenAI Codex CLIcodex mcp addAGENTS.md
Cursor.cursor/mcp.jsonAGENTS.md ou uma regra
VS Code (Copilot).vscode/mcp.jsoncopilot-instructions.md
Gemini CLIsettings.jsonGEMINI.md
Windsurfmcp_config.jsonuma regra
Clinecline_mcp_settings.json.clinerules/
Zedsettings.jsonAGENTS.md ou .rules
IDEs JetBrainsconfigurações do AI Assistantuma regra ou diretrizes
Claude Desktopclaude_desktop_config.jsoninstruções do projeto

O grafo é criado na primeira gravação em ~/.claude/memory-graph/memory.jsonl, independentemente de qual agente grava nele, para que vários agentes possam compartilhar uma única memória. Defina MEMORY_FILE_PATH para mantê-lo em outro lugar.

Executar a partir de um clone em vez de npm
git clone https://github.com/zamansheikh/memory-lean.git
claude mcp add --scope user memory -- node /absolute/path/to/memory-lean/server/memory-lean.mjs

Nenhum npm install é necessário.

O que o agente vê

O servidor de referência responde a uma busca com cada entidade correspondente por completo, como JSON formatado. memory-lean responde com uma lista classificada de nomes e as linhas que corresponderam:

> search_nodes { "query": "deploy" }

57 match "deploy", top 10 shown (narrow the query or raise limit). open_nodes for full entities.
- shop-backend [service] 12 obs, 6 rel
    › 2026-03-02: deployed 2.4.0 to production
    › deploy with scripts/release.sh, never by hand
- PENDING shop-backend 2.4.0 [pending] 2 obs, 3 rel
    › …mobile apps still call the old endpoint until the deploy of 2.4.0 reaches them

O agente então abre apenas o que precisa:

> open_nodes { "names": ["shop-backend"] }

## shop-backend [service]
- NestJS API behind api.example.com
- 2026-03-02: deployed 2.4.0 to production

## relations
shop-app -talks_to-> shop-backend
PENDING shop-backend 2.4.0 -blocks-> shop-app

Esse é o padrão completo: buscar, depois abrir.

Por que ele permanece enxuto

Um grafo de conhecimento só é útil se o agente puder se dar ao luxo de olhá-lo, e um grafo ao qual cada sessão adiciona cresce sem limite. memory-lean limita tanto o que retorna quanto o que armazena.

LimiteO que significa
Respostas pequenassearch_nodes retorna no máximo 10 nomes com trechos, read_graph retorna um índice de nomes, e apenas open_nodes retorna entidades completas.
Fatos curtosUma observação com mais de 300 caracteres é rejeitada, com uma mensagem dizendo ao agente para dividi-la ou colocar o detalhe no repositório.
Um teto por entidadeUma entidade mantém 15 observações. Além disso, as mais antigas com data são movidas para archive/<entity>.md ao lado do grafo. Nada é excluído: o agente pode listar e restaurá-las, e observações sem data (os fatos de identidade) sempre permanecem.
Busca multipalavra que funcionaCada palavra deve corresponder em algum lugar da entidade, então adicionar uma palavra restringe o resultado. O servidor de referência procura a consulta como uma frase exata única.

E ele é cuidadoso com o arquivo:

SalvaguardaO que significa
Seguro para compartilharOs gravadores usam um arquivo de bloqueio, para que várias sessões de agente possam usar um grafo sem sobrescrever umas às outras. Cada gravação substitui o arquivo atomicamente.
Backups diáriosUma cópia vai para backups/ uma vez por dia; os últimos 7 são mantidos.
Linhas danificadas são mantidasUma linha que não pode ser lida é movida para memory.jsonl.unreadable na próxima gravação e relatada, nunca descartada silenciosamente.
Arquivos simplesO grafo é JSON lines, os arquivos são Markdown, os backups são cópias. Você pode ler, usar grep e editar tudo manualmente.

Meça no seu próprio grafo

A partir de um clone deste repositório:

node tools/bench.mjs                  # read_graph + your five most common words
node tools/bench.mjs deploy "api v2"  # your own queries

É somente leitura e imprime tamanhos, nunca conteúdo. Tokens são estimados como caracteres ÷ 4. Uma busca estreita que corresponde a uma ou duas entidades economiza muito menos, porque havia pouco para aparar.

Ferramentas

FerramentaO que retorna
search_nodesLista classificada de nomes de entidades com contagens e até dois trechos correspondentes cada. Cada palavra deve corresponder ao nome, tipo, uma observação ou o tipo de uma relação que toca a entidade.
open_nodesAs entidades completas que você nomeia, como texto compacto, com todas as relações que as tocam. Nomes desconhecidos retornam com sugestões "você quis dizer".
read_graphUm índice: nomes de entidades agrupados por tipo, com contagens de observações. Nunca as observações.
create_entitiesCria entidades; nomes existentes são ignorados.
create_relationsCria relações entre entidades existentes; duplicatas são ignoradas.
add_observationsAdiciona fatos a uma entidade, aplicando o limite de comprimento e o teto por entidade.
rename_entityRenomeia uma entidade, mantendo suas observações, relações e arquivo. Não está no servidor de referência.
archived_observationsLista o que foi arquivado para uma entidade, opcionalmente filtrado, e pode restaurar observações escolhidas. Não está no servidor de referência.
delete_observationsRemove observações por texto exato.
delete_relationsRemove relações específicas.
delete_entitiesRemove entidades e todas as relações que as tocam.

As três ferramentas de leitura são marcadas como somente leitura, para que clientes que suportam isso possam executá-las sem perguntar.

Ensine seu agente a usá-lo

Um servidor de memória só ajuda se o agente o lê antes de trabalhar e grava nele quando algo muda. docs/AGENT-PROTOCOL.md é um conjunto pronto de instruções: o que consultar no início de uma tarefa, o que registrar, como nomear coisas e o que nunca armazenar. O plugin do Claude Code o inclui. Para todos os outros agentes, um comando o instala:

npx -y memory-lean --protocol >> AGENTS.md     # into a rules file: always on
npx -y memory-lean --skill .agents/skills      # as an Agent Skill: loaded when relevant

Ajuste os tipos de entidade e nomes nele para o seu próprio trabalho.

Vindo do servidor de memória de referência

Aponte MEMORY_FILE_PATH para seu memory.jsonl existente e troque o comando. O formato do arquivo é idêntico, então você pode voltar a qualquer momento. Observações existentes com mais de 300 caracteres são mantidas como estão; apenas novas gravações são verificadas.

Para ver o que em um grafo existente está acima do orçamento e, opcionalmente, corrigir:

npx -y memory-lean --lint      # report only
npx -y memory-lean --compact   # back up, then move overflow to archive/

Configurações

Todas opcionais, definidas como variáveis de ambiente no servidor:

VariávelPadrãoSignificado
MEMORY_FILE_PATH~/.claude/memory-graph/memory.jsonlOnde o grafo vive
MEMORY_OBS_MAX_CHARS300Observação mais longa aceita
MEMORY_OBS_MAX15Observações por entidade antes que as mais antigas com data sejam arquivadas
MEMORY_SEARCH_LIMIT10Número padrão de resultados de busca
MEMORY_BACKUPS_KEPT7Backups diários mantidos

Bom saber

  • Seu grafo é privado. Ele guarda o que seu agente aprendeu sobre seus projetos. Mantenha-o fora do git e nunca armazene senhas, chaves ou tokens nele: registre onde um segredo vive, não seu valor.
  • A busca é correspondência de texto simples, não embeddings. Nomes de entidades bons importam mais do que consultas inteligentes.

Roadmap

  • Um plugin do Claude Code que instala o servidor e o protocolo do agente juntos
  • Configuração pronta para MiMo Code, Codex, Cursor e outros agentes
  • Guias de configuração para Cline, Zed e IDEs JetBrains
  • Windows na matriz de CI
  • rename_entity, mantendo relações intactas
  • Uma maneira de listar e restaurar observações arquivadas
  • Listagens no registro MCP e no diretório de plugins do Claude Code
  • Busca em observações arquivadas de todas as entidades

Contribuindo

Ideias, relatórios de bugs e pull requests são bem-vindos. O servidor inteiro é um arquivo sem dependências, e npm test roda em cerca de um segundo, então uma primeira mudança é rápida de fazer. CONTRIBUTING.md tem o layout, as regras básicas e uma lista de boas primeiras contribuições.

Se você experimentar memory-lean no seu próprio grafo, a saída de tools/bench.mjs é um post de issue útil. E se ele economizar tokens para você, uma ⭐ ajuda outras pessoas a encontrá-lo.

Suporte

memory-lean é gratuito e licenciado sob MIT. Se for útil para você, você pode apoiar o trabalho:

Buy Me a Coffee Ko-fi

Autor

Criado e mantido por Zaman Sheikh na Silifton.

GitHub X LinkedIn Website

Construído sobre o formato de arquivo e nomes de ferramentas do servidor de memória de referência do Model Context Protocol.

Licença

MIT © 2026 Zaman Sheikh. Livre para usar, modificar e compartilhar, inclusive comercialmente; mantenha o aviso de direitos autorais.