SUPO:字节跳动的端到端 RL 上下文压缩——让模型自己学会"该记什么"

> 来源: arXiv:2510.06727

> 作者: Miao Lu 等(ByteDance Seed / Stanford / CMU)

> 发布时间: 2025-10-08

> 研究时间: 2026-03-30

🎯 一句话版本

SUPO 是字节跳动做的 RL 训练方法——让 LLM agent 在多轮工具调用中自己学会写摘要压缩历史,实现"用 1/8 的上下文窗口,打败全量上下文的基线"。核心突破:摘要不是预设规则,而是和工具调用一起通过 RL 端到端优化的。

🧨 问题:RL 训练撞上上下文墙

LLM agent 做多轮 tool call 时,每一轮的 action + observation 累积到上下文里。RL 训练比推理更严重——需要多次 rollout 采样,每次都要跑完整个长轨迹。

后果:

现有方案都是 inference-time fix(如 ACON 的提示词优化)。SUPO 的思路不同:在 RL 训练阶段就解决这个问题

🔧 SUPO 的解法:摘要即 Policy

核心机制


Agent 执行工具调用...
    ↓
上下文接近阈值 L(95% of window)?
    ├── 否 → 继续正常执行
    └── 是 → 触发摘要
           ↓
        同一个 LLM 生成摘要
           ↓
        上下文重置为:初始 prompt + 摘要
           ↓
        继续执行(最多 S 次摘要)

关键:摘要的 token 和工具调用的 token 在同一个 policy gradient 下优化。模型不只学"怎么用工具",还学"怎么写摘要才能让后续工具调用更成功"。

数学基础(Theorem 3.2)

一个 rollout 被 S 次摘要分割成 S+1 个子轨迹。论文证明 policy gradient 可以分解为这些子轨迹的梯度之和——现有 RL 基础设施(GRPO/PPO)可以直接复用,不需要改框架。

有效上下文远超窗口

配置Working Context摘要次数 S有效上下文
GRPO baseline32K032K
**SUPO****4K****7****32K**

用 4K 的工作窗口,通过 7 次摘要,达到 32K 的有效上下文。

📊 实验结果

CodeGym(交互式函数调用,Qwen2.5-32B-Instruct)

方法Working ContextAccuracy工具调用次数
GRPO32K44.5%52.1
**SUPO****4K****47.7%**54.7

用 1/8 的工作窗口,accuracy 还高了 3.2%。

BrowseComp-Plus(搜索任务,Seed-OSS-36B-Instruct)

方法Working ContextEffectiveAccuracy工具调用
GRPO64K64K39.0%6.7
**SUPO****64K****192K****53.0%**19.2

accuracy +14%,工具调用次数 3 倍——模型学会了"多搜、多总结、再搜"的策略。

Test-time Scaling ⭐

BrowseComp-Plus 上,训练时 S=2(最多 2 次摘要),推理时增加到 S=4:

推理摘要次数Accuracy
S=2(训练时相同)53.0%
S=355.0%
S=457.0%

模型学会了泛化的摘要能力——推理时给更多摘要机会,性能继续提升。这说明 SUPO 不是在死记硬背特定的摘要模式。

🆚 SUPO vs ACON:两种路线

刚好和上一篇 ACON 形成对比:

维度ACON(微软)SUPO(字节)
阶段**推理时****训练时**
优化目标压缩提示词(guideline)模型权重(policy)
是否改模型❌ 不改✅ RL fine-tune
摘要方式外部压缩器模型自己写
端到端❌ 分步✅ 端到端
适用场景已有模型 + 不想/不能训练可以训练 + 追求最优性能
可蒸馏✅ 到小模型模型本身就是训练产物

互补关系:ACON 适合"拿来就用",SUPO 适合"有算力要做到最好"。

💡 与我们的关联

1. OpenClaw 的 compaction 可以借鉴两条路线

2. Qwopus 蒸馏模型可以受益

如果我们在 ub2 上训练/微调 Qwen3.5:27b(Qwopus),SUPO 的方法可以让模型自己学会上下文管理——而不是依赖外部压缩器。

3. "Test-time scaling of summarization" 很有启发

模型训练时学 2 次摘要,推理时给 4 次就更好——这说明摘要能力是可泛化的 skill,不是死记的 pattern。我们的 cron 任务如果跑很长,可以用类似思路:允许 agent 中途"自己总结一下再继续"。

4. 和 witcheer 的本地压缩对比

witcheer 用 Qwen3.5:4b 做压缩(compression_threshold: 0.50)是手动设定规则。SUPO 的思路是让模型自己学什么时候压、压什么——更优雅,但需要训练。

📊 评分

维度评分(/10)
技术深度9.5 — 完整的数学推导 + RL 框架 + 端到端优化
创新性9.0 — "摘要即 policy"的端到端思路新颖
实用性7.5 — 需要 RL 训练基础设施,门槛较高
实验质量8.5 — 两个 benchmark、ablation 完整、test-time scaling 验证
与我们的相关度7.0 — 方向一致,但我们暂时没有 RL 训练条件
**综合****8.5**

报告由深度研究助手自动生成 | 2026-03-30

来源: arXiv:2510.06727