跳转到内容

长期记忆系统:跨会话的持久化上下文

长期记忆系统:跨会话的持久化上下文

1. 概念定义

Agent 长期记忆系统是一种在会话之间持久化用户画像、偏好和知识的技术。与短期会话记忆(对话历史)不同,长期记忆关注:

  • 用户画像:工作背景、技术栈、写作风格
  • 偏好:代码风格、文档格式、沟通方式
  • 知识积累:项目历史决策、学习过的概念、 recurring 问题

记忆使 Agent 从”每次都从零开始的助手”转变为”了解你的持续助理”。

2. 记忆分层

典型的长期记忆分为三个层次:

2.1 用户上下文(User Context)

1-3 句话的摘要,描述用户当前状态:

  • workContext:当前工作项目
  • personalContext:个人背景信息
  • topOfMind:当前关注的重点

2.2 历史摘要(History)

按时间窗口组织的历史记录:

  • recentMonths:最近几个月的交互摘要
  • earlierContext:更早的交互摘要
  • longTermBackground:长期稳定的背景知识

2.3 离散事实(Facts)

独立的事实条目,每条包含:

  • id:唯一标识
  • content:事实内容
  • category:类别(preference/knowledge/context/behavior/goal)
  • confidence:置信度(0-1)
  • createdAt:创建时间
  • source:来源会话

3. 记忆更新流程

4. 关键设计决策

4.1 异步更新

记忆更新不应阻塞用户对话。典型做法:

  • 对话消息入队(debounce 30s)
  • 后台线程批量处理
  • 原子文件写入(临时文件 + rename)

4.2 去重机制

相同或相似事实不应重复存储:

  • 基于内容哈希的精确去重
  • 基于 LLM 判断的语义去重
  • 定期合并低置信度事实

4.3 每用户隔离

记忆按 user_id 隔离存储:

  • {base_dir}/users/{user_id}/memory.json
  • 不同用户之间记忆不可见
  • 支持 per-agent per-user 的细粒度隔离

5. 陷阱与规避

5.1 记忆膨胀

事实不断积累,memory.json 变得过大。

规避

  • 限制最大事实数量(如 100 条)
  • 定期淘汰低置信度事实
  • 合并相关事实为更高层摘要

5.2 过时信息

用户偏好或工作背景变化后,旧记忆仍然注入。

规避

  • 事实附带时间戳和置信度
  • 新事实覆盖旧事实(同类别/同主题)
  • 用户手动清理记忆的接口

5.3 注入 Token 开销

每次对话都注入记忆会消耗上下文窗口。

规避

  • 注入 Top N 条最相关事实(而非全部)
  • 设置最大注入 Token 数(如 2000 tokens)
  • 按任务类型选择注入的记忆类别

参考来源