Agent 短期记忆(Short-term Memory)保存当前对话、任务或运行线程中仍可能影响后续步骤的信息。它常与 Agent 的运行状态一起维护,使模型能够延续当前目标、约束和行动,而不必在每一步重新理解整个任务。
短期记忆的“短期”描述的是作用范围,而不一定表示只存在于进程内存中。系统可以把它持久化为检查点,以便同一线程中断后恢复;只要信息仍限定在该线程或任务范围内,它仍属于短期记忆。
常见内容
短期记忆通常包括:
- 最近几轮用户消息与模型回复;
- 当前目标、计划、未完成事项和等待条件;
- 已执行的工具调用、关键结果与错误;
- 当前正在处理的文件、对象或中间产物;
- 对较早对话和轨迹生成的阶段性摘要。
这些信息不应全部直接拼入模型输入。记忆是系统能够保存和检索的信息,上下文则是某一轮模型实际看到的工作集。
保存与恢复
一个可恢复的短期记忆流程通常包括:
- 为每个会话或任务分配稳定的线程标识;
- 在关键步骤后保存结构化状态和必要的消息历史;
- 恢复时读取与该线程匹配的最新检查点;
- 校验外部资源、权限和文件版本是否仍然有效;
- 将当前步骤真正需要的信息装入上下文。
检查点保存的是可恢复状态,不等同于把全部历史永久保留。以 LangGraph 为例,其记忆概览把短期记忆描述为线程范围内的状态,并可通过 Checkpointer 在步骤之间持久化。其他 Agent 框架可以采用不同实现。
上下文窗口管理
消息和工具结果会随任务增长,完整装入上下文可能超过窗口限制,也会引入延迟、成本和无关信息。常见处理方式包括:
- 保留最近且仍相关的消息;
- 将较早轨迹压缩为带来源定位的结构化摘要;
- 把大型文件、日志和工具结果保存在外部,只在需要时重新读取;
- 将目标、权限约束、关键决定和失败路径列为不可静默丢失的信息;
- 在摘要后保留原始记录,使重要结论可以回查。
简单滑动窗口可能删除早期约束,单一自然语言摘要也可能累积错误。压缩策略需要通过长任务、恢复和冲突场景评测。
隔离与安全
不同用户、线程和任务的短期记忆必须隔离。恢复状态时应重新检查身份、权限和外部事实,不应因为旧轨迹中曾经允许某项操作,就自动沿用已经失效的授权。
网页、邮件和工具结果属于带来源的观察数据。即使它们被保存在短期记忆中,也不会因此变成高优先级指令。凭据和不必要的敏感数据应避免写入消息历史、摘要或检查点。
评测
短期记忆不能只用“是否记住一条消息”衡量,还应检查:
- 能否在多步骤任务中保持目标和约束;
- 中断恢复后是否从正确步骤继续;
- 是否会重复已经失败或完成的操作;
- 压缩后能否保留关键证据与来源;
- 不同线程之间是否发生信息串用;
- 旧状态与当前外部事实冲突时能否重新验证。