Your coding agents stop re-debugging what you already fixed.
以下摘录自该仓库的 README(片段) · 在 GitHub 读完整 README →
Claude Code, Codex, Cursor and 39 more agents already save every session to disk.
deja indexes all of it, months back, and hands the part that matters
to whichever agent is working now.
English | 简体中文 | 繁體中文 | 日本語 | 한국어 | Español | Português | Français | Deutsch | Русский | Türkçe | हिन्दी
Nobody searched anything — the agent called deja itself. Two real runs against a synthetic corpus: nobody's history is published.
macOS and Linux; ten seconds to install, about ten to index ·
Windows, Homebrew, npm and the rest
Recall 97.2% R@5 on LongMemEval-S MemPalace publishes 96.6%, agentmemory 95.2%
Tokens half the tokens of agentmemory on a task this machine had already solved
Index time 17.6 s to index 19,195 sessions the next of seven tools takes 72 s
I maintain deja-vu, so every driver, the corpus and the scoring rule are in this repository ·
the head-to-head, and how to re-run a row you doubt ·
every run
Docs · Benchmarks · How it compares · Building it into your tool
Found it useful? Star deja-vu on GitHub .
Search it yourself
deja with no arguments in a terminal opens a search over every agent's history. It starts
on the sessions behind your uncommitted change, then the recent ones in this project, and
the list narrows as you type.
- ↑↓ picks a session, ↵ opens it at the match, n and N step through the matches, esc goes back. Inside a session, / finds a word and ] jump between the turns you asked.
- The box takes filters: an agent with a colon (codex:), today, yesterday, week, month, and in: .
- r resumes the session in the agent that wrote it. o continues it in any other agent, which starts with what the session asked, decided and left open.
- tab switches between this project, all projects and Deleted, the sessions their agent deleted that deja still holds; R puts one back.
- ? lists every key, ^k has the rest (copy the session id or project path, forget a session), q quits from the list; esc steps back and quits from an empty search box.
With DEJA_TUI=0 it prints the text summary instead, which is also deja brief. Piped, it
prints what is indexed and which command to run next.
Highlights
- **Starts full.** Months of history from before you installed it are searchable on day one: deja "connection pool exhausted" over gigabytes.
- **One memory, every agent.** A fix found in Codex comes back in Claude Code, Cursor or opencode; all [forty-two agents read the same index.
- **Nobody has to ask.** Recall arrives at session start, before a file is edited or a command runs, and after a command fails.
- **Survives compaction.** Over 43 measured compactions the summary kept 77% of the decisions and 0.2% of the commands; deja hands back the rest (how).
- **Indexes the work, not just the talk.** The files each turn opened, the commands with their exit status, the exact spans an edit replaced.
- **Knows what held.** deja promote --state rejected marks a reverted decision, and every later hit says it was tried and why it was dropped; --state accepted takes the mark back.
- **Says when the ground moved.** A hit reports *4 files this session touched have changed since*, and stays quiet when it cannot tell.
- **Local and private.** No model and no server; embeddings only if you turn on semantic recall. Keys and tokens are stripped as the index is built (privacy).
- **Moves with you.** deja sync ssh laptop between machines, no cloud in between; deja handoff --to codex to continue in another agent.
- **One Go binary.** macOS, Linux and Windows, through Homebrew, Scoop, winget, npm or go install.
Your own work, wrapped
deja stats --card draws it in the terminal; give it a filename and it writes an
SVG for a profile README. To post it anywhere else, turn it into a
PNG — that page converts it in your own
browser.
The full feature reference lives in the docs.
Install
The two commands at the top are the whole install on macOS and Linux:
The script puts the binary in ~/.local/bin. If that directory is not on your PATH yet, the second command is not found in the same shell: run the next: line the script prints, which has the full path, or open a new shell once the PATH line is added.
Ten seconds to install, about ten to index, and it is useful. The second command wires MCP
recall into every agent it finds, turns on session-start recall where the agent supports
it, and builds the first index so the next session does not pay for it.
Start a new agent session and ask it something you worked on months ago: