AI coding agent 最浪费时间的地方之一,不是第一次解决问题,而是第二次又把同一个问题从头排查一遍。上周刚修过的数据库连接池、昨天才确认过的部署脚本边界、某次长对话里已经做出的设计取舍,通常都散在本机的会话日志里。人脑记得“好像处理过”,agent 却只能当作全新问题重新搜索和推理。

今天推荐的 vshulcz/deja-vu 就是为这个缝隙做的。它不是给项目代码建 RAG,也不是托管式知识库,而是把 Claude Code、Codex、opencode、aider、Gemini CLI、Cursor、Antigravity、Grok Build 和 Qwen Code 已经写到本地的会话记录索引起来,做成一个本地优先的 agent memory layer。你可以用 deja "jwt refresh token" 搜历史,也可以通过 deja mcp 给 agent 一个 recall 工具,让它在重新调试前先查过去的会话。

按 GitHub repository API、README、release 页面、latest commit API、LICENSE 和 go.mod2026-07-19 能核验的公开信息,vshulcz/deja-vu 当前有 367 stars17 forks。GitHub 显示主要语言为 Go,许可证是 MIT。仓库创建时间是 2026-07-14 07:45:44 UTC,默认分支 main 最新 push 是 2026-07-19 09:48:55 UTC。最新 main commit 是 9505393,提交信息为 fix(install): spawn the MCP server through cmd on windows (#170)。最新 GitHub release 是 v0.13.0,发布时间是 2026-07-18 21:47:21 UTCgo.mod 当前声明 Go 1.25

项目概览

属性详情
仓库vshulcz/deja-vu
定位本地 agent 会话记录搜索、MCP recall 和自动上下文记忆层
Stars367
Forks17
主要语言Go
许可证MIT
GitHub 创建时间2026-07-14 07:45:44 UTC
最新 push2026-07-19 09:48:55 UTC
最新 main commit9505393,fix(install): spawn the MCP server through cmd on windows (#170)
最新 releasev0.13.0,2026-07-18 21:47:21 UTC
关键词agent memory、MCP、CLI、local-first、redaction、session search

它利用的是已经存在的记录

deja-vu 有意思的地方,是没有要求你先建立一套新的知识管理流程。大多数 agent 工具本来就会在本机留下 session logs:Claude Code 的 JSONL、Codex 的 sessions 和 history、opencode 的 SQLite 数据库、aider 的聊天历史、Cursor 的 agent transcripts 等。deja-vu 做的是发现这些存储、解析消息、脱敏、建索引,然后在你需要时拿回来用。

这个角度很实际。团队内部知识库经常失败,是因为写入成本太高;而 agent 会话记录的写入已经发生了,只是平时不可搜索、不可引用、不可迁移。deja-vu 把“之前 agent 和我怎么解决这个问题”从记忆碎片变成一个可以被 CLI 和 MCP 调用的本地数据库。

README 里给的典型用法也很直接:安装后运行 deja install --all,它会给支持的 harness 接上 MCP recall;运行 deja install --auto,在支持 hook 的工具里还能把相关历史在会话开始时注入上下文。对 Codex、Claude Code、opencode、Cursor 这类工具来说,这相当于给每个项目加了一层“先查旧案”的习惯。

MCP recall 比单纯搜索更关键

命令行搜索当然有用。你可以在终端里搜某个错误信息、文件路径或设计关键词,再把结果贴回 prompt。但 deja-vu 真正适合 agent workflow 的部分,是它把这件事做成了 MCP server。

README 列出的 MCP tools 包括 recallrecall_contextblamerememberrecall 返回紧凑片段,适合让 agent 快速判断“这个问题是否见过”;recall_context 给最佳命中做成 markdown digest;blame 从文件路径反查哪些会话讨论过这个文件;remember 则允许把明确结论写成持久 notes。换句话说,它不只是“搜聊天记录”,而是试图把旧会话变成 agent 可主动调用的工具。

这对长周期项目很有价值。很多 bug 修复不是纯代码事实,而是带着上下文的决策:为什么没有升级某个库、为什么保留一个兼容路径、为什么某个 CI failure 被判定为外部问题。这些信息常常不值得写进 README,却很适合保存在会话记忆里。

隐私和脱敏是它必须面对的边界

索引 agent 会话有一个很现实的问题:会话里可能有密钥、内部 URL、客户数据、失败日志和临时 token。deja-vu 没有回避这点。README 明确写到它会在索引时脱敏 AWS keys、api_key= / token= 形态、bearer tokens、JWT、PEM private key、常见 provider tokens 以及带账号密码的 URL;deja sharedeja sync export 导出时也会再次脱敏。

它还提供 deja forget,通过 tombstones 防止之后重新索引时把已经删除的 session 恢复回来;deja stats --redaction 可以查看按 harness 和规则统计的脱敏情况;DEJA_NO_REDACT=1 则是明确标成 unsafe 的关闭开关。

这些设计让项目比“把所有聊天记录塞进全文搜索”更可信一些。不过 caveat 也很明显:脱敏规则永远不是形式化安全证明。真正敏感的仓库、客户环境或合规场景,仍然要先确认哪些 harness 会被读取、索引放在哪里、是否会 sync/share,以及团队能否接受这个数据流。

本地优先,但不是没有依赖

deja-vu 的 README 把“one binary、no models、no services、nothing leaves your machine unless sync/share”放得很靠前。这个定位很适合个人开发机:不需要向量数据库,不需要云端服务,也不要求每次查询都调用模型。

它也没有假装所有东西都零依赖。README 说明 opencode 和 Cursor IDE 的索引会 shell out 到 sqlite3 CLI;语义 recall 是可选层,需要本地 Ollama、LM Studio 或 OpenAI-compatible embedding endpoint,并由 deja embed 写出 vector sidecar。没有 embedding endpoint 时,普通 lexical search 和 MCP recall 仍然工作。

这点反而是优点。对 agent memory 来说,默认路径应该稳定、可解释、离线;语义层可以作为增强,而不是让整个工具链先绑定一个模型服务。现在很多“AI memory”项目会太快滑向黑盒 embedding store,deja-vu 的默认选择更接近开发者日常能维护的形态。

适合谁用

如果你每天在同一个代码库里反复用 agent,deja-vu 很值得试。它尤其适合那些“问题不是很难,但上下文总是丢”的工作流:CI flakes 曾经怎么处理、某个模块为什么不能直接删、某个生产事故的排查路径、某个迁移脚本上次卡在哪里。

它也适合在多 agent 工具之间切换的人。README 列出的支持 harness 很宽:Claude Code、Codex CLI、opencode、aider、Gemini CLI、Cursor、Antigravity、Grok Build、Qwen Code。不同工具的历史原本被锁在各自目录里,deja-vu 至少给了一个统一搜索入口。

如果你的工作方式是“一次性项目很多、每个项目只跑几次 agent”,它的价值会弱一些。记忆层需要历史积累;没有足够旧会话时,它只是一个还不错的本地日志搜索器。

需要注意的地方

第一,项目非常年轻。仓库创建于 2026-07-14,到今天只有几天,虽然 release 已经到 v0.13.0,最新 commit 也在 2026-07-19,但 API、索引格式和安装行为都可能继续变化。

第二,自动上下文注入要谨慎。deja install --auto 的体验可能很好,但任何自动注入都会影响 agent 的初始判断。README 说明默认 DEJA_RECALL=safe 会限制当前项目、过滤弱结果并限制注入大小;即便如此,第一次接入时也建议先用手动 recall 或 CLI 搜索观察命中质量。

第三,分享和同步仍然是数据边界。即使有脱敏,deja sharedeja sync export/import 也会把会话摘要或记录带到别处。个人开发机之间同步很方便,但公司环境里需要先确认政策。

第四,Windows 支持还在快速修补。今天最新 commit 就是在修 Windows stdio MCP client 通过 cmd /c 启动的问题。这说明维护响应很快,也说明跨平台 agent config 仍然是活跃变化区。

总结

deja-vu 的价值,不在于发明了一个复杂的新记忆架构,而在于抓住了一个被忽略的事实:你的 agent 历史已经在本机,只是没有被好好索引和调用。它把这些日志变成 CLI、MCP recall、自动上下文、脱敏分享和同步工具,足够小,也足够贴近真实开发流程。

如果你经常觉得“这件事上次已经和 agent 讨论过”,vshulcz/deja-vu 值得装在一个非关键项目上试几天。它提醒我们,agent 体验的改进不一定只来自更聪明的模型,也可能来自把已经发生过的工作重新变得可搜索、可引用、可复用。