Memory(Agent记忆)
为什么需要 Memory
没有记忆的 Agent 就像"金鱼"——每次交互都是独立的,问"昨天让我做什么",它完全不记得。
现实中的任务往往需要:
- 理解对话的前后文
- 记住用户的偏好和习惯
- 保存任务执行的中间状态
- 调用历史知识来辅助决策
Memory 让 Agent 能"积累经验",而不是每次都从零开始。
什么是 Memory
一句话定义:Memory 是 Agent 保存和复用信息的能力,让它在多轮交互和复杂任务中保持连贯。
类比:Memory 就像人的记忆体系——有工作记忆(当前在想的)、有长期记忆(记住的各种知识)。
Agent 的记忆分为三层:
工作记忆(Working Memory):当前任务执行周期内的上下文信息,受 Context Window 限制,任务结束就释放。
会话记忆(Session Memory):跨轮对话的信息,会话期间保存,通常通过对话摘要压缩来管理。
长期记忆(Long-Term Memory):持久化的跨会话知识,可以记住几个月甚至几年的信息,通常存在向量数据库里——这里就要用到 Embedding 做语义检索。
怎么做:什么时候需要什么层次的记忆
只需要工作记忆:简单的一次性任务,问完答完就结束。
需要会话记忆:需要跨多轮对话保持上下文,比如客服对话、复杂问题的逐步解答。
需要长期记忆:需要记住用户偏好、历史决策、领域知识,比如个人助理、长期项目助手。
这和 RAG 的思路很像——都是从外部存储里检索相关信息拼进上下文,只不过 Memory 存的是"历史经验",RAG 存的是"外部知识"。
常见坑:
- 什么都往 Context 里塞:Context Window 有限,需要筛选,只保留与当前任务相关的信息
- 记忆检索不准:需要用 Embedding 做语义匹配,而不是简单关键词搜索
- 记忆一致性:多轮对话可能出现记忆矛盾,需要版本管理和冲突检测
记住这一句:Memory 让 Agent 从"金鱼"变成"有经验的工作者"——不同层次的记忆服务不同需求,不是越多越好,而是需要什么用什么。
标签
Agent Memoryagent 记忆短期记忆长期记忆工作记忆会话记忆历史上下文记忆系统