Rekindle
Um mecanismo de continuidade MCP local que ajuda o Claude Code a retomar o fio da meada entre sessões.
Documentação
Rekindle
Para usuários do Claude Code que perdem tempo reexplicando o contexto do projeto a cada sessão.
npx rekindle init
Sua IA esquece tudo entre sessões. Rekindle resolve isso.

Rekindle é um mecanismo de continuidade MCP que resolve orientação de sessão, não apenas armazenamento. Oriente no início da sessão, capture no final da sessão, sobreviva à compactação no meio da sessão. Tudo local, tudo SQLite, zero chaves de API.
v0.3.3 — metadados MCP consistentes com a versão e documentação do pacote, sobre o instalador de entrega de início de sessão com um comando do v0.3.2. Notas de versão
Início Rápido
Requer Node.js 20 ou mais recente.
npx rekindle init
Isso cria .rekindle/ no seu projeto com um banco de dados SQLite, modelo de identidade, diretório de capturas e diretório de transcrições. Em seguida, adicione a configuração do servidor MCP para o seu cliente:
Claude Code
Adicione a ~/.claude.json:
{
"mcpServers": {
"rekindle": {
"command": "npx",
"args": ["-y", "rekindle"]
}
}
}
Ative a proteção PreCompact (captura o contexto antes da compactação no meio da sessão):
npx rekindle setup-hooks
Ative a entrega de orientação no início da sessão — o pacote de orientação orçado chega automaticamente na inicialização, retomada, /clear e /compact, para que o modelo se reoriente em cada limite de contexto sem ser solicitado:
npx rekindle setup-delivery
Ambos os hooks são opcionais; o init simples nunca instala nenhum deles. O npx rekindle init --with-hooks --with-delivery faz tudo em uma linha.
Claude Desktop
Adicione a claude_desktop_config.json (macOS: ~/Library/Application Support/Claude/, Windows: %APPDATA%\Claude\):
{
"mcpServers": {
"rekindle": {
"command": "npx",
"args": ["-y", "rekindle"]
}
}
}
Cursor
Adicione a .cursor/mcp.json na raiz do seu projeto:
{
"mcpServers": {
"rekindle": {
"command": "npx",
"args": ["-y", "rekindle"]
}
}
}
Em seguida, preencha .rekindle/identity.md e cole as instruções de inicialização no CLAUDE.md do seu projeto.
A sessão 1 armazena. A sessão 2 lembra. A sessão 10 antecipa.
O Problema (43 Sessões de Dados)
Ao longo de 43 sessões, medimos o que um assistente de IA falhou em carregar no início da sessão:
| Métrica | Valor |
|---|---|
| Sessões analisadas | 43 |
| Inicializações limpas (todo o contexto carregado) | 33% |
| Falhas de alto sinal (5+ lacunas) | 26% |
| Total de falhas de recuperação | 173 |
As ferramentas de memória existentes (Mem0, Letta, Zep) otimizam a precisão da recuperação: a IA consegue encontrar o que armazenou? Isso é necessário, mas não suficiente. Nenhuma delas aborda se a IA carregou o contexto certo para esta sessão, ou se ela consegue detectar o que perdeu.
Rekindle resolve a orientação de sessão: carregar identidade, contexto recente, saúde da memória e avisos de contexto ausente antes de o assistente começar a trabalhar.
Veja docs/gap-analysis.md para o conjunto completo de dados da pesquisa.
O Que Ele Faz
Inicialização: oriente no início da sessão
boot_report executa um pipeline de orientação antes de qualquer trabalho começar:
boot_report
+-- Read identity document (who am I working with?)
+-- Scan memory stats (what do I know?)
+-- Find latest checkpoint (where did we leave off?)
+-- Read last transcript (what actually happened?)
+-- Surface open loops (what needs follow-up?)
+-- Surface PreCompact captures (what survived compaction?)
+-- Detect gaps (what am I missing?)
+-- Calculate orientation score (how oriented am I?)
--> "Carrying forward: [context loaded, gaps identified, score: 80/100]"
Sobreviva ao Meio Longo: captura PreCompact (v0.3)
A compactação no meio da sessão destrói cadeias de raciocínio, abordagens falhas, textura relacional e tom. O hook PreCompact dispara automaticamente antes da compactação e salva o que de outra forma seria perdido:
PreCompact hook fires
+-- Parse JSONL transcript (last N messages)
+-- Write raw Markdown capture (.rekindle/captures/)
+-- Write structured JSON snapshot (decisions, open loops, files)
+-- Update manifest for cheap listing
--> boot_report surfaces captures on next session start
--> end_session warns if captures exist but weren't reviewed
Três modos de leitura controlam o custo de tokens:
- summary — um parágrafo, barato
- structured — decisões/loops/avisos, moderado
- raw — trecho completo da transcrição, caro (somente quando necessário)
Captura: feche o ciclo no final da sessão
end_session armazena registros estruturados de continuidade — não apenas um resumo:
| Campo | O que captura |
|---|---|
checkpoint | Onde paramos (obrigatório) |
decisions | O que foi decidido e por quê |
open_loops | Tarefas ou perguntas não resolvidas |
constraints | Limites que não devem ser violados |
relational_delta | O que mudou no relacionamento de trabalho |
next_session_focus | Onde retomar na próxima sessão |
preferences | Novas preferências do usuário aprendidas |
warnings | Coisas que a próxima sessão deve observar |
Todos os registros são armazenados com metadados type, source e session_id. A próxima boot_report carrega o checkpoint automaticamente.
Entre sessões: pesquise e gerencie
| Ferramenta | Descrição |
|---|---|
store_memory | Armazene com conteúdo, categoria, importância (1-10) e escopo do projeto |
search_memory | Pesquisa de texto completo com classificação BM25, reforçada por importância |
list_memories | Navegue pelas memórias, mais recentes primeiro. Filtre por categoria ou projeto |
delete_memory | Exclua por ID |
update_memory | Atualize conteúdo, categoria ou importância |
list_captures | Liste capturas PreCompact (opcionalmente filtre por sessão) |
read_capture | Leia uma captura no modo resumo, estruturado ou bruto |
capture_now | Capture manualmente o contexto da sessão atual sob demanda |
Categorias: preference lesson context relationship general
Por que não apenas CLAUDE.md?
Um arquivo estático é passivo. Sua IA o lê, mas não pode pesquisá-lo, classificá-lo, rastrear o que foi recuperado ou dizer o que está faltando. Rekindle adiciona:
- Pesquisa — texto completo com classificação ponderada por importância
- Estrutura — escopo por categoria e projeto entre memórias
- Orientação — carregamento proativo de contexto na inicialização, não apenas recuperação sob demanda
- Detecção de lacunas — sinaliza identidade ausente, categorias vazias, dados desatualizados
- Pontuação — checklist transparente para você saber quão orientada a IA está
- Captura de sessão — fechamento estruturado com checkpoints, decisões e loops abertos
- Sobrevivência à compactação — capturas PreCompact preservam o que os resumos achatam
Destaques das Versões
v0.3.3
- Metadados de protocolo consistentes com a versão — a resposta de inicialização do MCP deriva sua versão dos metadados do pacote enviado, evitando desvio de versão de lançamento
- Precisão da página do pacote — o README enviado ao npm identifica a versão atual antes de a tag e o pacote serem criados
- 148 testes automatizados, além de uma verificação de artefato empacotado que compara os metadados do MCP com a versão do pacote instalado
v0.3.2
- Instalação de entrega com um comando —
npx rekindle setup-delivery(ouinit --with-delivery) configura a adesão ao hook SessionStart: idempotente, preserva os hooks de outras ferramentas, recusa arquivos de configuração corrompidos - 147 testes automatizados
v0.3.1 — "Five Measured Gates"
- Entrega no início da sessão —
rekindle session-startemite um pacote de orientação orçado via hook SessionStart na inicialização, retomada,/cleare/compact - Pacotes orçados, recibos verdadeiros — pacotes limitam-se a 8.000 bytes UTF-8 válidos com um marcador de truncamento dentro do pacote; recibos atestam apenas a emissão e nunca afirmam visibilidade do modelo
- Armazenamento seguro para desktop — a raiz de armazenamento nunca deriva do ponto de spawn (Claude Desktop inicia servidores MCP em
/); ordem de resolução explícita, falha ruidosa - Orientação de canal duplo — a orientação do fluxo de trabalho viaja tanto nas descrições de ferramentas quanto nas instruções do MCP, deriva estruturalmente impossível
- Adaptador Cursor —
session-start --client cursorcom análise de stdin na lista de permissões; e-mail e caminhos de workspace nunca chegam aos recibos - Medido, não presumido — cada afirmação acima é respaldada por uma medição publicada (evidência, resultados de spike)
v0.3.0 — "Survive the Long Middle" adicionou o sistema de captura PreCompact, loops abertos e rastreamento de revisão — notas de versão v0.3.0
Comandos CLI
| Comando | Descrição |
|---|---|
npx rekindle init | Configurar .rekindle/ no diretório atual |
npx rekindle init --global | Configurar no diretório inicial |
npx rekindle init --with-hooks | Inicializar + configurar hook de captura PreCompact |
npx rekindle init --with-delivery | Inicializar + configurar hook de entrega SessionStart |
npx rekindle setup-hooks | Configurar hook de captura PreCompact (autônomo) |
npx rekindle setup-delivery | Configurar hook de entrega SessionStart (autônomo) |
npx rekindle session-start | Emitir pacote de orientação orçado (hook SessionStart) |
npx rekindle session-start --client cursor | O mesmo, no formato de resposta de hook do Cursor |
npx rekindle precompact-capture | Capturar contexto antes da compactação (hook) |
npx rekindle capture-now | Capturar manualmente o contexto da sessão atual |
npx rekindle | Iniciar servidor MCP (usado pelo Claude Code) |
Instalar a partir do Código Fonte
git clone https://github.com/Skitchy/rekindle.git
cd rekindle
npm install
npm run build
node dist/init/cli.js init
Configuração do Hook PreCompact
O comando setup-hooks grava isso em .claude/settings.local.json:
{
"hooks": {
"PreCompact": [
{
"matcher": "auto",
"hooks": [
{
"type": "command",
"command": "npx rekindle precompact-capture",
"timeout": 60
}
]
},
{
"matcher": "manual",
"hooks": [
{
"type": "command",
"command": "npx rekindle precompact-capture",
"timeout": 60
}
]
}
]
}
}
O hook recebe o contexto da sessão no stdin (session_id, transcript_path, cwd, hook_event_name) e grava capturas em .rekindle/captures/.
| Variável | Padrão | Descrição |
|---|---|---|
REKINDLE_PRECOMPACT_MAX_MESSAGES | 80 | Máximo de mensagens para capturar |
REKINDLE_PRECOMPACT_MAX_CHARS | 120000 | Máximo de caracteres para capturar |
REKINDLE_BASE_DIR | Resolvido (veja abaixo) | Diretório base para .rekindle/ |
Resolução da raiz de armazenamento. Todos os pontos de entrada do Rekindle (servidor, hook PreCompact) resolvem o diretório que contém .rekindle/ por uma regra, em ordem:
REKINDLE_BASE_DIR, se definido — o explícito sempre vence- Derivado de
REKINDLE_DB_PATH, quando aponta para um layout canônico de<base>/.rekindle/db/ - Um
.rekindle/existente no diretório de trabalho atual (nunca quando o cwd é a raiz do sistema de arquivos) - Um
.rekindle/existente no seu diretório inicial - Caso contrário: seu diretório inicial — nunca o ponto de spawn
As regras 3 e 5 existem porque alguns hosts (por exemplo, Claude Desktop) iniciam servidores MCP em cwd=/; um ponto de spawn não é um local de armazenamento. Se o armazenamento não puder ser criado, o servidor sai com uma mensagem indicando a correção em vez de um stack trace.
Privacidade e Segurança
- Todos os dados são locais. Nada é enviado a servidores externos.
- Sem chamadas de rede. O servidor MCP se comunica via stdio. Sem HTTP, sem telemetria, sem análise.
- As transcrições contêm texto de conversa. Não ative a captura de transcrições se suas sessões contiverem segredos ou credenciais.
- A instalação do hook é opcional. Tanto o hook de captura (
setup-hooks) quanto o hook de entrega (setup-delivery) devem ser solicitados explicitamente, por comando ou por flag. Oinitsimples nunca instala nenhum deles. - O banco de dados SQLite é um arquivo comum. Não é criptografado. Use criptografia de disco em nível de sistema operacional, se necessário.
.rekindle/é ignorado pelo git. O comando init lida com isso automaticamente.- boot_report lê arquivos locais. Os caminhos não são isolados. Use apenas com clientes MCP e prompts em que você confia.
Compatibilidade
"Entrega completa" significa que o pacote de orientação chega automaticamente nos limites da sessão e o modelo demonstravelmente o vê — medido com sondas canário tanto na camada de recebimento quanto na camada do modelo, não presumido. Detalhes e evidências: resultados de spike de compatibilidade.
| Superfície do cliente | Ferramentas MCP | Entrega no início da sessão |
|---|---|---|
| Claude Code terminal (macOS) | Testado | Entrega completa, medida (inicialização, retomada, /clear, /compact) |
| Claude Code terminal (Windows) | Testado | Entrega completa, medida |
| Claude Code terminal (Linux/WSL2) | Testado | Canal de hook idêntico; medição de entrega pendente |
| Claude Desktop, superfície Code | Testado | Entrega completa, medida (/clear reentrega via inicialização de nova sessão) |
| Claude Desktop, superfície de chat | Testado | Somente modo ferramenta: hooks não suportados pelo cliente; orientação acessível via busca de ferramentas do modelo |
| Cursor | Testado | Via .cursor/hooks.json, medido (veja abaixo) |
| Qualquer cliente MCP stdio | Compatível | Depende do suporte a hooks do cliente |
Claude Code: orientação no início da sessão (opcional)
npx rekindle setup-delivery
escreve isto em .claude/settings.local.json:
{
"hooks": {
"SessionStart": [
{
"matcher": "startup|resume|clear|compact",
"hooks": [
{ "type": "command", "command": "npx rekindle session-start", "timeout": 60 }
]
}
]
}
}
O pacote é limitado a 8.000 bytes UTF-8 válidos — medido: quando a saída do hook excede o limite do host, o modelo vê apenas a porção inicial, sem nenhum erro exibido. Se seções forem descartadas para caber no orçamento, um marcador dentro do pacote indica isso, e o recibo em .rekindle/receipts/session-start.jsonl registra exatamente o que foi emitido, sem nunca afirmar que o modelo viu.
Cursor: orientação de início de sessão (opt-in)
O sistema de hooks do Cursor pode entregar o pacote de orientação orçado no início da sessão, medido no spike de compatibilidade v0.3.1. A configuração é manual e opt-in — o Rekindle nunca instala hooks sem ser solicitado. Adicione a .cursor/hooks.json no seu projeto:
{
"version": 1,
"hooks": {
"sessionStart": [ { "command": "rekindle session-start --client cursor" } ]
}
}
Privacidade: o payload do hook do Cursor inclui seu e-mail de conta e caminhos do workspace. O adaptador trata esse payload como pessoal por padrão: ele extrai apenas o ID da sessão e a raiz do workspace (usados em processo para resolução de armazenamento), e nem o payload bruto, nem o e-mail, nem qualquer caminho são gravados em recibos ou qualquer outro artefato. Agentes em segundo plano são ignorados por padrão (com recibo verdadeiro); opte com REKINDLE_ORIENT_BACKGROUND_AGENTS=1.
Arquitetura
rekindle/
src/
index.ts MCP server entry point
server.ts Server setup, tool registration (10 tools)
storage/
sqlite.ts SQLite + FTS5, schema migration, sessions
orientation/
types.ts OrientationResult, Gap, ScoreItem
GapDetector.ts Structural gap detection (8 codes)
Scorer.ts Orientation scoring (6 criteria, 100pts)
OrientationService.ts Orchestrator
OrientationRenderer.ts Markdown + JSON output
captures/
types.ts CaptureEntry, StructuredSnapshot, HookInput
CaptureManager.ts Parse, capture, list, read, review tracking
discover-transcript.ts Auto-discover session transcripts
precompact-capture.ts CLI hook entry point
capture-now.ts Manual capture CLI
tools/
boot-report.ts Orientation + open loops + capture awareness
end-session.ts Structured session close + capture warning
list-captures.ts List PreCompact captures
read-capture.ts Read captures in 3 modes
capture-now.ts Model-triggered manual capture
store.ts search.ts list.ts delete.ts update.ts
delivery/
budget.ts 8000-byte UTF-8 packet construction, truncation marker
receipts.ts Emission receipts (never claim model visibility)
session-start.ts SessionStart hook adapter
cursor.ts Cursor hook adapter (privacy-whitelisted stdin)
guidance.ts Canonical workflow guidance, both channels
init/
cli.ts scaffold.ts setup-hooks.ts setup-delivery.ts templates/
Armazenamento: SQLite + FTS5 via better-sqlite3. Ranqueamento BM25 reforçado por importância. Registros tipados com type, source, session_id.
Transporte: stdio (MCP padrão). Funciona com Claude Code de fábrica.
Testes
npm test
148 testes: CRUD de armazenamento + ranqueamento FTS5, domínio de orientação (detecção de lacunas, pontuação, serviço, renderização), gerenciador de captura (análise, limites, rastreamento de revisão, formatação), entrega (orçamento de pacote, recibos, canais de orientação, sentinelas de privacidade do Cursor), configuração de hooks para ambos os hooks (esquema, idempotência, recusa de corrupção) e integração MCP (todas as 10 ferramentas mais metadados de servidor derivados do pacote).
Roadmap
v0.4: "Pensa em redes" — Ativação por propagação, busca semântica via embeddings, ferramentas de análise de lacunas, harness de avaliação.
Licença
MIT