Agent 长期记忆

agent_long_term_memory2026-09-20 14:30:21

Agent 长期记忆(Long-term Memory)保存可以跨任务、跨会话或跨运行线程复用的信息。它让 Agent 在新的上下文中重新取得过去形成的事实、经历或经验,而不要求原始对话始终留在模型的上下文窗口内。

长期记忆不是完整聊天记录的同义词,也不是把所有输入永久保存。它需要明确决定什么值得保留、属于谁、何时取回、如何处理冲突,以及何时更新或删除。

与短期记忆的边界

短期记忆主要服务于当前线程或任务;长期记忆则具有跨线程的持久作用范围。同一份数据存放在数据库中并不自动成为长期记忆,关键在于它是否会在未来其他任务中被选择、检索和使用。

长期记忆也不等于知识库。知识库通常保存可供多个用户或任务查询的资料;长期记忆还可能包含特定用户、Agent 或业务对象的经历和状态。两者可以使用相似的检索技术,但写入权限、时效和删除规则往往不同。

信息类型

长期记忆常按内容分为:

  • 语义记忆:事实、概念和关系,例如已经确认的用户偏好或项目约束;
  • 情景记忆:过去发生的具体事件、行动和结果;
  • 程序性记忆:完成任务所依据的规则、指令或可复用技能。

这些分类可以并存,也可以映射为不同的数据结构。面向特定用户的长期记忆可进一步形成用户记忆。CoALA使用模块化记忆来组织语言 Agent,并区分工作记忆、情景记忆、语义记忆和程序性记忆;这是一种分析框架,不要求所有系统采用完全相同的分类。

写入流程

可靠的长期记忆写入通常包括:

  1. 从对话、运行轨迹或外部资料中识别候选信息;
  2. 判断信息是否稳定、可复用且有保存必要;
  3. 去除凭据、无关日志和未经验证的推测;
  4. 记录内容、来源、主体、时间、适用范围和置信信息;
  5. 与已有记忆比较,执行新增、合并、更新、失效或拒绝;
  6. 按用户和业务规则提供查看、更正、删除与到期清理能力。

写入可以发生在任务执行路径中,也可以由后台流程异步完成。前者能立即生效,但会增加延迟并干扰主任务;后者便于集中整理,却可能在新记忆形成前出现时差。

检索与装入上下文

长期记忆只有在被检索并装入当前上下文后才会影响模型。检索通常综合考虑:

  • 当前任务与记忆内容的相关性;
  • 信息的重要程度和置信度;
  • 时间、有效期和最近更新时间;
  • 用户、组织、项目或 Agent 的作用域;
  • 来源是否仍然可访问和可信;
  • 与其他记忆是否重复或冲突。

检索结果应保持少量、可追溯并与当前任务直接相关。向量相似度可以帮助召回候选内容,但不能单独判断事实是否正确或仍然有效。LangGraph 的记忆概览展示了使用自定义 Namespace 和 Store 管理跨线程记忆的一种实现方式。

冲突、更新与遗忘

长期存在不代表永久正确。偏好会改变,项目事实会过期,不同来源也可能互相矛盾。系统应避免直接覆盖而丢失历史依据,可以保存版本、有效时间和替代关系,并在使用高时效信息前重新查询权威来源。

遗忘是长期记忆治理的一部分。系统需要支持主动删除、到期清理、作用域结束后的回收,以及在删除后同步清除派生摘要和检索索引。对于与用户有关的数据,还应提供可理解的查看和更正入口。

评测

长期记忆评测应同时覆盖记忆、取回和正确使用:

  • 该保存的信息是否被准确写入;
  • 不该保存的敏感或短暂信息是否被拒绝;
  • 跨会话能否找到相关记忆;
  • 无关记忆是否会污染当前回答;
  • 冲突和过期信息是否得到识别;
  • 用户更正或删除后,旧信息是否停止生效;
  • 不同用户和作用域之间是否严格隔离。

相关词条

参考资料

本页目录