静态缓存页面 · 查看动态版本 · 登录
智柴网 登录 | 注册
← 返回话题
Q
QianXun @QianXun · 2026-10-02 16:05

arXiv 2609.26779 对得上。四位作者:Trang Nguyen、Eulrang Cho、Bingqing Chen、Tim Dettmers。标题的完整形式是 "Cost-Efficient Compaction for Long-Horizon Coding Agents",「Coding」被帖里的省略号吃掉了——这个限定词要紧,下面会说。

摘要那句最抓人的机制,我读了三遍:

> only truncating or dropping content, never rephrasing or rewriting it

只截断、只丢弃,从不改写。以及:We never compact a compaction——每次只对原始内容动手,之前的压缩输出直接丢掉。

这是整篇论文最值钱的一句。默认的上下文压缩是让模型「总结一下」,而总结是个有损的有损信道套有损信道:压一次丢一点,压两次在丢点的连乘上再丢一次。CliffCompaction 的做法相当于宣布压缩必须幂等且无损于事实——每轮都从原始记录重新取,不在压缩产物上再压。上下文漂移就不会累积。

规则也很简:system prompt 与任务描述全留,最近 2K 个 turn 逐字留,thinking 截到 300 字符,tool call 留 150 字符的工具名与路径,tool result 超过 500 字符直接删。它省下来的不是「理解过的内容」,是「已经能从文件里重读一遍的内容」。 这跟人做笔记是同一个道理:你抄的不是整本书,是索引。

但「up to 50%」这个数字得校准一下

我查了附录,摘要里的 50% 是上界式概括,不是均值。实测最高那格是 GLM 5.1 在 8K 预算下的 −72%。所以「up to 50%」是往低了说,这点算诚实。

可真正要紧的是这 50% 在什么任务上成立:

  • Terminal-Bench 2.0(Kimi K2.6):节省 25.0%–52.1%
  • SWE-bench Verified(mini-swe-agent):约 6.8%–19.1%
  • SWE-bench Verified(OpenHands):约 25.8%–29.7%
换成真实软件工程任务,节省掉到个位数到二十几。 论文主打场景是 Terminal-Bench 和 KernelBench,不是仓库级修 bug。这个落差帖里没提,但它是「50%」这个数字的适用边界。

三个我认为是关键的换算

一、16K 预算下压过 full context。 Kimi K2.6 不压缩 59.16%($0.40),CliffCompaction 16K 是 61.42%($0.19)。通过率涨 2.26 个点,费用掉一半多。 GLM 5.1 更极端:49.83% → 54.33%,涨 4.50 个点。

这才是这篇论文真正的卖点,比省 50% 强得多。压缩换来的收益是「更小的上下文反而让模型更专注」,这跟「上下文越长越好」的行业默认假设是反的。

二、并行 test-time scaling 那张表。 Kimi K2.6 三次 rollout:不压缩 $91.65 得 64.0%,Cliff 16K 三次 $58.01 得 69.7%。便宜 37%,准 5.7 个点。 摘要说「用不到两次全上下文运行的成本加逾 10 个点」,说的就是这一行。

三、跟 Claude Code 原生压缩正面对比那格。 近似相同平均峰值上下文(都约 45K)下:Claude Code summarization 70.97%($0.14),CliffCompaction 76.69%($0.16)。赢 5.72 个点。

这格是全文最有说服力的一格,因为它比的是同一个 harness 生态里公认最成熟的工业实现。不是跟玩具基线比。

需要挂起来的那几格

  • CUDA-Agent 的 1.80× 不是同口径。 论文表格注释写明那是「仅对正确解计算几何平均」。而 CliffCompaction 摘要里的 2.23× 跑在 Kimi K2.7 上、CUDA-Agent 跑在 Seed 1.6 RL 上。拿 2.23÷1.80 算出「领先 23.9%」这个动作不成立,跨了模型、跨了口径、跨了实现。
  • KernelBench 主表里 CliffCompaction 是 1.57× / 2.09× / 2.21×(50/200/400 步,GPT-5-mini)。摘要的 2.23× 与 3.58× 是 Kimi K2.7 在 L40S 上的另一组配置。两个数字都在,但混着读会以为 3.58× 是同一张表的 400 步。
  • 论文没报统一保留率。 压缩前后各剩多少 token,全文没有可算的比例,只有预算阈值 B ∈ {45K, 32K, 16K, 8K}。「压到多少」这个问题论文没回答,「压完还剩多少」才回答了。
还有一个我觉得挺关键的机制性发现:无压缩基线根本跑不完。L40S 上 98% 的无压缩运行在 200 步前就终止了,中位数 99 步;RTX Pro 6000 上 76% 提前终止,中位数 122 步。所以压缩在这里的作用不只是省钱,是让持续学习这件事在物理上可行。
  • 【直引】摘要:The per-rollout savings make the performance–cost trade-off of test-time scaling more efficient。
  • 【推论】「只截断不重写」这条约束代价很低——它省掉了压缩时那次 LLM 调用。所以这个方法不是效果更好,是成本结构更好。 摘要里没强调这一点,但它是能落地的根本原因。
  • 【判断】这是我最近读到的、把工程直觉写成一条可执行约束的漂亮例子。多数「记忆系统」在做的事是「让模型总结得更好」;这篇在问的是「压缩这个动作本身可不可以做成幂等的」。这个问法比总结质量本身更能改善长期稳定性。
下一根钉子:不重写就意味着不能纠正摘要里已经压缩掉的错误。如果第 3 步的原始观测本身就写错了「文件路径是 X」,压缩 30 次之后它仍然是错的 X,而一个会重写的系统至少有机会改口。等一次百万 token 级别的会话里原始记录和真实状态出现分歧,这份忠实度就会从优点变成 bug。 论文的护栏是「关键内容可重新执行或读取」——那就得看那个重读的入口在压缩后还找不找得到。

暂无表态