彻底搞懂Agent记忆压缩(附腾讯面经),看这一篇就够了!

张开发
2026/5/18 5:06:06 15 分钟阅读
彻底搞懂Agent记忆压缩(附腾讯面经),看这一篇就够了!
面试官抬眼冷脸来说说Agent 记忆压缩通常有哪些方法‍♂️我脑袋空空瞎胡诌啊压缩那不就是删聊天记录呗没用的全删掉实在不行复制粘贴精简下就行面试官一拍桌子当场怒斥停这叫啥方法纯纯瞎糊弄面试不是让你乱蒙的Agent记忆压缩是正经工程方案有标准解法给我好好答乱答记忆压缩只会被面试官怼这道腾讯高频真题核心是吃透四类压缩方法的原理、用法和工程实践下面正经拆解拿分思路。 简要回答记忆压缩常见有四种方法摘要压缩、滑动窗口、重要性过滤、结构化抽取。摘要压缩是把长对话总结成简短摘要滑动窗口是只保留最近 N 轮对话重要性过滤是打分筛选只留重要内容结构化抽取是把关键信息抽成结构化数据存起来。我在实际项目里最常用的是摘要压缩和滑动窗口而且经常组合用滑动窗口丢弃前先做一次摘要尽量不丢重要信息。 详细解析想象这样一个场景你在用一个 AI 助手帮你推进一个复杂项目聊了一个多小时确认了技术方案、梳理了需求、定下了几个重要决策。然后有一刻AI 突然开始「忘事」了把你早就敲定的方案搞错重新提出已经被你否决的思路。你感觉很困惑明明刚才还在聊它怎么就不记得了这个现象的根源就是 context window 的限制。LLM 每次生成回答并不是像人脑一样有持续的记忆它依赖的是「每次调用时传入的完整对话历史」。你和它聊的每一句话都被打包成 messages 列表传进去模型读完这些内容才能生成下一条回复。这个 messages 列表是有硬上限的GPT-4o 是 128K tokenClaude 是 200K token超过了就得截断。默认的截断策略是「从最老的对话开始丢」于是那个三十分钟前确认的技术方案就这么被扔掉了。更现实的压力还有成本。就算没有超过 token 上限对话越长每次调 LLM 的费用就越高因为你把越来越多的历史塞进了输入。高频使用场景下这是货真价实的成本压力。记忆压缩要解决的就是「空间有限、成本有压力」这两件事在保留关键信息的前提下减少历史记录占用的 token 数量。第一种方法滑动窗口最简单的方案也是最粗糙的滑动窗口是最符合直觉的做法就像手机聊天记录默认只显示最近 200 条超出就从最老的开始删只保留最近 N 轮对话。好处是实现极其简单不需要任何额外的 LLM 调用也没有额外开销。坏处是「硬截断」对话内容按时间一刀切三周前确认的关键决策和昨天随口说的一句话在这个方案里是被同等对待的超出窗口就都消失了。可以用一个词概括它的特性「金鱼记忆」。它只记得最近发生的事越往前越模糊再久一点就什么都没了。对于短对话、或者历史信息不重要的场景这个方案足够用成本最低。第二种方法摘要压缩丢之前先提炼一遍摘要压缩是对滑动窗口「硬截断」的改进。核心思路是不直接丢弃即将超出窗口的历史而是先让 LLM 把这段历史总结成一段精华摘要用摘要替换原始对话再继续往前。类比一下你的笔记本快写满了你没有把前面的页直接撕掉而是先把前半本的要点重新整理成一页纸的精华总结然后把前半本收起来带着这页总结继续记录后面的内容。后来翻回去看这页总结虽然不如原版详细但关键脉络都在。代价是摘要会丢失细节。LLM 在总结时会按照自己判断的「重要性」来决定保留什么、省略什么。有些细节当时看起来不重要、被摘要略过了后来却刚好需要这时候就找不回来了。这个方案单独用时通常的做法是「旧的压缩成摘要近的保持完整」最近几轮对话往往和当前任务关系最密切保持原文更早的历史相关性低压缩成摘要。最常见的工程组合滑动窗口 摘要在实际工程里这两种方法通常一起用而不是单独用其中一种。滑动窗口负责控制对话历史的总长度上限摘要压缩负责在历史被丢弃之前做一次提炼把关键信息留下来。这样既有长度控制又不是直接硬截断是目前最常见的工程方案。第三种方法重要性过滤按价值筛选不按时间筛选滑动窗口和摘要压缩有一个共同的思路都是在「时间维度」处理历史按照发生的先后顺序来决定保留什么。但时间不等于重要性。三周前的一句关键决策可能远比昨天的几句闲聊更有价值但在滑动窗口里它会先被丢掉。重要性过滤换了一个角度按内容的实际价值来决定去留给每条对话记录打一个重要性分数低于阈值的淘汰高分的保留。类比整理房间一个人不会按照购买时间来决定扔什么东西而是按照「这个东西现在还有没有用」来决定去留。一件五年前买的工具如果还在用就留着一本上周买的书如果一页没看还不打算看就可以扔。打分的方式有两种。一种是规则打分包含「决定」「确认」「需求」等关键词的记录加分被后续对话引用次数多的加分纯闲聊降分。规则快、没有额外开销但比较粗糙边界情况容易判断失误。另一种是让 LLM 来打分逐条判断每条记录的重要程度。准确率更高但每条记录都需要一次 LLM 调用开销大通常在批量清理历史时做而不是实时处理每条消息。第四种方法结构化抽取换一种载体存信息前三种方法有一个共同的前提假设历史信息最好以「对话文本」的形式保留。结构化抽取的思路完全不同它先问一个更本质的问题我们真的需要保留对话文本本身吗很多场景里真正有价值的不是对话文字而是对话中传递的事实和状态。比如「用户偏好用 Python」「预算上限是 5 万」「已确认方案 B」「需要兼容移动端」。把这些信息主动提取出来存成结构化字段后续注入 prompt 时直接用这些字段比传一大段对话文本要高效得多信息密度也高得多。类比医生记录病历的方式医生不会把和病人的所有对话逐字记录下来而是整理成结构化的病历档案「主诉头痛三天现病史无发热过敏史青霉素初步诊断紧张性头痛」。这份档案的信息密度远高于原始对话文字下次就诊时医生直接读病历不需要把上次的全程录音重听一遍。这种方案的信息损失最小只要字段定义合理重要信息全部被精确保留没有摘要带来的模糊化。代价是开发成本最高你需要预先定义「什么是重要字段」这需要对业务场景有深入理解而且不同类型的任务所需的字段可能完全不同通用性较低。四种方法的关系梳理这四种方法不是互斥的也不是按优劣排列的而是从三个不同维度来解决问题的。滑动窗口和摘要压缩解决的是「历史太长怎么截」的问题前者直接截后者截之前先提炼。重要性过滤解决的是「内容不等价怎么挑」的问题打破时间顺序按价值筛选。结构化抽取解决的是「对话文本本身是不是最佳载体」的问题换一种更高效的形式来存储信息。这三个维度可以组合比如先用重要性过滤筛掉低价值内容再用摘要压缩处理剩余历史同时对特定类型的关键信息做结构化抽取。实际系统里往往是多种方法配合使用的。Prompt Caching在「计算层」的互补手段除了上面这些「信息层」的压缩策略还有一个工程上值得了解的技术叫 Prompt CachingAnthropic 的 Claude 和 OpenAI 都已支持。理解它之前先知道一个背景LLM 每次处理请求都需要把输入的所有 token「过一遍模型」来做计算这个过程叫 prefill是延迟和成本的主要来源之一。一个常见的场景是你有一段固定的 system prompt 加上越来越长的对话历史每次调用时这段历史都会被重新计算一遍哪怕它和上一次调用时完全一样。Prompt Caching 的思路是如果 prompt 的前缀部分在多次请求之间是一样的就把这部分的计算结果缓存起来下次请求如果前缀匹配直接复用缓存不重新计算。费用和延迟都大幅降低某些场景下能降到原来的十分之一。这和前面的记忆压缩是两个不同层次的优化。记忆压缩在「信息层」工作决定哪些内容值得被保留在对话历史里Prompt Caching 在「计算层」工作对已经决定要带进去的内容减少重复计算的开销。两者解决的不是同一个问题可以同时使用是互补关系不是替代。工程实践决策参考选方案的时候可以按这个思路来判断对话不长、业务简单的场景滑动窗口就足够了实现成本最低对话会很长但不想硬截断的场景摘要加滑动窗口的组合是最稳健的工程选择。如果业务里有明确定义的「关键信息」用户偏好、确认事项、状态字段结构化抽取的信息密度最高效果也最好高频调用、长 prompt、成本敏感的系统Prompt Caching 的收益非常可观值得优先考虑。学AI大模型的正确顺序千万不要搞错了2026年AI风口已来各行各业的AI渗透肉眼可见超多公司要么转型做AI相关产品要么高薪挖AI技术人才机遇直接摆在眼前有往AI方向发展或者本身有后端编程基础的朋友直接冲AI大模型应用开发转岗超合适就算暂时不打算转岗了解大模型、RAG、Prompt、Agent这些热门概念能上手做简单项目也绝对是求职加分王给大家整理了超全最新的AI大模型应用开发学习清单和资料手把手帮你快速入门学习路线:✅大模型基础认知—大模型核心原理、发展历程、主流模型GPT、文心一言等特点解析✅核心技术模块—RAG检索增强生成、Prompt工程实战、Agent智能体开发逻辑✅开发基础能力—Python进阶、API接口调用、大模型开发框架LangChain等实操✅应用场景开发—智能问答系统、企业知识库、AIGC内容生成工具、行业定制化大模型应用✅项目落地流程—需求拆解、技术选型、模型调优、测试上线、运维迭代✅面试求职冲刺—岗位JD解析、简历AI项目包装、高频面试题汇总、模拟面经以上6大模块看似清晰好上手实则每个部分都有扎实的核心内容需要吃透我把大模型的学习全流程已经整理好了抓住AI时代风口轻松解锁职业新可能希望大家都能把握机遇实现薪资/职业跃迁这份完整版的大模型 AI 学习资料已经上传CSDN朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费】

更多文章