[Paper] SAFEdit:多代理分解能否解决指令式代码编辑的可靠性挑战?

发布: (2026年4月28日 GMT+8 23:04)
8 分钟阅读
原文: arXiv

Source: arXiv - 2604.25737v1

概述

本文介绍了 SAFEdit,一个多代理系统,旨在提升大型语言模型(LLMs)在 指令式代码编辑——即在已有源代码和自然语言编辑请求的基础上,生成能够通过原始测试套件的修正代码——任务中的可靠性。通过将问题拆分为专门的代理(Planner、Editor、Verifier)并加入结构化的反馈循环,SAFEdit 将 EditBench 基准上的任务成功率提升至超过 60 %,突破了大多数单模型方法难以跨越的瓶颈。

关键贡献

  • 多代理分解: 引入了三个协作代理(Planner、Editor、Verifier),每个专注于狭窄的子任务,降低“幻觉”编辑的可能性。
  • 感知可见性的编辑计划: Planner 生成明确的、逐步的编辑指令,遵循代码已有的作用域和依赖关系。
  • 失败抽象层 (FAL): 将原始测试运行日志转换为结构化诊断信息,将具体错误信号反馈给 Editor,以进行迭代细化。
  • 经验验证: 在五种语言(英语、波兰语、西班牙语、中文、俄语)的445个编辑实例上评估 SAFEdit,展示了68.6 % 的任务成功率——比之前最佳单模型结果高出3.8 %。
  • 迭代细化影响分析: 表明验证 → FAL → 重新编辑的循环使整体成功率提升了17.4 %。
  • 降低指令层面的幻觉: 自动错误分析显示,与单代理流水线相比,出现的虚假代码更改更少。

方法论

  1. Planner Agent 读取原始代码、编辑指令和测试套件,然后生成 可见性感知编辑计划——一份简明的具体修改列表(例如 “将第 12 行替换为 if (x > 0)”)。
  2. Editor Agent 接收计划和代码,仅执行计划中指定的文字更改,避免可能引入错误的更大范围重写。
  3. Verifier Agent 将编辑后的代码运行在提供的测试上。如果所有测试通过,流程结束。
  4. Failure Abstraction Layer (FAL) 在测试失败时启动:它解析堆栈跟踪、错误信息和断言失败,生成结构化诊断(例如 “NullPointerException 位于 processData 的第 23 行”)。
  5. 将诊断信息反馈给 Editor,后者尝试进行 针对性 修正。步骤 3‑5 循环,直至测试套件通过或达到预设的迭代上限。

所有代理均实现为独立的 LLM 调用(如 GPT‑4 或相当模型),并使用针对其角色定制的提示,使系统能够在复用同一底层模型的同时强制角色特定行为。

结果与发现

系统任务成功率 (TSR)
最佳先前单模型(EditBench)~64.8 %
ReAct 单代理基线(相同评估)~60.0 %
SAFEdit(完整多代理流水线)68.6 %
  • 迭代细化循环(Verifier → FAL → Editor)本身就带来了 +17.4 % 的提升,进一步确认具体的失败反馈远比单一的“通过/未通过”信号更有价值。
  • 在五种自然语言环境下,性能差异有限,说明该方法对多语言指令具有良好的泛化能力。
  • 错误分析日志显示,与单代理运行相比,指令层面的幻觉显著下降(例如添加无关函数),这表明规划器的显式计划能够抑制过度生成。

实际影响

  • 开发者工具:SAFEdit 的架构可以嵌入 IDE 插件(VS Code、JetBrains),提供 可靠 的 “fix‑my‑code” 建议,遵循现有测试套件,减少手动调试的需求。
  • 持续集成(CI):自动化代码审查机器人可以使用 Planner + Editor + Verifier 循环,提出 保证 能通过项目单元测试的补丁,然后再合并。
  • 多语言支持:由于系统能够处理多种语言的编辑指令,能够为全球分布的团队服务,而无需仅使用英文提示。
  • 安全性与合规性:明确的计划和验证步骤使编辑过程可审计,帮助组织满足代码来源和变更追踪的监管要求。
  • 成本效率:通过在多个角色间复用单一 LLM 而不是训练多个专用模型,SAFEdit 能保持推理成本低廉,同时提供更高的可靠性。

限制与未来工作

  • 模型依赖:SAFEdit 的性能取决于底层大语言模型遵循角色特定提示的能力;较弱的模型可能会降低整体 TSR。
  • 迭代预算:当前系统限制了细化循环的次数,这可能限制对特别顽固的 bug 的成功修复。自适应停止准则可以提升效率。
  • 大规模代码库的可扩展性:规划器目前在受限的“空间上下文”窗口上运行;处理整个项目的编辑可能需要层次化规划或分块策略。
  • 更广泛的测试语义:EditBench 使用单元测试;将 SAFEdit 扩展到集成测试或基于属性的测试(例如模糊测试)仍是一个未解决的挑战。
  • 人机交互评估:尽管自动化指标显示出提升,但仍需进行用户研究,以评估开发者信任、可用性以及对真实开发周期的影响。

通过解决这些问题,SAFEdit 的未来版本有望成为可信赖的 LLM 辅助软件维护的基石。

作者

  • Noam Tarshish
  • Nofar Selouk
  • Daniel Hodisan
  • Bar Ezra Gafniel
  • Yuval Elovici
  • Asaf Shabtai
  • Eliya Nachmani

论文信息

  • arXiv ID: 2604.25737v1
  • 分类: cs.SE, cs.AI
  • 出版日期: 2026年4月28日
  • PDF: 下载 PDF
0 浏览
Back to Blog

相关文章

阅读更多 »

[Paper] 递归多智能体系统

递归或循环语言模型最近作为一种新的扩展轴出现,通过在潜在状态上迭代细化相同的模型计算来加深 …