AI Agent 的记忆系统应该如何设计?
简化版
Agent 记忆不是一个统一数据库,而是按生命周期拆分的分层状态:工作记忆保存当前任务,长期记忆(情景/语义/程序性)保存可复用的事实或经历,检索层按需把相关内容放回上下文。核心认知——记忆不会自动改变模型权重(把记录放进向量库 ≠ 微调),写入、检索、更新、过期、隔离、删除都要由应用显式管理。
详细版
常见分层:
- 工作记忆:当前目标、计划、工具观察、未完成步骤;
- 情景记忆:过去任务、动作、结果、反馈;
- 语义记忆:用户偏好、业务事实、提炼后的知识;
- 程序性知识:稳定规则、工具说明、操作流程(版本化配置维护)。
写入前判断价值、来源、权限、有效期;读取时结合语义相关性、时间、新鲜度、访问控制;用后处理冲突和反馈。不能把整段对话无限追加,也不能把模型总结未经验证当事实。
完整版教学
一、记忆 vs 上下文(先分清)
这是最容易混淆的概念:
上下文(context):本次模型调用【可见】的信息(有窗口/成本/注意力限制)
记忆(memory): 应用在【调用之间】保存、按需取回的信息(可无限大)
流程:长期记忆(大)── 检索/压缩/排序 ──> 只把相关部分放进上下文(小)
关键认知:把一条记录放进向量库,不会让模型”永久学会”它,也不等于微调——它只是「下次可能被检索回上下文」。记忆是外部存储 + 检索,不是模型能力。
二、四种记忆分层(各管什么)
| 类型 | 存什么 | 例子 | 存储 |
|---|---|---|---|
| 工作记忆 | 当前任务状态 | 当前步骤、已完成清单、错误计数 | 结构化状态 |
| 情景记忆 | 过去经历 | 上次这个任务怎么做的、结果如何 | 向量库 + 元数据 |
| 语义记忆 | 提炼的事实/偏好 | 用户偏好中文、公司政策 | 键值 + 向量 |
| 程序性知识 | 稳定规则/流程 | 工具说明、SOP | 版本化配置 |
三、工作记忆:优先结构化,别只存对话
工作记忆是高频出错点。很多实现只把「对话历史」一路追加,导致模型从冗长历史里猜当前状态。正解是结构化状态:
✓ 结构化:{ task_id, current_step: 3, done: [1,2], key_facts: {...},
error_count: 1, budget_left: 0.5 }
✗ 只存对话:把 20 轮原始对话全塞进去 → 模型猜"现在到哪一步了"
好处:可恢复执行、可校验前置条件、不用从历史猜状态。原始工具结果外部保存,上下文只传必要字段和引用。
四、长期记忆:不是所有对话都该存
写入要有策略,别无脑存:综合显式用户要求、重复使用价值、置信度、保留期限。用户偏好保留来源和时间;业务事实尽量来自权威系统而非模型推断。
Reflexion 一类方法把任务反馈提炼成文字反思供后续尝试用——注意这是上下文层面的经验复用,不是更新模型参数。
五、检索、冲突与安全(三个红线)
检索:结合关键词 + 向量 + 时间衰减 + 元数据过滤。
冲突:新旧记录冲突时优先权威来源和较新版本,并向用户暴露不确定性。关键——召回相关 ≠ 内容正确,尤其不能让过期地址/权限/价格直接驱动写操作。
安全与隐私:
长期记忆按【用户/租户/任务】隔离,敏感字段加密或不落库,提供查看/更正/删除
⚠️ 记忆污染:外部文档/工具结果可能含 Prompt Injection,
未经筛选写入长期记忆 → 会在【未来会话】持续影响行为(持久化污染)
写入和读取都要执行访问控制,不能依赖模型自行判断
六、常见误区与追问
- 误区:把记录放进向量库=模型学会了。 那只是外部存储,下次可能被检索回上下文,不改权重、不等于微调。
- 误区:工作记忆就是保留全部对话历史。 应优先结构化状态,否则模型从冗长历史猜当前步骤。
- 误区:召回的记忆内容一定正确。 召回只代表相关,过期/错误记忆不能直接驱动写操作。
- 误区:所有对话都值得长期保存。 要按价值/来源/权限/有效期筛选,无脑存会污染和涨成本。
- 误区:记忆写入读取靠模型判断权限。 必须应用层做访问控制和租户隔离。
- 追问:记忆和上下文什么区别? 上下文是本次调用可见信息(有限),记忆是调用之间的外部存储(按需检索回上下文)。
- 追问:工作记忆为什么要结构化? 可恢复执行、校验前置条件、不用从历史猜状态。
- 追问:什么是记忆污染? 含注入的外部内容写进长期记忆,会在未来会话持续影响行为,要筛选+隔离+访问控制。
七、加强记忆
Agent 记忆记「结构化状态 + 受控长期存储 + 按需检索」:工作记忆(当前任务,优先结构化状态而非全对话)、情景/语义/程序性长期记忆(可复用经历/事实/规则)。核心认知钉死:记录放向量库≠模型学会(是外部存储+检索,不改权重)、召回相关≠内容正确(过期记忆别驱动写操作)、记忆污染是大坑(含注入的内容写进长期记忆会持久影响未来会话)。关键不只是记得住,更要保证来源、新鲜度、权限、可删除、不被污染。