💻 computer science
SWE-Pruner: Self-Adaptive Context Pruning for Coding Agents
SWE-Pruner 是一个自适应上下文剪枝框架,它利用任务感知的神经快速扫描器,根据明确的智能体目标动态过滤无关代码,在维持或提升编码智能体在各类基准测试中表现的同时,显著降低了令牌使用量和成本。
原始论文采用 CC BY 4.0 许可(http://creativecommons.org/licenses/by/4.0/)。 这是对下方论文的AI生成解释。它不是由作者撰写或认可的。如需技术准确性,请参阅原始论文。 阅读完整免责声明
想象你是一名侦探,试图在一座庞大而布满灰尘的图书馆中解决一个复杂的案件。这座图书馆就是计算机程序的代码库,而你的任务是找出一个特定的漏洞或添加一个新功能。
问题:“信息过载”陷阱
过去,当你请一位超级聪明的 AI 侦探(大语言模型智能体)去解开这些代码谜题时,你会一次性把整座图书馆交给它。AI 会试图阅读每一本书、每一页甚至每一个脚注,以找到它所需的线索。
这引发了两个大问题:
- 它不堪重负:AI 的“大脑”(其上下文窗口)存在容量限制。如果你给它太多文本,它开始忘记故事的开头,或被无关细节搞糊涂(就像在寻找汽车手册时却读了一本烹饪书)。
- 它成本高昂:AI 读取和写入的每个单词都耗费金钱和时间。为每一条线索阅读整座图书馆,就像为了找一个电话号码而付费读完整部百科全书。
现有解决方案试图通过总结书籍内容或删除随机单词来节省空间。但这就像试图通过删除“引擎”或“刹车”等关键词来总结汽车手册。这破坏了逻辑,使代码变得无法阅读或毫无用处。
解决方案:SWE-Pruner(智能图书管理员)
本文作者提出了SWE-Pruner,它如同一位高度专业、能自我适应的图书管理员,站在你与图书馆之间。
其工作原理如下(用通俗语言说明):
- 你提出具体问题:AI 智能体不再只是说“阅读这个文件”,而是被教导先提出一个具体问题,即“目标提示”。例如:“我需要找到处理用户登录错误的代码部分。”
- 图书管理员快速浏览:SWE-Pruner(一个小型、快速的 AI 模型)接收庞大的文件与具体问题。它不会逐字深入阅读,而是像人类程序员调试时那样“快速浏览”文本。它确切知道哪些行与“登录错误”相关,哪些行仅涉及“数据库设置”或“配色主题”。
- 剔除冗余内容:图书管理员剔除无关页面,仅将具体、相关的段落交给 AI 智能体。关键在于,它是逐行完成的。它不会随意切割句子或随机删除关键词。它保持代码结构完整,就像即使删除了前一段落,仍保留整个段落的完整性。
- 结果:AI 智能体获得一段简短、聚焦且干净的谜题片段。它能更快解决问题,减少错误,并大幅降低成本。
类比:“大海捞针”与“筛子”
- 旧方法:你把整堆干草倒在桌上,让 AI 去找针。AI 会疲惫、困惑,并耗费巨资。
- 糟糕的压缩:你试图通过压碎干草来缩小它。现在针被埋在一小堆破碎的草屑中,你甚至分不清哪边是上。
- SWE-Pruner:你使用一个形状恰好与针匹配的筛子。你摇晃干草堆,只有针(以及附着在它上的少量草屑)会漏下。其余干草留在筛子上。针完好无损,随时可用。
他们的发现
该论文在真实世界的编码任务(如在 GitHub 上修复漏洞)中测试了此方法。
- 成本与速度:他们减少了 AI 需要阅读的文本量,降幅为23% 至 54%。这意味着 AI 更快、更便宜地完成任务。
- 更明智的决策:由于 AI 不再被无关代码分散注意力,它实际上做出了更好的决策。在某些测试中,修复漏洞的成功率略有提升,因为 AI 能更专注。
- 无破坏性:与其他破坏代码语法的方法不同,SWE-Pruner 保持了代码结构的完美,因此 AI 仍能理解各部分如何衔接。
简而言之,SWE-Pruner 教导编码智能体停止通读整本书,转而只阅读相关章节,从而节省时间、金钱和脑力。
您所在领域的论文太多了?
获取与您研究关键词匹配的最新论文每日摘要——附技术摘要,使用您的语言。