上下文压缩
上下文压缩
摘要+Spill 层
在已有的有损摘要层之上,再叠加一个 Spill 层:把大工具结果全量落盘并生成定位器,模型只看到摘要或指针,需要细节时再按需 read/grep 取回。两者互不干扰,一个负责“压缩”,一个负责“可找回”。同时补两条规则:先修剪再摘要、系统提示禁止压缩。
为什么需要这个?
大模型上下文窗口有限(比如 128K token),但工具调用(如扫描、爆破、日志)返回的结果可能极大。如果全部塞进上下文:
- 很快爆窗,模型无法继续推理。
- 大量无关信息干扰模型注意力。
- 成本高、速度慢。
摘要层:
- 把大结果压缩成一段简短的摘要,只保留关键信息。
- 优点:极大节省 token。
- 缺点:信息有丢失,细节没了就真没了,模型无法追问原始内容。
Spill层:
- 全量落盘:原始完整结果保存到文件系统(比如
spill/xxx.json)。 - 定位器:生成一个简短的标识,比如文件路径、ID、摘要+指针。
- 模型按需取回:模型上下文里只放定位器(或摘要+定位器)。当模型需要细节时,可以调用
read读取文件,或用grep搜索内容。
配套措施一:pruning 先于摘要
- pruning(修剪):在摘要之前,先对工具结果做一轮修剪。
- 修剪什么:去掉明显无关的内容、重复行、噪音、超长堆栈等。
- 为什么先修剪:
- 让摘要输入更干净,摘要质量更高。
- 减少摘要的计算量。
- 避免摘要被垃圾信息带偏。
- 顺序:原始结果 → 修剪 → 摘要→ 落盘(Spill)→ 模型看到摘要+定位器。
配套措施二:系统提示禁压缩保护
- 系统提示(system prompt):定义模型角色、规则、安全边界的那段指令,极其重要。
- 禁压缩保护:明确标记系统提示不能被 摘要、不能被 Spill 替换、不能被修剪。
- 原因:一旦系统提示被压缩或丢失,模型可能行为失控、违反安全规则。
- 做法:在压缩流程中把系统提示加入“保护名单”,原样保留在上下文中。

浙公网安备 33010602011771号