amem

A camada de memória para ferramentas de codificação de IA. Local-first, semântica, 9 ferramentas MCP com consolidação e escopo de projeto. Funciona com Claude Code, Cursor, Windsurf e qualquer cliente MCP.

Documentação

amem

amem

A camada de memória para ferramentas de codificação com IA.
Diga ao seu IA uma vez — ele lembra em todos os lugares.

npm CI MIT MCP Node 18+


🎯 97,8% R@5⚡ ~14ms p50🛠 33 Ferramentas🔒 100% Local
LongMemEval-S, 500qPipeline de recall completoKit de memória completoSem nuvem necessária

Início Rápido · Como Funciona · Benchmarks · Ferramentas · Painel · Arquitetura


💡 O Problema

Toda ferramenta de IA começa do zero. Toda sessão. Toda ferramenta.

- You: "Don't use 'any' in TypeScript"     → told Claude 3 times. Copilot still doesn't know.
- You: "We chose PostgreSQL over MongoDB"   → explained in Cursor. Claude has no idea.
+ With amem: tell it once, every AI tool remembers — forever.
Veja em ação
You (in Claude Code):  "Don't use any type in TypeScript"
  └─ amem stores this as a correction (priority 1.0, confidence 100%)

You (switch to Copilot): starts coding
  └─ Copilot already knows — amem feeds it the same correction

You (open Cursor): "What do you remember about TypeScript?"
  └─ Instantly recalls: "Don't use any type" + all related preferences

Sem nuvem. Sem chaves de API. Um único arquivo SQLite. Tudo permanece na sua máquina.


🚀 Início Rápido

Claude Code (recomendado)

/plugin marketplace add amanasmuei/amem
/plugin install amem

GitHub Copilot CLI

copilot plugin marketplace add amanasmuei/amem
copilot plugin install amem
📦 Cursor / Windsurf / Qualquer Cliente MCP
npm install -g @aman_asmuei/amem
amem-cli init      # Detects & configures all installed AI tools
amem-cli rules     # Generates extraction rules for proactive memory use

Ou adicione manualmente à sua configuração MCP:

{
  "mcpServers": {
    "amem": {
      "command": "npx",
      "args": ["-y", "@aman_asmuei/amem"]
    }
  }
}

Verifique se funciona:

amem-cli stats     # Should show "0 memories" initially

💬 Diga ao seu IA: "Lembre-se: sempre use TypeScript estrito, nunca use o tipo any"

🔄 Inicie uma nova sessão: "O que você lembra sobre TypeScript?" — ele recorda instantaneamente.


🧬 Desenvolvido por amem-core

amem é o servidor MCP. O mecanismo de recuperação vive em @aman_asmuei/amem-core.

     Claude Code / Copilot / Cursor / any MCP client
                        │
                        │ MCP (stdio)
                        ▼
        ┌──────────────────────────────────┐
        │  @aman_asmuei/amem  (this pkg)   │
        │  33 Tools · 7 Resources · 2 Prompts
        │  CLI · Hooks · Dashboard         │
        └───────────────┬──────────────────┘
                        │ imports
                        ▼
        ┌──────────────────────────────────┐
        │  @aman_asmuei/amem-core          │
        │  Embeddings · HNSW · Recall      │
        │  Knowledge Graph · Reflection    │
        │  97.8% R@5 on LongMemEval-S      │
        └───────────────┬──────────────────┘
                        ▼
              ┌────────────────────┐
              │  SQLite + WAL      │
              │  ~/.amem/memory.db │
              └────────────────────┘
Por que dois pacotes?
PacoteFunçãoInstalação
@aman_asmuei/amem (este)Servidor MCP + CLI + hooksnpm i -g @aman_asmuei/amem
@aman_asmuei/amem-coreBiblioteca TS pura, zero dependências MCPnpm i @aman_asmuei/amem-core

O mesmo mecanismo alimenta amem (servidor MCP), aman-agent (CLI), aman-tg (bot do Telegram) e qualquer aplicativo Node ao qual você der memória. Melhorias na recuperação chegam via amem-core. Mudanças nas ferramentas MCP chegam via amem. Eles têm versionamento independente.

O destaque de 97,8% R@5 é a qualidade do mecanismo de amem-core (LongMemEval-S, nível de sessão, 500 perguntas, zero chamadas de API) — exatamente o que você obtém, seja chamando via MCP ou importando a biblioteca diretamente.


⚙️ Como Funciona

amem captura conhecimento em três camadas — do totalmente automático ao totalmente manual:

CamadaComoO que faz
AutomáticaHooks de ciclo de vidaCaptura observações de ferramentas, extrai automaticamente correções/decisões/padrões ao final da sessão
Impulsionada por IARegras de extraçãoSeu IA chama proativamente memory_store quando você o corrige, toma decisões ou expressa preferências
ManualLinguagem natural"Lembre-se: usamos PostgreSQL" ou "Esqueça a memória do Redis"

Tipos de Memória

PrioridadeTipoExemplo
1.0correção"Não faça mock do banco de dados em testes de integração"
0.85decisão"Escolhemos Postgres em vez de Mongo por ACID"
0.7padrão"Prefere retornos antecipados a aninhamentos"
0.7preferência"Usa pnpm, não npm"
0.5topologia"O módulo de autenticação fica em src/auth/"
0.4fato"API lançada em janeiro de 2025"

Correções sempre aparecem primeiro — são as restrições rígidas do seu IA.

🔄 Camadas de Memória e Validade Temporal

Camadas de Memória

CamadaComportamento
NúcleoSempre injetada no início da sessão (~500 tokens). Suas correções mais críticas.
TrabalhoEscopo da sessão, exibida automaticamente para a tarefa atual.
ArquivoPadrão. Pesquisável, mas não injetada automaticamente.

Validade Temporal

Memórias não são para sempre. Quando os fatos mudam:

  • Memórias antigas são expiridas (não excluídas) — preservadas para "o que era verdade em março?"
  • Contradições são detectadas automaticamente — armazenar uma nova decisão expira automaticamente a antiga
  • Consulte qualquer ponto no tempo com memory_since
🧠 Loop de Memória Auto-Evolutiva

Sua memória não apenas armazena — ela aprende com sua própria estrutura. Chame memory_reflect para acionar o mecanismo de reflexão:

memory_reflect → Analyzes your entire memory graph
  │
  ├─ Clusters related memories (HNSW neighbor graph)
  ├─ Detects contradictions (negation pairs, numerical, low-overlap)
  ├─ Identifies synthesis candidates
  ├─ Surfaces knowledge gaps (topics with sparse recall)
  └─ Returns a structured report with suggested actions

O loop de evolução:

  1. Refletirmemory_reflect agrupa suas memórias e encontra padrões
  2. Sintetizar — A IA mescla clusters relacionados em princípios de ordem superior via memory_store
  3. Vincularmemory_relate conecta sínteses às memórias de origem (rastreadas via linhagem de síntese)
  4. Repetir — a cada ciclo, o grafo se torna mais coerente e abstrato

O sistema sugere automaticamente quando a reflexão é necessária (>7 dias ou >50 novas memórias desde a última execução).

📊 Como é o relatório de reflexão
# Memory Reflection Report
Analyzed 127 memories in 12ms
Health Score: 68/100

## Stats
- Clusters: 8 (avg size: 4.2)
- Clustered: 34 | Orphans: 93
- Contradictions: 2
- Synthesis candidates: 3
- Knowledge gaps: 4

## Contradictions Found
⚠ Opposing language detected (23d apart, 87% similar)
  A: a1b2c3d4 "Always use semicolons in JavaScript..."
  B: e5f6g7h8 "Never use semicolons in JavaScript..."
  → Expire older memory a1b2c3d4 — newer supersedes it

## Synthesis Candidates
### cluster-0 (4 patterns)
  "These 4 related memories form a cluster about 'typescript, types':
  [patterns]:
    - 'Always use strict TypeScript types'
    - 'Prefer strict null checks'
    - 'Use unknown instead of any'
    - 'Enable strictNullChecks in tsconfig'

  Synthesize into a higher-order principle..."

## Knowledge Gaps
- "kubernetes deployment" — asked 3x, avg 25% confidence
- "database migration strategy" — asked 2x, avg 0% confidence

📈 Benchmarks

Precisão de Recall (LongMemEval)

Todos os números de amem-core v0.5.1 — o mecanismo de recuperação que alimenta este servidor MCP. Zero chamadas de API, tudo local, totalmente reproduzível.

LongMemEval-S (nível de sessão) — métrica principal

MétricaPontuação
R@195,0%
R@397,0%
R@5🏆 97,8%
R@1099,0%

500 perguntas · apenas CPU · zero chamadas de API

LongMemEval Oracle (nível de turno)

MétricaPontuação
R@166,2%
R@390,8%
R@594,6%
R@1097,5%

479 perguntas pontuáveis · 301s de execução · Node 22

Pipeline: bge-small-en-v1.5 bi-encoder local + ms-marco-MiniLM-L-6-v2 cross-encoder (int8, em lote, ativado por padrão). Consulte benchmarks do amem-core para detalhamentos completos por tipo, evolução do pipeline e notas honestas.

Por que isso importa para a questão "reescrever em Rust". O valor de 10,3ms de rerank acima reflete uma aceleração de ~30% sobre a implementação por par que substituiu — alcançada com ~20 linhas de processamento em lote mais quantização int8, sem reescrita nativa. Os caminhos críticos já eram eficientes; os ganhos restantes vieram de usá-los com mais cuidado. Permanecemos em TypeScript.

Latência de Busca

Pipeline de recall completo (v0.5.1+)

Estágiop50Participação
Embed (bi-encoder)3,0ms22%
Recuperar (HNSW + multiestratégia)0,1ms1%
Rerank (cross-encoder int8)10,3ms74%
Total~14ms100%

Somente índice HNSW (busca vetorial)

MemóriasHNSWForça brutaAceleração
1000,05ms0,10ms2x
1.0000,06ms0,50ms8x
5.0000,08ms2,44ms30x
10.0000,08ms5,35ms67x

Medido: 100 buscas em média, embeddings de 384 dimensões, top-10 resultados.

Sub-0,1ms em qualquer escala — efetivamente O(log n). HNSW é uma dependência opcional; força bruta é usada como fallback quando indisponível.


🛠️ Referência de Ferramentas

Memória Principal (7 ferramentas)

FerramentaDescrição
memory_storeArmazena uma memória com tipo, tags e confiança. Redige automaticamente conteúdo privado e expira contradições automaticamente.
memory_recallBusca semântica — modo compacto por padrão (~10x economia de tokens). Use memory_detail para conteúdo completo.
memory_detailRecupera conteúdo completo por ID após recall compacto.
memory_contextCarrega todo o contexto relevante para um tópico, organizado por tipo com orçamento de tokens.
memory_extractSalva em lote múltiplas memórias da conversa.
memory_forgetExclui por ID ou consulta (com confirmação).
memory_injectExibe correções + decisões + vizinhos do grafo antes de começar a codificar.
Precisão, Histórico, Avançado, Administração, Lembretes e Ferramentas de Manutenção (mais 26)

Precisão e Histórico (5 ferramentas)

FerramentaDescrição
memory_patchEdição cirúrgica em nível de campo com snapshot automático.
memory_versionsVisualiza o histórico completo de edições ou restaura qualquer versão.
memory_searchBusca exata de texto completo via FTS5 com modo compacto.
memory_sinceConsulta temporal com intervalos em linguagem natural (7d, 2w, 1h).
memory_relateConstrói um grafo de conhecimento tipado entre memórias.

Avançado (6 ferramentas)

FerramentaDescrição
memory_multi_recallBusca multiestratégia com modo compacto: semântica + FTS5 + grafo + temporal.
memory_tierMove memórias entre camadas: núcleo / trabalho / arquivo.
memory_expireMarca como não mais válida — preservada para histórico, excluída do recall.
memory_summarizeArmazena resumo estruturado de sessão com decisões, correções e métricas.
memory_historyVisualiza resumos de sessões anteriores.
memory_reflectMecanismo de reflexão auto-evolutivo — agrupa memórias, detecta contradições, identifica candidatos a síntese e expõe lacunas de conhecimento.

Administração e Sincronização (4 ferramentas)

FerramentaDescrição
memory_doctorExecuta diagnósticos de saúde somente leitura no banco de dados amem.
memory_repairRealiza reparos seguros e direcionados no banco de dados amem.
memory_configObtém ou define a configuração do amem com proteções de segurança.
memory_syncImporta ou exporta memórias entre amem e outros sistemas (auto-memória do Claude, instruções do Copilot).

Lembretes (4 ferramentas)

FerramentaDescrição
reminder_setCria lembrete com prazo e escopo opcionais.
reminder_listLista lembretes ativos (ou todos), filtráveis por escopo.
reminder_checkMostra atrasados, de hoje e próximos (7 dias).
reminder_completeMarca como concluído (suporta ID parcial).

Log e Manutenção (7 ferramentas)

FerramentaDescrição
memory_logAcrescenta turnos brutos de conversa (sem perdas, somente acréscimo).
memory_log_recallBusca ou reproduz log por sessão, palavra-chave ou recência.
memory_log_cleanupRemove entradas antigas com retenção configurável.
memory_statsContagens, detalhamento por tipo, distribuição de confiança.
memory_exportExporta como Markdown ou JSON.
memory_importImportação em massa de JSON com deduplicação automática.
memory_consolidateMescla duplicatas, remove obsoletas, promove frequentes, decai inativas.

📖 Guia de Uso

Armazenando Memórias

Linguagem natural (mais fácil)

"Remember: we use PostgreSQL, not MongoDB"
"Store a correction: never use console.log in production"
"Note that the auth module is in src/auth/"

Chamadas explícitas de ferramentas

memory_store({
  content: "Never use 'any' — define proper interfaces",
  type: "correction",
  tags: ["typescript"],
  confidence: 1.0
})

Recuperando Memórias

// Step 1: Compact index — ~50-100 tokens (default)
memory_recall({ query: "auth decisions", limit: 5 })
// -> a1b2c3d4 [decision] Auth service uses JWT tokens... (92%)
// -> e5f6g7h8 [correction] Never store tokens in localStorage... (100%)

// Step 2: Full details only for what you need
memory_detail({ ids: ["a1b2c3d4", "e5f6g7h8"] })
Mais opções de busca
// Multi-strategy: semantic + FTS5 + graph + temporal
memory_multi_recall({
  query: "authentication architecture",
  limit: 10,
  weights: { semantic: 0.4, fts: 0.3, graph: 0.15, temporal: 0.15 }
})

// Exact keyword search (FTS5 syntax)
memory_search({ query: "OAuth PKCE" })
memory_search({ query: '"event sourcing"' })     // phrase match
memory_search({ query: "auth* NOT legacy" })      // boolean

Gerenciando Memórias

Editar, expirar, promover, vincular
// Surgical edit with auto-snapshot for rollback
memory_patch({ id: "a1b2c3d4", field: "content", value: "Updated text", reason: "clarified" })

// View edit history / restore
memory_versions({ memory_id: "a1b2c3d4" })

// Expire (preserve for history, exclude from recall)
memory_expire({ id: "a1b2c3d4", reason: "Migrated to GraphQL" })

// Promote to core tier (always loaded at session start)
memory_tier({ id: "a1b2c3d4", tier: "core" })

// Link related memories (graph builds itself, but you can add manual links)
memory_relate({ action: "relate", from_id: "abc", to_id: "xyz", relation_type: "supports" })

Tipos de relação: supports, contradicts, depends_on, supersedes, related_to, caused_by, implements — ou defina os seus próprios.

Lembretes

Acompanhamento de prazos entre sessões
reminder_set({ content: "Review PR #42", due_at: 1743033600000, scope: "global" })

reminder_check({})
// -> [OVERDUE] Review PR #42
// -> [TODAY] Deploy auth service
// -> [upcoming] Write quarterly report

reminder_complete({ id: "a1b2c3d4" })

Privacidade

Redação automática
// Private blocks stripped before storage
memory_store({
  content: "DB password is <private>hunter2</private>, connect to prod at db.example.com",
  type: "topology", tags: ["database"]
})
// Stored: "DB password is [REDACTED], connect to prod at db.example.com"

// API keys, tokens, passwords auto-redacted by pattern matching
// Configure patterns in ~/.amem/config.json

⚔️ Comparação honesta: amem vs graphify

Clique para expandir — como o amem se compara ao graphify

graphify é o "e quanto a X?" mais comum quando as pessoas encontram o amem. Eles resolvem problemas fundamentalmente diferentes e são genuinamente complementares.

O que cada ferramenta faz

amemgraphify
ResumoMemória persistente entre sessões de IABase de código → grafo de conhecimento
Pergunta central"O que minha IA aprendeu sobre mim?""Como é esta base de código?"
EntradaLinguagem natural (correções, decisões, preferências)Arquivos (código, docs, PDFs, imagens, vídeo)
SaídaMemórias recuperadas classificadas por relevânciaGrafo estrutural + relatório + HTML interativo
PersistênciaSempre — a memória sobrevive entre sessões e ferramentasInstantâneo — graph.json persiste, mas não aprende com o tempo
Quando executaContinuamente, a cada sessãoSob demanda (/graphify .) ou no commit via git hook

Comparação técnica

amemgraphify
RuntimeTypeScript / Node (≥18)Python (≥3.10)
ProtocoloServidor MCP (33 ferramentas, 7 recursos)Skill de IA (comando de barra) + servidor MCP opcional
ArmazenamentoSQLite + FTS5 + WALGrafo NetworkX → arquivo JSON
BuscaEmbeddings semânticos + FTS5 + grafo + reclassificaçãoTravessia de grafo (BFS/DFS) + consulta de nós
Embeddingsbge-small-en-v1.5 local (384-dim)Nenhum — usa topologia de grafo, não similaridade vetorial
Compreensão de códigoNenhuma — armazena o que você informaProfunda — AST tree-sitter para 25 linguagens
MultimodalSomente textoCódigo, docs, PDFs, imagens, vídeo, áudio
LLM necessárioNão (tudo local)Sim para docs/imagens (código é livre de LLM via tree-sitter)
Benchmark97,8% R@5 no LongMemEval-SRedução de 71,5x de tokens vs leitura bruta de arquivos
Suporte a ferramentas de IAClaude Code, Copilot, Cursor, qualquer cliente MCPClaude Code, Codex, Copilot, Cursor, Gemini, Aider, Kiro, +10 mais

Onde cada um vence

amem vence em:

  • Lembrar suas preferências, correções e decisões entre projetos e ferramentas
  • Recuperação semântica — encontrar a memória certa a partir de uma consulta vaga (97,8% R@5)
  • Inteligência temporal — rastrear o que era verdade quando, expirando contradições automaticamente
  • Auto-evolução — o mecanismo de reflexão agrupa, detecta contradições e identifica lacunas
  • Zero dependência de LLM — tudo roda localmente, sem chamadas de API

graphify vence em:

  • Compreender estrutura de código — grafos de chamadas, imports, hierarquias de classes, relações entre arquivos
  • Ingestão multimodal — adicione código, artigos, capturas de tela, vídeos, ele cria grafos de tudo
  • Eficiência de tokens — compressão de 71,5x significa que sua IA lê a estrutura, não arquivos brutos
  • Ampla cobertura de linguagens — 25 linguagens de programação via AST tree-sitter
  • Ampla cobertura de ferramentas de IA — 15+ plataformas com comandos de instalação dedicados

Conclusões honestas

  1. Eles não competem. O amem lembra seu conhecimento (decisões, correções, preferências). O graphify mapeia a estrutura da base de código (grafos de chamadas, dependências, arquitetura). Dados diferentes, padrões de acesso diferentes.

  2. Use ambos se quiser. Execute graphify . para obter um mapa estrutural do seu projeto. Use o amem para lembrar "escolhemos esta arquitetura porque X." O grafo diz à sua IA o que existe. A memória diz por que as coisas são assim.

  3. O graphify tem cobertura de plataforma mais ampla (15+ ferramentas de IA). O amem tem integração mais profunda onde funciona (protocolo MCP com 33 ferramentas, recursos estruturados, prompts).

  4. O graphify precisa de um LLM para arquivos não-código. O amem é totalmente local — sem chamadas de API, sem inferência de modelo além do modelo de embedding local.

  5. A escolha real depende do seu problema. Se sua IA continua esquecendo suas preferências e decisões → amem. Se sua IA não consegue navegar pela base de código eficientemente → graphify. Se ambos → use ambos.


🌐 Compatibilidade de Plataformas

RecursoClaude CodeGitHub Copilot CLICursor / Windsurf / Outros
Instalação de plugin com um comandoSimSim--
33 ferramentas MCPSimSimSim
Skills de IA147--
Hooks de captura automáticaSimSim--
Resumo automático de sessãoSimSim--
Sincronização automática de memóriaSim----
Configuração via CLI (amem-cli init)SimSimSim

Claude Code tem a integração mais profunda (plugin + hooks + sincronização automática de memória). Copilot CLI é um segundo próximo. Outros clientes MCP obtêm o servidor completo com 33 ferramentas via configuração manual.

Skills de IA

Skills disponíveis por plataforma
O que você dizSkillClaude CodeCopilot CLI
"Lembre-se de nunca usar any type"rememberSimSim
"O que você lembra sobre auth?"recallSimSim
"Carregar contexto para esta tarefa"contextSimSim
"Mostrar estatísticas de memória"statsSimSim
"Executar memory doctor"doctorSimSim
"Exportar minhas memórias"exportSimSim
"Listar todas as correções"listSimSim
"Sincronizar minha memória do Claude"syncSim--
"Abrir o painel de memória"dashboardSim--
"Instalar hooks"hooksSim--

🔄 Trabalhando com Auto-Memória do Claude Code

O amem complementa a auto-memória integrada do Claude — ele não a substitui.

Auto-memória do Claudeamem
CapturaAutomática, zero configuraçãoTipada com pontuações de confiança
ArmazenamentoArquivo markdown únicoSQLite com busca, grafo, temporal
RecuperaçãoArquivo inteiro carregado a cada sessãoApenas memórias relevantes são exibidas
HistóricoSobrescrito na atualizaçãoVersionado, validade temporal
BuscaNenhumaSemântica + FTS5 + grafo + reclassificação

Recomendado: Mantenha ambos ativados. Execute amem-cli sync para importar as memórias do Claude para o amem e obter acesso estruturado e unificado.

Sincronização Claude → amem
amem-cli sync              # Import all projects
amem-cli sync --dry-run    # Preview what would be imported
amem-cli sync --project myapp  # Import specific project
Tipo ClaudeTipo amemConfiança
feedbackcorrection1.0
projectdecision0.85
userpreference0.8
referencetopology0.7
Sincronização amem → Copilot

Exporte as memórias do amem para .github/copilot-instructions.md para que o Copilot as leia como contexto persistente:

amem-cli sync --to copilot              # Export to current project
amem-cli sync --to copilot --dry-run    # Preview without writing
amem-cli sync --to copilot --project /path/to/repo

Isso gera markdown estruturado agrupado por prioridade:

  1. Correções (devem ser seguidas) — restrições rígidas
  2. Decisões — escolhas arquiteturais
  3. Preferências — preferências do usuário
  4. Padrões — convenções de codificação
  5. Contexto — topologia + fatos

A seção do amem é envolvida em marcadores <!-- amem:start/end --> — o conteúdo existente que não é do amem no arquivo é preservado.

Sincronização entre ferramentas: Decisões tomadas em sessões do Claude informam automaticamente o Copilot:

Claude Code → amem sync → amem DB → amem sync --to copilot → copilot-instructions.md

📊 Painel & Grafo de Conhecimento

amem-cli dashboard              # Opens at localhost:3333
amem-cli dashboard --port=8080  # Custom port

Painel web completo com:

  • 🔍 Navegador de memórias — busca, filtro por tipo/camada/fonte, ações inline (promover, rebaixar, expirar)
  • 🕸️ Grafo de conhecimento interativo — zoom, pan, clique para focar com destaque de vizinhança, painel de detalhes, busca, arestas direcionais
  • 📈 Análises — distribuição de confiança, detalhamento por tipo, linha do tempo de sessões
  • Lembretes — visualize e gerencie tarefas entre sessões
  • 📋 Pré-visualização do Copilot — veja o que seria exportado para copilot-instructions.md

💻 Referência da CLI

# Setup
amem-cli init                          # Auto-configure AI tools
amem-cli rules                         # Generate extraction rules
amem-cli hooks                         # Install hooks for Claude Code
amem-cli hooks --target copilot        # Install hooks for GitHub Copilot CLI
amem-cli hooks --uninstall             # Remove hooks
amem-cli sync                          # Import Claude auto-memory → amem
amem-cli sync --to copilot             # Export amem → copilot-instructions.md
amem-cli doctor                        # Health diagnostics
amem-cli repair                        # Repair corrupted database from backups

# Dashboard
amem-cli dashboard                     # Web dashboard (localhost:3333)

# Memory operations
amem-cli recall "authentication"       # Semantic search
amem-cli stats                         # Statistics
amem-cli list --type correction        # List by type
amem-cli export --file memories.md     # Export to file
amem-cli forget abc12345               # Delete by short ID
amem-cli reset --confirm               # Wipe all data

🏗 Arquitetura

                        Your AI Tool
           Claude Code / Copilot CLI / any MCP client
                    │                │
                    │ MCP (stdio)    │ Lifecycle Hooks
                    ▼                ▼
          ┌─────────────────────────────────┐
          │   @aman_asmuei/amem             │  ← this package
          │                                 │
          │  33 Tools · 7 Resources · 2 Prompts
          │  Slash commands · CLI · Hooks   │
          │  Config: ~/.amem/config.json    │
          └────────────────┬────────────────┘
                           │ imports
                           ▼
          ┌─────────────────────────────────┐
          │   @aman_asmuei/amem-core        │  ← the engine
          │                                 │
          │  Multi-Strategy Retrieval       │
          │  [HNSW] + [FTS5] + [Graph] + [Temporal]
          │       + query expansion         │
          │       + cross-encoder reranker   │
          │                                 │
          │  Self-Evolving Reflection       │
          │  [Clustering] + [Contradictions]│
          │  + [Synthesis] + [Gap Detection]│
          │                                 │
          │  Embeddings: bge-small-en-v1.5  │
          │  Reranker: ms-marco-MiniLM int8 │
          │  97.8% R@5 on LongMemEval-S     │
          └────────────────┬────────────────┘
                           │
                           ▼
          ┌─────────────────────────────────┐
          │   SQLite + WAL + FTS5           │
          │   ~/.amem/memory.db             │
          │                                 │
          │   memories       (tiered)       │
          │   conversation_log (raw)        │
          │   memory_versions (history)     │
          │   memory_relations (graph)      │
          │   synthesis_lineage             │
          │   knowledge_gaps                │
          │   session_summaries             │
          │   reminders                     │
          └─────────────────────────────────┘

O servidor MCP amem é um wrapper fino em torno de amem-core. O mecanismo de recuperação, embeddings, grafo de conhecimento, reflexão — tudo vive em amem-core e tem versão independente. Bug na integração MCP? Republique amem. Melhoria na recuperação? Republique amem-core. Sem acoplamento.

Fórmula de Classificação

score = relevance x 0.45 + recency x 0.2 + confidence x 0.2 + importance x 0.15
FatorComo funciona
RelevânciaSimilaridade de cosseno via índice HNSW; fallback de palavras-chave com expansão de consulta
RecênciaDecaimento exponencial (0.995^hours)
ConfiançaReforçada por confirmação repetida (0-1)
ImportânciaBaseada em tipo: correções 1.0 ... fatos 0.4

A pontuação aditiva garante que nenhum fator baixo isolado elimine a classificação.


⚙️ Configuração

Variáveis de ambiente
VariávelPadrãoDescrição
AMEM_DIR~/.amemDiretório de armazenamento
AMEM_DB~/.amem/memory.dbCaminho do banco de dados
AMEM_PROJECT(auto do git)Sobrescrita de escopo do projeto
Arquivo de configuração (~/.amem/config.json)

Criado automaticamente com padrões:

{
  "retrieval": {
    "semanticWeight": 0.4,
    "ftsWeight": 0.3,
    "graphWeight": 0.15,
    "temporalWeight": 0.15,
    "rerankerEnabled": true
  },
  "privacy": {
    "enablePrivateTags": true,
    "redactPatterns": ["..."]
  },
  "tiers": {
    "coreMaxTokens": 500,
    "workingMaxTokens": 2000
  },
  "hooks": {
    "enabled": true,
    "captureToolUse": true,
    "captureSessionEnd": true
  }
}
📋 Histórico de versões

v0.23.0 — Painel de Grafo de Conhecimento Interativo

Explorador de grafo em largura total com zoom/pan, clique para focar com destaque de vizinhança, painel de detalhes com navegação de relações, busca e filtro, arestas direcionais, layout dirigido por força. Ferramentas de administração (doctor, repair, config, sync). 255 testes em 18 suítes.

v0.19.0 — Loop de Memória Auto-Evolutiva

Mecanismo de reflexão com agrupamento baseado em HNSW, detecção de contradição em 3 camadas (negação + numérica + baixa sobreposição), candidatos de síntese com rastreamento de linhagem, detecção de lacunas de conhecimento, pontuação de utilidade, aviso de acionamento automático em memory_inject. Novas tabelas de banco: synthesis_lineage, knowledge_gaps, reflection_meta. Migração v5.

v0.18.0 — Divulgação Progressiva e Escala

Índice vetorial HNSW (67x mais rápido em 10k), modo compacto padrão na recuperação/busca, CLI de reparo de banco, segurança de acesso concorrente, extrator heurístico de conversas, extração automática no fim da sessão.

v0.13.0 — Recuperação de Classe Mundial

Embeddings bge-small-en-v1.5, pontuação aditiva, expansão de consulta, grafo de conhecimento com relação automática, injeção ciente de grafo, amem doctor, benchmarks de CI.

v0.9.x — Inteligência Temporal

Validade temporal, expiração automática de contradições, recuperação multi-estratégia, reclassificação cross-encoder, camadas de memória, tags de privacidade, hooks de ciclo de vida, resumos de sessão, painel, sistema de configuração.

v0.7.0 — v0.8.0

Importação/exportação, decaimento de confiança, cache de embeddings, segurança multi-processo, CLI de configuração automática, painel.

v0.1.0 — v0.5.x

Armazenamento/recuperação central, embeddings locais, SQLite + WAL, consolidação, escopo de projeto, lembretes, registro de conversas, grafo de conhecimento, FTS5, divulgação progressiva.


🧰 Pilha Tecnológica

CamadaTecnologia
ProtocolMCP SDK ^1.25
LanguageTypeScript 5.6+, strict mode
DatabaseSQLite + WAL + FTS5
EmbeddingsHuggingFace bge-small-en-v1.5 (local, 80MB) + HNSW vector index
Rerankingms-marco-MiniLM-L-6-v2 (default-on, int8, batched, local)
ValidationZod 3.25+ with .strict() schemas
TestingVitest — 281 tests across 19 suites + recall benchmarks
CI/CDGitHub Actions, npm publish on release

🤝 Contribuindo

git clone https://github.com/amanasmuei/amem.git
cd amem && npm install
npm run build   # zero TS errors
npm test        # 281 tests pass

PRs devem passar no CI antes do merge. Veja Problemas para tarefas em aberto.



Feito com ❤️ na 🇲🇾 Malásia por Aman Asmuei

GitHub npm Issues

Licença MIT · Dê uma estrela ⭐ se o amem salvar sua IA da amnésia