我们做 Agent 时发现一个挺反直觉的问题:记得越多,不一定越聪明,反而更容易被过期信息带偏。
比如用户三个月前说喜欢 A ,后来明确改成了 B 。
把两条都扔进向量库,检索时可能一起回来;直接用 B 覆盖 A ,又会丢掉“为什么改”。在合同修订、理赔、研究这类跨几周甚至几个月的工作里,真正有价值的往往正是这些变化和判断过程。
RAG 能找回“相关内容”,但相关不等于现在还有效。
所以我们做了 OpenContext:
https://github.com/melandlabs/opencontext
OpenContext 给事实加上时间、版本和关系,让 Agent 能分清:
一条信息从什么时候开始有效;
新信息是在补充、替代还是反驳旧信息;
用户现在的偏好是什么,三个月前又是什么;
当前结论是怎么一步步变成今天这个版本的。
换句话说,它不只是让 Agent“记住”,还让 Agent 能回答:
用户现在喜欢什么?
三个月前系统知道什么?
当前结论替代了哪条旧结论?
两份资料为什么互相冲突?
实现上提供了 remember、recall、improve、forget 四个核心操作,支持 TypeScript SDK 、HTTP 和 MCP 。不配置 Embedding 也可以先跑关键词检索,配置后再加入语义检索。
仓库里目前放了个人记忆助手、客服历史和研究资料追踪等可以直接运行的 TypeScript 示例:
git clone https://github.com/melandlabs/opencontext.git
cd opencontext/examples
pnpm install
pnpm test
如果你已经在用 DeepSeek Harness ,也可以直接接入:
dsh plugin --profile web add dsh-opencontext
dsh web
完整文档: https://github.com/melandlabs/opencontext/tree/main/docs
可运行示例: https://github.com/melandlabs/opencontext/tree/main/examples
Use Cases: https://github.com/melandlabs/opencontext/tree/main/docs/tutorials/use-cases
DSH 插件: https://github.com/melandlabs/opencontext/tree/main/plugins/dsh-opencontext
最后想问一下:你实际遇到的 Agent 记忆问题,更接近哪一种?
想要的记忆根本找不到
记忆找到了,但新旧信息互相打架
有具体场景也欢迎直接丢出来。哪一类更多,我们就先补哪一类的完整示例。
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.