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

sessionmem

npm version License: MIT

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 sessionmem para que pueda iniciarse automáticamente.
  • Crea un archivo de configuración en ~/.sessionmem/config.json con valores predeterminados seguros y respetuosos con la privacidad, pero solo si no existe ya uno.
  • Inyecta instrucciones en ~/.claude/CLAUDE.md para 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í:

  • sessionmem observa 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?

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:

  1. Mientras trabajas, captura lo que sucede en la sesión.
  2. Cuando la sesión termina, resume las partes importantes (decisiones tomadas, advertencias, datos útiles) en notas breves y duraderas.
  3. 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:

sessionmemHerramientas 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, nuncaA veces
¿Con qué herramientas de IA funciona?Claude Code, Cursor, Codex, Cline, Windsurf, Antigravity, QCoder y cualquier otro host compatible con MCPGeneralmente solo una herramienta específica (comúnmente solo Claude Code)
Redacción de secretosIntegrada, 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 tokensLas 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/obsoletasPolí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 equipoOpcional, 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ónSí, 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ón228

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étricaResultado
Tasa de aciertos (10 consultas seleccionadas)100,0 %
Recuperación (recall)100,0 %
Precisión33,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

ComandoQué hace
sessionmem installRegistra 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 runInicia el servidor MCP.
sessionmem pingVerifica la conectividad del servidor.
sessionmem search <query> [--limit <n>]Busca memorias mediante consulta semántica.
sessionmem listLista 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 statsMuestra 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 statusGestiona el modo de memoria de equipo con ruta compartida.
sessionmem syncEnví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-..., AWS AKIA..., GitHub ghp_.../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:

  1. 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
    
  2. 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.

  3. 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.

  4. 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.


Licencia

MIT