context-mem

Otimização de contexto para assistentes de codificação de IA — 99% de economia de tokens via 14 sumarizadores sensíveis ao conteúdo, busca em 3 camadas e divulgação progressiva. Sem dependência de LLM.

Documentação

Context Mem — memory + context infrastructure for AI agents

Context Mem

Infraestrutura de memória + contexto para agentes de IA. Lembra de tudo. Comprime tudo. Totalmente local.

npm version LongMemEval Token savings tools license


O Problema

Dois problemas com as ferramentas de IA atuais que ninguém resolveu juntos em um único pacote.

Sua IA esquece. Cada nova sessão começa do zero. As decisões de arquitetura que você definiu na quinta-feira passada, o bug que você passou quatro horas rastreando até uma variável de ambiente mal configurada, as preferências que você declarou três vezes — nada disso é levado adiante. Você gasta os primeiros dez minutos de cada sessão reexplicando contexto que já existia. Multiplique isso por cada desenvolvedor da sua equipe, cada projeto, cada dia.

Seu contexto explode. Sessões de codificação longas estouram a janela de contexto. Uma sessão típica com 50 saídas de ferramentas acumula 365 KB de texto bruto — stack traces, saída de testes, leituras de arquivos, comandos de shell. Cada token custa dinheiro ou torna o modelo mais lento. A truncagem ingênua descarta exatamente a evidência que o modelo precisa. Manter tudo torna as respostas mais lentas e o custo de inferência sobe rapidamente.

Esses dois problemas se agravam mutuamente. A solução para o esquecimento (manter tudo) é o oposto da solução para a explosão de contexto (descartar tudo). O resultado é um falso trade-off que a maioria das ferramentas impõe a você: ou sua IA esquece tudo, ou seus custos inflam. O context-mem resolve ambos simultaneamente ao construir um armazenamento de memória indexado, comprimido e recuperável, em vez de despejar histórico bruto na janela de contexto.


A Solução — uma ferramenta, dois pilares

Pilar 1: Memória (LLM Wiki)

Cada chamada de ferramenta é automaticamente ingerida, resumida e gravada em um cofre markdown navegável — uma wiki viva que sua IA mantém sobre seu projeto. Entidades ganham suas próprias páginas com backlinks. Tópicos ganham páginas de síntese. Sessões se tornam documentos-fonte navegáveis. Decisões se acumulam em um rastro reconstruível.

O cofre vive em .context-mem/vault/ e sincroniza continuamente a partir do armazenamento SQLite subjacente. Leia-o no Obsidian, use grep no terminal ou consulte-o por meio de 45+ ferramentas MCP usando busca híbrida BM25 + vetorial + avaliador LLM opcional. O armazenamento SQLite bruto é o registro autoritativo; o cofre markdown é a camada derivada e legível por humanos.

Esta é uma implementação de referência do padrão LLM Wiki de Andrej Karpathy — três camadas (fontes brutas / wiki / schema), com ingestão automática de chamadas de ferramentas que nenhum outro sistema fornece.

Pilar 2: Compressão (14 sumarizadores)

Cada observação passa por um sumarizador ciente do conteúdo antes do armazenamento. Um stack trace não é tratado da mesma forma que um arquivo de configuração JSON. A saída de shell de um build é comprimida de forma diferente dos erros do compilador TypeScript. O sistema aplica a compressão certa para o tipo de conteúdo.

O resultado: uma sessão de codificação completa com 50 saídas de ferramentas vai de 365 KB para 3,2 KB — economia de 99,1% em tokens, verificado. A compressão é adaptativa: observações recentes de alta importância permanecem verbatim; as mais antigas e de baixa importância comprimem progressivamente. Entradas fixadas nunca comprimem, independentemente da idade.


Um Comando

npm i context-mem && npx context-mem init

init detecta automaticamente seu editor e grava os arquivos de configuração corretos:

EditorConfiguração gravada
Claude Code.mcp.json + 8 hooks + CLAUDE.md
Cursor.cursor/mcp.json + .cursor/rules/context-mem.mdc
Windsurf.windsurf/mcp.json + .windsurf/rules/context-mem.md
VS Code / Copilot.vscode/mcp.json + .github/copilot-instructions.md
Cline.cline/mcp_settings.json + .clinerules/context-mem.md
Roo Code.roo-code/mcp_settings.json + .roo/rules/context-mem.md
Aider.aider.conf.yml (bloco MCP)
Continue.continue/config.json (bloco MCP)
JetBrains AI.idea/mcp.json

Sem chaves de API. Sem conta na nuvem. Nenhum dado sai da sua máquina.


Dois pilares em 60 segundos

[ placeholder: GIF ou vídeo — sessão do Claude Code com visualização dividida mostrando o gráfico do Obsidian atualizando em tempo real junto com o gráfico de economia de tokens do dashboard do context-mem ]


Arquitetura (implementação de referência do padrão LLM Wiki de Karpathy)

                    ┌─────────────────────────────────────────┐
                    │            Raw Sources (immutable)       │
                    │  tool calls · observations · file reads  │
                    └──────────────────┬──────────────────────┘
                                       │
                                       ▼
                    ┌─────────────────────────────────────────┐
                    │           Observation Pipeline           │
                    │                                          │
                    │  PrivacyEngine (9 detectors)             │
                    │    → 14 content-aware summarizers        │
                    │    → entity extraction (100+ aliases)    │
                    │    → topic detection                     │
                    │    → importance scoring (0.0–1.0)        │
                    │    → adaptive compression tier           │
                    └────────────────┬────────────────────────┘
                                     │
                   ┌─────────────────┴───────────────────┐
                   │                                     │
                   ▼                                     ▼
    ┌──────────────────────────┐       ┌─────────────────────────────┐
    │    SQLite (primary)      │       │   Markdown Vault (derived)  │
    │                          │       │                             │
    │  observations            │──────▶│  .context-mem/vault/        │
    │  entities + graph        │  sync │    index.md                 │
    │  knowledge               │       │    log.md                   │
    │  events                  │       │    sources/<session>.md     │
    │  FTS5 index              │       │    entities/<name>.md       │
    │  vector embeddings       │       │    topics/<name>.md         │
    └──────────────────────────┘       │    knowledge/<id>.md        │
                   │                   └─────────────────────────────┘
                   │
                   ▼
    ┌──────────────────────────────────────────────────────────────┐
    │              Hybrid Retrieval                                │
    │                                                              │
    │  BM25 (8 strategies + synonym expansion)                     │
    │  + Vector (nomic-embed-text-v1.5, 768-dim)                   │
    │  + Trigram + Levenshtein                                     │
    │  → Fusion (intent-adaptive weights, IDF reranker)            │
    │  → Optional LLM judge (Haiku, 50/50 blend, 100% R@5)        │
    └──────────────────────────────────────────────────────────────┘

Três camadas (segundo Karpathy):

  • Fontes brutas — suas saídas de chamadas de ferramentas, leituras de arquivos, comandos de shell, observações. Gravadas uma vez, nunca modificadas. O registro permanente.
  • A wiki — cofre markdown mantido por LLM (.context-mem/vault/). Sincronizado automaticamente do SQLite. Legível por humanos, compatível com Obsidian, amigável a grep. Páginas de entidades, páginas de tópicos, páginas de sessões, páginas de conhecimento, índice, log de eventos.
  • Schema — docs/llm-wiki-schema.md governa a estrutura das páginas, convenções de vinculação, receitas de fluxo de trabalho do agente e o contrato de interoperabilidade. Especificação pública — outras ferramentas podem emitir wikis conformes.

A distinção da maioria dos sistemas de memória: o context-mem não substitui SQLite por markdown. O SQLite é autoritativo — é onde as observações são armazenadas, buscadas e indexadas. O cofre é a superfície navegável, vinculável e diferenciável sobre ele — a camada que um humano ou LLM pode navegar sem um cliente de banco de dados. Se você excluir o diretório do cofre, não perde nada que importe. Se editar uma página do cofre manualmente, essas edições são preservadas e não sobrescritas na próxima sincronização.

Este é o modelo de três camadas de Karpathy aplicado a um ambiente de desenvolvimento de IA em execução: entradas imutáveis, uma camada de síntese mantida e um schema público que governa a síntese. O cofre pode ser usado independentemente das ferramentas MCP — é apenas um diretório de arquivos markdown. Abra-o em qualquer editor. Coloque-o no git. Faça diff entre commits. Use-o como contexto de formato longo copiando e colando páginas em uma nova conversa. As ferramentas MCP são o caminho automatizado; o cofre markdown é o caminho portátil, durável e legível por humanos.


Benchmarks de recuperação (metodologia honesta)

Todas as pontuações são de recall de recuperação em nível de sessão: alguma sessão de evidência correta apareceu nos resultados top-k? Isso é diferente da precisão de QA ponta a ponta (recuperar + gerar + avaliar), que é mais difícil e menor para todos os sistemas. Ambas as medições são publicadas aqui.

Puramente local (zero chamadas de API, totalmente gratuito)

BenchmarkRecall de RecuperaçãoPrecisão QA E2EPerguntasSessões
LongMemEval97,8% R@5publicado pós-v3.4500~53/conv
LoCoMo98,1% R@10publicado pós-v3.41.97719-35/conv
MemBench98,0% R@5—500—
ConvoMem97,7% R@10—250—

Com reranking LLM opcional (~US$ 1 por 500 consultas)

BenchmarkRecall de Recuperação
LongMemEval100,0% R@5 (500/500)

O avaliador LLM (Claude Haiku) pontua os candidatos top-N de BM25+vetorial de 0 a 10 e combina 50/50 com a pontuação de recuperação. Ativa quando ai_curation.enabled = true. Adiciona ~US$ 0,002 por consulta no preço do Haiku.

Notas de metodologia:

  • Um "acerto" é pontuado se qualquer sessão de evidência correta aparecer no top-k. Não é QA ponta a ponta.
  • O benchmark LoCoMo anexa metadados fornecidos pelo conjunto de dados (session_summary, observation, event_summary) aos documentos de sessão — o sistema de produção aplica enriquecimento equivalente via sumarizadores e extração de entidades.
  • Expansões de sinônimos: o construtor de consultas principal inclui sinônimos de vocabulário geral (movie → film, sibling → brother). Resultados sem qualquer expansão de sinônimos são ~1-2% menores.
  • Todo o código de benchmark é aberto e executável: npm run bench. Veja benchmarks/.

Metodologia completa: docs/benchmarks/methodology.md (publicada com a v3.4).


Benchmarks de compressão (verificados)

CenárioBrutoComprimidoEconomia
Sessão de codificação típica (50 saídas de ferramentas)365 KB3,2 KB99,1%

Detalhamento por sumarizador:

SumarizadorTaxa de compressão
Saída de log97%
Erros95%
Shell / CLI~95%
Código92%
JSON89%
Erros do compilador TS~88%
Testes~85%
Saída de build~94%
Logs do git~90%
HTML~92%
Markdown~75%
CSV~80%
Respostas de rede~88%
Binário (dumps hex)~98%

A compressão é sem perdas no nível semântico para observações de alta importância (flags DECISION, MILESTONE, PROBLEM) — essas permanecem verbatim independentemente da idade. A compressão se aplica à saída rotineira de ferramentas.


Recursos principais

Memória

  • Substrato LLM Wiki — cofre markdown em .context-mem/vault/, sincronizado automaticamente do SQLite. Páginas de entidades, páginas de tópicos, páginas-fonte de sessões, páginas de conhecimento, index.md, log.md. Compatível com Obsidian, amigável a grep.
  • 14 sumarizadores cientes de conteúdo — JSON, shell, código, logs, erros, erros TS, testes, builds, logs do git, HTML, markdown, CSV, binário, rede. Cada um ajustado para seu tipo de conteúdo.
  • Compressão adaptativa em 4 níveis — verbatim (0–7 dias) → leve (7–30 dias) → média (30–90 dias) → destilada (90 dias+). Entradas fixadas permanecem verbatim para sempre.
  • Grafo de conhecimento — modelo de relacionamento entidade-tipo: arquivos, módulos, padrões, decisões, bugs, pessoas, bibliotecas, serviços, APIs, configurações. Atravessável via graph_query, graph_neighbors, add_relationship.
  • Fatos temporais — valid_from/valid_to em todas as entradas de conhecimento. Cadeias de substituição. temporal_query responde "o que era verdade sobre X no tempo T?"
  • Reconstrução de trilha de decisões — explain_decision percorre a cadeia de evidências para trás: leituras de arquivos → erros → buscas → a decisão. Proveniência completa.
  • Inteligência de entidades — detecta automaticamente tecnologias, pessoas, caminhos de arquivos, identificadores CamelCase, constantes ALL_CAPS. Mais de 100 aliases canônicos (React.js → React, Node → Node.js, etc.).
  • Narrativas de sessão — 4 modelos prontos: descrição de PR, atualização de standup, ADR, guia de integração. context-mem story --format pr.
  • Primer de despertar — injeção de contexto com orçamento de tokens no início da sessão. 4 camadas: perfil do projeto (15%), conhecimento crítico (40%), decisões recentes (30%), principais entidades (15%).
  • Injeção por prompt — o hook UserPromptSubmit injeta automaticamente memórias relevantes em cada mensagem. Com limite de taxa, deduplicação por tópico. Zero comandos manuais.

Compressão

  • 14 sumarizadores cientes de conteúdo — não é um tamanho único. Um stack trace recebe tratamento diferente de uma resposta JSON.
  • Preservação verbatim fixada — decisões, marcos e observações fixadas manualmente nunca comprimem.
  • Cascata de truncagem por prioridade — se o orçamento de contexto for excedido, itens de menor importância são comprimidos primeiro. Itens de alta importância sobrevivem.
  • Orçamento de tokens configurável — três estratégias de estouro: comprimir os mais antigos, comprimir os de menor importância ou truncar de forma rígida.
  • 365 KB → 3,2 KB — verificado em uma sessão típica de codificação com 50 saídas de ferramentas.

Ambos

  • Busca híbrida — BM25 (8 estratégias + expansão de sinônimos) + vetorial (nomic-embed-text-v1.5, 768-dim) + trigrama + Levenshtein executados em paralelo, fundidos via pesos adaptativos de intenção com reranking de conteúdo ponderado por IDF. Reranker LLM opcional.
  • Resolvedor temporal — análise determinística para consultas de datas relativas ("3 dias atrás", "sábado passado", "semana passada"). Custo zero de LLM. Retorna intervalo de datas absoluto com nível de confiança.
  • 45+ ferramentas MCP — observar, buscar, recordar, perguntar, linha do tempo, grafo de conhecimento, detecção de entidades, consulta temporal, handoff de sessão, coordenação multiagente, orçamento de tokens, dashboard, diagnósticos e mais.
  • Totalmente local, zero nuvem — SQLite na sua máquina. Sem telemetria. Sem chaves de API necessárias para a funcionalidade principal.
  • Mecanismo de privacidade com 9 detectores — remove tags <private>, aplica redações de regex personalizadas, detecta chaves de API, tokens, senhas, padrões de PII. Nada sensível sai da sua máquina.
  • Operações em submilissegundos — classificação de importância a 556K ops/s, extração de entidades a 179K ops/s, busca BM25 a 3,3K ops/s, tudo local.

Como se compara

O espaço de memória tem vários players estabelecidos. O espaço de compressão de contexto tem mais alguns. Nenhuma outra ferramenta aborda ambos os eixos juntos.

context-mem v4Mem0GraphitiZepLetta
Wiki LLM / cofre markdown✅❌❌❌❌
Ingestão automática de chamadas de ferramentas✅❌❌❌❌
Recall de recuperação (local)97,8–98,1% R@knão publicadonão publicadonão publicadonão publicado
Compressão de tokens99,1%❌❌❌parcial
Grafo de conhecimento tipado✅✅✅parcialparcial
Consultas temporais em grafo✅✅✅❌❌
Híbrido BM25 + vetorial + rerank por LLM✅parcial❌parcial❌
Totalmente local (sem nuvem necessária)✅❌❌❌❌
Reconstrução de trilha de decisões✅❌❌❌❌
Saída compatível com Obsidian✅❌❌❌❌
Ferramentas MCP45+algumasalgumasalgumasalgumas
LicençaMITApache/nuvemApacheApacheApache

Notas sobre esta tabela: Os números de recall de recuperação para Mem0, Graphiti, Zep e Letta não são publicados com base nos mesmos benchmarks (LongMemEval, LoCoMo, MemBench, ConvoMem) em nível de sessão, usando metodologia comparável à nossa. Se existirem números publicados em suas documentações, eles se referem a conjuntos de dados diferentes, granularidade diferente (nível de chunk vs. nível de sessão) ou infraestrutura não divulgada. Não os compare diretamente. Os números de QA E2E para context-mem serão publicados com a v3.4. Todas as outras comparações são baseadas em documentação pública de abril de 2026.

A linha "compressão de tokens" merece uma nota: Mem0, Graphiti e Zep são principalmente sistemas de recuperação — eles não afirmam resolver o problema de custo da janela de contexto. Letta tem compressão parcial via sumarização. O número de 99,1% do context-mem foi medido em uma sessão real de codificação (50 saídas de ferramentas, 365 KB → 3,2 KB). A medição é reproduzível: você pode executá-la você mesmo no seu próprio projeto comparando context-mem stats --raw vs context-mem stats --compressed.


Exemplos do mundo real

You: "Why did we choose Postgres over MySQL?"
→ recall returns the exact verbatim quote from March 15 (importance 0.95)
  with the full evidence chain: error → file_read → search → decision

You: "What did Sarah work on last sprint?"
→ browse by person shows 14 observations mentioning Sarah,
  grouped by topic (auth, database, deployment)

You: "What are we about to forget?"
→ predict_loss shows 8 entries at risk: low importance, 45+ days old,
  never accessed. Pin the critical ones before they decay.

You: "Generate a PR description for this branch"
→ context-mem story --format pr assembles changes, decisions,
  resolved issues, and test plan from the current session

You: "What was our database schema in January?"
→ temporal_query returns what was true about the schema at that point
  in time, including since-superseded knowledge

Comece agora

1. Instalação

npm i context-mem && npx context-mem init

init cria a configuração MCP correta para o seu editor. Não é necessário reiniciar a IDE para Claude Code. Para Cursor, Windsurf e VS Code, reinicie a IDE após o init.

2. Configurar MCP (opção manual)

Se preferir configurar manualmente, adicione à sua configuração MCP:

{
  "mcpServers": {
    "context-mem": {
      "command": "npx",
      "args": ["context-mem", "serve"],
      "env": {}
    }
  }
}

Especificamente para Claude Code, init também grava 8 hooks em .claude/settings.json que injetam automaticamente memórias relevantes a cada envio de prompt — sem necessidade de chamadas manuais de observe durante o desenvolvimento normal.

3. Ativar o cofre LLM Wiki (opt-in na v3.4+)

Adicione à sua configuração context-mem (.context-mem/config.json):

{
  "vault": {
    "enabled": true,
    "vaultDir": ".context-mem/vault"
  }
}

O diretório do cofre será populado automaticamente na próxima ingestão de observação. Abra .context-mem/vault/ no Obsidian para navegar pela visualização em grafo do conhecimento do seu projeto.

O cofre é opt-in na v3.4 e será ativado por padrão na v4.0.

4. Painel

context-mem dashboard

Abre uma interface web local em http://localhost:3141 com 6 páginas: Visão Geral de Inteligência, Grafo de Conhecimento, Tópicos, Linha do Tempo, Entidades e Diagnóstico.

5. Benchmarks (execute você mesmo)

npm run bench          # quick mode (all 4 benchmarks, sample sizes)
npm run bench:full     # full benchmarks
npm run bench:e2e-qa   # E2E QA: retrieve → Haiku answer → Haiku judge

Todo o código dos benchmarks é aberto. Sem adaptadores ocultos que inflam números. Veja benchmarks/ e docs/benchmarks/methodology.md.


Referência de ferramentas MCP (45+)

context-mem expõe toda a sua superfície como ferramentas MCP — sem SDK proprietário, sem biblioteca wrapper, sem lock-in. Qualquer host compatível com MCP (Claude Code, Cursor, Windsurf, VS Code, Cline, Roo Code, Aider, Continue, JetBrains AI, CrewAI, LangChain, AutoGen) pode usar essas ferramentas diretamente. Não há ferramentas "premium" atrás de paywall e nenhum recurso que exija assinatura em nuvem. Cada capacidade listada neste README está disponível via interface MCP aberta.

Ferramentas principais de memória:

FerramentaFinalidade
observeArmazenar observação com auto-sumarização, pontuação de importância, extração de entidades, detecção de tópicos
recallRecuperar conteúdo verbatim por filtro (importância, tipo, flag, tempo)
searchBusca híbrida (BM25 + vetorial + juiz LLM opcional)
askPerguntas e respostas em linguagem natural sobre todo o armazenamento de memória
timelineObservações em ordem cronológica reversa com selos de importância e flags
statsEconomia de tokens para a sessão atual (bruto vs. comprimido)

Ferramentas de grafo de conhecimento:

FerramentaFinalidade
save_knowledgeSalvar uma entrada de conhecimento com detecção de contradição + janelas de validade temporal
search_knowledgeBuscar (entradas substituídas são filtradas por padrão)
promote_knowledgePromover para o armazenamento global entre projetos
global_searchBuscar em todos os projetos simultaneamente
resolve_contradictionResolver conflitos de conhecimento (substituir / mesclar / manter / arquivar)
merge_suggestionsVisualizar sugestões de duplicatas entre projetos
graph_queryPercorrer relacionamentos entre entidades
add_relationshipVincular entidades com relacionamentos tipados
graph_neighborsEncontrar entidades conectadas (profundidade configurável)

Ferramentas temporais e de inteligência:

FerramentaFinalidade
temporal_queryConsultar o que era verdade em um ponto específico no tempo
time_travelComparar o estado do projeto em dois timestamps arbitrários
explain_decisionPercorrer a cadeia de evidências para reconstruir por que uma decisão foi tomada
predict_lossIdentificar observações em risco de compressão/exclusão
generate_storyGerar descrição de PR, atualização de standup, ADR ou guia de onboarding
entity_detectDetectar entidades em texto arbitrário
find_tunnelsEncontrar conexões de tópicos entre projetos

Ferramentas de sessão e agentes:

FerramentaFinalidade
wake_upPrimer de contexto com orçamento de tokens para início de sessão
restore_sessionRestaurar sessão a partir de checkpoint
handoff_sessionPacote de continuidade entre sessões
agent_registerRegistrar um agente com papel e capacidades
agent_statusVerificar todos os agentes ativos e seus recursos reivindicados
claim_filesReivindicar arquivos para evitar conflitos entre agentes paralelos
agent_broadcastTransmitir uma descoberta para todos os agentes do projeto

Ferramentas de sistema:

FerramentaFinalidade
configureAtualizar configuração em tempo de execução
budget_status / budget_configureGerenciamento de orçamento de tokens
summarizeSumarizar conteúdo sem armazenar (one-shot)
executeExecutar código (JS, TS, Python, Shell, Ruby, Go, Rust, PHP, Perl, R, Elixir)
index_contentIndexar com chunking ciente de código
search_contentBuscar chunks indexados
list_people / list_topicsNavegar por entidades e tópicos
import_conversationsImportar histórico de conversas
browseRecuperar observações por pessoa, entidade ou tópico
diagnosticsLog de erros, estatísticas de pipeline, saúde do armazenamento

API de diagnóstico

Se você precisar inspecionar o que o sistema está fazendo:

# MCP tool
mcp__context-mem__diagnostics

# HTTP (when dashboard is running)
curl http://localhost:3141/api/diagnostics

Retorna log de erros, estatísticas de pipeline, sessão ativa, saúde do armazenamento, estado do índice de busca.


Suporte a múltiplos agentes

context-mem suporta agentes de IA paralelos trabalhando no mesmo projeto sem colisões:

// Agent A registers and claims a file
mcp__context-mem__agent_register({ agent_id: "agent-a", role: "backend" })
mcp__context-mem__claim_files({ files: ["src/api.ts"] })

// Agent B sees Agent A's claim and avoids the conflict
mcp__context-mem__agent_status({})
// → { "agent-a": { files: ["src/api.ts"], status: "active" } }

// Broadcast a finding to all agents
mcp__context-mem__agent_broadcast({ message: "auth module has a race condition on token refresh" })

A memória compartilhada evita trabalho duplicado. Arquivos reivindicados evitam conflitos de merge. A transmissão mantém todos os agentes sincronizados sobre descobertas.


Referência de arquitetura: pipeline de busca

A pilha de recuperação executa 8 estratégias BM25 em paralelo, cada uma com peso e tradeoff de precisão/recall diferentes:

EstratégiaPesoFinalidade
Modo AND2,0Alta precisão, todos os termos exigidos
Correspondência de frases1,9Pares de palavras-chave consecutivas
Foco em entidades1,8Substantivos próprios, datas, identificadores
FTS5 sanitizado1,5Tokenização padrão
AND relaxado1,2Entidade + principais palavras-chave
Modo OR + sinônimos1,0Recall amplo com expansão semântica
Palavras-chave individuais0,5Captura de cauda longa
Sinônimos individuais0,2Ponte de lacuna semântica (irmão → irmão)

Além disso, resolução temporal (peso 1,6): consultas de datas relativas ("sábado passado") são resolvidas deterministicamente para intervalos de datas absolutos antes da busca — custo zero de LLM.

A busca vetorial (nomic-embed-text-v1.5, 768-dim) roda em paralelo com BM25 nos 30 principais candidatos, não em cascata. Os resultados são fundidos via pesos adaptativos por intenção (BM25: 0,45, trigrama: 0,15, Levenshtein: 0,05, vetorial: 0,35) com rerank de conteúdo ponderado por IDF. O juiz LLM opcional combina 50/50 com a pontuação de recuperação no top-N final.


Esquema do LLM Wiki

O cofre segue um esquema documentado em docs/llm-wiki-schema.md. Ele especifica:

  • Layout de diretórios (sources/, entities/, topics/, knowledge/)
  • Tipos de página e convenções de frontmatter
  • Sintaxe de vinculação ([[entity-name]] resolve para entities/entity-name.md)
  • Operações: ingestão / consulta / lint
  • Receitas de fluxo de trabalho para agentes em CLAUDE.md / AGENTS.md
  • Contrato de interoperabilidade — outras ferramentas podem emitir wikis conformes que context-mem pode importar

Esta é uma especificação pública. RFCs da comunidade em github.com/JubaKitiashvili/context-mem/discussions.


Características de desempenho

Todas as operações principais são síncronas e sub-milissegundo. Nenhum LLM é necessário para qualquer operação padrão.

OperaçãoThroughputLatência
Classificação de importância556K ops/s0,002ms
Extração de entidades179K ops/s0,006ms
Detecção de tópicos162K ops/s0,006ms
Cálculo de nível de compressão3M ops/s<0,001ms
Busca FTS5 verbatim50K ops/s0,020ms
Busca híbrida BM253,3K ops/s0,3ms
Montagem de primer de wake-up9K ops/s0,111ms
Geração de narrativa6K ops/s0,164ms

O embedding vetorial (nomic-embed-text-v1.5) adiciona ~5–15ms por consulta quando a busca vetorial está habilitada — ainda mais rápido que qualquer chamada de rede. O juiz LLM opcional adiciona uma chamada de API Haiku (~100ms) e só é invocado quando ai_curation.enabled = true.


Destaques do changelog

  • v4.0.0 — Lançamento completo do LLM Wiki. Páginas de síntese, plugin Obsidian, 8 integrações de IDE, RFC do Context Protocol, polimento de compressão. Alvo: 2026-05-22.
  • v3.4.0 — Prévia do LLM Wiki. Camada de cofre markdown, especificação de esquema v1, benchmark E2E QA, issue #6 fechada (divulgação de metodologia de benchmark).
  • v3.3.0 — Fundamentos. CI, log de erros, diagnóstico. Patch silencioso.
  • v3.2.0 — Busca híbrida paralela. BM25 + vetorial em paralelo, fusão adaptativa por intenção.
  • v2.5.0 — Painel. Interface web em tempo real, visualização de grafo de conhecimento.

Licença: MIT

Construído por Juba Kitiashvili.

Crédito: Andrej Karpathy pelo enquadramento do LLM Wiki (2026-04-04). Vannevar Bush pelo Memex (1945).