Pular para o conteúdo
Menu

Produto

Soluções

Integrações

Desenvolvedores

Idioma

Produto

Pesquisa e fundamentos

Cada parte do ai-memory tem um motivo que você pode conferir: uma ideia de onde ela veio, um bug de uma ferramenta anterior que ela evita ou um número contra o qual ela foi medida. Esta página passa por eles em seis capítulos curtos.

Compile, não recupere

Em abril de 2026, Andrej Karpathy publicou um “idea file” curto sobre o que ele chamou de LLM wiki. O ai-memory é essa ideia, adaptada para agentes de código que nunca param de produzir material.

“O conhecimento é compilado uma vez e depois mantido atualizado, em vez de ser derivado de novo a cada consulta.”

Três camadas

Fontes brutas que nunca mudam, uma wiki de páginas markdown mantida pelo LLM e um arquivo de schema que explica ao agente como a wiki funciona.

Três operações

Ingerir uma fonte e atualizar as páginas que ela afeta. Consultar a wiki. Rodar lint atrás de contradições e páginas órfãs.

Diagrama: as três camadas do Karpathy à esquerda, fontes brutas, wiki e schema, cada uma ligada ao equivalente no ai-memory à direita: observações dos hooks, markdown em git e um bloco instalado no AGENTS.md.
As três camadas do Karpathy, e onde cada uma fica numa instalação do ai-memory.

O que o ai-memory manteve

  • Arquivos markdown num repositório git como aquilo que uma pessoa consegue abrir, comparar com diff e ler.
  • Compilar o conhecimento na hora em que ele chega, com uma sessão se desdobrando em várias páginas.
  • Wikilinks entre as páginas fazendo o papel de grafo.
  • Lint para contradições, páginas desatualizadas, órfãs e títulos duplicados.
  • Um bloco de schema instalado no CLAUDE.md ou no AGENTS.md para o agente saber como usar a wiki.

O que ele mudou

No padrão do Karpathy, uma pessoa faz a curadoria, uma fonte de cada vez. Um agente de código produz material sem parar e ninguém está olhando.

No gistNo ai-memory
Você entrega ao LLM uma fonte de cada vezOs hooks de ciclo de vida capturam todas as sessões sozinhos
O agente lê o index.md primeiroUm índice fundido: full-text, entidades, links e vetores
Um LLM faz toda a manutençãoResumos baseados em regras por padrão. LLM é opt-in
Uma pessoa, uma wikiHandoffs entre agentes, vários usuários, escopo por projeto
As páginas vivem para sempreCamadas de memória, decaimento, substituição e TTLs tiram as páginas velhas do caminho

Camadas de memória, decaimento e substituição não estão no gist do Karpathy. Vêm do agentmemory e dos textos sobre a “LLM Wiki v2” em volta dele. As notas de leitura completas estão no repositório.

Sua memória já está num formato aberto

O Open Knowledge Format é uma especificação que o Google Cloud publicou em junho de 2026. Ela descreve conhecimento como um diretório comum de arquivos markdown com frontmatter YAML, um conceito por arquivo e um único campo obrigatório: type. Não tem SDK nem runtime.

  • Desde a 2.0 a wiki é nativamente um bundle OKF v0.2. Os arquivos em que o ai-memory trabalha são os próprios arquivos OKF, então não existe etapa de export que possa divergir da verdade.
  • Um projeto é um bundle, com um index.md gerado na raiz.
  • Toda página tem frontmatter YAML com um type, derivado da pasta em que ela fica.
  • O upgrade a partir da 1.x reescreve o frontmatter no lugar, depois de um backup verificado. Se o backup falha, a migração para.
empacotar um projeto como bundle validado
ai-memory export-okf --project myproject -o myproject-bundle.tar.gz

Não existe comando de import. Descompacte um bundle no diretório da wiki de um projeto e o file watcher indexa. O mapeamento para OKF está documentado campo a campo, e a especificação fica no repositório knowledge-catalog do Google Cloud.

PastaTipo OKF
sessions/Session Summary
decisions/Decision
gotchas/Gotcha
procedures/Procedure
concepts/Concept
_rules/Rule
notes/Note
runbooks/Runbook
_slots/Invariant ou State
Diagrama: uma pasta de projeto com index.md e páginas tipadas, uma decisão, um gotcha e um procedimento, indo sem alteração para o Obsidian, para o grep e para outra ferramenta OKF.
Um bundle é uma pasta. Qualquer coisa que lê markdown consegue ler, com ou sem ai-memory.

“Modelo e harness são alugados, a memória do projeto é sua.”

Oito decisões, e o motivo de cada uma

A maioria delas vem de uma issue específica de alguma ferramenta de memória anterior.

  • Escolhemos

    Markdown em git como a verdade

    porque fazer backup ou mudar de lugar é um git clone ou um rsync. O banco pode ser reconstruído a partir dos arquivos, então corrupção tem conserto, e qualquer ferramenta que lê markdown consegue ler a sua memória.

  • Escolhemos

    Um arquivo SQLite só

    porque full-text, vetores compactados e tabelas de links ficam num único arquivo embutido. Os issue trackers de outros projetos mostraram quanto custa, em bugs de corretude, sincronizar três stores.

  • Escolhemos

    Zero chamadas a LLM por padrão

    porque os resumos de sessão são baseados em regras, então uma instalação nova não gasta nada. A lição veio de features com LLM ligadas por padrão em outras ferramentas, que surpreenderam os usuários com a conta de tokens.

  • Escolhemos

    Um binário só

    porque o SQLite vai embutido, o libgit2 vai vendorizado e o embedder é Rust puro. Um motor sidecar separado era a maior concentração de dor de usuário no projeto que este aqui sucede.

  • Escolhemos

    Nada de banco de grafos

    porque o grafo são tabelas SQL: uma tabela de links e consultas recursivas. Isso cobre expansão de um salto e arestas tipadas sem um motor de grafo embutido para manter vivo.

  • Escolhemos

    Vetores são opcionais

    porque os embeddings locais vêm ligados desde a 2.0 e continuam nunca sendo obrigatórios. A busca é cosseno por força bruta dentro do SQLite; uma extensão vetorial espera até a quantidade de páginas ou a latência pedirem.

  • Escolhemos

    Handoff como protocolo tipado, assumido uma vez só

    porque toda rodada de pesquisa apontou a transferência entre agentes como o ponto fraco das ferramentas anteriores. Um handoff é um registro tipado, casado por diretório, e só uma sessão consegue assumi-lo.

  • Escolhemos

    Páginas em vez de linhas de fatos

    porque uma página sobre uma decisão pode ser lida, editada e explicada em prosa. Uma tabela de fatos extraídos não abre no Obsidian nem passa por revisão num diff.

Leia todas as decisões de design

Sobre os ombros de quem veio antes

O projeto leu o código e os issue trackers das ferramentas que vieram antes, ficou com as ideias que se sustentaram e deixou de fora as partes que viviam quebrando.

Diagrama: sete projetos anteriores, a wiki do Karpathy, agentmemory, basic-memory, cognee, Hermes Agent, A-MEM e Hindsight, cada um contribuindo com uma linha para o ai-memory.
Karpathy LLM Wiki
Compile, não recupere. A wiki em disco é o artefato.
agentmemory
Captura automática por hooks, camadas de memória, substituição, decaimento como fórmula e ranking fundido. O ai-memory é o sucessor dele em Rust: as ideias ficaram, o substrato mudou.
basic-memory
Arquivos como fonte da verdade com um índice derivado, e links para páginas que ainda não existem.
cognee
O formato de pipeline de tarefas, carimbos de proveniência em toda página e feedback que ajusta o ranking.
Hermes Agent
O desenho do loop de autoaperfeiçoamento que revisa em background as sessões encerradas.
A-MEM
Notas atômicas no estilo Zettelkasten, que se ligam umas às outras automaticamente.
Hindsight
Rótulos tipados de redação, contagem de evidências por página e um briefing que começa pelas regras já estabelecidas.
Honcho
Respostas com citações, níveis de raciocínio e o agendamento da passada de sonho: gatilho por ociosidade, cancelamento quando há atividade, o mais inédito primeiro.

Nenhum desses projetos endossa o ai-memory. Para saber onde cada um deles está na frente, veja a comparação.

O que foi medido

A pilha de recuperação é avaliada no LongMemEval-S: 470 perguntas sobre históricos longos de chat, passando pelo caminho real dos hooks e pela busca real. O harness está no repositório.

hit@5 no LongMemEval-SParcela das 470 perguntas com uma sessão de evidência entre os cinco primeiros. Quanto maior, melhor.
  1. Só full-text, antes da 2.00,617
  2. Full-text com filtro de stopwords0,666
  3. Mais embeddings locais (o padrão)0,815

O que foi cada passo

  • Tirar as stopwords das consultas full-text somou 5,1 pontos de hit@5 e 8,5 de hit@1.
  • O modelo de embeddings dentro do processo somou o resto. Acertar o masked-mean pooling valeu, sozinho, cerca de 6,6 pontos.
  • Nenhuma linha envolve chave de API ou LLM.
MétricaAntes da 2.0Full-text filtradoEmbeddings locais
hit@10,4490,5320,536
hit@50,6170,6660,815
recall@50,4720,5360,677

Rode você mesmo

Acrescente --candidate-embeddings local ao segundo comando para rodar full-text e embeddings locais lado a lado. A execução publicada é de 21 de setembro de 2026, num Ryzen 9 7950X3D.

reproduzir o benchmark
cargo build --release -p ai-memory-cli
cargo run --release -p ai-memory-eval -- retrieval --fetch

Resultados completos, por tipo de pergunta

A vazão de escrita também foi medida. Os números estão na página de arquitetura.

O que os embeddings locais entregam, e quanto custam

As mesmas 470 perguntas, rodadas duas vezes: primeiro só com full-text, depois com o modelo de embeddings local padrão. Com embeddings, a evidência aparece entre os dez primeiros com muito mais frequência, e cada consulta fica cerca de 90 ms mais lenta.

MétricaFull-text, sem LLMEmbeddings locaisVariação
hit@10,5320,536+0,004
hit@50,6660,815+0,149
hit@100,6940,891+0,198
recall@100,5640,817+0,254
Tempo de consulta, mediana5 ms94 ms+89 ms
Tempo de consulta, percentil 9540 ms162 ms+122 ms
Tokens de contexto por consulta, média350,3415,7+65,4
  • Duas execuções completas no mesmo commit marcaram 0,815 e 0,821, então leia o hit@5 como cerca de 0,82, com 0,005 para mais ou para menos. A execução anterior, de 1 de setembro de 2026, marcou 0,823, que é o mesmo resultado. O envelhecimento da memória sai desligado por padrão, então a busca padrão não mudou.
  • Dentro de uma execução o harness é determinístico: rodar a mesma configuração duas vezes dá acurácia e contagem de tokens idênticas. Entre execuções separadas, os tipos de pergunta menores variam até 0,03 para cima ou para baixo, então uma queda em um deles vista em uma única execução quer dizer pouco.

O que vem a seguir, e onde ele está atrás

Estas são recomendações documentadas no repositório. Nenhuma delas tem data.

Próximos passos recomendados

  • Acurácia das respostas em escala completa

    O segundo harness já tem uma execução completa de recuperação, com acurácia, tempo de consulta e tokens de contexto. O modo de acurácia das respostas só tem uma amostra de 20 perguntas por enquanto, e os itens abaixo esperam por ele.

  • Um reranker local

    Um cross-encoder que roda dentro do processo, sem LLM. Ele espera o harness acima para provar que vale a pena.

  • Padrões sustentados por números

    A pontuação de confiança e os recursos de envelhecimento saem desligados. Cada um só vira padrão depois que o harness mostrar que ajuda. Os tipos de link continuam sem peso no ranking.

  • Um comando de sync limitado

    Ou uma descrição mais clara do modelo de um servidor só, ou um ai-memory sync construído em cima da wiki em git.

  • Um começo mais fácil para quem usa Claude Code

    Um importador para quem vem da memória embutida do Claude.

Fora dos planos: um banco de grafos, um sistema operacional de memória que se edita sozinho, conectores de nuvem, ou aumentar a quantidade de ferramentas só por aumentar.

Onde ele está atrás hoje

A pontuação bruta de recuperação fica abaixo das ferramentas que fazem rerank, e o envelhecimento da memória ainda não tem resultado medido. A lista completa está na página de comparação.

“A 1.x provou que a ideia funcionava. A 2.0 é a versão que eu recomendaria sem asterisco pra outra pessoa botar num time.”

Perguntas e respostas

O que é a ideia da LLM Wiki do Karpathy por trás do ai-memory?

O gist de abril de 2026 do Andrej Karpathy descreve um LLM que constrói e mantém uma wiki persistente de arquivos markdown entre você e as suas fontes brutas, de modo que o conhecimento é compilado uma vez e mantido atualizado. O ai-memory aplica isso a agentes de código, com captura automática pelos hooks de ciclo de vida e um caminho padrão que não faz chamadas a LLM.

O ai-memory é compatível com o Open Knowledge Format?

Desde a 2.0 todo projeto da wiki é nativamente um bundle OKF v0.2. Cada página tem frontmatter YAML com um type, cada projeto tem um index.md gerado, e o ai-memory export-okf empacota um projeto num tarball validado.

O que o benchmark LongMemEval-S mede no ai-memory?

Só recuperação: se uma sessão que contém a evidência aparece entre os primeiros resultados, em 470 perguntas. O hit@5 é 0,815 com os embeddings locais padrão e 0,666 só com full-text. Ele não mede a acurácia das respostas.

Leia o raciocínio. Depois teste.

Gratuito e open source. A instalação padrão não faz chamadas a LLM e escuta só na sua máquina.