skillmem

Memória de habilidades autoaprimorável para agentes de codificação: habilidades que ajudam são reforçadas, as não utilizadas decaem em uma curva de Ebbinghaus. Caminho de escrita $0 (SQLite FTS5 + embeddings ONNX locais, sem chamadas de LLM), busca híbrida bilíngue EN/RU, histórico com evidência de adulteração SHA256, benchmark LongMemEval reproduzível (hit@5 0.871). 8 ferramentas mem_* + hooks opcionais do Claude Code.

Documentação

skillmem

CI

Habilidades autoaprimoráveis para Claude Code — seu agente aprende, recorda, reforça e esquece.

skillmem demo: a Russian query finds an English skill, unused skills decay

skillmem dá ao Claude Code uma camada local e persistente de habilidades e memória. Após cada tarefa não trivial, o agente pode registrar como foi feita como uma habilidade; antes da próxima tarefa, ele recorda as relevantes; habilidades que continuam se mostrando úteis ficam mais fortes, e habilidades que ninguém usa desaparecem — do jeito que a memória humana funciona.

  • $0 por gravação e por leitura — sem chamadas de LLM, sem nuvem, sem chaves de API. SQLite puro no seu disco.
  • Busca híbrida bilíngue, totalmente local — FTS5 BM25 + stemming Snowball (EN/RU) + um modelo de embeddings ONNX multilíngue. Uma consulta em russo encontra uma habilidade em inglês e vice-versa, tudo em CPU, offline.
  • Modelo de força de Ebbinghausreinforce aumenta a força de uma habilidade, a decadência programada desvanece as não utilizadas, e varreduras de ciclo de vida movem habilidades mortas para um arquivo com backup (nunca excluídas).
  • Histórico à prova de adulteração — cada edição é anexada a uma cadeia de hash SHA256; skillmem verify detecta qualquer adulteração posterior.
  • Integração profunda com Claude Code — 6 hooks + 8 ferramentas MCP instaladas com um único comando.
  • Multiplataforma — macOS (launchd), Windows (schtasks), Linux (timers de usuário systemd, fallback cron).
  • Sem dependência de fornecedorexport-all despeja tudo em markdown simples com frontmatter YAML; reimportar o despejo produz os mesmos registros.

Por quê

Agentes repetem seus erros porque cada sessão começa do zero. Ferramentas de "memória" existentes armazenam fatos; skillmem armazena procedimentos — gatilho, passos, resultado, lições — e os classifica por quantas vezes realmente ajudaram. O caminho de gravação não custa nada, então o agente pode se dar ao luxo de aprender com cada tarefa.

Início rápido

macOS / Linux:

bash install.sh                 # installs python + uv if needed, venv, symlinks

Windows (PowerShell):

powershell -ExecutionPolicy Bypass -File install.ps1

Ou a partir de um checkout:

uv venv && uv pip install -e '.[semantic]'
source .venv/bin/activate       # or prefix the commands below with `uv run`
skillmem init --claude-code     # wires MCP server + hooks into Claude Code
skillmem doctor                 # health check: DB, schema, semantic status

init --claude-code registra o servidor MCP em ~/.claude.json e os hooks em ~/.claude/settings.json (idempotente, com backups). Use --hooks minimal apenas para o hook Stop→migrate, ou --hooks none apenas para MCP.

Plugin Claude Code e MCP Registry (em breve)

O repositório já contém um plugin Claude Code (.claude-plugin/ + hooks/hooks.json — servidor MCP e todos os hooks em uma única instalação) e um manifesto MCP Registry (server.json). Ambos entram no ar assim que o pacote skillmem for publicado no PyPI; até lá, use os instaladores acima. Quando estiverem no ar:

/plugin marketplace add liza-studio/skillmem
/plugin install skillmem@liza-studio

O plugin requer o pacote Python skillmem no PATH e substitui a fiação de skillmem init --claude-code — use um ou outro, não ambos (veja docs/PUBLISHING.md).

Claude Desktop (aplicativo de chat)

O servidor MCP também funciona no aplicativo de chat Claude Desktop — adicione em claude_desktop_config.json (Configurações → Desenvolvedor → Editar Config):

{
  "mcpServers": {
    "skillmem": { "command": "skillmem-mcp" }
  }
}

Você obtém todas as 8 ferramentas mem_* sob demanda (busca, aprendizado, recordação, reforço…). Os hooks automáticos (auto-recall em cada prompt, resumo da sessão) são um mecanismo do Claude Code e não são executados no aplicativo de chat.

Como funciona

 learn ──▶ recall ──▶ reinforce ──▶ decay
   │          │            │           │
   │          │            │           └─ daily job: unused skills lose strength;
   │          │            │              fully faded ones are archived (backed up)
   │          │            └─ strength +0.15 when a skill proves useful
   │          └─ hybrid BM25 + vector search, strength-weighted ranking
   └─ after a hard task: trigger / steps / outcome / lessons
  1. learn — após uma tarefa que exigiu depuração real, o agente chama mem_learn com um slug, gatilho, passos, resultado e lições.
  2. recall — antes da próxima tarefa, mem_recall (ou os hooks automáticos) traz as habilidades mais relevantes, fundindo sinais lexicais e semânticos via Fusão de Rank Recíproco.
  3. reinforce — quando uma habilidade recordada ajudou, mem_reinforce aumenta sua força, então habilidades comprovadas ficam mais bem classificadas na próxima vez.
  4. decay — uma execução programada de skillmem decay aplica o esquecimento estilo Ebbinghaus; habilidades intocadas por meses migram para stale, e depois para um estado archived (excluídas do recall, restauráveis com um comando, com snapshot para JSONL antes).

Ferramentas MCP

FerramentaO que faz
mem_searchBusca híbrida de texto completo (FTS5 BM25 + recall vetorial opcional) em todas as memórias
mem_getBusca uma memória por slug, com histórico e wikilinks
mem_listLista memórias por tipo/projeto, mais recentes primeiro
mem_writeInsere uma nova memória; recusa sobrescritas silenciosas e quase duplicatas
mem_updateAtualiza uma memória existente; a versão antiga é mantida no histórico com cadeia de hash
mem_learnRegistra uma habilidade pós-ação (gatilho / passos / resultado / lições)
mem_recallEncontra habilidades relevantes para uma tarefa, ponderadas por força; auto-reforça
mem_reinforceAumenta explicitamente a força de uma habilidade após ela se mostrar útil

Hooks

EventoHookO que injeta
SessionStartmcp-guardAvisa quando servidores MCP configurados estão ausentes em relação a uma linha de base
SessionStartinjectBriefing compacto apenas com títulos das suas memórias user/feedback
SessionStartsession-historyResumos das últimas 3 sessões neste projeto
UserPromptSubmitverify-gateLembrete "Busque antes de afirmar" em prompts sensíveis ao tempo (gatilhos bilíngues EN/RU)
UserPromptSubmitauto-recallFeedback relevante + habilidades correspondidas com o prompt
PreToolUsetool-recallHabilidades/avisos correspondidos com o comando Bash ou caminho de arquivo editado
Stopsession-recapDestila a sessão em uma nota markdown via claude -p (o idioma do resumo espelha a sessão)
StopmigrateIndexa novas notas de sessão no banco de dados

Todos os hooks são de melhor esforço: um banco de dados quebrado ou modelo ausente nunca bloqueia o Claude Code.

Destaques da CLI

skillmem learn skill-x -t "..." --trigger "..." --steps "..." --outcome success
skillmem recall "deploy the bot to prod"
skillmem skills                  # list skills with strength bars
skillmem decay --days 14         # manual decay + lifecycle sweep
skillmem search "hash chain" --kind feedback
skillmem verify --strict         # check the tamper-evidence chain
skillmem export-all ./vault      # markdown round-trip, no lock-in
skillmem import-vault ~/Obsidian/Notes
skillmem schedule install        # decay daily 04:15, export weekly Sun 04:30

Desinstalação

skillmem uninstall               # removes MCP entry, hooks, scheduled jobs; keeps the DB
skillmem uninstall --purge-db    # ...and deletes the database

As edições de configuração são feitas atomicamente com backups com carimbo de data/hora, e JSON corrompido nunca é sobrescrito.

Benchmarks

Qualidade de recuperação em LongMemEval (Wu et al., ICLR 2025), conjunto oracle completo, recuperação híbrida (FTS5 BM25 + stemming Snowball + embeddings paraphrase-multilingual-MiniLM-L12-v2, fusão RRF), k=5, apenas CPU:

Tipo de perguntanhit@5MRR
Geral4790.8710.622
single-session-assistant560.9820.746
knowledge-update720.9440.676
single-session-user640.9380.719
multi-session1250.8480.568
single-session-preference300.8330.465
temporal-reasoning1320.7800.579

Mediana de 0,76 s por consulta em CPU de laptop, sem chamadas de LLM, sem rede. O pipeline é determinístico: execuções repetidas produzem números idênticos. Reproduza com python bench/longmemeval.py --sample 0 -k 5 (veja bench/README.md para o arquivo oracle e regras de relatório — não publicamos porcentagens simples sem declarar o modo de recuperação e o modelo de embeddings, e incentivamos outras ferramentas a fazer o mesmo).

Licença

Apache-2.0 — veja LICENSE.


Construído por Liza Studio.