本文提出基于长上下文语言模型(LCLM)的‘state-in-context’代理设计,通过将整个环境状态纳入上下文简化软件工程任务的代理架构,在SWE-bench Verified上实现与复杂脚手架方法相当的性能(Gemini-2.5-Pro达到50.8% pass@1)。
Large Language Model, Long Context, Agent, Reasoning, Prompt Engineering
Mingjian Jiang, Yangjun Ruan, Luis Lastras, Pavan Kapanipathi, Tatsunori Hashimoto
Stanford University, IBM Research, University of Toronto
Generated by grok-3
Background Problem
近年来,语言模型代理(LM Agents)在自动化复杂现实世界任务(如软件工程、机器人控制和科学研究)方面展现出巨大潜力。然而,传统LM代理架构通常依赖复杂的脚手架设计,包括多步骤检索工具、多代理协作和特定任务的定制管道,以应对部分可观察环境中的信息收集挑战。本文提出一个关键问题:在许多代理任务(如SWE-bench)中,环境实际上是完全可观察的,是否可以通过长上下文语言模型(LCLM)直接处理整个环境状态,简化代理设计并减少对复杂脚手架的依赖?本文旨在探索这种简化的可能性,挑战传统代理设计范式,并评估LCLM在无脚手架情况下解决复杂任务的能力。
Method
本文提出了一种基于长上下文语言模型(LCLM)的‘state-in-context’代理设计方法,旨在简化传统LM代理架构:
- 核心思想:利用LCLM的长上下文处理能力,将整个环境状态(或压缩后的状态)直接纳入模型上下文,实现完全可观察性,从而将开放式代理任务转化为封闭式任务,避免复杂的信息收集脚手架。
- 具体实现:
- DIRECTSOLVE方法:直接提示LCLM基于问题描述和整个(或压缩的)代码库状态生成解决方案。采用两种提示技巧:代码重述(code restatement)以缓解‘lost in the middle’问题,以及链式思维(chain-of-thought)提示以分解解决步骤。
- SELECTSOLVE方法:针对LCLM能力不足的情况,提出两阶段方法。第一阶段,LCLM对压缩后的代码库进行单次定位,识别相关文件;第二阶段,将定位的文件传递给短上下文语言模型(SCLM)进行代码修复,结合两者的优势。
- 状态压缩:当代码库超出LCLM上下文长度限制时,通过基于问题描述和代码库结构的简单排名和过滤方法,优先包含相关文件,移除注释、文档字符串和非目标语言文件,以适应上下文限制。
- 关键点与批评:虽然方法简化了设计,但其成功依赖于LCLM的长上下文处理能力,而当前LCLM在处理超长上下文时存在性能下降问题(如实验中的上下文长度影响)。此外,方法未解决LCLM与最先进SCLM在编码能力上的差距,可能导致在复杂任务上的表现受限。状态压缩步骤虽然实用,但基于结构的排名可能过于粗糙,存在遗漏关键信息的风险。
Experiment
实验在SWE-bench Verified基准数据集(包含500个经过专家验证的软件工程问题)上进行,评估了提出的DIRECTSOLVE和SELECTSOLVE方法与传统脚手架方法(如Agentless和CodeAct)的性能:
- 实验设置:使用Gemini-1.5-Pro(2M token上下文)和Gemini-2.5-Pro(1M token上下文)作为LCLM,Claude-3.7-Sonnet作为SCLM。基线方法包括Agentless和CodeAct,评估指标为pass@1和pass@8(分别表示最终补丁和8个补丁中至少一个解决问题的成功率)。
- 结果:
- DIRECTSOLVE方法在Gemini-1.5-Pro上达到38% pass@1,优于同模型下的Agentless(32%)和CodeAct(18.8%),在Gemini-2.5-Pro上达到50.8% pass@1,显示出无脚手架方法的竞争力。
- SELECTSOLVE方法结合Gemini-1.5-Pro和Claude-3.7-Sonnet,达到48.6% pass@1,优于Agentless(45.2%)但低于CodeAct(58.0%),表明结合SCLM可提升性能,但仍不及最优脚手架方法。
- 消融研究显示,链式思维提示对性能至关重要(移除后pass@1下降23%),代码重述和文件索引也有贡献。上下文长度增加导致性能下降(从100K到1M token,pass@1从39%降至31%),暴露LCLM长上下文处理的局限性。
- 实验设计评价:实验设置较为全面,涵盖了不同模型和方法对比,但主要集中在SWE-bench任务上,缺乏跨领域验证。结果表明方法改进在特定场景下明显,但与最先进脚手架方法仍有差距。此外,实验未充分探讨成本效益问题(LCLM方法成本为0.25),这可能是实际应用中的重大限制。实验设计合理,但对LCLM长上下文性能瓶颈的分析不够深入,未能提出有效解决方案。
Further Thoughts
本文提出的‘state-in-context’概念为简化代理设计提供了一个有趣的视角,但其依赖于LCLM的长上下文处理能力,而当前LCLM在处理超长上下文时存在明显性能下降(如‘lost in the middle’问题)。这提示我们需要在模型架构或训练方法上进一步优化长上下文理解能力,例如探索更高效的注意力机制(如FlashAttention)或上下文压缩技术。此外,LCLM方法的高成本(0.25)可能限制其在资源受限场景中的应用,未来可以研究如何结合KV缓存等技术进一步降低推理成本。另一个值得思考的方向是,这种方法是否能推广到其他完全可观察的代理任务(如多跳问答或文档处理),以及是否能与检索增强生成(RAG)结合,形成更高效的混合架构。这些问题值得后续研究深入探讨,以验证该方法的广泛适用性和实际价值。