Agent Memory 应如何分层?短期、长期、情节和程序记忆如何配合?¶
- ID:Q036
- 难度:进阶 / 系统设计
- 标签:Memory、Working Memory、Semantic、Episodic、Procedural、State
可视化图解¶
flowchart TD
S1[Runtime State 当前执行真相] --> C[Context Builder]
S2[短期会话记忆] --> C
S3[长期语义记忆] --> C
S4[情节与经验记忆] --> C
S5[用户事实与偏好] --> C
C --> M[模型当前上下文]
M --> W[受策略约束的 Memory Write]
W --> S2
W --> S3
W --> S4
W --> S5
核心结论¶
Agent Memory 不是一个向量数据库,也不是完整聊天记录。它是按用途、生命周期、正确性要求和访问模式分层管理的信息系统。
首先必须区分:
Runtime State:当前任务真实执行状态;Working Context:本轮送给模型的信息;Short-term Memory:当前会话或任务的近期信息;Long-term Memory:跨任务复用的事实、经验和流程。
Runtime State 不能只存在自然语言消息里,Memory 也不能替代数据库中的业务真值。
一、工作记忆(Working Memory)¶
指模型当前推理可见的有限 Context:
- 当前目标;
- 当前计划和未完成步骤;
- 最近对话;
- 当前工具结果;
- 必要规则和证据。
它是临时工作区,容量受 Token Window 限制。Context Builder 每轮从其他存储中选择内容构造它。
二、短期记忆(Short-term Memory)¶
服务于当前会话或任务:
- 最近消息;
- 槽位和用户当前意图;
- 中间结论;
- 当前任务摘要;
- 工具调用历史。
可以保存在进程内存、Redis、关系数据库或 Checkpoint Store。它需要 Session/Tenant 隔离,并支持重启恢复。
短期记忆不是简单保留最近 N 轮。对任务型 Agent,更重要的是维护结构化状态:
{
"goal": "定位发布失败",
"service": "order-api",
"environment": "beta",
"confirmed_facts": [],
"open_questions": [],
"next_step": "query_logs"
}
三、长期语义记忆(Semantic Memory)¶
保存跨会话稳定事实:
- 用户明确偏好;
- 组织、产品和领域知识;
- 已确认配置;
- 业务规则。
事实应尽量结构化并带来源、版本、有效期和置信度。向量索引只负责检索入口,关系数据库或知识图谱更适合保存可更新事实。
四、情节记忆(Episodic Memory)¶
保存“过去发生过什么”:
- 某次故障的完整轨迹;
- 用户曾如何纠正 Agent;
- 某种方案在哪个上下文中成功或失败;
- 关键决策及结果。
情节记忆应保留时间、参与者、上下文、动作、结果和证据。它适合 Case-based Retrieval 和复盘,但不能把过去案例直接当作当前真值。
五、程序记忆(Procedural Memory)¶
保存“如何做”:
- Skill / SOP;
- 工具使用顺序;
- 诊断脚本;
- 检查清单;
- 组织规范。
相比把 SOP 写成长 Prompt,更适合版本化文件、Skill Registry 或工作流定义。程序记忆需要 Review、测试和发布,不应由 Agent 在一次成功后自动覆盖正式流程。
六、实体记忆¶
实体记忆通常是语义记忆的一种结构化实现:
{
"entity_type": "user_preference",
"entity_id": "user-1",
"key": "answer_style",
"value": "先给结论和命令,再解释原理",
"source": "explicit_user_statement",
"valid_from": "..."
}
重要事实使用精确 Key/ID 查找,不要只依赖相似度检索。
七、各层如何协作¶
对应流程使用 Mermaid 图解展示。
读取和写入都需要策略。不是每条消息都进入长期记忆,也不是每次请求都加载全部记忆。
八、Memory 与业务真值¶
用户地址、账户余额、订单状态、生产配置等关键事实应由权威系统提供。Memory 可以保存“用户常用地址偏好”或引用 ID,但执行高风险操作前必须重新查询 Source of Truth。
原则:
Memory 用于帮助理解和检索,不用于绕过权威系统验证。
九、常见混淆¶
Checkpoint vs Memory¶
- Checkpoint:让同一任务从中断处恢复;
- Memory:让未来任务复用信息。
RAG Knowledge vs User Memory¶
- 企业知识库通常面向多人共享、经过治理;
- 用户记忆有强身份隔离、隐私和可删除要求。
KV Cache vs 应用 Memory¶
模型推理中的 KV Cache 是计算优化,不是业务层可持久化的用户记忆。
十、评估¶
- 正确记忆召回率;
- 错误或过期记忆注入率;
- 跨用户泄漏率;
- 记忆写入 Precision;
- 用户纠正后的更新时延;
- 对任务完成率的真实增益;
- Token 和存储成本。
常见错误回答¶
短期记忆放 Redis,长期记忆放向量数据库。
存储技术不是概念定义。短期与长期首先由生命周期和用途区分;长期事实也可能存在关系数据库,短期状态也可能持久化到 PostgreSQL。
面试口述版¶
我会先把 Runtime State、Working Context 和 Memory 分开。Working Memory 是本轮模型可见的信息;短期记忆服务当前会话和任务,保存近期消息与结构化任务状态;长期记忆再分语义事实、情节案例和程序流程。重要实体事实使用带版本和来源的结构化存储,向量库只做检索入口。Checkpoint 用于同一任务恢复,程序记忆以 Skill 或 SOP 版本化。执行订单、余额、生产配置等高风险动作前仍需查询权威系统,不能只信 Memory。
结合个人项目¶
CI/CD Agent 的当前日志、计划和已排除原因属于任务状态;历史故障案例属于情节记忆;诊断 SOP 与脚本属于程序记忆;服务负责人和环境配置属于带来源的语义事实。