资讯动态

deja-vu开发者指南:6步把你的编码Agent会话格式接入记忆索引

发布时间:2026/10/13 14:49:21 来源:尧图企业网站定制
【免费下载链接】deja-vuMemory for Claude Code, Codex, Cursor and 38 more coding agents, built from the session history already on your disk. Local search, MCP and hooks, no LLM, one Go binary.项目地址https://gitcode.com/gh_mirrors/dej/deja-vu点击查看免费下载deja-vu 是一个纯本地运行的编码 Agent 记忆工具它读取 Claude Code、Codex、Cursor 等 40 多个 Agent 已写在磁盘上的会话文件构建可搜索的记忆索引并通过 MCP、hooks 和 JSON 接口把以前查过什么、修过什么喂回给你的 Agent。如果你在做自己的 Agent 工具链或 harness想把新的会话格式接入这套记忆索引这篇文章带你走完全部 6 步。先搞清楚你在接入什么接入前需要理解 deja-vu 的两层结构解析层internal/sources/每个受支持的 Agent 对应一个解析器负责把磁盘上的会话文件JSONL、SQLite、Markdown 等读成统一的model.Session结构。索引层internal/index/负责文件发现、增量解析和写入索引数据库它只从注册表读取新增格式时无需改动。也就是说接入新格式的全部工作都在解析层。统一的数据结构定义在 internal/model/model.gomodel.Session包含稳定的ID、Harness、Project、Started、Updated和Messages每条消息含Role、Text、Time这些字段决定了搜索结果如何分组、排序和归因。完整的 6 步清单写在 docs/ARCHITECTURE.md 的 Add a new harness 一节下面逐步展开。第1步编写解析器输出 model.Session在 internal/sources/ 下新增一个你的harness.go文件实现三个函数命名替换为你的 harness 名func LoadNewHarness() []model.Session // 冷启动全量加载 func ParseNewHarnessFile(path string) ([]model.Session, error) // 解析单个文件 func ParseNewHarnessFileFromOffset(path, offset int64) ([]model.Session, error) // 增量解析append-only 格式才需要要点会话 ID 必须稳定。索引靠它做增量去重同一会话跨次构建必须返回相同 ID。消息时间用真实时间戳。deja-vu 的输出大量依赖最近一次讨论的时间线零值时间会被显示为-而不是假日期。增量解析只追加。如果新写入的行可能改写旧记录比如数据库类格式就不要实现ParseFrom让索引整文件重读——正确性优先于速度。参考现有实现JSONL 类可看 internal/sources/claude.goSQLite 类可看 internal/sources/codex.goMarkdown 追加日志可看 internal/sources/aider.go。第2步在注册表中登记 Harness 条目打开 internal/sources/registry.go在allHarnesses()中追加一个Harness条目。核心是两个结构HarnessName粗粒度名称如claude、Load、Files返回要索引的文件列表、Kinds该 harness 的磁盘文件形态。FileKindName、Match按路径判断归属、Parse、ParseFrom可选、Resumes可选声明新增字节能否独立读取。⚠️ 最容易踩的坑Match必须能匹配Files会遍历的每一个根目录。因为增量索引是靠文件路径反查解析器的——路径匹配不上那个文件的变更就会被静默漏掉。一个 harness 可以有多个FileKind例如 codex 同时有 rollout 日志和 history 文件两种形态。第3步让增量索引零改动自动生效这是 deja-vu 架构里对贡献者最友好的一点文件发现、路径匹配、增量解析都在 internal/index/ 中实现它们统一读取第 2 步的注册表条目不需要任何编辑。构建索引时的行为自动继承文件型来源走按 CPU 核数扩展的 worker 池并行解析按路径排序后写入保证确定性每个 SQLite 类读取有 10 分钟墙钟预算DEJA_STORE_TIMEOUT可调超时的 store 会被deja doctor点名而不是让整个构建卡死构建是幂等的索引默认落在~/.cache/deja/index.db。你唯一要做的验证是跑一次deja index确认新会话出现在结果里。第4步可选接入 install 命令的配置处理如果 harness 支持 MCP 或 hooks就让它出现在deja install的可选目标里在 cmd/deja/install.go 中增加安装/卸载配置处理接线复杂时例如需要 hook 而不是单纯 MCP 条目再建一个install_harness.go。不接这步也可以——解析层先行、安装后补是完全可行的。deja install --help会列出全部 80 多个目标新目标出现后deja install --auto的一条命令全接入能力会自动覆盖它。第5步补上格式注册表文档deja-vu 把每个受支持格式的磁盘布局当作公开契约维护在 docs/registry/registry.json 加一条机器可读条目新建docs/registry/id.md页面描述存储位置、文件布局、消息记录结构、角色与时间戳处理、已知怪癖——可参照 docs/registry/claude-code.md 的写法在 docs/registry/README.md 的表格里挂上链接。这一步有强制校验internal/sources/registry_test.go 会检查注册表索引与allHarnesses()列表双向一致漏写文档或漏登记都会让测试直接失败。第6步加 fixture 和四类测试测试要覆盖四个面解析fixture →model.Session字段断言、索引写入后可被检索、搜索deja search命中、install目标出现在列表。两个现成的效率工具现成 fixture 格式fixtures/registry/ 下有全部 40 多个格式的合规模板如 fixtures/registry/claude-code/session.jsonl。如果你的新格式与某个现有格式同族直接拿一个改造比手写省事且更贴近真实字节。环境变量隔离测试绝不能读开发者自己的会话历史。deja-vu 用环境变量而不是命令行 flag因为 hooks 和 MCP 是被别人拉起的进程实现隔离最小组合export DEJA_INDEX_DIR$tmp/index.db # 独立索引 export DEJA_STORESclaude # 只启用被测 store export DEJA_CLAUDE_ROOT$tmp/claude # 指向你的 fixtureDEJA_STORES接受逗号分隔的 store 列表deja sources打印的名字拼错名字会在命令执行前直接报错——因为一个 typo 若被静默忽略会让你把机器没历史误当成正常结果。internal/testenv/ 包更进一步它拦截所有DEJA_*位置类变量防止测试二进制误触开发者真实数据你的新测试建议直接复用。最后跑一遍deja doctor --json确认新 store 在stores[]中出现且路径解析正常。接入完成后 至此你的 Agent 格式就和其他 40 多个一样被搜索、blame、fix、recap等全部命令覆盖。按 docs/INTEGRATING.md 末尾的约定接入方最好在 issue 或 PR 中说明我把 deja 接进了 X——deja-vu 希望这类集成出现在首页而不是藏在 commit 里。步骤位置改动量1. 解析器internal/sources/1 个新文件2. 注册表条目internal/sources/registry.go1 个条目3. 增量索引internal/index/零改动4. install 目标cmd/deja/install.go可选5. 格式文档docs/registry/1 条 1 页6. 测试fixtures/registry/1 个 fixture 测试记住三条纪律ID 稳定、Match 全覆盖、文档与列表双向一致——做到这三点测试套件会替你走完剩下的路。赞分享【免费下载链接】deja-vuMemory for Claude Code, Codex, Cursor and 38 more coding agents, built from the session history already on your disk. Local search, MCP and hooks, no LLM, one Go binary.项目地址https://gitcode.com/gh_mirrors/dej/deja-vu点击查看免费下载相关推荐Czkawka 磁盘清理重复文件、相似图片、空文件夹一次扫描全找到Czkawka 磁盘清理重复文件、相似图片、空文件夹一次扫描全找到 系统盘飘红只是表象下载文件夹里还躺着同一份安装包的三个副本截图相册堆着二十张几乎一样桌面应用如何把 OpenViking 接入 OpenCode让编码会话自动召回和捕获记忆如何把 OpenViking 接入 OpenCode让编码会话自动召回和捕获记忆 OpenViking 是面向 AI Agent 的自进化上下文数据库统一管人工智能AI AgentAgent 记忆RAG后端数据库cognee-mcp 完全指南用 MCP 协议把 cognee 记忆引擎接入你的 Agent 与 IDEcognee mcp 完全指南用 MCP 协议把 cognee 记忆引擎接入你的 Agent 与 IDE cognee mcp 是 cognee 开源 AI人工智能AI AgentRAG知识图谱后端MCP 服务创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑