长期记忆系统:跨会话的持久化上下文
长期记忆系统:跨会话的持久化上下文
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)
- 按任务类型选择注入的记忆类别
参考来源
- Generative Agents 论文 — Park et al., 2023
- Mem0 文档 — AI Agent 通用记忆层