deja-vu

Uma memória compartilhada por Claude Code, Codex, Cursor, Copilot CLI, OpenClaw e mais 28 agentes de codificação, construída a partir do histórico de sessões já existente no disco. Uma correção encontrada em um agente retorna em qualquer um deles, incluindo meses de sessões anteriores à instalação. Sem LLM, sem embeddings, um único binário Go local.

Documentação

deja-vu

A única memória que seus agentes de codificação compartilham, construída a partir do histórico que já está no seu disco.

Seu agente está prestes a depurar novamente algo que você corrigiu em março — em um agente diferente. deja indexa as sessões que Claude Code, Codex, Cursor e todos os outros agentes nesta máquina já gravaram no disco, e entrega a sessão certa para qualquer agente que a solicitar.

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

Ninguém pesquisou nada — o agente chamou o deja por conta própria. Cada linha é citada de duas sessões reais.

Toda ferramenta de memória começa vazia e registra daqui para frente. deja começa cheia.

E ninguém precisa pedir: a recuperação chega no início da sessão, a cada prompt, antes de um arquivo ser editado ou um comando ser executado, e depois que um falha. Chaves e tokens são removidos conforme o índice é construído, então o que chega ao modelo é seguro para enviar.

85,3% hit@1 no LongMemEval-S · 69,7% hit@1 de recuperação no LoCoMo · consultas em milissegundos sobre gigabytes de histórico
Ambos os harnesses estão neste repositório e rodam nos datasets públicos em minutos · confira os números você mesmo

CI Release MCP Toplist MIT License

English | 中文

Docs · Benchmarks · Como ele se compara · Integrando à sua ferramenta

Achou útil? Dê uma estrela no deja-vu no GitHub para que outros desenvolvedores possam encontrá-lo.

Instalação

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

Dez segundos para instalar, cerca de dez para indexar, e já é útil. O segundo comando conecta a recuperação MCP a todos os agentes que encontrar, ativa a recuperação no início da sessão onde o agente suporta, e constrói o primeiro índice para que a próxima sessão não pague por isso.

Inicie uma nova sessão de agente e pergunte algo em que você trabalhou há meses:

já lidamos com rotação de refresh JWT antes? verifique sua memória

Também não precisa ser perguntado — com a recuperação automática, o agente já sabe o que você resolveu naquele projeto quando a sessão abre.

Outras formas de instalar, e o que fazer se você quiser menos do que tudo

brew install deja-vu, go install github.com/vshulcz/deja-vu/cmd/deja@latest, ou npx @vshulcz/deja-vu "query" para testar sem instalar nada. Aplicativos de desktop que aceitam servidores MCP como pacotes podem abrir o .mcpb do último release; ele carrega o binário.

Claude Code, Codex, Cursor, Qwen, OpenClaw e Copilot podem receber o mesmo pacote de plugin de seus próprios marketplaces:

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

No Windows, o script de instalação sai com unsupported OS — é um script de shell. Use Scoop em vez disso, do bucket principal que toda instalação do Scoop já tem:

scoop install deja-vu

Ou pegue o deja-vu_<version>_windows_amd64.zip do último release e coloque o deja.exe no seu PATH, por exemplo, em %USERPROFILE%\.local\bin.

O binário sozinho é uma instalação completa para busca: indexar, pesquisar, show, ctx, blame, --json e redação não precisam de mais nada. deja install é o que conecta o MCP aos seus agentes e ativa a recuperação no início da sessão — vale a pena ter, e é opcional. Em uma configuração somente binário, deja doctor reporta cada alvo MCP como not-wired, o que é essa configuração funcionando como pretendido. deja warmup também deixa uma skill em ~/.agents/skills/deja-search/SKILL.md que ensina ao agente o contrato da CLI — deja search --json, ctx, blame, como ler tier e total — para que ele saiba que o histórico é pesquisável sem MCP. A cópia no repositório é skills/deja-search/SKILL.md.

deja install --all é --auto sem a recuperação no início da sessão: os agentes respondem da memória quando decidem chamá-lo, em vez de começar cada sessão com ele. O guia de configuração de agentes cobre o que cada harness suporta, o arquivo de contexto somente leitura do aider e o wrapper cmd /c deja mcp para Windows.

O que é gravado no arquivo de orientação de cada agente

A instalação também grava orientação em nível de usuário para os 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 e Zed — cada um recebe em seu próprio arquivo de orientação (ou sob o XDG_CONFIG_HOME configurado). Re-executar reescreve a skill ou o bloco marcado do deja sem alterar o conteúdo de usuário ao redor. Use deja install --all --no-guidance para optar por não participar; Grok Build recebe a skill compartilhada em ~/.agents/skills, que é o que ele lê; o ~/.grok/GROK.md gravado ao lado é para a CLI comunitária não relacionada que compartilha esse diretório. Cursor não tem arquivo de instruções em nível de usuário, então recebe a skill compartilhada em ~/.agents/skills — um dos quatro lugares de onde o Cursor lê skills — lida apenas quando algo parece relevante, em vez de a cada sessão.

O que você obtém

Resolva no Codex. Claude lembra. Trinta e quatro agentes de codificação gravam cada conversa em arquivos locais, e o deja transforma esses arquivos em uma camada de memória que todos eles leem.

Busca retroativadeja "connection pool exhausted" sobre gigabytes, incluindo tudo de antes de você instalar o deja. Perguntas em linguagem natural caem em um nível de relevância. Tempo é uma dica, não um filtro.
Recuperação entre agentesA ferramenta MCP recall responde "consertamos isso há três semanas" em qualquer agente que perguntar, independentemente de quem resolveu originalmente.
Sobrevive à compactaçãoMedido em 43 compactações: o resumo mantém 77% das decisões e 0,2% dos comandos que você executou. O deja devolve os outros 99,8% — e no Claude Code e no Codex ele captura a tarefa, os arquivos e os comandos quando a compactação começa, e os retorna uma vez na próxima sessão.
Recuperação no ponto de açãoAntes de um agente editar um arquivo ou executar um comando, o deja nomeia a decisão anterior daquele arquivo, a invocação funcional daquele comando, ou o programa que esta máquina não tem. Quando um comando falha, um hook PostToolUse responde com o que seguiu o mesmo erro aqui antes — o par que um agente nunca pensa em pedir.
Indexa o trabalho, não só a conversaOs arquivos que cada turno abriu, os comandos que rodaram com seu status de saída, e os trechos exatos que uma edição substituiu. Essa é a parte que todo resumo descarta.
Mais quatro: decisões rejeitadas, desatualização, sincronização e handoff, redação
Sabe o que se mantevedeja promote <id> --state rejected --note "why" marca uma decisão que você reverteu. Cada hit posterior daquela sessão mostra que foi tentado e rejeitado, com o motivo. Nada é deletado, e --state accepted remove a marca.
Diz quando o chão se moveuUm hit reporta 4 arquivos que esta sessão tocou mudaram desde então, e não diz nada quando não consegue saber. Nunca afirma que algo está inalterado.
Sincronização e handoffdeja sync ssh laptop move memória entre máquinas, somente anexação, sem nuvem no meio. deja handoff --to codex empacota o contexto vivo para você continuar em outro agente.
RedaçãoChaves, tokens, JWTs e blocos de chave privada são removidos no momento da indexação, então o cache é seguro de manter.

Seu próprio trabalho, embrulhado

deja stats --card desenha no terminal; dê um nome de arquivo e ele escreve um SVG para um README de perfil. Para publicar em qualquer outro lugar, transforme em PNG — essa página converte no seu próprio navegador.

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

A referência completa de recursos está nos docs.

Privacidade

Indexação e busca são locais. A rede é usada apenas por deja update, deja sync ssh, e a verificação de versão em deja doctor.

Credenciais são redigidas no momento da indexação: chaves AWS, atribuições de api_key= e token=, bearer tokens e JWTs brutos, blocos de chave privada PEM, tokens de provedores, URLs de scheme://user:pass@host, valores de alta entropia para formas que nenhum padrão conhece, e uma senha declarada em prosa — "a senha do admin é …", onde não há delimitador para as outras regras encontrarem. O valor vira [redacted:<kind>] e o texto ao redor permanece pesquisável. deja share e deja sync export reaplicam a redação na saída.

deja forget remove sessões de um índice reconstruído e grava tombstones, para que um deja index posterior não possa restaurá-las do histórico de origem. --unforget levanta um tombstone. Exclusões de projeto são um padrão por linha em ~/.config/deja/exclude; uma linha prefixada com harness: nomeia um store em vez disso — harness:opencode — e o deja nem o percorre nem pede a ferramenta que o leria.

O modelo de segurança documenta fluxos de dados, limites de redação, premissas de confiança e verificação de release.

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

Pergunte ao seu histórico

ComandoO que faz
deja <query>Pesquisa todo o histórico. Multi-palavra é E e frases entre aspas exigem texto contíguo; uma consulta sem correspondência exata então tenta formas de palavras e grafias próximas, que é onde uma substring alcança sua palavra (code encontra opencode).
dejaCom um índice e um terminal: sessões de hoje, recuperações servidas, uma pergunta que você fez em mais de uma sessão, e um obstáculo que seus agentes continuam encontrando.
deja wipO que a última sessão neste diretório estava fazendo: a tarefa, o que resolveu, os arquivos em andamento, o último comando e se falhou — derivado da transcrição, não de uma nota que alguém lembrou de escrever.
deja blame <path>[:line]Quais sessões discutiram um arquivo, o que foi decidido e por quê. Com uma linha: o commit que a alterou por último, e a sessão que escreveu aquela linha ou o texto que o commit substituiu. --attribution imprime a resposta da linha sozinha, como JSON com --json, e --git-note a registra em refs/notes/deja.
deja files <topic>A direção oposta: quais arquivos o trabalho em um assunto realmente tocou.
deja how <tool>Como esta máquina realmente executa algo, com as flags reais, a partir do que os agentes executaram antes.
deja fix <error>O que esta máquina executou após o mesmo erro antes, quando o erro não voltou.
deja frictionErros que atingiram três ou mais sessões separadas, com os harnesses nomeados.
Usando o que encontra, e movendo entre máquinas

Use o que encontra

ComandoO que faz
deja ctx <query>Resumo Markdown da melhor correspondência, pronto para ser usado em um prompt.
deja resume <id>Reabre uma sessão encontrada em seu ambiente nativo.
deja restore <path>Devolve um trecho que um agente substituiu, a partir do old_string que sua edição registrou. Nunca sobrescreve o original.
deja promote <id>Destila uma sessão em uma nota curada com proveniência, tags e um estado de ciclo de vida. Notas têm prioridade sobre transcrições brutas.
deja share <id>Um resumo sanitizado de sessão para um colega, com segredos já removidos.

Mova e verifique

ComandoO que faz
deja sync export/import/sshMove memória entre máquinas. Com marca d'água, somente anexação, idempotente.
deja viewToda a sua memória em um único arquivo HTML local. Sem servidor, nada sai da máquina.
deja statsSeu trabalho de agente, empacotado. --card desenha no terminal, --card <file>.svg escreve um para um perfil, --html uma linha do tempo navegável.
deja doctor [--deep]Autodiagnóstico e, com --deep, prova do índice contra as fontes.
deja mcpO servidor MCP stdio, que é o que deja install conecta.

Referência completa: comandos e saída JSON.

Ferramentas MCP

O servidor expõe uma ferramenta, deja, com um mode. deja install a conecta, então isso só é necessário para configurar um agente manualmente. Os seis nomes de ferramentas mais antigos (recall, recall_context, blame, fix, how, remember) ainda respondem por qualquer coisa já conectada a eles.

Argumentos e formatos de retorno
FerramentaArgumentosRetornos
dejamode, além de query, path, error, what, text, tags?, harness?, project?, since?, limit?, offset?, all?Depende do modo, abaixo.
ModoArgumentos que lêRetornos
recallquery, harness?, limit?, offset?Trechos de correspondência densos, limitados a 4KB.
contextquery, harness?Resumo Markdown da sessão com melhor correspondência.
blamepath, harness?, project?, since?, limit?, all?Sessões que discutiram um arquivo.
fixerror, project?, limit?O que esta máquina executou, ou alterou, após o mesmo erro anterior.
howwhat, project?, limit?A invocação real, a partir do que os agentes executaram aqui.
remembertext, project?, tags?Armazena uma decisão durável para recuperação posterior.

Ambientes suportados

Com a recuperação automática instalada, Claude Code e Codex entregam ao deja a transcrição quando uma compactação começa, e ele mantém o que o resumo está prestes a descartar: a tarefa, as conclusões, os arquivos, os comandos com o que cada um fez, e o que ficou em aberto. O próximo hook para a mesma sessão e espaço de trabalho devolve isso uma vez, dentro de um orçamento de 4 KB, com uma linha indicando se o repositório mudou desde então. deja stats conta as chamadas de ferramenta antes da primeira edição após uma compactação, que é o número contra o qual isso é medido. Veja recuperação automática de compactação para saber o que é lido, o que é armazenado e onde estão os limites.

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.

O que cada um suporta
AmbienteRecuperação MCPRecuperação automáticaHabilidadeComandoRetomarTransferênciaNecessidades
aiderdeja aider
Amp
Antigravity
Claude Code
Cline
Codex CLI
Copilot CLI
VS Code Copilot Chatcolar
Cursorsqlite3 (chats IDE)
DeepSeek Harnesscolarzstd
Gemini CLI
Goosedeja goose
Grok Buildsqlite3 (armazenamento grok-dev)
Hermescolarsqlite3
Kimi Code
omp (Oh My Pi)
OpenClawcolar
opencodesqlite3
Continuecolar
Crushsqlite3
pi
prime-agent (PrimeIntellect)
Qwen Code
Cherry Studiocolarimporte o servidor uma vez em Configurações -> MCP; habilite a habilidade para o agente
Senpinenhuma
gajae-codecolarnenhuma
Kimchi Codingcolarnenhuma
Command Code?colarnenhuma
ZCode???colarsqlite3 para o banco de dados CLI
Kiro?colarnenhuma
Kilo Codecolarsqlite3 para o armazenamento CLI
Roo Codecolarroo CLI (tarefas do editor reabrem no editor)
Zedcolarsqlite3 + zstd
CodeWhale??colarnenhuma

✅ funciona · — possível, ainda não construído · ✕ o ambiente não tem tal mecanismo · ⚠ bloqueado por um bug upstream · ? não investigado

Locais de armazenamento personalizados passam por variáveis DEJA_*_ROOT, e a variável de realocação de cada agente também é respeitada. O registro de formato de sessão documenta os caminhos observados, esquemas de registro e mapeamento de papéis por ambiente, com fixtures sintéticas mantendo essas descrições verificadas contra os parsers.

Ambientes com um pacote próprio

deja install --auto conecta todos esses seis como qualquer outro ambiente, e isso continua sendo o caminho mais curto. Eles também têm um pacote em seu próprio ecossistema, para pessoas que instalam extensões lá em vez de por um CLI:

AmbientePacoteInstalação
opencodenpm opencode-dejaopencode plugin opencode-deja
DeepSeek Harnessnpm dsh-dejadsh plugin --profile web add dsh-deja
Zeddeja-context-serverZed → Extensões → 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 e depois codex plugin add deja-vu@deja-vu
Grok Buildplugin dejagrok plugin marketplace add xai-org/plugin-marketplace e depois grok plugin install deja

Qualquer um dos caminhos é suficiente por si só, e ter ambos não é um problema: os pacotes opencode, dsh, Kimi, Grok e Codex leem o que deja install escreveu e contribuem apenas com o que está faltando, e no Zed ambas as metades usam um único ID de servidor, então não há nada para ter duas vezes, independentemente da ordem de instalação.

Cada um usa o deja que você já tem; a cópia que ele inclui é apenas o fallback.

A mesma busca também é uma habilidade, para qualquer agente que carregue um 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

A habilidade aciona o binário deja da etapa de instalação acima; ela não inclui um.

Recuperação semântica (opcional)

Aponte deja embed para um endpoint local Ollama, LM Studio ou compatível com OpenAI com DEJA_EMBED_URL e consultas reformuladas ainda funcionam. Sem um runtime acessível, a busca lexical e a recuperação MCP continuam inalteradas. OpenAI Platform funciona com sua chave padrão:

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

Sem DEJA_EMBED_URL definido, o deja testa localhost:11434 e localhost:1234, então uma máquina já executando Ollama ou LM Studio é detectada sem ser perguntada. DEJA_EMBED_OFF=1, ou DEJA_EMBED_URL=off, desativa esse teste — qualquer outro DEJA_EMBED_URL configurado ainda vence.

Para outro endpoint autenticado compatível com OpenAI, defina DEJA_EMBED_KEY explicitamente:

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

DEJA_EMBED_KEY tem precedência. OPENAI_API_KEY é usado automaticamente apenas para uma URL api.openai.com HTTPS; nunca é enviado implicitamente para endpoints locais ou de terceiros.

Onde os vetores vivem e quanto custam

O sidecar fica ao lado do índice como .vectors.bin, não dentro de index.db. Vetores Float32 custam aproximadamente 4 MB por 1k mensagens para um modelo de 1.024 dimensões. Um endpoint remoto recebe o texto indexado com dados removidos, truncado para cerca de 2k caracteres, mas nunca arquivos de origem brutos. Com Ollama ou LM Studio, a incorporação permanece local e não precisa de chave.

Prova

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 faz a pergunta que os outros três não conseguem: com a sessão certa em mãos, o bloco carrega o que essa sessão resolveu. Oito sessões discutem cada assunto e uma delas o resolve, no meio de sua própria transcrição em vez de no final — então o braço de linha de base, as voltas mais recentes do melhor resultado, pontua zero e um braço acima de zero teve que escolher.

BraçoCarrega a respostaTokens medianos
deja-block (bloco de início de sessão)1.00665
deja-digest (resumo de contexto)1.001656
newest-turn (linha de base)0.00289
cold0.000

O experimento de contexto compara a recuperação deja contra histórico completo, grep ingênuo e contexto frio. Com a semente padrão:

BraçoTokens medianosCobertura medianaTokens de controle negativo
recuperação deja1.0961.000
histórico completo80.5471.0078.145
grep ingênuo273.2381.000
frio00.000

Mesma cobertura de fatos que fazer grep nos logs brutos por cerca de 250x menos tokens, e cerca de 70x menos do que reproduzir as sessões correspondentes por completo, sem injetar nada nas cadeias onde nenhum fato anterior é relevante. O gerador de corpus e os rótulos de relevância são Go comum revisado. Audite o que "relevante" significa antes de confiar em qualquer número, incluindo os nossos.

Medido em um armazenamento real de 2.419 sessões e 179k mensagens, 1,9 GB de transcrições:

MediçãoResultado
Consulta, em processo~0,7 ms mediano (deja bench recall, 100 consultas, metade em russo), ~19 ms nos haystacks LongMemEval-S
deja <query>, ponta a ponta~0,2 s mediano nesse armazenamento: início do processo, verificação de frescor em cada armazenamento, classificação, impressão
Verificação de frescor sozinha~50 ms quando nada mudou
Tamanho do índice200 MB, ~10% do corpus

O índice é incremental. Quando um arquivo de sessão cresce, apenas esse arquivo é relido.

Como funciona

Índice invertido local em ~/.cache/deja: analise os armazenamentos JSONL e SQLite, remova credenciais, escreva records.bin além de buckets de tokens, e rastreie o estado por arquivo em manifest.gob para que execuções repetidas apenas ingiram o que mudou. O servidor MCP, estatísticas, compartilhamento e sincronização leem esse único índice. Detalhes em docs/ARCHITECTURE.md.

FAQ

Algo sai da minha máquina? Não, a menos que você peça. Veja os fluxos de dados. E quanto aos segredos que já estão nos meus logs? Eles permanecem nos arquivos originais do harness, que são dados do seu agente. Formatos conhecidos — chaves AWS, atribuições de api_key=/token=, tokens bearer e JWTs simples, blocos PEM, tokens de provedores, valores de alta entropia — são removidos conforme o índice é construído, então não chegam a digests, compartilhamentos ou exportações de sincronização. Correspondência de padrões não é detecção de segredos: um formato que ela não conhece pode passar. Veja o modelo de segurança.

Isso vai deixar meu agente mais lento? Uma recuperação é uma busca lexical em um índice local: ~0,7 ms de mediana, e nada espera por um modelo. Um hook adiciona o início do processo e uma verificação de atualização sobre seus armazenamentos além disso — dezenas de milissegundos em um armazenamento de alguns gigabytes.

Preciso mudar a forma como trabalho? Não. O agente chama a recuperação por conta própria, e com a recuperação automática ele já conhece as decisões anteriores do projeto quando a sessão abre.

Como isso é diferente das outras ferramentas de memória?

dejaPlataformas de memória
(Mem0, Letta, memU)
Busca de sessão
(cass)
Conhece o trabalho de antes de você instalá-losimnãosim
Etapa de capturanenhuma, as transcrições são a memóriao agente ou seu código escreve fatosnenhuma
Precisa de LLM ou chave de embeddingnãosimopcional
Recupera sem ser solicitadono início da sessão e antes de uma ferramenta rodarnãonão

engram é o mais forte das ferramentas de registro e vale seu tempo se esse modelo se adequar a você; ele ainda começa vazio e conhece apenas o que um agente escolheu salvar. A comparação completa cobre onze delas.

Onde o histórico de sessões do Claude Code é armazenado, e posso pesquisá-lo? Em ~/.claude/projects, um arquivo JSONL por sessão; o Codex mantém ~/.codex/sessions, o Cursor um SQLite state.vscdb. deja search lê todos no local, deja last lista as sessões recentes de cada agente, e deja view abre todo o histórico como uma única página local. Caminhos para cada agente: onde as sessões são armazenadas.

Meu histórico de sessões do Claude Code desapareceu. Ele se foi? O Claude Code exclui transcrições com mais de 30 dias (cleanupPeriodDays em ~/.claude/settings.json), e claude --resume lista apenas o que resta. Uma sessão que o deja indexou antes da limpeza permanece pesquisável depois que o arquivo se foi. Detalhes: arquivos de sessão no disco.

E o Windows? Existem builds e o CI executa a suíte lá. macOS e Linux são os caminhos testados em batalha. Relatos de campo são bem-vindos em #9.

Como apago tudo?

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

Guias

Escritos para a situação, em vez do recurso:

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

Experimente com seu próprio histórico

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

Dez segundos para instalar, cerca de dez para indexar. Na próxima sessão que seu agente abrir, ele já saberá o que você resolveu naquele projeto — incluindo tudo de antes de você instalar isso.

Contribuindo

make build test lint, depois CONTRIBUTING.md. Adicionar um harness começa no registro de parsers. Prioridades e não-objetivos estão em ROADMAP.md. Boas primeiras issues estão rotuladas.

Suporte

Bugs e perguntas vão para issues. Qualquer coisa que você ache explorável passa pelo link de advisory privado em SECURITY.md em vez disso. O que o deja lê, o que ele nunca envia para qualquer lugar, e como excluir um projeto ou esquecer uma sessão está em Privacidade.

Licença

MIT © Vladislav Shulcz