Hacker News 中文摘要

RSS订阅

面向编码代理的开源内存,通过SSH同步 -- Open-source memory for coding agents, synced over SSH

文章摘要

Deja-vu是一个为编程代理设计的记忆层工具,支持搜索、MCP召回、自动上下文、秘密编辑、统计、会话日志共享和同步,兼容Claude Code、Codex和opencode,提供零依赖的二进制文件。

文章总结

好的,这是根据您的要求,对原文主要内容进行的中文重述,保留了关键细节,并删减了与核心主题无关的推广性内容。


项目概述:deja-vu —— 为编码智能体打造的记忆层

核心问题:Claude Code、Codex 和 opencode 等编码智能体在每次对话中都会产生大量本地日志文件,其中包含了已调试过的问题和设计决策。这些信息无法被有效检索,导致智能体可能重复解决相同的问题。

解决方案:deja-vu 是一个零依赖的二进制工具,能将智能体的历史会话日志转化为一个可搜索的记忆层。

主要功能

  • 搜索:使用 deja "关键词" 命令,可在数GB的日志中实现毫秒级(7-9毫秒)的搜索。它具备回溯性,能索引安装前数月的历史记录。
  • 智能体回忆:通过 MCP(模型上下文协议)的 recall 工具,智能体可以主动查询“我们三周前是如何解决这个问题的”,避免重复调试。
  • 自动回忆:通过 install --auto 命令,可在会话启动时自动将相关记忆注入上下文,无需手动提问。
  • 信息脱敏:在索引时自动剥离 API 密钥、JWT、私钥等敏感信息,确保缓存安全。
  • 统计deja stats 命令可展示智能体工作概况,包括使用的工具、主要项目及活动趋势图。
  • 分享deja share <id> 命令可生成一个已脱敏的会话摘要,安全地分享给同事。
  • 同步deja sync export/import 命令支持在不同机器间同步记忆,操作是追加式和幂等的。

核心特性:单一二进制文件,无需下载模型或运行服务,所有操作均在本地完成,数据不会离开您的机器。

安装与配置

提供了多种安装方式,包括 curlgo installnpxbrew。安装后,通过 deja install --all 命令即可将工具接入 Claude Code、Codex 和 opencode 等智能体。

使用示例

  • 搜索deja "jwt refresh token" 会返回所有相关会话的摘要,包括来源、项目、日期和匹配内容。
  • 上下文管道claude "Prior context: $(deja ctx 'database migration')" 可将最佳匹配结果以 Markdown 格式注入到提示词中。
  • 同步:支持通过共享文件夹(如 Syncthing、iCloud)或 SSH 命令在机器间同步记忆。

工作原理

deja-vu 在本地 ~/.cache/deja 目录下构建一个倒排索引。它会解析 JSONL 或 SQLite 格式的会话存储,对凭证进行脱敏,然后创建索引文件。索引是增量更新的,只处理发生变化的文件。整个索引和搜索过程不涉及任何网络请求。

安全与隐私

  • 凭证脱敏:在索引时,AWS 密钥、API 令牌、Bearer Token、JWT、PEM 私钥等敏感信息会被替换为 [redacted:<kind>],但保留周围文本以供搜索。
  • 无网络路径:工具的核心代码中没有网络路径,确保数据完全本地化。

支持的智能体

  • Claude Code:✅
  • Codex CLI:✅
  • opencode:✅
  • aider, Gemini CLI:计划中

性能表现

  • 热搜索:典型耗时 7-9 毫秒,最坏情况约 40 毫秒。
  • 冷启动索引:约 10 秒。
  • 索引大小:约为原始语料库的 2.4%。

与其他工具的区别

  • 与 cass 的区别:cass 功能全面但设置复杂,而 deja-vu 追求极简——单一 Go 二进制文件、纯词法搜索、支持三种智能体、零配置,并提供了自动回忆、脱敏、分享和同步等记忆层功能。
  • 与 MemPalace / Mem0 / Letta 的区别:这些是记忆平台,需要主动捕获和记录未来信息。deja-vu 没有捕获步骤,它直接索引智能体已经写入磁盘的历史文件,包括安装前的数据。两者可以共存。

常见问题

  • 数据是否离开机器? 不会。同步功能仅将文件写入您指定的目录,传输由您自行控制。
  • 如何清除所有数据? 运行 deja uninstall --all 并删除 ~/.cache/deja 目录。

许可

MIT 许可。

评论总结

根据评论内容,总结如下:

主要观点与论据:

  1. 项目定位与差异化(作者vshulcz,评分None):deja旨在解决AI代理重复调试同一问题的问题,通过索引已有会话记录(Claude Code、Codex等)实现记忆复用。核心差异化在于:零依赖、无LLM调用、纯文本搜索、通过SSH同步。关键引用:"one binary code with zero dependency, no LLM calls, searchable verbatim text instead of generated summaries, and synchronization via your own SSH";"deja sync ssh moves new memory between machines using the existing SSH setup"。

  2. 同类项目比较(作者esafak,评分None):指出deja与ctx.rs等类似,建议突出SSH同步作为差异化。关键引用:"Similar to https://ctx.rs/ and others, I'm sure. I'd lead with your differentiation. Is it the ssh?"

  3. 本地化与可编辑性(作者BedVibe_Studios,评分None):赞赏本地化方案,强调记忆系统应便于人工检查和编辑,并询问是否计划支持语义搜索。关键引用:"I like that this stays local instead of depending on a hosted service... memory becomes much more valuable when it's easy to inspect and edit manually";"Are you planning to support semantic search later, or is the goal to keep everything deterministic and text-based?"

  4. 通用实现思路(作者catzapd,评分None):提出AI代理记忆系统的核心流程:保存→索引→搜索→注入上下文。关键引用:"Save everything to disk. Index it or store in vectorDB. Search the storage for similarity based on the new prompt. Include any finding with the new prompt as system/user prompt."

  5. 个人实践与简化方案(作者arjie,评分None):认为这类系统构建已变得简单,分享了自己的实现(CPU嵌入模型、SQLite存储、S3结构),并强调需要定期整理知识库。关键引用:"I think everyone's ended up building one of these for themselves... The whole setup is pretty trivial and what anyone would come up with from scratch";"You do need a self-reflection/consolidation/dream step in order to periodically consolidate and groom the KB."

  6. 实际使用困难(作者hparadiz,评分None):指出代理无法正确读取已保存的记忆,无论本地还是远程。关键引用:"I can't even get my agents to properly read the memories they have saved locally let alone remotely."

  7. 系统综述(作者zby,评分None):已自动审查超过140个类似系统,并提供比较列表。关键引用:"I did an automatic review of over 140 such systems. There are comparisons and stuff."

平衡性总结: - 正面评价:本地化、零依赖、SSH同步是亮点;实现思路清晰,社区有类似实践。 - 质疑与挑战:与现有项目区分度需明确;实际使用中代理读取记忆存在困难;是否支持语义搜索待定。 - 中立观察:此类系统构建已趋成熟,但需注意定期整理和人工可编辑性。