先这样答
压缩前先分类:上下文里的内容按「对后续决策的价值」分三档,处理手段跟着档位走。
第一档:过程细节,价值低。中间的工具输出、被推翻的尝试、冗长的检索原文。处理方式是直接丢或只留一行结论:「查过订单系统,未发现该订单」这一句就够,五百行原始返回不需要留。
第二档:阶段结论,价值中。已经确认的事实、排除的方向、当前进度。处理方式是结构化摘要:把几十轮的推进过程压成「已确认 / 已排除 / 待办」三段式清单,用清单替换原文进上下文。摘要必须结构化,流水账式摘要会丢关键状态。
第三档:稳定事实,价值高且要跨会话。用户偏好、项目约束、重要决定。这些不该「压」,该「沉」:写入长期记忆库,从上下文里移除,下次需要时检索回来。压缩和沉淀的分界就是信息寿命:本会话内还要用的压缩,跨会话还要用的沉淀。
三个工程要点。触发时机:别等窗口爆了才压,按水位触发(比如用到 70% 就开始),压在任务间隙做,不打断当前推理。保留红线:系统提示、任务目标、最近几轮完整轨迹是硬保留区,任何压缩不动它们。验证机制:压缩是信息有损操作,重要任务压缩后要让模型复述一遍当前状态(「到目前为止确认了什么」),对不上就回滚用原文。
面试官会怎么追问
- 摘要由谁做? 通常用同一个模型或更便宜的模型做离线摘要;摘要提示词要按任务类型定制:排查类保留排除项,写作类保留风格要求,通用模板效果一般。
- 压缩后任务质量下降怎么办? 说明压过头了。回滚该段原文,调整压缩粒度(保留更多中间结论、只丢原始工具输出),并且把这类场景加进评测集。
- 有没有不压的替代方案? 有,外置状态:把任务清单、中间产物写到文件或数据库,上下文只留引用。现在很多 Coding Agent 用这个模式,「压缩」就变成了「读回自己写的笔记」。
回答的坑
- 只答「做摘要」。三档分级加沉淀机制才完整,纯摘要会把跨会话有用的信息也压没了。
- 忘了「压缩有损要验证」。主动提复述校验和回滚,体现的是生产意识。
—— 本题完 ——