SWE-AGILE:通过动态推理上下文管理突破多轮软件工程智能体的效率瓶颈 SWE-AGILE: A Software Agent Framework for Efficiently Managing Dynamic Reasoning Context
用滑窗推理+压缩摘要的动态上下文管理让8B模型刷新SWE-Bench记录
前置知识
ReAct 与 System-2 推理
ReAct 是让 LLM 在多轮交互中交替产出推理(Thought)与动作(Action)的范式;System-2 推理则指类比人类慢思考、需要长链式分析(CoT)的深度推理能力,由 o1、R1 等推理模型代表。
论文对比 Shallow Thinking(无显式深度推理)与 Interleaved Thinking(保留完整长 CoT),SWE-AGILE 正是要在两者之间取得平衡,因此必须先理解这两种推理范式的差异。
Lost-in-the-Middle 现象
指当上下文窗口变长时,LLM 对位于序列中段的注意力显著衰减、检索性能下降的现象,由 Liu et al. 2024 系统研究。论文中观察到 SWE 多轮任务在保留全量推理历史时,成功率从 15.83% 跌到 12.42%。
这是论文论证为何不能无脑保留长 CoT 的关键实验依据,也是设计滑窗+摘要压缩策略的直接动机。
RLVR 与 DAPO
RLVR(Reinforcement Learning with Verifiable Rewards)指在可机器验证的任务(如单元测试通过)上对策略做强化学习;DAPO 是 Yu et al. 2025 提出的开源 RLVR 系统,本文用其对压缩奖励做策略优化。
论文第三阶段用 RLVR+压缩奖励做微调,reward 形式为 $R(\tau) = \mathbb{I}_{\text{success}} \cdot (1 + \beta \cdot \min(R_{\text{comp}}(\tau), \gamma))$,理解 RLVR 才能读懂压缩奖励如何被注入训练目标。
SWE-Bench-Verified
由 OpenAI 团队人工校验的 SWE-Bench 子集,含 500 个来自 12 个真实 GitHub 仓库的 issue,要求智能体在沙箱中通过工具调用定位并修复 bug,最终以能否通过预置测试为成功标准。
这是本文 7B/8B 智能体性能对比的统一基准,所有 24.1%、21.6%、15.83% 等关键数字都来自此榜单。
研究动机
现有的 SWE 智能体面临深度推理与上下文预算的尖锐矛盾。ReAct 风格方法(如 SWE-Dev、SWE-smith)依赖短浅 Thought,缺少显式 System-2 推理,难以处理复杂边界情况;如直接套用 OpenAI o1、DeepSeek-R1 这类推理模型做 Interleaved Thinking(每轮都把长 CoT 留在历史里),上下文会随步数线性爆炸——论文测得 Qwen3-8B 在 60 步任务中推理长度可累计上千 token。结合 Liu et al. 2024 的 Lost-in-the-Middle 现象,作者实验证明仅保留全量推理历史反而让 Qwen3-8B 在 SWE-Bench-Verified 上从 Current-Step Thinking 的 15.83% 跌到 12.42%。同时 MiniMax-M2 那种 204,800 tokens 大上下文方案对显存和训练速度极不友好,普通 7B/8B 模型根本无法承担。
本文的目标是论文希望设计一个能同时满足三点的 SWE 智能体框架:(1) 启用类 System-2 的深度推理以解决复杂 bug;(2) 在多轮交互中把上下文长度控制在可承受范围(65,536 tokens,60 步以内);(3) 训练流程本身可被小模型复现,无需依赖 200k 级上下文或 100B+ 训练数据。最终目标是在 SWE-Bench-Verified 上让 8B 模型首次跨过 24% 成功率门槛。
与已有工作不同的是,已有工作各打一边:CoT 压缩(O1-Pruner、TokenSkip、LightThinker)只压缩单轮内的内部思考,不解决多轮历史膨胀;Context-Folding、AgentFold 用程序化折叠摘要,但折的是通用交互历史而非推理本身;R2E-Gym、SWE-Dev 等 SWE 智能体则根本没有深度推理。所以论文提出从推理痕迹本身出发,引入「滑动推理窗口 + 推理摘要」双层结构,并配套 Snapshot Training 和 Backfilling 合成方法以对齐训练-推理分布,这是以往所有 SWE 智能体工作都没系统解决的问题。
核心方法
SWE-AGILE 的直觉是:把 SWE 多轮交互的「短期深度推理」与「长期历史压缩」解耦。每一步智能体先生成长 CoT 形式的深度推理 $r_t$,紧接着生成一段简短摘要 $d_t$,最后产出可执行动作 $a_t$;推理时只保留最近 $N$ 步的 $r$(滑窗),而把所有 $d$ 永久留在历史里。为了让训练和推理一致,作者提出三件套:(1) Trajectory Snapshot Training 把长轨迹切成离散快照并做上下文感知掩码;(2) Backfilling 用 Qwen3-235B-A22B 配合 ground-truth 动作反向合成 $r_t$ 与 $d_t$;(3) Compression-Aware RLVR 用 $R_{\text{comp}} = 1 - L_{\text{hybrid}} / L_{\text{full}}$ 作为额外奖励优化摘要紧凑度。
核心创新在于「动态推理上下文」:每个 $r_t$ 既是本步的瞬时推理(用完即丢,仅在滑窗内保留),又是下一步的种子(被压缩成 $d_t$ 后永久进入历史),对应公式 $Y_t = r_t \oplus d_t \oplus a_t$ 与 $C_t = \bigoplus_{i=0}^{t-N-1} (o_i, d_i, a_i) \oplus \bigoplus_{j=t-N}^{t-1} (o_j, r_j, d_j, a_j) \oplus o_t$。与 LangChain 增量摘要、MemGPT 块存储不同的是,它只针对推理痕迹做压缩,且摘要保持模块化(每步一个 $d$),避免摘要嵌套导致误差累积;与 Interleaved Thinking 相比则把不可丢弃的深度推理限制在 $N$ 步滑窗内,复杂度从 $O(T \cdot L_r)$ 降到 $O(N \cdot L_r + T \cdot L_d)$。
方法步骤详情
完整流程分三阶段。第一阶段 Trajectory Snapshot Training(SFT):输入是 SWE-Dev 的 2.2k 条原始轨迹(无深度推理),Qwen3-235B-A22B 作为推理合成器,在 ground-truth action $a_t$、shallow thought $s_t$ 与动态上下文 $C_t$ 的条件下回填 $r_t$ 与 $d_t$,再额外采集 200 条 RLVR 风格轨迹补数据;SFT 时把每条轨迹拆为 $T$ 个 Snapshot,对滑窗外历史 $r$ 用 mask=0、当前 $Y_t$ 用 mask=1 训练,学习率 $1 \times 10^{-5}$、batch 32、4 epoch、滑窗 $N \in [2,5]$ 随机。第二阶段是推理时严格按 Eq. 2 维护上下文,环境交互 $(o,a)$ 永远保留,$r$ 仅在最近 $N$ 步可见,$d$ 全程保留。第三阶段 RLVR 用 DAPO 在 R2E-Gym 的 896 个任务上继续训练,奖励 $R(\tau) = \mathbb{I}_{\text{success}} \cdot (1 + \beta \cdot \min(R_{\text{comp}}, \gamma))$ 中 $\beta=0.2$、$\gamma=0.55$,学习率 $1 \times 10^{-6}$、G=8、最大响应 4096 tokens、max steps 50,迫使模型在保持通过率的同时把 $d_t$ 压到 ~27 tokens。
技术新颖性
技术新颖性体现在三处。其一是把压缩对象从「通用对话历史」精确到「推理痕迹 $r$」,并通过结构化 $d$ 模块避免长链摘要的误差累积;其二是 Snapshot Training 通过 mask 把训练目标从「看完整段历史后再生成」改为「看动态压缩后的世界状态后生成」,解决了动态上下文策略一直以来的训练-推理错位(类似 AgentFold、Context-Folding 也只能拆样本但不能直接 mask 推理 token);其三是轨迹级而非逐步的压缩奖励,通过 $\min(\cdot,\gamma)$ 限幅和 $\mathbb{I}_{\text{success}}$ 门控,避免模型在「反思维」步骤上靠灌水 $r_t$ 刷分,巧妙地区分了 Reflexive 与 Deliberative 步骤对压缩的容忍度差异。
实验结果
在 SWE-Bench-Verified 上,SWE-AGILE-8B(SFT+RL)以 24.05% 的成功率刷新了 7B-8B 级别 SOTA,比 Qwen3-8B 基线 15.83% 提升 35.5%,比同尺寸 R2E-Gym(19.0%)、SWE-Dev(23.4%)、SWE-smith(15.2%)都更优;SWE-AGILE-14B(SFT)更进一步达 30.06%,超过 SkyRL-Agent-v0-14B 的 21.6%。在 SWE-Bench Lite 上 8B 模型也拿到 14.77%,超过 SWE-smith-7B(11.7%)和 R2E-Gym(11.0%)。消融实验(Table 2)有三个关键观察:(1) Interleaved Thinking 比 Current-Step Thinking 差 3.4 个百分点(12.42% vs 15.83%),证明 Lost-in-the-Middle 真实存在;(2) 不做 Backfilling 直接 SFT SWE-Dev 原始数据反而掉到 14.83%,浅推理数据会损害模型深度推理潜力;(3) RLVR 加入压缩奖励把 $d_t$ 从 41.0 token 压到 27.3 token(−33.4%),同时维持 24.05% 通过率。Figure 3 进一步显示,SWE-AGILE-8B(SFT+RL)把单步推理从 1075 token 压到 819.6 token(−28%),相当于一个内置的认知缓存,让 8B 模型在 24.59 步/轨迹下仍能跑得动。
查看结构化数据
| 任务 | 指标 | 本文 | 基线 | 提升 |
|---|---|---|---|---|
| SWE-Bench-Verified(7B/8B 组) | 成功率(%) | 24.05(SWE-AGILE-8B SFT+RL) | 15.83(Qwen3-8B 基线) | +8.22 个百分点(相对 +51.9%) |
| SWE-Bench-Verified(14B 组) | 成功率(%) | 30.06(SWE-AGILE-14B SFT) | 21.6(SkyRL-Agent-v0-14B) | +8.46 个百分点 |
| SWE-Bench-Verified(同尺 SFT 对比) | 成功率(%) | 21.45(SWE-AGILE-8B 仅 SFT) | 23.4(SWE-Dev-7B,19.3k 轨迹) | 用 11% 数据量打平 7B 基线,8B 超越 |
| SWE-Bench Lite | 成功率(%) | 14.77 | 11.7(SWE-smith-7B)/ 11.0(R2E-Gym-32B) | +3.07 / +3.77 个百分点 |
| 推理摘要压缩效率 | 平均 $d_t$ token 数 | 27.3(SWE-AGILE SFT+RL) | 41.0(SWE-AGILE SFT+RL w/o CR) | −33.4% |
局限与改进
作者明确指出滑窗大小 $N$ 在 Backfilling、SFT、RLVR 和推理时统一在 $[2,5]$ 随机采样,虽展示了鲁棒性但缺乏对 $N$ 本身的消融——不同子任务(如纯执行 vs. 复杂设计)可能存在更优的固定或自适应 $N$。此外,论文仅在 8B 和 14B 模型上验证,Qwen3-235B 自身并非论文产出,14B 的 RLVR 实验也因算力被砍掉(仅做 SFT),无法判断 14B 完整 SFT+RL 表现是否会进一步追上 32B 级别(如 DeepSWE 42.2%、ENTROPO-KTO 49.3%)。最后,CR 奖励只压缩了推理痕迹,论文坦承工具输出(observation)也占大量上下文,但目前未把 obs 压缩纳入奖励,未来需设计 LLM-as-Judge 之类的去重机制来进一步压低整体 token。
独立分析的弱点
独立看仍有三处可改进。第一,Backfilling 用 Qwen3-235B 当教师,其 $d_t$ 风格被原样继承给 8B 学生,可能让模型学到的不是「最简摘要」而是「教师偏好的摘要长度」,导致压缩奖励的优化空间被前置 bias 吃掉一半。第二,奖励函数 $R_{\text{comp}} = 1 - L_{\text{hybrid}} / L_{\text{full}}$ 中 $L_{\text{hybrid}}$ 仍受工具 obs 长度主导,单纯缩短 $d_t$ 只能减少约 14 token/步,相对整体 ~24k 上下文收益有限,论文自己也承认需要 obs 压缩。第三,$N \in [2,5]$ 的随机滑窗在训练时把同一轨迹切成多份样本,理论上会放大数据量但也可能让滑窗外历史被反复以不同 mask 喂入,引入 mild 噪声,目前没有任何梯度方差分析。改进方向分别是:换更强的偏好数据 / Critic 模型学习摘要长度、对 obs 做语义压缩或 LLM-as-Judge 去重、以及对滑窗 $N$ 做按步骤类型(Reflexive vs Deliberative)自适应调度。
未来方向
作者已铺好三条路:(1) 沿用 Reasoning Digest 思想扩展到压缩工具输出(bash 结果、堆栈跟踪等),让 8B 模型在更长 horizon 任务上不掉队;(2) 在训练侧用 embedding 相似度或 LLM-as-Judge 显式检测「冗余 re-analyzing」并设计针对性 RLVR 惩罚,把认知效率推到 Pareto 前沿更右端;(3) 探索更细粒度的步类型分类(Reflexive/Deliberative 之上再分),让滑窗 $N$ 和推理深度按子任务自适应。读者可继续延伸的方向包括:把 SWE-AGILE 移植到 GUI、Web、Search 等其他多轮 agent 域(论文 Related Work 提到正交性)、用过程奖励模型(PRM)替代粗粒度的 $\mathbb{I}_{\text{success}}$ 来做 dense RLVR、以及把 Snapshot 训练范式用于多模态 agent 的视觉 token 压缩。
复现评估
论文公开了代码仓库 https://github.com/KDEGroup/SWE-AGILE,模型与基线对齐全在 R2E-Gym 之上做少量 prompt 修改(附录 A),工具集为 file_editor、search、execute bash、submit 四件套。训练侧数据可完全由 SWE-Dev(公开 19.3k 轨迹)+ R2E-Gym 子集(896 任务)复现,背靠 Qwen3-235B-A22B-Instruct-2507(开源权重)做 Backfilling;SFT 仅需 4 epoch / batch 32 / 1×10⁻⁵ LR,单卡 A100/H100 数小时量级即可完成 8B 微调。RLVR 用 DAPO(开源系统)+ 8 generations/prompt + 65536 上下文,复现门槛主要在 896 任务的多轮 rollout(每条 50 步),作者没有明确给出 GPU 时长但按 8B 模型 + 8×A100 估算约需数日。最大不确定性是 Backfilling 时 Qwen3-235B 推理服务的成本(建议用 vLLM + 张量并行),以及 SWE-Bench-Verified 评估需配套 docker 沙箱环境。
论文图表
对比 Shallow Thinking(绿色低斜率)、Interleaved Thinking(红色线性陡增)和 SWE-AGILE(蓝色锯齿形)的上下文增长曲线。横轴是 step,纵轴是累积 token 数;SWE-AGILE 在滑窗内保持深 CoT(陡坡),步数超出窗口时旧的 $r_t$ 被压缩为 $d_t$ 进入下一段平缓期。
直观论证了论文的核心动机:保留全部长 CoT 会导致上下文爆炸与 Lost-in-the-Middle,纯浅推理又损失深度,锯齿形是兼顾两者的唯一形态。