Conversation Buffer Memory
直接保留会话中的完整近期历史,包括用户输入、代理回应、工具输出,必要时还包括中间思考或状态描述。
保真度最高,实现最简单,能完整保留最近互动的细节与语义连续性。
随着交互增长会迅速吃掉 L_context,同时带来更高的成本与延迟;只适合很短的会话。
短流程、高精度、需要完整回看原始上下文的任务与调试场景。
短期记忆决定 agent 这一刻手边还留着哪些信息。它不只是聊天记录,而是在有限上下文窗口 L_context 里,帮系统留住下一步最可能用得上的内容。
当代理要连续聊很多轮,或者要分很多步完成任务时,如果没有短期记忆,它很快就会忘记刚刚做到哪、看到了什么、接下来要接什么。从工程实现看,短期记忆最好理解成 3 个基础机制加 1 个关键混合机制:Conversation Buffer、Conversation Window、Conversation Summary,以及 Conversation Summary Buffer。它们本质上都在“保留细节”和“别把上下文塞爆”之间找平衡。
可以把短期记忆想成代理桌面上摊开的那几张纸。纸太少,它会忘记刚刚做到哪;纸太多,桌面又会被堆满,看不出重点。所以短期记忆做的事,就是决定哪些最近信息要继续摊在桌上,哪些该收起来,哪些该压缩成便签。
这一组不是“所有相关概念”,而是这个维度最核心、最值得先理解的主线。带下划线的机制可以直接点开,会弹出一个更细的解释窗。
如果只看孤立卡片,机制之间的关系会很模糊。把它们放回 pipeline 中,就能看清每一步在系统里承担什么角色,以及问题通常出在什么位置。
捕获最近互动、工具输出与即时状态。
决定原文保留、窗口截断还是滚动摘要。
必要时对旧内容做 summary 或 token-based trimming。
把当前仍然重要的短期内容送入本轮 prompt。
直接保留会话中的完整近期历史,包括用户输入、代理回应、工具输出,必要时还包括中间思考或状态描述。
保真度最高,实现最简单,能完整保留最近互动的细节与语义连续性。
随着交互增长会迅速吃掉 L_context,同时带来更高的成本与延迟;只适合很短的会话。
短流程、高精度、需要完整回看原始上下文的任务与调试场景。
只保留最近 k 轮互动或最近固定 token 范围内的内容,通过滑动窗口控制短期记忆大小。
用 LLM 定期总结较早互动,把旧内容压缩成摘要,同时保留最近几轮原始内容。
把近期内容保留为原文,把更早内容滚动压缩成摘要,是很多框架和真实系统里最常见的混合短期记忆形态。
用户刚刚问完退货政策,紧接着又问“那运费呢?”。如果短期记忆还保留着上一轮上下文,系统就知道“那”指的是退货流程,而不是随便一个运费问题。
代理刚运行完测试、看到报错、准备改下一处代码。如果前面的测试输出和当前子任务被窗口裁掉,它就会像“没看过日志”一样重新摸索。
Conversation Buffer 像写全量日记,什么都记;Window 像桌上的便利贴,只留最近几件事;Summary Memory 像每周写周报,只留总结不留原文;Summary Buffer 则像智能笔记本,近期保留原文,旧内容快满时自动压成摘要。
这一部分补充的是更偏 memory system design 的视角:不只看概念本身,而是看这些机制在真实系统里应该放在哪一层、如何被组织、如何被观测。
短期记忆重要,不是因为系统想无上限地记更多,而是因为 LLM 的上下文窗口 L_context 有硬上限。最近发生的事如果没管好,代理做着做着就会忘记自己刚刚干了什么。
短期记忆如果从工程实现看,最清楚的理解方式不是只停在三个抽象词,而是拆成 3 个基础机制加 1 个关键混合机制。它们都在处理同一个现实问题:最近历史很有用,但上下文装不下那么多。
没有一种短期记忆适合所有代理。真正该看的,不是框架里这个类叫什么,而是你的任务到底有多依赖最近几轮的细节,以及要连续跑多久。
短期记忆设计绕不开三组现实取舍:保留原文越多,上下文越紧;压缩得越狠,越可能失真;上下文越长,成本和延迟通常越高。
这一章前面没有别的章节了,可以继续往后读,或者返回总览。
看记忆底层表示如何承接不同信息类型