Agent 上下文压缩方案设计

发布时间:2026/7/28 14:40:27
Agent 上下文压缩方案设计 Agent 完成一个任务可能连续读 5 个文件、跑 3 次搜索、执行测试——一个 turn 产出 50K token 的工具输出很常见。即使 1M 窗口的模型复杂任务跑十几轮、每轮几十次工具调用上下文也会逼近上限。窗口越大只是推迟问题不能消除。四个问题怎么砍、砍哪里、什么时候砍、砍完怎么恢复。全景架构三道防线各管一层防线位置管什么L1 实时截断工具输出写入时单次输出别太大Pre-Turn 压缩新 turn 开始前历史别累积太多Mid-Turn 压缩turn 执行中途长任务别中断一、工具输出截断一次cat就能返回 100K token。不实时截断就写入历史的话等需要做压缩时光是把历史作为输入发给模型做摘要这个输入本身就可能超过模型窗口。保头保尾砍中间工具输出的信息分布不均匀位置通常是什么保留价值头部schema / header / 命令回显高——结构信息中间大量数据行、重复内容低——冗余尾部result / error / summary高——结论对命令输出和日志类内容两端信息密度通常最高。不过对纯 JSON 数组类输出头尾不一定比中间更重要——可以按工具类型配置不同截断策略。两层截断层级时机做法目的L1工具输出录入时中间截断到上限推荐 10K token日常控速L2压缩前仍超窗口整段替换为一句话紧急腾空间L2 是 L1 的兜底。正常情况 L1 够用工具连续返回大输出时才触发 L2。只截输出不截输入tool arguments 是模型生成的一般几百 bytestool output 是外部系统返回的可能 100K。截断只作用于不可控的外部返回。二、压缩触发——双阈值两种失败模式需要两道防线上下文超限有两种撞墙方式失败模式现象对应阈值增速过快一个 turn 内连续大量工具调用Scoped推荐窗口 × 90%逼近硬顶多次小增量悄悄累积Full Window推荐窗口 × 95%只有一个阈值会怎样只有 Scoped → 多次刚好不超的小增量悄悄累积到窗口顶没人兜底只有 Full Window → 如果固定前缀没控制好比如超过 10K token用户没聊几句就触发因为总量包含了固定开销两个阈值任一命中即触发压缩。Scoped 管日常节奏Full Window 做绝对兜底。什么算增长——BodyAfterPrefix关键问题系统指令算不算增长这里说的系统提示词不只是 system role 那一条消息。实际中固定上下文通常由 system message 构造的 user/assistant 对组成——把记忆、环境信息、few-shot 示例等以对话形式注入。这个固定前缀整体不参与压缩但会占用窗口空间。好的设计应该保持固定前缀精简——只放核心角色定义和行为约束详细内容通过工具按需动态载入。即便如此一个合理的固定前缀也有 3-5K token如果把这部分也当成增长去计算等于对话空间被白白吃掉一块。解法记录一个 prefill 基线只统计基线之上的增长。prefill 基线 压缩后或会话开始时的初始 token 总量净增长 当前总 token − prefill 基线净增长超过 Scoped 阈值 → 触发压缩每次压缩后基线更新因为摘要变了新窗口从零计算净增长。阈值跟随模型窗口阈值按模型窗口的固定比例自动算切换模型不用改配置。防止配出一个超过窗口的阈值。三、触发时机——Pre-Turn vs Mid-Turn时机场景动态上下文怎么处理Pre-Turn上轮结束后已超限不注入下轮自然带入Mid-Turnturn 中途超限还得继续立即注入放在最后用户消息前这里说的动态上下文是指系统服务在对话过程中注入历史的运行时信息——当前文件状态、环境变量、会话配置等。它和固定前缀不同固定前缀不参与压缩动态上下文在历史中会被一起压掉。Mid-Turn 为什么重要只有 Pre-Turn 的话Agent 只能在 turn 边界两条用户消息之间压缩。但一个 turn 可能包含 20 次工具调用——一个任务读 5 个文件 搜索 3 次 跑测试全在一个 turn 里。Mid-Turn 是在执行循环里插入检查点超限了就暂停 → 压缩 → 恢复用户无感。四、摘要怎么写——两条路线在讲具体怎么生成摘要之前先说两条路线维度交接式结构化思路压缩 交接给另一个模型压缩 拍快照存档Prompt“为接手者写交接”“按模板填字段”优势信息完整——接手者视角不遗漏格式统一——下游易解析劣势格式不可控模板没覆盖的就丢了适用聊天场景、创造性任务固定流程、需要结构化记忆两者可以组合交接式保内容完整结构化模板约束输出格式。交接式摘要普通摘要 prompt 的问题“请总结上面的对话”——模型会省略它认为显而易见的信息。包装成交接给另一个模型。你正在执行 CONTEXT CHECKPOINT。为即将接手任务的另一个 LLM 写交接摘要。必须包含- 当前进展和已做出的关键决策- 重要约束和用户偏好- 明确的下一步行动- 继续工作所需的关键数据和引用接收方看到的 prefix另一个模型已开始处理这个问题并产出了思考摘要。你可以访问它使用过的工具状态。利用这些信息继续工作避免重复劳动。为什么交接框架比请总结好因为模型在交接心态下会假设接收方什么都不知道——不会省略隐含约束会列 next steps会区分已完成和待完成。压缩本身放不进窗口怎么办渐进降级先尝试用全量历史做压缩 → 如果超窗口就丢掉最早的一条历史项 → 重试 → 直到 prompt 能塞进去。不是一次性失败而是逐步妥协。五、历史替换——摘要生成后怎么拼回去摘要生成后需要用它替换原始历史。注意系统指令system prompt始终作为固定前缀发送不进入对话历史不参与压缩。被压缩的是对话历史中的用户消息、assistant 消息、工具调用/输出以及动态注入的上下文如当前文件状态、环境信息。90K → 12K约 7:1 压缩比系统指令不计入它始终在。为什么这样拼三个设计考量1. 保留原始用户消息——摘要会丢失措辞和隐含意图从后往前扫描用户消息在预算推荐 20K token内保留尽可能多的原文。超出预算的消息截断而非丢弃——部分保留好过完全丢失。2. 丢弃工具调用和输出——信息已被摘要吸收模型继续工作需要的是做了什么、结果如何的结论不是原始 JSON 和完整命令输出。注意大部分 provider 要求 tool_use 和 tool_result 必须成对出现。丢弃时要整对丢只删一端会导致 API 报错。3. 重新注入动态上下文——压缩会把它一起压掉动态上下文文件状态、环境信息等是系统服务在对话过程中注入历史的压缩后丢失。需要重新注入当前版本确保 Agent 拿到最新环境状态。注入位置位置场景最后用户消息之前Mid-Turn——模型接着处理当前请求摘要之后Pre-Turn——下轮自然注入六、压缩的副作用压缩不是免费的。做方案设计时需要考虑这些代价KV Cache 部分失效压缩后对话历史被重组了。固定前缀系统指令保持不变能继续命中 cache但前缀之后的内容全变了——这部分的 KV Cache 作废需要重新 prefill。对缓存命中率的影响正常对话中每轮请求只新增少量 token前面的历史都能命中缓存命中率通常在 90%。压缩后除了固定前缀外全部是新内容命中率瞬间跌到只有前缀那部分可能只有 10-20%。后续几轮对话随着新的前缀逐步稳定命中率才会恢复。应对保持压缩后新历史的结构稳定固定前缀 摘要格式固定让后续请求尽快重建缓存前缀。避免频繁压缩——每次压缩都是一次缓存命中率的重置。Token 成本一次压缩 一次完整模型调用。输入是接近满窗的历史 摘要 prompt输出是 2-4K 的摘要。如果压缩频率高额外成本可观视场景和模型而定。应对用小模型做摘要适合事实性任务复杂推理链的摘要可能仍需强模型否则关键逻辑会丢失。也可以用 provider 的专用压缩端点如果有的话成本通常更低。失败路径记忆丢失压缩丢弃了工具调用历史。工具定义和参数格式在系统指令里不会丢但哪条路径已经走过、哪个方案已经失败这类试错记忆会丢失。模型可能重新尝试已经证明走不通的方案。应对在摘要中显式包含尝试过什么、为什么失败、哪些路径已经排除。Token 计数精度阈值判断依赖 token 计数。准确计数需要跑 tokenizer有延迟近似计数按字节估算有误差。如果估偏了估低了 → 该压缩时没压缩下一次模型调用直接报 context length exceeded估高了 → 过早压缩浪费成本和丢失信息应对近似计数留安全余量这也是为什么 Full Window 设 95% 而非 100%关键判断点用精确 tokenizer 校验。七、窗口管理压缩链每次压缩递增窗口编号窗口prefill 基线状态Window 05K系统指令动态上下文首次对话Window 17K摘要第一次压缩后Window 28K新摘要第二次压缩后每个窗口独立追踪 prefill 基线。BodyAfterPrefix 只计算该窗口内的净增长。Token Budget Reminder临近阈值时注入一条提醒告知 Agent 快没空间了。每个窗口只发一次。Agent 可以据此决定收尾当前步骤、简化后续操作、或主动请求压缩。HooksHook时机用途Pre-Compact压缩前保存状态到外部系统、决定是否跳过Post-Compact压缩后记忆持久化、通知监控、校验质量学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%免费】