Agent 记忆不是向量库:长期助手需要一套记忆工程

从 TencentDB Agent Memory 与 Mem0 的公开资料出发,拆解长期记忆的选择性写入、分层抽象、召回预算、更新遗忘、租户隔离与审计。

核心判断:向量检索可以是 Agent 记忆的一部分,但不是完整答案。长期助手还必须决定什么值得写入、以什么层次保存、何时召回、何时更新或遗忘,以及如何隔离和审计。

长上下文和长期记忆解决不同问题

长上下文解决容量:一次调用最多能看多少内容。

长期记忆解决连续性:系统能否跨会话、跨任务、跨时间保留重要信息,并在后续任务中准确使用。

Mem0 对记忆评测的梳理给出了一个清晰区分:长上下文评测通常提供一次固定的大输入,测试模型能否在其中检索或推理;记忆评测则让系统持续接收信息、写入外部存储,并在后续回合检索。一个模型能在百万 token 中找到信息,不等于它能管理用户数周前的偏好和已经更新的项目决策。

因此,一次性文档问答可以主要依赖长上下文;长期助手、团队工作台、销售 Agent 和运维 Agent 则需要独立的记忆生命周期。

记忆不是存得越多越好

最容易出现的实现是把所有历史都切片、向量化并保存。它避免了“没存”,却带来另一组问题:

  • 临时猜测被写成长期事实;
  • 已被推翻的结论继续召回;
  • 闲聊和工具日志占据检索结果;
  • 大量记忆挤占当前任务的 token;
  • 不同用户或项目的数据错误混用。

完整的记忆能力至少包含四步:从信息流中提取有用事实、写入外部存储、推理时检索,以及在内容过期时修剪或更新。只测向量检索准确率,只覆盖了其中一段。

TencentDB Agent Memory 的分层思路

TencentDB Agent Memory 的早期架构把记忆分成 L0 到 L3:

  • L0 Conversation:原始对话和证据;
  • L1 Atom:可独立使用的原子事实;
  • L2 Scenario:由多条事实组成的任务或场景;
  • L3 Persona:长期偏好和画像。

这种分层的价值在于,系统不必每次搜索所有历史。询问稳定偏好时可以先查看画像;恢复某个项目时查看场景;遇到争议再下钻到原子事实和原始对话。

项目也探索了 symbolic short-term memory:把沉重工具输出卸载到外部文件,用紧凑的任务结构保留当前状态,再通过标识追溯原始证据。上层保存结构,下层保存原文,比不可逆摘要更容易检查和纠错。

项目后续已经继续演化,当前仓库把定位扩展为团队级记忆中心,包含 Chat Memory、Skill、LLM-Wiki 和 Code-Graph 等可复用资产。这里更值得借鉴的是架构方向,而不是把某个版本的实现当作唯一标准。

每条记忆应该有哪些字段

普通团队不必一开始建设复杂平台。可以先规定一条长期记忆至少包含:

  • 内容与类型;
  • 原始来源;
  • 创建和最后更新时间;
  • 用户、项目、团队或 Agent 作用域;
  • 置信度;
  • 是否需要用户确认;
  • 过期时间或替代关系;
  • 可见权限和审计记录。

没有来源,错误记忆无法追查;没有作用域,多租户系统可能串数据;没有替代关系,新旧决策会同时进入 prompt。

召回预算比“召回更多”更重要

生产 Agent 的上下文有明确成本。记忆系统需要控制:最多召回几条、每条多长、总字符数或 token 数,以及不同类型的记忆能进入哪一层提示词。

例如:

  • 用户明确确认的稳定偏好可以进入任务上下文;
  • 模型推断出的偏好只作为候选,等待确认;
  • 历史事故经验可用于生成检查清单,但不能自动覆盖当前操作规程;
  • 原始聊天和工具日志按需下钻,不默认全部注入。

召回预算既控制成本,也减少旧信息对当前任务的污染。

更新、遗忘和冲突处理

只会新增、不懂更新的系统,运行越久越危险。

当用户改变偏好、需求被重新确认或运维策略更新时,系统应该将新记忆与旧记忆建立替代关系,而不是简单追加。对于冲突内容,可以采用:

  1. 时间优先,但保留旧版本;
  2. 权威来源优先;
  3. 高风险冲突请求用户确认;
  4. 无法确定时停止自动使用该记忆。

遗忘也不等于直接删除所有证据。业务系统通常需要把“禁止再召回”和“审计上仍可追溯”分开处理。

记忆系统必须可调试

当 Agent 使用了错误信息,需要判断问题发生在哪一段:

  • 写入时提取错了;
  • 检索没有找到正确内容;
  • 排序把低价值记忆放在前面;
  • 旧记忆没有失效;
  • 作用域或身份判断错误;
  • 注入位置破坏了当前任务上下文。

所以记忆链路应该保留写入、更新、召回、排序和注入记录。只显示一个相似度分数,无法支持真正的故障排查。

应该怎样评测

Mem0 总结的 LoCoMo、LongMemEval 和 BEAM 等评测,关注多会话连续性,而不是单次长输入。对自己的业务,至少应测试:

  • 跨会话召回;
  • 选择性写入;
  • 有限预算下的检索;
  • 旧信息更新和遗忘;
  • 不存在信息时拒绝编造;
  • 用户与租户隔离;
  • 记忆错误后的追溯和修复。

还要记录单任务 token 成本和错误记忆带来的业务影响。只看问答准确率,会漏掉写入污染和越权泄露。

落到实际场景

内容生产系统可以记住可信来源、已做选题、栏目风格、常见事实错误和发布反馈,但这些信息应按选题、写作、审稿和复盘分别授权,不能全部直接进入口播提示词。

需求与研发系统可以保存业务背景、确认边界、验收标准和历史决策。关键是新决策必须能覆盖旧结论。

运维 Agent 可以保存设备拓扑、历史故障和处置经验,但必须按客户、项目和角色隔离,高风险建议仍要回到当前配置和实时证据验证。

结论

长上下文解决“这一次能看多少”,长期记忆解决“未来还能否正确记住”。向量数据库负责相似检索,但真正的记忆系统还需要选择性写入、分层、召回预算、更新遗忘、权限隔离和可追溯审计。

未来有价值的长期 Agent,不是记住一切,而是在正确边界内记住正确的事,并且随时能拿出证据。


参考资料与延伸阅读

TencentDB 项目架构随版本持续演进;本文讨论的是可迁移的工程原则,不把项目方 benchmark 视为第三方独立验证。资料核验日期:2026-08-23。