Agent 记忆机制浅记
Agent 记忆机制
一、 Agent 记忆的理论本质
所谓的“Agent 记忆”,在理论上其实是状态管理与上下文注入。
1. 记忆的三种形态
- 短期记忆: 是高保真的无损切片(最近几轮对话的原文)。
- 长期记忆: 是降维后的特征向量或摘要。
- 实体记忆: 是结构化剥离出来的核心标签(Key-Value 属性)。
2. 记忆的生命周期
- 感知: 接收用户输入。
- 工作区: 在当前推理周期内,暂存思考过程。
- 巩固: 对话结束后,将短期记忆进行价值评估,有用的被抽取为实体属性或转化为向量冷备,无用的被丢弃。
- 唤醒: 下次对话时,根据当前线索,从冷库中唤醒相关片段。
二、 LangGraph 记忆体系架构
在 LangGraph 中,所有的记忆都被抽象成了两个核心概念:状态(State) 和 持久化。
业务边界界定 在实际业务中(例如用户询问:之前 XXXXX 故障,现在处理的如何?),严格意义上,外部工单数据库或向量检索(RAG)属于大模型的工具调用,不属于 Agent 本身的内部记忆架构,但调用的结果会成为记忆的一部分。
LangGraph 记忆体系仅由以下三个核心模块构成:
1. 运行态记忆:图状态
State 是一个结构化的数据字典(通常包含 messages 列表及其他自定义字段),在图的各个节点之间流转。
- 生命周期: 存在于内存中,单次
Invoke结束后即刻释放。 - 追加机制: State 中的数据通常不是简单覆盖,而是通过
operator.add等函数进行追加。例如新回复会被追加到现有的messages列表中。 - 工程处理: State 是最终传递给大模型的上下文。因此需要设计专门的处理,例如压缩对话、摘要、滑窗。
2. 线程级记忆:检查点
Checkpointer 是对 State 的持久化存储层,解决多轮对话的连续性问题,生命周期与单一会话绑定。
Checkpointer 的工作机制(快照与恢复):
- 快照 (Snapshot): 在图的节点执行完毕、挂起等待用户回复时,自动将内存中的 State 序列化,作为快照存入底层的关系型数据库。
- 恢复 (Resume): 当用户再次发送消息时,系统通过同一个
thread_id从数据库捞出最后一次的快照加载回内存,大模型瞬间获得完整的历史对话上下文。
3. 跨线程记忆:实体存储
是一种全局的键值对的保存,是一种长期用户画像,通常基于 user_id进行划分。 例如 Agent 在某次对话中提取到“设备是华为的手机/路由器”,就调用特定节点将其写入 Store。用户下次发起全新对话时,系统直接从 Store 提取该标签强行注入 System Prompt。