deja-vu

Una memoria compartida por Claude Code, Codex, Cursor, Copilot CLI, OpenClaw y 28 agentes de codificación más, construida a partir del historial de sesiones ya en disco. Una solución encontrada en un agente regresa en cualquiera de ellos, incluyendo meses de sesiones anteriores a su instalación. Sin LLM, sin embeddings, un solo binario local de Go.

Documentación

deja-vu

La única memoria que comparten tus agentes de codificación, construida a partir del historial que ya está en tu disco.

Tu agente está a punto de volver a depurar algo que arreglaste en marzo — en un agente diferente. deja indexa las sesiones que Claude Code, Codex, Cursor y cualquier otro agente en esta máquina ya escribieron en el disco, y entrega la correcta a cualquier agente que la pida.

The same question put to the same agent twice: without memory it has no record of it, with deja it answers with the decision from eight months earlier

Nadie buscó nada — el agente llamó a deja por sí mismo. Cada línea está citada de dos sesiones reales.

Cada herramienta de memoria empieza vacía y registra hacia adelante. deja empieza llena.

Y nadie tiene que pedirlo: el recuerdo llega al inicio de la sesión, en cada mensaje, antes de que se edite un archivo o se ejecute un comando, y después de que uno falle. Las claves y tokens se eliminan mientras se construye el índice, así que lo que llega al modelo es seguro de enviar.

85.3% hit@1 en LongMemEval-S · 69.7% retrieval hit@1 en LoCoMo · búsquedas en milisegundos sobre gigabytes de historial
Ambos harnesses se incluyen en este repositorio y se ejecutan en los conjuntos de datos públicos en minutos · comprueba los números tú mismo

CI Release MCP Toplist MIT License

English | 中文

Docs · Benchmarks · Cómo se compara · Integrarlo en tu herramienta

¿Te resultó útil? Dale una estrella a deja-vu en GitHub para que otros desarrolladores puedan encontrarlo.

Instalación

curl -fsSL https://raw.githubusercontent.com/vshulcz/deja-vu/main/install.sh | sh
deja install --auto

What deja prints after the first index: the mark, the agents it found, and a query taken from your own history

Diez segundos para instalar, unos diez para indexar, y ya es útil. El segundo comando conecta el recuerdo MCP a cada agente que encuentre, activa el recuerdo al inicio de sesión donde el agente lo soporte, y construye el primer índice para que la próxima sesión no tenga que pagar por ello.

Inicia una nueva sesión de agente y pregúntale algo en lo que trabajaste hace meses:

¿hemos tratado la rotación de refresco de JWT antes? revisa tu memoria

Tampoco tiene que ser preguntado — con el auto-recuerdo el agente ya sabe lo que resolviste en ese proyecto cuando la sesión se abre.

Otras formas de instalar, y qué hacer si quieres menos que todo

brew install deja-vu, go install github.com/vshulcz/deja-vu/cmd/deja@latest, o npx @vshulcz/deja-vu "query" para probarlo sin instalar nada. Las aplicaciones de escritorio que toman servidores MCP como paquetes pueden abrir el .mcpb desde el último lanzamiento; lleva el binario.

Claude Code, Codex, Cursor, Qwen, OpenClaw y Copilot pueden tomar el mismo paquete de plugin desde sus propios marketplaces en su lugar:

claude plugin marketplace add vshulcz/deja-vu && claude plugin install deja-vu@deja-vu

En Windows el script de instalación sale con unsupported OS — es un script de shell. Usa Scoop en su lugar, desde el bucket principal que cada instalación de Scoop ya tiene:

scoop install deja-vu

O toma deja-vu_<version>_windows_amd64.zip del último lanzamiento y pon deja.exe en tu PATH, por ejemplo en %USERPROFILE%\.local\bin.

El binario solo es una instalación completa para buscar: indexar, buscar, show, ctx, blame, --json y redacción no necesitan nada más. deja install es lo que conecta MCP a tus agentes y activa el recuerdo al inicio de sesión — vale la pena tenerlo, y es opcional. En una configuración solo-binario deja doctor reporta cada objetivo MCP como not-wired, que es esa configuración funcionando como se pretende. deja warmup también deja una habilidad en ~/.agents/skills/deja-search/SKILL.md que enseña a un agente el contrato CLI — deja search --json, ctx, blame, cómo leer tier y total — para que sepa que el historial es buscable sin MCP. La copia en el repositorio es skills/deja-search/SKILL.md.

deja install --all es --auto sin el recuerdo al inicio de sesión: los agentes responden desde la memoria cuando deciden llamarlo, en lugar de empezar cada sesión con él. La guía de configuración de agentes cubre lo que cada harness soporta, el archivo de contexto de solo lectura de aider, y el wrapper de Windows cmd /c deja mcp.

Lo que se escribe en el archivo de guía de cada agente

La instalación también escribe guía a nivel de usuario para los harnesses que detecta: Claude Code, Codex, opencode, Gemini CLI, Antigravity, Qwen, Kimi Code, pi, Senpi, Copilot, VS Code Copilot Chat, Cursor, Goose, OpenClaw, Hermes, Roo Code, omp, Amp, prime-agent, DeepSeek Harness, Continue, Crush y Zed — cada uno recibe su propia guía en su archivo (o bajo el XDG_CONFIG_HOME configurado). Re-ejecutar reescribe la habilidad o bloque marcado de deja sin cambiar el contenido de usuario circundante. Usa deja install --all --no-guidance para optar por no participar; Grok Build recibe la habilidad compartida en ~/.agents/skills, que es lo que lee; el ~/.grok/GROK.md escrito junto a ella es para el CLI comunitario no relacionado que comparte ese directorio. Cursor no tiene archivo de instrucciones a nivel de usuario, así que recibe la habilidad compartida en ~/.agents/skills — uno de los cuatro lugares de donde Cursor lee habilidades — leída solo cuando algo parece relevante en lugar de cada sesión.

Lo que obtienes

Resuélvelo en Codex. Claude lo recuerda. Treinta y cuatro agentes de codificación escriben cada conversación en archivos locales, y deja convierte esos archivos en una capa de memoria que todos leen.

Búsqueda retroactivadeja "connection pool exhausted" sobre gigabytes, incluyendo todo lo anterior a instalar deja. Las preguntas en lenguaje natural caen a un nivel de relevancia. El tiempo es una pista, no un filtro.
Recuerdo entre agentesLa herramienta MCP recall responde "arreglamos esto hace tres semanas" en cualquier agente que pregunte, sin importar quién lo resolvió originalmente.
Sobrevive a la compactaciónMedido en 43 compactaciones: el resumen conserva el 77% de las decisiones y el 0.2% de los comandos que ejecutaste. deja devuelve el otro 99.8% — y en Claude Code y Codex captura la tarea, los archivos y los comandos cuando la compactación comienza, luego los devuelve una vez en la próxima sesión.
Recuerdo en el punto de acciónAntes de que un agente edite un archivo o ejecute un comando, deja nombra la decisión previa de ese archivo, la invocación funcional de ese comando, o el programa que esta máquina no tiene. Cuando un comando falla, un hook PostToolUse responde con lo que siguió a ese mismo error aquí antes — el par que un agente nunca piensa en pedir.
Indexa el trabajo, no solo la charlaLos archivos que cada turno abrió, los comandos que se ejecutaron con su estado de salida, y los tramos exactos que una edición reemplazó. Esa es la parte que todo resumen descarta.
Cuatro más: decisiones rechazadas, obsolescencia, sincronización y traspaso, redacción
Sabe lo que se mantuvodeja promote <id> --state rejected --note "why" marca una decisión que revertiste. Cada acierto posterior para esa sesión muestra que se intentó y se rechazó, con la razón. Nada se elimina, y --state accepted quita la marca.
Dice cuando el terreno se movióUn acierto reporta 4 archivos que esta sesión tocó han cambiado desde entonces, y no dice nada cuando no puede saberlo. Nunca afirma que algo no ha cambiado.
Sincronización y traspasodeja sync ssh laptop mueve memoria entre máquinas, solo-agregar, sin nube en el medio. deja handoff --to codex empaqueta el contexto vivo para que puedas continuar en otro agente.
RedacciónClaves, tokens, JWTs y bloques de claves privadas se eliminan al indexar, así que la caché es segura de conservar.

Tu propio trabajo, envuelto

deja stats --card lo dibuja en la terminal; dale un nombre de archivo y escribe un SVG para un README de perfil. Para publicarlo en cualquier otro lugar, conviértelo en un PNG — esa página lo convierte en tu propio navegador.

deja stats card: a year of agent sessions as a heatmap, the agents they came from, and the longest one

La referencia completa de funciones vive en los docs.

Privacidad

La indexación y la búsqueda son locales. La red se usa solo por deja update, deja sync ssh, y la verificación de versión en deja doctor.

Las credenciales se redactan al indexar: claves AWS, asignaciones de api_key= y token=, tokens bearer y JWTs crudos, bloques de claves privadas PEM, tokens de proveedores, URLs de scheme://user:pass@host, valores de alta entropía para formas que ningún patrón conoce, y una contraseña declarada en prosa — "la contraseña de administrador es …", donde no hay delimitador para que las otras reglas la encuentren. El valor se convierte en [redacted:<kind>] y el texto circundante permanece buscable. deja share y deja sync export re-aplican la redacción a la salida.

deja forget elimina sesiones de un índice reconstruido y escribe tombstones, así que un deja index posterior no puede restaurarlas desde el historial fuente. --unforget levanta un tombstone. Las exclusiones de proyecto son un patrón por línea en ~/.config/deja/exclude; una línea con prefijo harness: nombra un almacén en su lugar — harness:opencode — y deja ni lo recorre ni pide la herramienta que lo leería.

El modelo de seguridad documenta flujos de datos, límites de redacción, supuestos de confianza y verificación de lanzamientos.

CLI

$ deja "jwt refresh token"
[claude] api        · Jul 8 · 8f31c0a9 — 2 matches
  login started failing after refresh token rotation; jwt kid mismatch in tests
  fixed by reloading jwks cache after rotateKey and adding a clock-skew test
[codex]  web        · Jul 1 · b77d91e2 — 1 match
  refresh token cookie needed SameSite=Lax in local callback flow

Pregunta a tu historial

ComandoQué hace
deja <query>Busca en todo el historial. Multi-palabra es Y y frases entre comillas requieren texto contiguo; una consulta sin coincidencia exacta luego prueba formas de palabras y ortografías cercanas, que es donde una subcadena alcanza su palabra (code encuentra opencode).
dejaCon un índice y una terminal: las sesiones de hoy, recuerdos servidos, una pregunta que hiciste en más de una sesión, y un muro que tus agentes siguen golpeando.
deja wipLo que la última sesión en este directorio estaba haciendo: la tarea, lo que resolvió, los archivos en vuelo, el último comando y si falló — derivado de la transcripción, no de una nota que alguien recordó escribir.
deja blame <path>[:line]Qué sesiones discutieron un archivo, qué se decidió, y por qué. Con una línea: el commit que la cambió por última vez, y la sesión que escribió esa línea o el texto que el commit reemplazó. --attribution imprime la respuesta de línea sola, como JSON con --json, y --git-note la registra en refs/notes/deja.
deja files <topic>La otra dirección: qué archivos tocó realmente el trabajo sobre un tema.
deja how <tool>Cómo esta máquina realmente ejecuta algo, con las banderas reales, de lo que los agentes ejecutaron antes.
deja fix <error>Lo que esta máquina ejecutó después de ese mismo error antes, cuando el error no volvió.
deja frictionErrores que golpearon tres o más sesiones separadas, con los harnesses nombrados.
Usar lo que encuentra, y moverlo entre máquinas

Usa lo que encuentra

ComandoQué hace
deja ctx <query>Resumen Markdown de la mejor coincidencia, listo para pasar a un prompt.
deja resume <id>Reabrir una sesión encontrada en su entorno nativo.
deja restore <path>Devolver un fragmento que un agente reemplazó, desde el old_string que su edición registró. Nunca sobrescribe el original.
deja promote <id>Destilar una sesión en una nota curada con procedencia, etiquetas y un estado de ciclo de vida. Las notas superan a los transcripciones crudas.
deja share <id>Un resumen de sesión sanitizado para un colega, con los secretos ya eliminados.

Muévelo y verifícalo

ComandoQué hace
deja sync export/import/sshMover memoria entre máquinas. Con marca de agua, solo añadido, idempotente.
deja viewToda tu memoria como un único archivo HTML local. Sin servidor, nada sale de la máquina.
deja statsTu trabajo de agente, empaquetado. --card lo dibuja en la terminal, --card <file>.svg escribe uno para un perfil, --html una línea de tiempo navegable.
deja doctor [--deep]Autodiagnóstico, y con --deep, prueba del índice contra las fuentes.
deja mcpEl servidor MCP stdio, que es lo que deja install conecta.

Referencia completa: comandos y salida JSON.

Herramientas MCP

El servidor expone una herramienta, deja, con un mode. deja install la conecta, así que esto solo se necesita para configurar un agente manualmente. Los seis nombres de herramientas más antiguos (recall, recall_context, blame, fix, how, remember) todavía responden para cualquier cosa ya conectada a ellos.

Argumentos y formas de retorno
HerramientaArgumentosRetornos
dejamode, más query, path, error, what, text, tags?, harness?, project?, since?, limit?, offset?, all?Depende del modo, abajo.
ModoArgumentos que leeRetornos
recallquery, harness?, limit?, offset?Fragmentos de coincidencia densos, limitados a 4KB.
contextquery, harness?Resumen Markdown de la sesión con mejor coincidencia.
blamepath, harness?, project?, since?, limit?, all?Sesiones que discutieron un archivo.
fixerror, project?, limit?Lo que esta máquina ejecutó, o cambió, después de ese mismo error antes.
howwhat, project?, limit?La invocación real, de lo que los agentes ejecutaron aquí.
remembertext, project?, tags?Almacena una decisión duradera para recuperarla después.

Entornos compatibles

Con el auto-recuperación instalado, Claude Code y Codex entregan a deja la transcripción cuando comienza una compactación, y conserva lo que el resumen está a punto de descartar: la tarea, las conclusiones, los archivos, los comandos con lo que hizo cada uno, y lo que quedó abierto. El siguiente hook para la misma sesión y espacio de trabajo lo devuelve una vez, dentro de un presupuesto de 4 KB, con una línea que indica si el repositorio se movió desde entonces. deja stats cuenta las llamadas a herramientas antes de la primera edición después de una compactación, que es el número contra el que se mide esto. Consulta recuperación automática de compactación para ver qué se lee, qué se almacena y dónde están los límites.

aider · Amp · Antigravity · Claude Code · Cline · Codex CLI · Copilot CLI · VS Code Copilot Chat · Cursor · DeepSeek Harness · Gemini CLI · Goose · Grok Build · Hermes · Kimi Code · omp (Oh My Pi) · OpenClaw · opencode · Continue · Crush · pi · prime-agent (PrimeIntellect) · Qwen Code · Cherry Studio · Senpi · gajae-code · Kimchi Coding · Command Code · ZCode · Kiro · Kilo Code · Roo Code · Zed · CodeWhale.

Qué soporta cada uno
EntornoRecuperación MCPAuto-recuperaciónHabilidadComandoReanudarTransferenciaNecesita
aiderdeja aider
Amp
Antigravity
Claude Code
Cline
Codex CLI
Copilot CLI
VS Code Copilot Chatpegar
Cursorsqlite3 (chats IDE)
DeepSeek Harnesspegarzstd
Gemini CLI
Goosedeja goose
Grok Buildsqlite3 (tienda grok-dev)
Hermespegarsqlite3
Kimi Code
omp (Oh My Pi)
OpenClawpegar
opencodesqlite3
Continuepegar
Crushsqlite3
pi
prime-agent (PrimeIntellect)
Qwen Code
Cherry Studiopegarimporta el servidor una vez en Configuración -> MCP; habilita la habilidad para el agente
Senpininguno
gajae-codepegarninguno
Kimchi Codingpegarninguno
Command Code?pegarninguno
ZCode???pegarsqlite3 para la base de datos CLI
Kiro?pegarninguno
Kilo Codepegarsqlite3 para el almacén CLI
Roo Codepegarroo CLI (las tareas del editor se reabren en el editor)
Zedpegarsqlite3 + zstd
CodeWhale??pegarninguno

✅ funciona · — posible, aún no construido · ✕ el entorno no tiene tal mecanismo · ⚠ bloqueado por un error ascendente · ? no investigado

Las ubicaciones de almacenamiento personalizadas pasan por variables DEJA_*_ROOT, y la variable de reubicación de cada agente también se respeta. El registro de formato de sesión documenta las rutas observadas, los esquemas de registro y el mapeo de roles por entorno, con fixtures sintéticos que mantienen esas descripciones verificadas contra los analizadores.

Entornos con un paquete propio

deja install --auto conecta los seis como cualquier otro entorno, y esa sigue siendo la ruta más corta. También tienen un paquete en su propio ecosistema, para personas que instalan extensiones allí en lugar de desde un CLI:

EntornoPaqueteInstalación
opencodenpm opencode-dejaopencode plugin opencode-deja
DeepSeek Harnessnpm dsh-dejadsh plugin --profile web add dsh-deja
Zeddeja-context-serverZed → Extensiones → deja
Kimi Codeplugin deja/plugins install https://github.com/vshulcz/deja-vu
Codex CLIplugin deja-vucodex plugin marketplace add https://github.com/vshulcz/deja-vu luego codex plugin add deja-vu@deja-vu
Grok Buildplugin dejagrok plugin marketplace add xai-org/plugin-marketplace luego grok plugin install deja

Cualquiera de las dos rutas es suficiente por sí sola, y tener ambas no es un problema: los paquetes de opencode, dsh, Kimi, Grok y Codex leen lo que deja install escribió y contribuyen solo lo que falta, y en Zed ambas mitades usan un solo id de servidor, así que no hay nada que tener dos veces en cualquier orden que instales.

Cada uno usa el deja que ya tienes; la copia que incluye es solo el respaldo.

La misma búsqueda también es una habilidad, para cualquier agente que cargue un SKILL.md:

npx skills add https://github.com/vshulcz/deja-vu --skill deja-search   # skills CLI: Claude Code, Cursor, Goose, Copilot…
openclaw skills install @vshulcz/deja-search                            # ClawHub
hermes skills install vshulcz/deja-vu/skills/deja-search                # Hermes

La habilidad impulsa el binario deja del paso de instalación anterior; no incluye uno.

Recuperación semántica (opcional)

Apunta deja embed a un endpoint local de Ollama, LM Studio o compatible con OpenAI con DEJA_EMBED_URL y las consultas reformuladas aún aciertan. Sin un runtime alcanzable, la búsqueda léxica y la recuperación MCP continúan sin cambios. OpenAI Platform funciona con su clave estándar:

export OPENAI_API_KEY='sk-...'
export DEJA_EMBED_URL='https://api.openai.com/v1/embeddings'
export DEJA_EMBED_MODEL='text-embedding-3-small'
deja embed

Sin DEJA_EMBED_URL configurado, deja sondea localhost:11434 y localhost:1234, así que una máquina que ya ejecuta Ollama o LM Studio se detecta sin que se le pregunte. DEJA_EMBED_OFF=1, o DEJA_EMBED_URL=off, desactiva esa sonda — cualquier otro DEJA_EMBED_URL configurado aún gana.

Para otro endpoint autenticado compatible con OpenAI, configura DEJA_EMBED_KEY explícitamente:

export DEJA_EMBED_URL='https://example.com/v1/embeddings'
export DEJA_EMBED_MODEL='embedding-model'
export DEJA_EMBED_KEY='...'
deja embed

DEJA_EMBED_KEY tiene prioridad. OPENAI_API_KEY se usa automáticamente solo para una URL api.openai.com HTTPS; nunca se envía implícitamente a endpoints locales o de terceros.

Dónde viven los vectores y cuánto cuestan

El sidecar se encuentra junto al índice como .vectors.bin, no dentro de index.db. Los vectores Float32 cuestan aproximadamente 4 MB por 1k mensajes para un modelo de 1,024 dimensiones. Un endpoint remoto recibe el texto indexado redactado, truncado a unos 2k caracteres, pero nunca archivos fuente crudos. Con Ollama o LM Studio, la incrustación permanece local y no necesita clave.

Prueba

deja bench recall     # ranking floor: 100 queries, half Russian, CI fails if recall drops
deja bench context    # 30 seeded task chains plus five negative controls
deja bench block      # does the answer survive into what deja hands over
deja bench prompt     # what the per-prompt hook fires on, and what it fires on wrongly
deja bench ingest     # what an update costs: unchanged, a turn, a new transcript, a rename, a rewrite
deja bench read       # what it costs to read a database-backed store, and what one long value does to it

bench block hace la pregunta que los otros tres no pueden: con la sesión correcta en mano, ¿el bloque lleva lo que esa sesión resolvió? Ocho sesiones discuten cada tema y una de ellas lo resuelve, en medio de su propia transcripción en lugar de al final — así que el brazo base, los turnos más nuevos del mejor resultado, puntúa cero y un brazo por encima de cero tuvo que elegir.

BrazoLleva la respuestaTokens medianos
deja-block (bloque de inicio de sesión)1.00665
deja-digest (resumen de contexto)1.001656
newest-turn (base)0.00289
cold0.000

El experimento de contexto compara deja-recall contra historial completo, grep ingenuo y contexto frío. Con la semilla predeterminada:

BrazoTokens medianosCobertura medianaTokens de control negativo
deja-recall1,0961.000
historial completo80,5471.0078,145
grep ingenuo273,2381.000
frío00.000

Misma cobertura de hechos que hacer grep de los registros crudos por aproximadamente 250x menos tokens, y aproximadamente 70x menos que reproducir las sesiones coincidentes en su totalidad, mientras no inyecta nada en las cadenas donde ningún hecho previo es relevante. El generador de corpus y las etiquetas de relevancia son Go ordinario revisado. Audita qué significa "relevante" antes de confiar en cualquier cifra, incluidas las nuestras.

Medido en un almacén real de 2,419 sesiones y 179k mensajes, 1.9 GB de transcripciones:

MediciónResultado
Búsqueda, en proceso~0.7 ms mediana (deja bench recall, 100 consultas, la mitad en ruso), ~19 ms en los pajares de LongMemEval-S
deja <query>, de extremo a extremo~0.2 s mediana en ese almacén: inicio del proceso, la verificación de frescura sobre cada almacén, clasificación, impresión
Verificación de frescura sola~50 ms cuando nada cambió
Tamaño del índice200 MB, ~10% del corpus

El índice es incremental. Cuando un archivo de sesión crece, solo ese archivo se vuelve a leer.

Cómo funciona

Índice invertido local en ~/.cache/deja: analiza los almacenes JSONL y SQLite, redacta credenciales, escribe records.bin más cubos de tokens, y rastrea el estado por archivo en manifest.gob para que las ejecuciones repetidas solo ingieran lo que cambió. El servidor MCP, estadísticas, compartir y sincronizar leen ese único índice. Detalles en docs/ARCHITECTURE.md.

Preguntas frecuentes

¿Sale algo de mi máquina? No, a menos que lo pidas. Consulta los flujos de datos. ¿Qué pasa con los secretos que ya están en mis registros? Permanecen en los archivos originales del harness, que son los datos de tu agente. Las formas conocidas — claves de AWS, asignaciones de api_key=/token=, tokens de portador y JWTs simples, bloques PEM, tokens de proveedores, valores de alta entropía — se eliminan al construir el índice, por lo que no llegan a resúmenes, comparticiones o exportaciones de sincronización. La coincidencia de patrones no es detección de secretos: una forma que no conoce puede pasar. Consulta el modelo de seguridad.

¿Hará más lento a mi agente? Una recuperación es una búsqueda léxica contra un índice local: mediana de ~0.7 ms, y nada espera a un modelo. Un hook añade el inicio del proceso y una verificación de frescura sobre tus almacenes además de eso — decenas de milisegundos en un almacén de unos pocos gigabytes.

¿Tengo que cambiar mi forma de trabajar? No. El agente llama a la recuperación por sí mismo, y con la recuperación automática ya conoce las decisiones previas del proyecto cuando se abre la sesión.

¿En qué se diferencia de las otras herramientas de memoria?

dejaPlataformas de memoria
(Mem0, Letta, memU)
Búsqueda de sesión
(cass)
Conoce el trabajo anterior a su instalaciónno
Paso de capturaninguno, las transcripciones son la memoriael agente o tu código escribe hechosninguno
Necesita un LLM o clave de embeddingsnoopcional
Recuerda sin que se lo pidanal inicio de la sesión y antes de ejecutar una herramientanono

engram es la más sólida de las herramientas de registro hacia adelante y vale la pena si ese modelo se ajusta a ti; aún así comienza vacía y solo conoce lo que un agente eligió guardar. La comparación completa cubre once de ellas.

¿Dónde se almacena el historial de sesiones de Claude Code y puedo buscarlo? En ~/.claude/projects, un archivo JSONL por sesión; Codex mantiene ~/.codex/sessions, Cursor una SQLite state.vscdb. deja search los lee todos en su lugar, deja last lista las sesiones recientes de cada agente, y deja view abre todo el historial como una página local. Rutas para cada agente: dónde se almacenan las sesiones.

Mi historial de sesiones de Claude Code desapareció. ¿Se ha ido? Claude Code elimina transcripciones de más de 30 días (cleanupPeriodDays en ~/.claude/settings.json), y claude --resume lista solo lo que queda. Una sesión indexada por deja antes de la limpieza sigue siendo buscable después de que el archivo desaparezca. Detalles: archivos de sesión en disco.

¿Qué pasa con Windows? Existen builds y CI ejecuta la suite allí. macOS y Linux son las rutas probadas en batalla. Informes de campo bienvenidos en #9.

¿Cómo borro todo?

deja uninstall --all
rm -rf ~/.cache/deja

Guías

Escritas para la situación más que para la característica:

Por harness: opencode · DeepSeek Harness · Kimi Code · Zed · Grok Build · Gemini CLI · Qwen Code · OpenClaw · Goose · Cline · pi y omp · Hermes

Pruébalo con tu propio historial

curl -fsSL https://raw.githubusercontent.com/vshulcz/deja-vu/main/install.sh | sh
deja install --auto

Diez segundos para instalar, unos diez para indexar. En la próxima sesión que abra tu agente, ya sabrá lo que resolviste en ese proyecto — incluyendo todo lo anterior a la instalación de esto.

Contribuciones

make build test lint, luego CONTRIBUTING.md. Añadir un harness comienza en el registro de parsers. Prioridades y no-objetivos están en ROADMAP.md. Las buenas primeras issues están etiquetadas.

Soporte

Errores y preguntas van a issues. Cualquier cosa que creas explotable va a través del enlace de aviso privado en SECURITY.md en su lugar. Lo que deja lee, lo que nunca envía a ningún lugar, y cómo excluir un proyecto u olvidar una sesión está en Privacidad.

Licencia

MIT © Vladislav Shulcz