Rekindle
Un motor de continuidad MCP local que ayuda a Claude Code a retomar el hilo entre sesiones.
Documentación
Rekindle
Para usuarios de Claude Code que pierden tiempo reexplicando el contexto del proyecto en cada sesión.
npx rekindle init
Tu IA lo olvida todo entre sesiones. Rekindle lo soluciona.

Rekindle es un motor de continuidad MCP que resuelve la orientación de sesión, no solo el almacenamiento. Orienta al inicio de la sesión, captura al final de la sesión y sobrevive a la compactación a mitad de sesión. Todo local, todo SQLite, cero claves API.
v0.3.3 — metadatos MCP y documentación del paquete consistentes con la versión, sobre el instalador de entrega de inicio de sesión en un solo comando de v0.3.2. Notas de la versión
Inicio rápido
Requiere Node.js 20 o superior.
npx rekindle init
Esto crea .rekindle/ en tu proyecto con una base de datos SQLite, plantilla de identidad, directorio de capturas y directorio de transcripciones. Luego agrega la configuración del servidor MCP para tu cliente:
Claude Code
Agrega a ~/.claude.json:
{
"mcpServers": {
"rekindle": {
"command": "npx",
"args": ["-y", "rekindle"]
}
}
}
Habilita la protección PreCompact (captura el contexto antes de la compactación a mitad de sesión):
npx rekindle setup-hooks
Habilita la entrega de orientación al inicio de sesión: el paquete de orientación con presupuesto llega automáticamente al inicio, reanudación, /clear y /compact, para que el modelo se reoriente en cada límite de contexto sin que se le pida:
npx rekindle setup-delivery
Ambos hooks son opcionales; un init simple nunca instala ninguno. npx rekindle init --with-hooks --with-delivery hace todo en una sola línea.
Claude Desktop
Agrega a claude_desktop_config.json (macOS: ~/Library/Application Support/Claude/, Windows: %APPDATA%\Claude\):
{
"mcpServers": {
"rekindle": {
"command": "npx",
"args": ["-y", "rekindle"]
}
}
}
Cursor
Agrega a .cursor/mcp.json en la raíz de tu proyecto:
{
"mcpServers": {
"rekindle": {
"command": "npx",
"args": ["-y", "rekindle"]
}
}
}
Luego completa .rekindle/identity.md y pega las instrucciones de arranque en el CLAUDE.md de tu proyecto.
La sesión 1 almacena. La sesión 2 recuerda. La sesión 10 anticipa.
El problema (43 sesiones de datos)
Durante 43 sesiones, medimos lo que un asistente de IA no lograba cargar al inicio de la sesión:
| Métrica | Valor |
|---|---|
| Sesiones analizadas | 43 |
| Arranques limpios (todo el contexto cargado) | 33% |
| Fallos de alta señal (5+ vacíos) | 26% |
| Fallos totales de recuperación | 173 |
Las herramientas de memoria existentes (Mem0, Letta, Zep) optimizan la precisión de recuperación: ¿puede la IA encontrar lo que almacenó? Eso es necesario pero no suficiente. Ninguna aborda si la IA cargó el contexto correcto para esta sesión, o si puede detectar lo que omitió.
Rekindle resuelve la orientación de sesión: cargar identidad, contexto reciente, salud de la memoria y advertencias de contexto faltante antes de que el asistente comience a trabajar.
Consulta docs/gap-analysis.md para el conjunto de datos completo de la investigación.
Qué hace
Arranque: orientar al inicio de la sesión
boot_report ejecuta un pipeline de orientación antes de que comience cualquier trabajo:
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]"
Sobrevive al tramo largo: captura PreCompact (v0.3)
La compactación a mitad de sesión destruye cadenas de razonamiento, enfoques fallidos, textura relacional y tono. El hook PreCompact se activa automáticamente antes de la compactación y guarda lo que de otro modo se perdería:
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
Tres modos de lectura controlan el costo de tokens:
- resumen — un párrafo, económico
- estructurado — decisiones/bucles/advertencias, moderado
- crudo — extracto completo de la transcripción, costoso (solo cuando es necesario)
Captura: cierra el ciclo al final de la sesión
end_session almacena registros de continuidad estructurados, no solo un resumen:
| Campo | Qué captura |
|---|---|
checkpoint | Dónde lo dejamos (obligatorio) |
decisions | Qué se decidió y por qué |
open_loops | Tareas o preguntas sin resolver |
constraints | Límites que no deben violarse |
relational_delta | Qué cambió en la relación de trabajo |
next_session_focus | Dónde reanudar la próxima sesión |
preferences | Nuevas preferencias de usuario aprendidas |
warnings | Cosas que la próxima sesión debe vigilar |
Todos los registros se almacenan con metadatos de type, source y session_id. El siguiente boot_report carga el punto de control automáticamente.
Entre sesiones: buscar y gestionar
| Herramienta | Descripción |
|---|---|
store_memory | Almacena con contenido, categoría, importancia (1-10) y alcance del proyecto |
search_memory | Búsqueda de texto completo con clasificación BM25, potenciada por importancia |
list_memories | Explora recuerdos, los más recientes primero. Filtra por categoría o proyecto |
delete_memory | Elimina por ID |
update_memory | Actualiza contenido, categoría o importancia |
list_captures | Lista capturas PreCompact (opcionalmente filtra por sesión) |
read_capture | Lee una captura en modo resumen, estructurado o crudo |
capture_now | Captura manualmente el contexto de la sesión actual bajo demanda |
Categorías: preference lesson context relationship general
¿Por qué no solo CLAUDE.md?
Un archivo estático es pasivo. Tu IA lo lee, pero no puede buscarlo, clasificarlo, rastrear lo que se ha recuperado ni decirte qué falta. Rekindle añade:
- Búsqueda — texto completo con clasificación ponderada por importancia
- Estructura — alcance por categoría y proyecto en todos los recuerdos
- Orientación — carga proactiva de contexto al arrancar, no solo recuperación bajo demanda
- Detección de vacíos — señala identidad faltante, categorías vacías, datos obsoletos
- Puntuación — lista de verificación transparente para que sepas qué tan orientada está la IA
- Captura de sesión — cierre estructurado con puntos de control, decisiones y bucles abiertos
- Supervivencia a la compactación — las capturas PreCompact preservan lo que los resúmenes aplastan
Destacados de versiones
v0.3.3
- Metadatos de protocolo consistentes con la versión — la respuesta de inicialización de MCP deriva su versión de los metadatos del paquete enviado, evitando la deriva de la versión de lanzamiento
- Precisión de la página del paquete — el README enviado a npm identifica la versión actual antes de que se creen la etiqueta y el paquete
- 148 pruebas automatizadas, más una verificación del artefacto empaquetado que compara los metadatos de MCP con la versión del paquete instalado
v0.3.2
- Instalación de entrega en un solo comando —
npx rekindle setup-delivery(oinit --with-delivery) configura la aceptación del hook SessionStart: idempotente, preserva los hooks de otras herramientas, rechaza archivos de configuración corruptos - 147 pruebas automatizadas
v0.3.1 — "Cinco puertas medidas"
- Entrega al inicio de sesión —
rekindle session-startemite un paquete de orientación con presupuesto a través del hook SessionStart al inicio, reanudación,/cleary/compact - Paquetes con presupuesto, recibos veraces — los paquetes se limitan a 8,000 bytes UTF-8 válidos con un marcador de truncamiento dentro del paquete; los recibos atestiguan solo la emisión y nunca afirman visibilidad del modelo
- Almacenamiento seguro para escritorio — la raíz de almacenamiento nunca se deriva del punto de generación (Claude Desktop genera servidores MCP en
/); orden de resolución explícito, fallo ruidoso - Guía de doble canal — la guía de flujo de trabajo viaja tanto en las descripciones de herramientas como en las instrucciones de MCP, la deriva es estructuralmente imposible
- Adaptador Cursor —
session-start --client cursorcon análisis de stdin en lista blanca; las rutas de correo electrónico y espacio de trabajo nunca llegan a los recibos - Medido, no asumido — cada afirmación anterior está respaldada por una medición publicada (evidencia, resultados del spike)
v0.3.0 — "Sobrevive al tramo largo" añadió el sistema de captura PreCompact, bucles abiertos y seguimiento de revisiones — notas de la versión v0.3.0
Comandos CLI
| Comando | Descripción |
|---|---|
npx rekindle init | Configura .rekindle/ en el directorio actual |
npx rekindle init --global | Configura en el directorio de inicio |
npx rekindle init --with-hooks | Init + configura el hook de captura PreCompact |
npx rekindle init --with-delivery | Init + configura el hook de entrega SessionStart |
npx rekindle setup-hooks | Configura el hook de captura PreCompact (independiente) |
npx rekindle setup-delivery | Configura el hook de entrega SessionStart (independiente) |
npx rekindle session-start | Emite paquete de orientación con presupuesto (hook SessionStart) |
npx rekindle session-start --client cursor | Igual, en la forma de respuesta del hook de Cursor |
npx rekindle precompact-capture | Captura contexto antes de la compactación (hook) |
npx rekindle capture-now | Captura manualmente el contexto de la sesión actual |
npx rekindle | Inicia el servidor MCP (usado por Claude Code) |
Instalar desde el código fuente
git clone https://github.com/Skitchy/rekindle.git
cd rekindle
npm install
npm run build
node dist/init/cli.js init
Configuración del hook PreCompact
El comando setup-hooks escribe esto en .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
}
]
}
]
}
}
El hook recibe el contexto de la sesión en stdin (session_id, transcript_path, cwd, hook_event_name) y escribe las capturas en .rekindle/captures/.
| Variable | Predeterminado | Descripción |
|---|---|---|
REKINDLE_PRECOMPACT_MAX_MESSAGES | 80 | Máximo de mensajes a capturar |
REKINDLE_PRECOMPACT_MAX_CHARS | 120000 | Máximo de caracteres a capturar |
REKINDLE_BASE_DIR | Resuelto (ver abajo) | Directorio base para .rekindle/ |
Resolución de la raíz de almacenamiento. Todos los puntos de entrada de Rekindle (servidor, hook PreCompact) resuelven el directorio que contiene .rekindle/ mediante una sola regla, en orden:
REKINDLE_BASE_DIR, si está definido — lo explícito siempre gana- Derivado de
REKINDLE_DB_PATH, cuando apunta a un diseño canónico de<base>/.rekindle/db/ - Un
.rekindle/existente en el directorio de trabajo actual (nunca cuando cwd es la raíz del sistema de archivos) - Un
.rekindle/existente en tu directorio de inicio - De lo contrario: tu directorio de inicio — nunca el punto de generación
Las reglas 3 y 5 existen porque algunos hosts (por ejemplo, Claude Desktop) generan servidores MCP en cwd=/; un punto de generación no es una ubicación de almacenamiento. Si no se puede crear el almacenamiento, el servidor sale con un mensaje que nombra la solución en lugar de un rastreo de pila.
Privacidad y seguridad
- Todos los datos son locales. Nada se envía a servidores externos.
- Sin llamadas de red. El servidor MCP se comunica mediante stdio. Sin HTTP, sin telemetría, sin análisis.
- Las transcripciones contienen texto de conversación. No habilites la captura de transcripciones si tus sesiones contienen secretos o credenciales.
- La instalación del hook es opcional. Tanto el hook de captura (
setup-hooks) como el hook de entrega (setup-delivery) deben solicitarse explícitamente, por comando o por bandera. Uninitsimple nunca instala ninguno. - La base de datos SQLite es un archivo normal. No está cifrada. Usa cifrado de disco a nivel de sistema operativo si es necesario.
.rekindle/está en gitignore. El comando init lo maneja automáticamente.- boot_report lee archivos locales. Las rutas no están en un entorno aislado. Úsalo solo con clientes MCP y prompts en los que confíes.
Compatibilidad
"Entrega completa" significa que el paquete de orientación llega automáticamente en los límites de sesión y el modelo demuestra que lo ve, medido con sondas canarias tanto en la capa de recepción como en la capa del modelo, no asumido. Detalles y evidencia: resultados del spike de compatibilidad.
| Superficie del cliente | Herramientas MCP | Entrega al inicio de sesión |
|---|---|---|
| Terminal de Claude Code (macOS) | Probado | Entrega completa, medida (inicio, reanudación, /clear, /compact) |
| Terminal de Claude Code (Windows) | Probado | Entrega completa, medida |
| Terminal de Claude Code (Linux/WSL2) | Probado | Canal de hook idéntico; medición de entrega pendiente |
| Claude Desktop, superficie Code | Probado | Entrega completa, medida (/clear reentrega mediante inicio de nueva sesión) |
| Claude Desktop, superficie de chat | Probado | Solo modo herramienta: hooks no compatibles con el cliente; guía accesible mediante la búsqueda de herramientas del modelo |
| Cursor | Probado | Mediante .cursor/hooks.json, medido (ver abajo) |
| Cualquier cliente MCP stdio | Compatible | Depende del soporte de hooks del cliente |
Claude Code: orientación al inicio de sesión (opcional)
npx rekindle setup-delivery
escribe esto a .claude/settings.local.json:
{
"hooks": {
"SessionStart": [
{
"matcher": "startup|resume|clear|compact",
"hooks": [
{ "type": "command", "command": "npx rekindle session-start", "timeout": 60 }
]
}
]
}
}
El paquete está limitado a 8,000 bytes UTF-8 válidos — medido: cuando la salida del hook excede el límite del host, el modelo solo ve la porción inicial, sin que se muestre ningún error. Si se descartan secciones para ajustarse al presupuesto, un marcador dentro del paquete lo indica, y el recibo en .rekindle/receipts/session-start.jsonl registra exactamente lo que se emitió sin afirmar jamás que el modelo lo vio.
Cursor: orientación de inicio de sesión (opt-in)
El sistema de hooks de Cursor puede entregar el paquete de orientación presupuestado al inicio de la sesión, medido funcionando en el spike de compatibilidad v0.3.1. La configuración es manual y opt-in — Rekindle nunca instala hooks sin que se le pida. Añade a .cursor/hooks.json en tu proyecto:
{
"version": 1,
"hooks": {
"sessionStart": [ { "command": "rekindle session-start --client cursor" } ]
}
}
Privacidad: El payload del hook de Cursor incluye tu correo electrónico de cuenta y las rutas del espacio de trabajo. El adaptador trata ese payload como personal por defecto: extrae solo el ID de sesión y la raíz del espacio de trabajo (usados en el proceso para la resolución de almacenamiento), y ni el payload crudo, ni el correo, ni ninguna ruta se escriben jamás en recibos ni en ningún otro artefacto. Los agentes en segundo plano se omiten por defecto (con recibo veraz); opta con REKINDLE_ORIENT_BACKGROUND_AGENTS=1.
Architecture
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/
Almacenamiento: SQLite + FTS5 vía better-sqlite3. Clasificación BM25 potenciada por importancia. Registros tipados con type, source, session_id.
Transporte: stdio (MCP estándar). Funciona con Claude Code de fábrica.
Pruebas
npm test
148 pruebas: CRUD de almacenamiento + clasificación FTS5, dominio de orientación (detección de brechas, puntuación, servicio, renderizado), gestor de captura (análisis, límites, seguimiento de revisión, formato), entrega (presupuesto de paquete, recibos, canales de guía, centinelas de privacidad de Cursor), configuración de hooks para ambos hooks (esquema, idempotencia, rechazo de corrupción), e integración MCP (las 10 herramientas más metadatos de servidor derivados del paquete).
Hoja de ruta
v0.4: "Piensa en redes" — Activación en propagación, búsqueda semántica mediante embeddings, herramientas de análisis de brechas, arnés de evaluación.
Licencia
MIT