deja-vu:让 Claude Code、Codex、Cursor 共用一份记忆,直接读你本地已有的会话历史

同时用 Claude Code、Codex、Cursor 的人应该都遇到过这种事:某个坑三个月前在 Codex 里已经排查清楚了,今天换 Claude Code 干活,它又从头 debug 一遍。每个 agent 的会话记录其实都老老实实存在本地磁盘上,只是彼此看不见,你自己也懒得去翻。

deja-vu 做的就是把这些现成的会话记录统一建索引,变成所有 agent 共用的一份记忆。它不需要你提前"开始记录",装上之后连安装前几个月的历史也能搜。不用大模型,不用向量库,就是一个本地的 Go 二进制。这两天它在 Go 趋势榜上排得很靠前,刚发了 v0.21.2。

它解决什么问题

现在的 agent 记忆方案,大多是让 agent 边干活边主动"写笔记",或者靠上下文压缩后的摘要。问题是:

  • 笔记只从装上那天开始有,之前的积累全没了
  • 换一个 agent,记忆就不通
  • 压缩摘要会丢掉大量细节,作者统计过,摘要里保留了大部分决策,但跑过的命令几乎全丢

deja 换了个思路:各家 agent 本来就把完整对话写进本地文件了,直接读这些文件就行。它目前能解析 30 多种 agent 的会话格式,Claude Code、Codex CLI、Cursor、Gemini CLI、Copilot CLI、opencode、Qwen Code、Kimi Code、OpenClaw、Cline、Roo Code、Zed 都在里面。

核心功能

跨 agent 回忆。它以 MCP 服务的形式接进各个 agent,只暴露一个 deja 工具,用 mode 区分 recall、fix、how、blame 等用途。作者专门把原来七个工具合成了一个,因为 MCP 工具定义每轮请求都要带上,现在只占 477 token 左右。

不用问也会提醒。开了自动回忆后,会话开始、每次提问、改文件或跑命令之前,deja 会把相关的历史递过去。命令报错时,它通过 PostToolUse hook 告诉 agent:这台机器上次遇到同样的错误后是怎么处理的。

索引的不只是聊天。每轮打开了哪些文件、跑了什么命令、退出码是多少、编辑替换掉了哪段代码,都进索引。所以可以用 deja restore 把某次被 agent 改掉的代码找回来。

扛压缩。在 Claude Code 和 Codex 上,压缩开始时它会把任务、文件、命令这些摘要要丢的东西存下来,下次会话再还回去。

脱敏。建索引时会把 AWS Key、Bearer Token、JWT、私钥块、带密码的连接串等替换成 [redacted:类型]。原始会话文件本身不会动,但 deja secrets 能告诉你哪些会话里有明文凭据,--scrub 可以就地改写(原文件留备份)。

怎么用

macOS / Linux:

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

Windows 上安装脚本不支持,用 Scoop:

scoop install deja-vu

也可以 brew install deja-vu 或 go install github.com/vshulcz/deja-vu/cmd/deja@latest。Claude Code 用户还能直接走插件市场:

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

deja install --auto 会找出本机装了哪些 agent,把 MCP 接进去,开启会话启动时的自动回忆,再建好第一次索引。只想被动用、不想每次会话都自动注入的话,换成 deja install --all。

命令行本身也很好用,几个我觉得实用的:

deja "jwt refresh token"      # 搜所有 agent 的历史
deja wip                      # 当前目录上一个会话在干什么、停在哪
deja blame src/auth.go        # 哪些会话讨论过这个文件、做了什么决定
deja fix "<报错原文>"          # 上次同样的报错之后跑了什么
deja how "go test"            # 这台机器上某个工具实际是怎么调用的
deja friction                 # 在三个以上会话里反复出现的错误

deja sync ssh laptop 能在两台机器之间同步记忆,不经过云端;deja handoff --to codex 把当前上下文打包,换到另一个 agent 接着干。

想要语义检索的话,deja embed 可以接本地 Ollama、LM Studio 或任意 OpenAI 兼容的 embedding 接口,不配置也不影响默认的关键词检索。

适合谁,要注意什么

最受益的是同时在用两三个 coding agent、而且用了有一段时间的人,积累的会话越多越值钱。只用一个 agent 的也能用,至少 deja wip、deja blame 这类命令比翻 ~/.claude/projects 下面的 jsonl 强太多。

几点提醒:

  • 默认是关键词检索,加了词形变化和拼写容错,但换个说法问可能就搜不到,需要的话开 embedding
  • 它会往各个 agent 的全局指引文件里写一段说明(有标记块,重复执行不会覆盖你自己的内容),不想要可以加 --no-guidance
  • 项目很新,7 月才建仓,更新非常频繁,各 agent 的支持程度不一样,具体看官网的支持矩阵
  • 除了更新、SSH 同步、doctor 的版本检查和你自己配的 embedding 接口,其他全在本地,不联网

作者在官网放了 benchmark 和对比说明,还有复现用的脚本,感兴趣可以自己跑一遍。

项目信息