📄 一句话概括
实测 compaction 分组三件包,修剪器带真实参数(thresholdChars 8192/headChars 4096/tailChars 1024)——压了多少、压剩多少,必须说得清。
📝 本节和前面几节的关系
压缩是 2.5 埋过伏笔的话题(Minimal 连它都没有)。这一节看它的真身——以及为什么它也在【可解释】的管辖区里。
一、实测:压缩是三件包
compaction 分组(cordis:group,带 isolate)里挂着:
compaction-basic——基础压缩。compaction-image-offload——图片卸载。compaction-tool-result-pruner——工具结果修剪。
压缩不是一段代码,是一组可替换的插件——和别的能力一个待遇。
二、实测:修剪器的真实参数
tool-result-pruner 在配置里写着:
thresholdChars: 8192——超过 8192 字就修剪;
headChars: 4096——保头部 4096 字;
tailChars: 1024——保尾部 1024 字。
算一笔账:一个 8000 字的工具结果进上下文——头 4096 + 尾 1024 + 中间省略标记。压了多少、压剩多少,说得清。
三、为什么压缩必须可解释
压缩改变了模型看见的世界:
- 压掉的内容模型就【没看见】——之后的行为都要背这个锅。
- 如果说不清压了什么——6.8.3 的调试就没法做:【模型没看见】到底是没检索到,还是被压缩吃掉了?
可解释的压缩:被压的内容能指出来、能恢复(流水里都有)——6.4 的事实库在这里兑现价值。
四、与 Minimal 的对照
2.5 说过 Minimal 连 compaction 都没有——现在可以补全这句话:
- Minimal 不压缩:行为完全可预测(满了就是满了),适合测量。
- Standard 压缩但可解释:长会话能跑,且压过什么有账。
两种选择都成立,因为都有清楚的语义——怕的不是压缩,是说不清的压缩。
五、动手 Demo:上下文压缩也必须保持可解释
三件压缩包与修剪器的真实参数:
packs = [("compaction-basic", "基础压缩"),
("compaction-image-offload", "图片卸载"),
("compaction-tool-result-pruner", "工具结果修剪")]
for a, b in packs:
print(" %-30s %s" % (a, b))
print()
print(" pruner 参数: threshold 8192 / head 4096 / tail 1024")
print(" 8000 字结果 -> 头 4096 + 尾 1024 + 省略标记")
实跑输出:
--------------------------------------------------------------------
上下文压缩也必须保持可解释
--------------------------------------------------------------------
实测:compaction 分组里挂了三件:
包 干什么
-----------------------------------------------
compaction-basic 基础压缩
compaction-image-offload 图片卸载
compaction-tool-result-pruner 工具结果修剪
-----------------------------------------------
修剪器在配置里带着真实参数:
thresholdChars: 8192 <- 超过 8192 字就修剪
headChars: 4096 <- 保头部 4096 字
tailChars: 1024 <- 保尾部 1024 字
算一笔账:一个 8000 字的工具结果进上下文——
头 4096 + 尾 1024 + 中间省略标记——**压了多少、压剩多少,说得清**。
可解释的意思:**压缩不能是黑箱**——被压掉的内容要能指出来,
否则模型【没看见】就说不清是谁的锅(6.8.3 会用到)。
压缩是一组可替换插件,不是写死的逻辑——3.7 再证。 真实参数摆在这:规则白纸黑字,行为可预测。 可解释的兑现靠 6.4 的事实库——压掉的东西流水里都有。
30 秒实验
- 在配置树里找到 pruner 的三个参数,抄下来。
- 算一笔账:一个 20000 字的工具结果,修剪后剩多少字?
- 解释:为什么【说不清的压缩】会让调试完全失效。
常见误区
- 错误:压缩就是悄悄删旧内容。——纠正:删了什么要能指出来——可解释是硬要求。
- 错误:压缩是模型自己做的。——纠正:是 Harness 的插件做的(compaction 组)——在上下文装配层就完成了。
- 错误:Minimal 没压缩是偷懒。——纠正:行为完全可预测正是它的测量价值。
自测三问(点开对答案)
1. 压缩分组里有哪三件包? —— compaction-basic、compaction-image-offload、compaction-tool-result-pruner。 2. 修剪器的三个参数是什么? —— thresholdChars 8192/headChars 4096/tailChars 1024——**规则白纸黑字**。 3. 为什么压缩必须可解释? —— 压掉的模型就没看见——**说不清压了什么,调试就没法判断谁的锅**。- ☐ 下一节(6.7 稳定的请求前缀与 KV Cache)
相关笔记
- 为什么官方 Benchmark 会选 Minimal —— 没有 compaction 的那一面
- 用 Session 调试 Agent:先找证据,再判断是不是模型问题 —— 可解释的用途
- Spatial Composability:当能力环境变化时,插件还能不能运行 —— isolate 分组又一例
- 🐳 DeepSeek Harness · 索引