一句话定位
CompactionRL 把 context compaction 从推理时 heuristic 变成 RL 中可训练的 policy action:当 long-horizon agent 轨迹接近 context limit 时,由同一个模型生成 summary、重建上下文继续执行,并把 execution tokens 与 summary tokens 共同用最终任务 reward 优化。摘要明确称该方法已部署到 open GLM-5.2 (750B-A40B) 的 RL pipeline。
团队归属确认
- 作者:Yujiang Li、Zhenyu Hou、Yi Jing、Jie Tang、Yuxiao Dong;单位标为 Tsinghua University,脚注说明前三位作者工作发生在 Z.AI internship。
- 与 GLM-5.2 关系:论文摘要写明 CompactionRL “is thus deployed in the RL pipeline for training the open GLM-5.2 model (750B-A40B)”。
- 因此归档为 GLM-5.2 团队/清华-Z.AI 长程 agent RL 支撑论文,主题是 context compaction 训练,而非 GLM-5.2 主模型卡。
问题设定
long-horizon coding / terminal / web agent 会不断产生 reasoning、tool call、observation、修正计划。完整 history 很快撞上 context limit。只扩大 context 有两个问题:成本高;长上下文不等于有效利用,lost-in-the-middle 和长序列利用率下降仍存在。
推理时常见方案是 context compaction:把旧历史总结成 summary,再用 system + original task + summary + recent k turns 继续执行。但在 RL 里,summary 不是普通缓存;它决定后续所有 action 能看到的信息。因此任务成功同时依赖 execution policy 和 compaction policy。
方法拆解
1. rollout collection 中触发 compaction
交互历史定义为:
h_t = (s, u, z_1, ..., z_t)
z_i = (a_i, o_i)其中 s 是 system prompt,u 是原始用户任务,a_i 是 assistant response,o_i 是环境 observation。论文把 assistant-observation pair 当 atomic step,避免 tool call 和 observation 被 compaction 拆开。
当剩余 context 低于阈值时触发:
C - |h_t| < T_comp随后追加固定 summarization instruction q_sum,由同一 policy 生成 summary:
S_t ~ pi_theta(. | h_t ⊕ q_sum)再重建上下文:
h_bar_t = system ⊕ resume_template(S_t) ⊕ recent k steps默认保留最近 k=2 个交互 step,必要时降低 k 以适配 context budget。
2. summary tokens 进入 RL objective
完整 rollout 被切成 segment:
tau = (sigma_1, ..., sigma_K)segment 分为 execution segment 和 summarization segment。summary 不是外部 summarizer 生成,而是同一个 trainable policy 生成,并纳入 RL loss。每条 rollout 只用最终 task reward R(tau),该 reward 分配给同一 rollout 内全部 trainable segments。
作者刻意不设计单独 summary-quality reward,因为“摘要看起来完整/流畅”不等于“对解决代码任务有用”。实际关键可能是文件路径、报错、失败命令、patch 状态、测试结果等细节。
3. 为什么不用 GRPO
compaction 会把一个 rollout 切成不定数量 segment。GRPO 假设每 prompt 固定 group 的完整 rollout,用组内 reward 做归一化;compaction 后该假设破裂:
- 如果每个 segment 当样本,
G个 rollout 变成sum K_g个 segment,compaction 次数多的 rollout 被重复计权。 - 如果仍按完整 rollout 做 group normalization,又得不到 execution / summary segment 级 advantage。
因此 CompactionRL 使用 PPO + critic,而不是 group-wise advantage estimator。这与 SAO 的判断一致:复杂 agent RL 中 critic-free group-relative 方法在异步、在线、compaction 场景下不再自然。
4. Token-Level Loss Normalization
segment 数量和长度差异很大,若按 segment/sample 平均,触发更多 compaction 的 rollout 会权重更高。CompactionRL 按 batch 中所有 generated assistant tokens 归一化:
rho_{s,i}(theta) = pi_theta(y_{s,i} | x_{s,i}) / pi_old(y_{s,i} | x_{s,i})
L_pi = - 1/|M| * sum_{(s,i) in M}
min(rho_{s,i} * A_hat_{s,i},
clip(rho_{s,i}, 1-eps, 1+eps) * A_hat_{s,i})这修正了 compaction 引入的 segment-count / length bias。
5. Cross-Trajectory GAE
若每个 segment 独立算 GAE,并把最终 reward 放在每个 segment 末尾,早期 summary/action 会被错误地认为离最终 outcome 很近,导致 over-credit。CompactionRL 先算 segment 内 local GAE:
A_loc_{s,i} = sum_l (gamma lambda)^l * delta_{s,i+l}
delta_{s,i} = r_{s,i} + gamma V(x_{s,i+1}) - V(x_{s,i})再按当前 segment 后续还有多少 optimized tokens 折扣:
N_>s = sum_{j>s} n_j
A_hat_{s,i} = (gamma lambda)^{N_>s} * A_loc_{s,i}直觉:越早的 summary/action 距离最终任务结果越远,credit 应该折扣更多。它是 full compacted trajectory credit assignment 的近似修正。
实验结论
模型与环境:
- GLM-4.7-Flash 30B-A3B,context 64k。
- GLM-4.5-Air-SFT 106B-A30B,context 80k。
- 训练数据:SWE-Dev;RL 框架:slime。
- 评估:SWE-bench Verified 200-task random subset,Terminal-Bench 2.0 full set。
- agent scaffold:Harbor + Terminus-KIRA。
- compacted evaluation 最多 3 次 compaction,即
×4effective budget。
主结果:
- GLM-4.7-Flash:
- SWE-bench Verified compacted:base 50.5,RL without compaction 48.0,CompactionRL 56.0
- Terminal-Bench 2.0 compacted:base 13.4,RL without compaction 12.4,CompactionRL 20.2
- GLM-4.5-Air:
- SWE-bench Verified compacted:base 59.8,RL without compaction 62.5,CompactionRL 66.8
- Terminal-Bench 2.0 compacted:base 21.4,RL without compaction 23.6,CompactionRL 24.5
重要现象:CompactionRL 不一定提升 single-window evaluation。30B 在 SWE single 下从 base 47.5 降到 43.7,但 compacted 从 50.5 升到 56.0。这说明它确实是 compaction-enabled execution 的专用训练,禁用 compaction 会造成 train-test mismatch。
Ablation 读法
- 固定 execution agent,只换 summary agent,SWE-Verified 从 49.0 到 55.5,说明 summary 质量本身可带来 6.5 个点差异。
- 只暴露 compacted histories、但 mask 掉 summary loss,不如完整 CompactionRL;说明 summary tokens 必须进入 RL objective。
- 去掉 token-level loss:GLM-4.5-Air 80k×4 下 SWE 66.8 → 60.0,Terminal 24.5 → 21.3,是最大退化。
- 去掉 cross-trajectory GAE:SWE 66.8 → 63.0,Terminal 24.5 → 22.5。
结论:CompactionRL 的收益不只是“推理时多续几段”,而来自训练时同时修正 summary policy、segment 权重偏差、跨段信用分配。
局限 / 追问
- SWE-bench Verified 只用 200 random subset,和 public baselines 的 full benchmark 数字不可直接横比。
- evaluation 只报 2 runs;agent benchmark 方差通常较大。
- summary prompt / resume template 对效果影响很大,但正文未给完整模板。
- Cross-trajectory GAE 仍是近似,无法完全表达 summary 改变 state representation 后对后续 trajectory distribution 的长期影响。
- CompactionRL 专门面向 test-time compaction;若产品场景有时启用、有时禁用 compaction,可能需要 mixed training 或路由策略。
对 GLM-5.2 的意义
GLM-5.2 blog 中提到 long-horizon 任务因 compaction 被切成多个子轨迹,group-wise GRPO 不再适配,因此改用 critic-based single-rollout PPO,并对 compact trajectory 做 token-level loss。CompactionRL 正是这条变化背后的详细算法论文,解释了 GLM-5.2 为什么需要 summary 参与 RL + token-level normalization + cross-trajectory GAE。
原始链接
- alphaXiv: https://www.alphaxiv.org/abs/2607.05378
- arXiv: https://arxiv.org/abs/2607.05378
- PDF: https://arxiv.org/pdf/2607.05378
一手源存档(sources/)
- arxiv-2607.05378-compactionrl.pdf (PDF 原文;本地落在
sources/llm/2026/,按仓库*.pdf规则不入 git)