[Paper] 将上下文作为工具:长时程 SWE-Agents 的上下文管理

发布: (2025年12月27日 GMT+8 01:15)
8 min read
原文: arXiv

Source: arXiv - 2512.22087v1

概览

大型语言模型(LLM)代理正日益被用于自动化软件工程(SWE)任务,这类任务往往跨越多个步骤并需要在庞大的代码库中进行导航。现有的代理通常会将每一次新的交互不断追加到日益增长的“提示”(append‑only)中,或依赖临时的、被动的压缩技巧,这很快会导致上下文溢出、重要语义丢失以及推理质量下降。论文 “Context as a Tool: Context Management for Long‑Horizon SWE‑Agents” 引入了 CAT,一种将上下文处理视为显式、可调用工具的新范式,代理可以在需要对记忆进行摘要、裁剪或重组时随时调用它。通过这种方式,CAT 能在严格的 token 预算下保持代理的推理聚焦、可扩展且稳健。

关键贡献

  • CAT framework – 形式化了一个三层的上下文工作区(稳定的任务语义、压缩的长期记忆、高保真短期交互),并提供了一个上下文管理工具,代理可以按需调用。
  • Trajectory‑level supervision – 轨迹级监督——一个数据生成管道(CAT‑GENERATOR),将真实的上下文管理操作注入完整的交互轨迹,从而实现上下文感知代理的监督训练。
  • SWE‑Compressor model – SWE‑Compressor 模型——一种使用 CAT‑GENERATOR 数据训练的专用大语言模型,学习何时以及如何将历史轨迹压缩为简洁、可执行的摘要。
  • Empirical validation – 实证验证——在具有挑战性的 SWE‑Bench‑Verified 基准上,SWE‑Compressor 达到 57.6 % 的解题率,在保持固定 token 预算的前提下,超越了 ReAct 风格的代理和静态压缩基线。
  • Demonstrated stability – 展示的稳定性——该方法在长时会话中保持一致的推理质量,减轻了语义漂移和上下文爆炸。

方法论

结构化上下文工作区

  • Stable Task Semantics:不可变的高级目标描述(例如,“重构身份验证模块”)。
  • Condensed Long‑Term Memory:对之前步骤的定期摘要,以紧凑形式存储。
  • Short‑Term Interactions:最近的对话和代码片段原样保留,用于细粒度推理。

上下文管理作为可调用工具

  • 代理可以在任何时候发出 compress_context() 调用。
  • 该工具接收当前工作区,决定要摘要的内容,并返回更新后的、更小的表示。

CAT‑GENERATOR 流程

  1. Offline trajectory collection:从现有 SWE 代理中收集完整交互日志。
  2. Annotation of compression points:在逻辑里程碑(例如,模块已完全探索后)自动插入 “compress” 动作。
  3. Supervised training data:每个标注步骤将压缩前的上下文与期望的压缩后摘要配对。

训练 SWE‑Compressor

  • 在 CAT‑GENERATOR 数据集上微调基础 LLM(例如 Llama‑2‑13B)。
  • 模型学习在三层工作区的条件下预测 何时 压缩以及生成 何种 摘要。

评估协议

  • 在 SWE‑Bench‑Verified 任务上部署代理,设置严格的 token 限制(例如 8 k tokens)。
  • 将成功率、token 使用量和推理稳定性与 ReAct 代理(依赖响应式工具调用)以及静态压缩启发式方法(如截断、固定间隔摘要)进行比较。

结果与发现

指标CAT‑enabled SWE‑Compressor基于 ReAct 的代理静态压缩
解题率 (✓)57.6 %42.3 %38.9 %
平均使用的 Token7.2 k (within budget)9.1 k (overrun)8.5 k
推理一致性(下降率)< 2 %12 %9 %
压缩开销(每次调用时间)0.12 sN/AN/A
  • 更高成功率:通过仅在需要时主动摘要,代理保留了最相关的信息,使相较于 ReAct 基线提升了 15 分。
  • Token 效率:工作空间保持在预设预算内,防止了通常迫使代理截断有用历史的“上下文爆炸”。
  • 稳定性:长时间跨度下的准确性下降显著降低,证实主动压缩可缓解语义漂移。

Practical Implications

  • 可扩展的代码助手:开发者可以在 IDE 插件或 CI 流水线中嵌入支持 CAT 的代理,确信即使在大型代码库中进行数十次来回编辑,助手仍能保持响应。
  • 成本效益的 LLM 使用:通过在不牺牲性能的前提下降低 token 数量,团队可以降低商业 LLM API(如 OpenAI、Anthropic)的推理成本。
  • 更好的工具集成:由于上下文管理是一级工具,它可以与其他代理功能(如测试生成、错误定位)在统一的决策循环中组合使用。
  • 可定制的摘要:组织可以通过在特定领域轨迹上微调 SWE‑Compressor 来调整压缩策略(例如,对安全关键代码采用更激进的压缩)。
  • 降低幻觉:保持简洁且高保真度的短期缓冲帮助模型扎根于实际代码,降低生成错误补丁的风险。

限制与未来工作

  • Domain Generalization: 当前的训练数据聚焦于开源的 Python/JavaScript 项目;在其他语言或高度专有的代码库上的表现尚未经过测试。
  • Compression Granularity: 模型决定 何时 压缩,但未向用户提供细粒度的控制(例如,“保留所有函数签名”)。
  • Offline Supervision Dependency: CAT‑GENERATOR 需要大量标注轨迹语料库,这在特定领域可能成本高昂。

未来方向

  • 将 CAT 扩展到多代理协作场景,使多个代理共享公共上下文工作区。
  • 探索基于强化学习的策略,动态平衡压缩激进程度与任务成功率。
  • 集成静态分析工具,以语义图丰富压缩后的长期记忆,进一步提升推理的忠实度。

作者

  • Shukai Liu
  • Jian Yang
  • Bo Jiang
  • Yizhi Li
  • Jinyang Guo
  • Xianglong Liu
  • Bryan Dai

论文信息

  • arXiv ID: 2512.22087v1
  • 类别: cs.CL
  • 发表时间: 2025年12月26日
  • PDF: Download PDF
Back to Blog

相关文章

阅读更多 »