sessionmem
Servidor MCP local que otorga a los asistentes de codificación de IA memoria de sesión persistente. Reducción de tokens del 85.6%, sin nube.
Documentación
sessionmem
85,6 % menos tokens. Cada sesión comienza conociendo tu código. Todo se almacena en tu máquina.
New session. Claude starts fresh.
WITHOUT sessionmem:
You explain the stack. The JWT bug from last week.
The Stripe migration that's halfway done. The billing code to stay away from.
Same questions. Different day.
WITH sessionmem:
[warning] JWT blacklist must be checked before issuing new tokens. Fixed PR #47.
[decision] Stripe migration ~50% done. Do NOT use /lib/billing-v1.
[fact] Stack: TypeScript, Next.js, Postgres.
Claude: "Looks like you're mid-Stripe migration. Where do you want to pick up?"
sessionmem es un servidor MCP que observa tus sesiones de programación y almacena lo que realmente importó: decisiones, advertencias, cosas que te perjudicarían si Claude las olvidara. Al inicio de cada nueva sesión, inyecta automáticamente los fragmentos relevantes. Funciona con Claude Code, Cursor, Cline, Codex, Windsurf y cualquier otra herramienta que hable MCP.
Todo permanece en tu máquina. Sin cuenta, sin nube, sin que los datos salgan de tu computadora a menos que lo actives explícitamente.
Inicio rápido
No se necesita experiencia en programación. Solo necesitas una terminal (Command Prompt, Terminal o PowerShell) y Node.js instalado.
1. Instalar sessionmem
npm install -g sessionmem
2. Registrarlo con tu herramienta de IA
Ejecuta esto dentro de la carpeta del proyecto en la que estás trabajando, con tu herramienta de IA (Claude Code, Cursor, etc.) configurada:
sessionmem install
Esto hace tres cosas:
- Le informa al host MCP de tu herramienta de IA sobre
sessionmempara que pueda iniciarse automáticamente. - Crea un archivo de configuración en
~/.sessionmem/config.jsoncon valores predeterminados seguros y respetuosos con la privacidad, pero solo si no existe ya uno. - Inyecta instrucciones en
~/.claude/CLAUDE.mdpara que Claude Code conozca las herramientas de sessionmem y las use de forma proactiva (idempotente, por lo que es seguro volver a ejecutarlo).
3. Usa tu herramienta de IA con normalidad
sessionmem run
(La mayoría de las veces no ejecutarás esto tú mismo. El host de tu herramienta de IA lo inicia automáticamente una vez que está registrado).
Eso es todo. A partir de aquí:
sessionmemobserva tus sesiones en segundo plano.- Al final de cada sesión, escribe un breve resumen de lo que importó.
- Al inicio de tu próxima sesión, le recuerda silenciosamente a tu asistente los fragmentos relevantes.
Puedes verificar que todo funciona con:
sessionmem ping
Tabla de contenidos
- ¿Qué problema resuelve esto?
- ¿En qué se diferencia sessionmem?
- Resultados de las pruebas comparativas
- Cómo funciona (en lenguaje sencillo)
- Referencia de comandos CLI
- Privacidad, secretos y tus datos
- Deterioro de la memoria: mantener la memoria precisa con el tiempo
- Modo equipo (opcional)
- Resumen en la nube (opcional, desactivado por defecto)
- Herramientas compatibles
- Documentación adicional
- Solución de problemas
- Preguntas frecuentes
- Contribuciones
- Licencia
¿Qué problema resuelve esto?
Si has usado un asistente de programación con IA durante más de un día, probablemente te has encontrado con esto:
Dedicas veinte minutos a explicar la configuración de tu proyecto, las bibliotecas que usas, un error complicado que ya corregiste y una decisión que tomaste sobre cómo debería funcionar la autenticación. El asistente asiente, te ayuda... y luego, en tu próxima sesión, lo ha olvidado todo. Lo explicas todo de nuevo.
Esto ocurre porque la mayoría de los asistentes de IA solo "saben" lo que está dentro de la conversación actual. Una vez que esa conversación termina, el contexto desaparece.
sessionmem soluciona esto permaneciendo en silencio entre tu asistente y tu proyecto:
- Mientras trabajas, captura lo que sucede en la sesión.
- Cuando la sesión termina, resume las partes importantes (decisiones tomadas, advertencias, datos útiles) en notas breves y duraderas.
- La próxima vez que inicies una sesión, le recuerda al asistente las notas más relevantes, automáticamente, en una pequeña cantidad de texto.
No ejecutas ninguno de estos pasos tú mismo. Una vez instalado, simplemente funciona en segundo plano.
¿En qué se diferencia sessionmem?
Existen otros proyectos de "memoria para Claude" (por ejemplo, herramientas como claude-mem y proyectos comunitarios similares). Esto es lo que distingue a sessionmem:
| sessionmem | Herramientas de memoria típicas en la nube/solo Claude | |
|---|---|---|
| ¿Dónde se almacenan los datos? | Un único archivo SQLite en tu computadora (~/.sessionmem/memories.db) | A menudo un servicio alojado, una base de datos vectorial en la nube o un proceso de servidor separado que debes ejecutar |
| ¿Se requiere cuenta / registro? | No, nunca | A veces |
| ¿Con qué herramientas de IA funciona? | Claude Code, Cursor, Codex, Cline, Windsurf, Antigravity, QCoder y cualquier otro host compatible con MCP | Generalmente solo una herramienta específica (comúnmente solo Claude Code) |
| Redacción de secretos | Integrada, activada por defecto. Las claves API, tokens, contraseñas y claves privadas se eliminan antes de guardar cualquier cosa. | A menudo no se maneja, o se deja al usuario |
| Control del presupuesto de tokens | Las memorias inyectadas se recortan a un presupuesto de tokens pequeño y fijo para que no abulten cada conversación (ver pruebas comparativas a continuación) | Varía, a menudo sin límite |
| Limpieza de memorias antiguas/obsoletas | Política de retención integrada que elimina automáticamente memorias antiguas (configurable, activada por defecto) | A menudo crece para siempre ("deterioro de la memoria") |
| Compartir en equipo | Opcional, mediante una carpeta compartida que ya controlas (unidad de red, directorio sincronizado). No se necesita servidor. | Generalmente requiere un backend alojado compartido |
| Capacidad sin conexión | Sí, completamente. Funciona sin conexión de red por defecto. | Generalmente requiere acceso a la red para el servicio de memoria |
En resumen: sessionmem es la opción aburrida, local y de "solo un archivo SQLite": fácil de inspeccionar, respaldar y eliminar, sin dependencia de la herramienta de IA de ningún proveedor específico.
Resultados de las pruebas comparativas
Estos números provienen de npm run benchmark (scripts/benchmark.mjs), que ejecuta el código real de recuperación e inyección en producción sobre un conjunto fijo y sintético de datos de prueba sin llamadas de red. Los resultados son totalmente reproducibles. Consulta docs/benchmark.md para ver el informe completo y cómo regenerarlo.
Ahorro de tokens
Reducción de ~85,6 % en tokens en comparación con llevar el historial completo de la sesión.
| Tokens | |
|---|---|
| Historial completo de la sesión (línea base) | 1.587 |
| Lo que sessionmem inyecta al inicio de tu próxima sesión | 228 |
En la práctica: en lugar de volver a leer (o volver a explicar) alrededor de 1.600 tokens de contexto pasado en cada sesión, el asistente recibe un resumen de 230 tokens solo con las cosas que importan: decisiones, advertencias y datos clave.
Precisión de recuperación
Tasa de aciertos del 100 %: cada una de las 10 consultas de prueba recuperó exitosamente la memoria que debía recuperar.
| Métrica | Resultado |
|---|---|
| Tasa de aciertos (10 consultas seleccionadas) | 100,0 % |
| Recuperación (recall) | 100,0 % |
| Precisión | 33,3 % |
Una precisión del 33,3 % es esperable aquí: cada consulta recupera las 3 mejores memorias candidatas, y solo una de esas tres es la coincidencia "esperada" para una consulta de prueba determinada. Las otras dos siguen siendo contexto relevante para el agente, solo que no son la que se evalúa. El número importante es la recuperación/tasa de aciertos: la memoria correcta nunca se pierde.
Estas pruebas comparativas son deterministas y reproducibles. Ejecútalas tú mismo:
npm run build # benchmark imports the compiled code from dist/
npm run benchmark # regenerates docs/benchmark.md
Cómo funciona (en lenguaje sencillo)
┌──────────────────────────────────────────────┐
│ Your AI tool │
│ (Claude Code, Cursor, Codex, Cline, ...) │
└───────────────────────┬──────────────────────┘
│
┌───────────▼───────────┐ ┌──────────────┐
│ sessionmem adapter │ │ sessionmem │
│ (translates for your │ │ CLI │
│ specific AI tool) │ │ (you type │
└───────────┬───────────┘ │ commands) │
│ └──────┬───────┘
▼ │
┌──────────────────────────────────────────────┐
│ sessionmem core engine │
│ watches sessions · writes summaries · │
│ finds relevant memories · trims to fit │
└───────────────────────┬──────────────────────┘
│
▼
┌──────────────────────────────────────────────┐
│ One SQLite file on your computer │
│ ~/.sessionmem/memories.db │
└──────────────────────────────────────────────┘
- Los adaptadores son pequeñas piezas que saben cómo comunicarse con cada herramienta de IA específica. Por eso sessionmem puede admitir muchas herramientas: agregar una nueva no cambia cómo funciona la memoria en sí.
- El motor central es el mismo sin importar qué herramienta uses. Decide qué vale la pena recordar, qué tan relevante será más adelante y cuánto cabe en un pequeño "recordatorio" al inicio de tu próxima sesión.
- La base de datos es solo un archivo. Puedes respaldarla, moverla, inspeccionarla o eliminarla como cualquier otro archivo en tu computadora.
Para una inmersión técnica más profunda, consulta docs/architecture.md.
Referencia de comandos CLI
| Comando | Qué hace |
|---|---|
sessionmem install | Registra sessionmem con el host MCP actual y escribe la configuración predeterminada. |
sessionmem uninstall [--purge] | Elimina sessionmem del host. --purge también elimina la base de datos local. |
sessionmem run | Inicia el servidor MCP. |
sessionmem ping | Verifica la conectividad del servidor. |
sessionmem search <query> [--limit <n>] | Busca memorias mediante consulta semántica. |
sessionmem list | Lista todas las memorias del proyecto actual. |
sessionmem show <id> | Muestra los detalles completos de una memoria. |
sessionmem forget <id> [--force] | Elimina una memoria por ID. |
sessionmem export [path] | Exporta memorias a un archivo JSON. |
sessionmem import <path> [--merge] | Importa memorias desde un archivo JSON. |
sessionmem stats | Muestra estadísticas de memoria del proyecto actual. |
sessionmem savings [--json] | Muestra el ahorro de tokens por compresión e inyección, con porcentaje. |
sessionmem redact-scan [--apply] | Escanea las memorias almacenadas en busca de secretos; --apply los redacta en el lugar. |
sessionmem retention prune [--force] [--days <n>] | Elimina memorias antiguas (simulación por defecto). |
sessionmem config get <key> / config set <key> <value> | Lee y escribe la configuración de políticas. |
sessionmem team enable <path> / team disable / team status | Gestiona el modo de memoria de equipo con ruta compartida. |
sessionmem sync | Envía memorias locales y obtiene memorias de compañeros mediante la ruta compartida. |
Privacidad, secretos y tus datos
Todo permanece en tu máquina por defecto. Sin cuenta, sin telemetría, sin servicio de memoria alojado. El almacenamiento, la recuperación y el resumen se ejecutan localmente, regidos por ~/.sessionmem/config.json.
Los secretos se eliminan automáticamente
Antes de guardar cualquier cosa, sessionmem elimina automáticamente los patrones de secretos comunes y los reemplaza con REDACTED:
- Direcciones de correo electrónico
- Claves API (
sk-..., AWSAKIA..., GitHubghp_.../gho_..., etc.) - Tokens Bearer y JWT
- Bloques de claves privadas (
-----BEGIN ... PRIVATE KEY-----) - Secretos tipo cadena de conexión (
password=...,secret=...)
Esto está activado por defecto. Puedes escanear y limpiar memorias más antiguas en cualquier momento:
sessionmem redact-scan # see what would be redacted
sessionmem redact-scan --apply # actually redact in place
Detalles completos: docs/privacy-and-retention.md.
Deterioro de la memoria: mantener la memoria precisa con el tiempo
El "deterioro de la memoria" es lo que ocurre cuando un sistema de memoria acumula notas para siempre. Con el tiempo se llena de decisiones obsoletas, datos duplicados y ruido, y el asistente comienza a mostrar información desactualizada en lugar de información útil.
sessionmem está diseñado para evitar esto de varias maneras:
-
Poda por retención: las memorias más antiguas que una ventana configurable (90 días por defecto) son elegibles automáticamente para limpieza. Esto se ejecuta como una verificación ligera al final de cada sesión y también puede ejecutarse manualmente:
sessionmem retention prune # dry run - shows what *would* be deleted sessionmem retention prune --force # actually deletes -
Clasificación ponderada por importancia: cuando se recuperan memorias, se clasifican mediante una combinación de relevancia semántica, actualidad e importancia. Las notas antiguas y de baja importancia se hunden naturalmente y dejan de mostrarse incluso antes de ser podadas.
-
Inyección con presupuesto de tokens: solo se inyectan las memorias mejor clasificadas y más relevantes (recortadas a un pequeño presupuesto de tokens, ver pruebas comparativas), de modo que incluso un almacén de memoria grande no produzca un contexto abultado y ruidoso.
-
Resolución de conflictos en modo equipo: cuando se fusionan memorias de compañeros, el sistema usa último-escritura-gana por id (para que los duplicados obsoletos no se acumulen) mientras preserva la puntuación de importancia más alta (para que una advertencia crítica no se degrade silenciosamente).
La prueba comparativa de recuperación anterior (100 % de tasa de aciertos / 100 % de recall) demuestra que incluso con la clasificación y el recorte implementados, la memoria correcta sigue apareciendo. La precisión no se sacrifica por la compacidad.
Siempre tienes el control: exporta todo primero si quieres un registro permanente antes de podar:
sessionmem export
Modo equipo (opcional)
¿Quieres que los asistentes de IA de todo tu equipo compartan decisiones y advertencias? Apunta sessionmem a una carpeta compartida (una unidad de red, un directorio sincronizado o cualquier ubicación que todos puedan leer y escribir):
sessionmem team enable <shared-path>
sessionmem sync
- Desactivado por defecto: no se comparte nada hasta que lo actives.
- No se necesita servidor. Son solo archivos en una carpeta que ya controlas.
- Los recuerdos de los compañeros aparecen con un prefijo
author:para que sepas de dónde vienen. - Los secretos se vuelven a redactar en cada recuerdo extraído, para que la instantánea de un compañero no pueda reintroducir algo que tu política de redacción habría eliminado.
Detalles completos, incluido el modelo de confianza: docs/team-mode.md.
Resumen en la nube (opcional, desactivado por defecto)
Por defecto, el resumen (convertir una sesión en un recuerdo breve) ocurre completamente en local, sin llamadas a la API.
Si te suscribes explícitamente (allowCloudSummarization=true) y proporcionas un ANTHROPIC_API_KEY, el resumen puede usar la API de Claude para obtener resúmenes de mayor calidad. Si eso falla, automáticamente recurre al resumen local. Tus sesiones nunca quedan sin resumir.
Detalles: docs/cloud-summarization.md.
Herramientas compatibles
sessionmem funciona con cualquier host compatible con MCP, incluyendo:
- Claude Code
- Cursor
- Codex
- Cline
- Windsurf
- Antigravity
- QCoder
...y cualquier otra herramienta que implemente el Model Context Protocol.
Documentación adicional
- Arquitectura: cómo encajan el motor principal, los adaptadores, la CLI y el almacenamiento SQLite.
- Benchmark: informe completo de reducción de tokens y precisión de recuperación, y cómo reproducirlo.
- Privacidad y retención: redacción de secretos, poda de retención y configuración.
- Modo equipo: memoria de equipo con ruta compartida.
- Resumen en la nube: la ruta opcional de resumen en la nube.
- Migración: el sistema de migración SQLite y la política de actualización de versiones.
- Solución de problemas: fallos de instalación, problemas de adaptadores y problemas de compilación nativa de
better-sqlite3.
Solución de problemas
¿Tienes problemas para instalar o ejecutar sessionmem? Empieza con docs/troubleshooting.md. Cubre fallos de instalación, problemas específicos de adaptadores, datos de sesión faltantes y problemas de compilación del módulo nativo (better-sqlite3) en diferentes plataformas.
Dos comprobaciones rápidas que resuelven la mayoría de los informes:
sessionmem install # idempotent — re-registers the MCP server and all three hooks
sessionmem stats # memories, sessions, and session_events for the current project
Si stats muestra sessions: 0 después de trabajo real, consulta “0 sesiones” / no se registraron datos de sesión. Los recuerdos están vinculados a la raíz del repositorio, por lo que cada directorio dentro de un repositorio comparte un bucket; fuera de un repositorio, el directorio de trabajo en sí es la clave.
Comprobaciones rápidas:
sessionmem ping # is the server reachable?
sessionmem stats # is data being stored?
Preguntas frecuentes
¿Cómo le doy memoria a Cursor, Cline o Windsurf entre sesiones?
Instala sessionmem (npm i -g sessionmem) y luego ejecuta sessionmem install en tu proyecto. Se registra automáticamente como servidor MCP con cualquier host compatible.
¿Cómo le doy memoria persistente a Claude Code?
La misma instalación. sessionmem también se distribuye como plugin de Claude Code (el archivo .claude-plugin en el repositorio), por lo que también funciona con el sistema de plugins nativo de Claude Code.
¿Existe un servidor de memoria MCP local que funcione sin conexión y sin clave de API?
Sí. sessionmem almacena todo en un único archivo SQLite en ~/.sessionmem/memories.db y funciona completamente sin conexión por defecto. Nada sale de tu máquina a menos que habilites explícitamente la ruta opcional de resumen en la nube.
¿En qué se diferencia sessionmem de claude-mem? sessionmem no es exclusivo de Claude. Funciona con Cursor, Cline, Codex, Windsurf, Antigravity, QCoder y cualquier otro host MCP, no solo Claude Code. También redacta secretos (claves de API, tokens, JWT) por defecto, poda automáticamente la memoria obsoleta y ofrece benchmarks reproducibles que puedes ejecutar tú mismo.
¿sessionmem envía mi código a la nube? No. Nada sale de tu máquina por defecto. La ruta opcional de resumen en la nube es opcional y está desactivada por defecto.
¿Cómo veo cuántos tokens me ha ahorrado sessionmem?
Ejecuta sessionmem savings para ver un desglose de la compresión de almacenamiento (tokens de sesión sin procesar frente a tokens de memoria) y la eficiencia de inyección. Añade --json para obtener una salida legible por máquina.
Contribuciones
Las incidencias y las pull requests son bienvenidas. El código está en TypeScript, probado con Vitest y verificado con ESLint:
npm install
npm run build
npm test
npm run lint
Configuración de MCP para desarrollo local: Copia .mcp.json.example a .mcp.json para desarrollo local, o usa sessionmem install para configurarlo automáticamente. El archivo .mcp.json está en gitignore porque contiene rutas específicas de la máquina.