1215 字
约 4 分钟
13
Agent 的短期记忆怎么实现?
2026-09-25
无标签

Agent 的短期记忆怎么实现? 沉默王二 原创 AI 面试 AI Agent 面试题 短期记忆 Conversation History 上下文压缩 约 1057 字 大约 4 分钟 AI的药,绝不能停 #024 面试官问你:“Agent 的短期记忆怎么实现的?”如果你回答“模型自己会记住啊,上下文窗口里面的它全都知道”,那你就只能回家等通知了。 AI Agent 面试题 短期记忆 Conversation History 上下文压缩 WATCH / 抖音视频 在抖音打开 王二讲Agent 每天3分钟,带你吃透Agent。 为什么? 因为 LLM 是无状态的。每一次 API 调用,它都不记得你上一句说了什么。你觉得它“记住”了,其实是 Agent 把整段对话历史偷偷重发了一遍。 哈喽大家好,我是二哥呀。今天用 3 分钟,带你搞清楚 Agent 短期记忆的实现原理。 面试官问这道题,考三层:第一,短期记忆的底层原理你懂不懂;第二,上下文窗口的物理限制你清不清楚;第三,窗口不够用了你怎么处理。 好,接下来给你满分回答,照着背就完事了。 第一,搞清楚短期记忆到底是什么。 答案就四个字——messages 数组。 LLM 是无状态的,每次调用从零开始。所谓的“记忆”,是因为 Agent 维护了一个 messages 数组,按顺序存着每一轮对话。数组里有四种角色:system 是系统指令,user 是用户输入,assistant 是模型回复,tool 是工具调用的返回结果。 每次调 API,应用把整个数组全量发给模型。模型读完所有消息,才能“知道”你前面说过什么。 打个比方。模型是一个每次考试都被清空记忆的考生,Agent 是帮他把之前所有答卷重新抄一遍的助手。模型“记住你的名字”,不是因为它有记忆,是因为你说名字的那条消息还在 messages 数组里,每次都被重新发过去了一遍。 第二,上下文窗口的大小决定了短期记忆的最大容量。 数组越长,token 就越多。但上下文窗口是有上限的——DeepSeek V4 是 1M token。听起来很大,但长对话和复杂任务会比你想象的更快把它填满。 还有个问题就是:Lost in the Middle。研究表明,LLM 对上下文的注意力呈 U 形分布——开头和结尾关注度高,中间容易被忽略。你以为信息“在窗口里”就万事大吉,但模型可能根本没注意到。 第三,窗口不够用了怎么办?三种策略。 第一种,滑动窗口。只保留最近 N 轮对话,早期的直接丢掉。Spring AI 的 MessageWindowChatMemory 就是这个思路,默认保留 20 条消息,按轮次丢弃——一个 UserMessage 加上后面所有的 assistant 回复和 tool 调用算一轮,但不会从对话中间切断。零成本,但早期的信息会彻底消失。 第二种,摘要压缩。用 LLM 把早期对话压缩成一段摘要,替换掉原始消息。Claude Code 就是这么干的——上下文到 83% 容量时自动触发,把前面的对话压缩成一份九段式结构化摘要,覆盖核心任务、技术上下文、文件变更等关键信息。token 省了,语义还在。代价是细节丢失——就像高清照片压成了缩略图,容易糊。 第三种,混合策略。旧的消息压缩成摘要,近期的消息保留原文。LangChain 的 ConversationSummaryBufferMemory 就是这个思路——远的记大意,近的留原话。这是生产环境最常用的一种。 面试官如果追问:“三种策略怎么选?” 告诉他——看场景。短对话、十轮以内,滑动窗口就够用了。长对话、几十轮往上,就选混合策略,兼顾全局语义和近期细节。还有一个维度:任务型 Agent 只关心当前指令和最近几步结果,早期上下文不重要,滑动窗口就够用。对话型 Agent 需要理解用户偏好和历史意图,全局语义很关键,必须用摘要兜住早期信息。 最后送大家一句口诀——模型无状态,记忆靠数组;窗口装不下,压缩是出路。 这道题你学废了吗?想解锁更多 Agent 面试题的源码级拆解,点赞关注,我是二哥,下期见!

在 GitHub 上编辑此页 上次编辑于: 贡献者: 沉默王二 上一页 让 Agent 拥有记忆 下一页 Agent 长期记忆

Agent 的短期记忆怎么实现?
https://clxhxhhr.top/posts/3757/
作者
clxstart
发布于
2026-09-25
许可协议
CC BY-NC-SA 4.0
评论
0 条
还没有评论,先写一条吧。