709 字
2 分钟

AgentlyMem

2026-09-11

项目链接#

GDUTMeow
/
AgentlyMem
Waiting for api.github.com...
00K
0K
0K
Waiting...

背景#

我受邀参与一个银河麒麟OS Agent的记忆系统相关的项目,实现基本记忆功能,后续扩展用户偏好、会话场景、工具记忆等功能.

方案#

在先前我做的法律智能体项目中,我也操刀了记忆系统的实现,由于是功能场景特化的Agent,我通过预定义分类(法律、涉案金额、相关主体等)来管理记忆,对记忆的读写也主要是结构化的Key-Value存储,允许llm调用工具创建和读取、修改记忆,保证记忆在较长时间跨度下可更新维护,保持信息的准确性和时效性.

我们再来回忆一下经典的朴素 Agent 记忆系统,就是把对话历史以chunk切割后向量化,然后存到向量数据库中,每次会话时根据语义相关性来检索记忆,然后拼凑进prompt中,这种方式存在一些问题. 其中就有在长时间跨度中,如果信息/事实发生变化,我们的修改更正会较为困难,或者是在向量化检索时可能取到过时信息作为干扰噪声影响llm的判断推理.

我们不妨将二者结合起来,使用向量化的方式生成和检索键,然后再写入/修改对应的值,这样我们就能做到在需要更新记忆时,通过余弦相似度匹配到相关的键,然后更新对应的值即可.实现一个AgentlyMem. 同时兼顾了向量化和键值存储的优点,用向量化检索键,利用相近语义在向量空间中的位置靠近,避免了措辞导致的重复创建/写入记忆,用键值存储对应的值,保证了记忆的准确性和可更新性. 同时还支持像数据库的模糊查询,能匹配到语义相近的记忆,实现灵活的记忆检索.

当然真正实现肯定不可能这么朴素,我们还需要引入subagent整理和判断记忆合并冲突等问题. 我们还需要引入记忆的分层,冷热数据的状态管理和迁移,以保证记忆不会无限增长从而成为新的噪声.

尾声#

这个结合方案并不一定是最优的,但应该能满足银河麒麟OS Agent的基本需求. 主要这个方案是我熬夜时的灵光一闪,也欢迎大家交流指正.

分享

如果这篇文章对你有帮助,欢迎分享给更多人!

AgentlyMem
https://mutsumi.moe/posts/AgentlyMem项目/
作者
Hill
发布于
2026-09-11
许可协议
CC BY-NC-SA 4.0