我正在构建 ClawMem,这是一个开源的上下文引擎,能够为 AI 编码代理提供跨会话的持久记忆。它可以与 Claude Code(钩子 + MCP)和 OpenClaw(ContextEngine 插件 + REST API)配合使用,并且两者可以共享同一个 SQLite 存储库,因此您的命令行代理和语音/聊天代理可以在相同的记忆基础上构建,而无需进行任何同步。
检索架构是一个“弗兰肯斯坦”,这几乎总是我的工作方式。我从最近的项目和研究中提取了最佳部分,并将它们拼接在一起:[QMD](https://github.com/tobi/qmd) 用于多信号检索管道(BM25 + 向量 + RRF + 查询扩展 + 交叉编码器重排序),[SAME](https://github.com/sgx-labs/statelessagent) 用于结合内容类型半衰期和共激活增强的复合评分,[MAGMA](https://arxiv.org/abs/2501.13956) 用于意图分类与多图遍历(语义、时间和因果束搜索),[A-MEM](https://arxiv.org/abs/2510.02178) 用于自我演化的记忆笔记,以及 [Engram](https://github.com/Gentleman-Programming/engram) 用于去重模式和时间导航。这些并不是为了协同工作而设计的,使它们协调一致是大部分工作。
在推理方面,QMD 的原始堆栈使用一个 300MB 的嵌入模型、一个 1.1GB 的查询扩展 LLM 和一个 600MB 的重排序器。这些通过 llama-server 在 GPU 上运行,或通过 node-llama-cpp(Metal、Vulkan 或 CPU)在进程中运行。但更有趣的路径是 SOTA 升级:ZeroEntropy 的蒸馏配对 zembed-1 + zerank-2。这些目前是 MTEB 上排名最高的嵌入和重排序模型,并且它们被设计为协同工作。重排序器是从与嵌入器相同的教师模型中蒸馏而来的,因此它们共享一个语义空间。运行这两个模型需要大约 12GB 的显存,但检索质量明显优于默认堆栈。如果您显存紧张或希望将嵌入任务转移到云模型,还有一个云嵌入选项。
针对 Claude Code,它与生命周期事件挂钩。上下文呈现会在每次提示时触发,以注入相关记忆,决策提取器和交接生成器捕获会话状态,而反馈循环则强化实际被引用的笔记。这大约可以自动处理 90% 的检索。剩下的 10% 是 28 个用于显式查询的 MCP 工具。对于 OpenClaw,它作为 ContextEngine 插件注册,具有相同的生命周期映射,并提供 5 个 REST API 工具供代理直接调用。
它在 Bun 上运行,使用单个 SQLite 存储库(WAL 模式,FTS5 + vec0)。所有内容都在设备上;除非您选择使用云嵌入,否则没有云依赖。整个系统是自给自足的。
这是一个经过打磨的工作进展,而不是最终产品。我是一个独立开发者。代码库大约有 19K 行,主要存储模块是一个 4K 行的神对象,可能需要拆分。当然,系统的效果取决于您索引的内容。一个包含三个记忆文件的存储库会产生理所当然的薄弱结果,而一个包含您的项目文档、研究笔记和决策记录的存储库则会提供一些实际有用的内容。
我真心希望能得到关于两个问题的反馈:(1)是否有人尝试在本地运行 SOTA 嵌入 + 重排序模型以用于代理记忆,质量差异是否值得显存的投入?(2)对于那些运行多个代理接口(CLI + 语音/聊天)的人,您今天是如何处理共享记忆的?
返回首页
最新
我今天在HN上看到这个很棒的列表,觉得应该做个调查。希望大家喜欢……安东尼·波登万岁……
因为最近我能够在Netflix上完整观看一集节目,而不需要去查看代理的情况,有时候那集节目长达40分钟!<p>我看电视的时间真的比实际工作还多,但我的工作效率仍然是去年的三倍!<p>我甚至还没有跟上进度;有些人醒来后告诉代理该做什么,然后又继续睡觉。
有人对 latitude.sh / datapacket.com 有什么经验吗?网络质量和停机时间怎么样?谢谢!