OpenViking 上下文数据库 | 08 - 会话如何变成长时记忆:Session 与 Compressor
📅 2026/7/14 9:07:53
👁️ 阅读次数
📝 编程学习
这是 OpenViking 系列的第 8 篇。
上一篇我们讲了语义检索:OpenViking 如何在viking://文件系统、L0/L1/L2 分层上下文和 ContextType 之上,让 Agent 找到更可解释的结果。
这一篇继续看另一个非常关键的问题:
Agent 的对话历史,如何变成未来还能继续使用的长期记忆?
如果 Agent 每次对话结束后什么都不留下,那么它下一次仍然像第一次见你。
如果 Agent 把所有历史原文都塞进 prompt,那么上下文会越来越长,成本越来越高,噪声也越来越多。
OpenViking 的 Session 机制,就是在这两者之间建立一个工程化折中:
- 当前对话先记录为消息。
- 到合适时机执行
commit()。 - 原始消息进入归档。
- 归档生成摘要和概览。
- 有价值的信息被提取成长期 Memory。
- 后续检索和对话可以复用这些沉淀。
这篇解决什么问题
很多人第一次做 Agent 记忆时,会有两个极端想法。
第一个极端是:
直接把所有历史消息都带上。
这个方案简单,但很快会遇到问题:
- token 成本越来越高。
- 长上下文里关键信息容易被淹没。
编程学习
技术分享
实战经验