人大发布DeNovoSWE:AI编程新基准,从零写整个仓库代码
Agent预期承担的角色逐渐从仓库维护者变成了架构师,能够做规划完成整个仓库的代码的长程任务。如果文档只是把函数说明堆在一起,智能体很容易迷失在碎片信息中。也就是说,文档要足以让智能体复现可测试行为,但不能变成实现代码的拷贝。这意味着智能体必须真正依赖文档来完成整个仓库的重建。
从修修补补到从头搭建
过去一年间, 代码智能体于修复个体issue、改动若干行bug方面进步极为迅速, Scale – SWE等数据集致使模型在SWE – bench上成绩急剧攀升。然而, 实际的软件开发绝非仅仅修改一个函数那般简易, 领会需求、谋划架构、创建文件、设计API、处理依赖、贯通模块, 直至最终令整个仓库通过测试, 这才是开发者切实面临的挑战。研究人员察觉到,智能体无非是擅长修补, 却并不具备长程软件工程能力。
中国人民大学高瓴人工智能学院有着最新的研究, 该研究直接对准了这个痛点, 随后推出了数据集, 这个数据集专注于长程软件工程任务, 它不关注代码修改, 而是使智能体依据一份任务文档开始, 产生一个完整的、能够执行的、可以验证的软件仓库, 把智能体的角色从仓库维护者提升成为架构师这个举动, 要求它重新构建整个仓库。
文档质量决定成败
一份具备高质量的任务文档是长达路程任务的关键所在, 仓库级别任务本身就充满复杂性, 涵盖着诸多的模块、一系列接口、很多配置、多种数据结构以及多重交互流程 , 要是那份文档单单只是堆积函数说明, 智能体就会在碎片化的信息当中陷入迷失 , 所以说, 则那份文档必须要先明确给出清晰的仓库整体概况, 然后依据能力或者工作流程进行段落拆解, 使得每一个部分都能够对应明确的功能界限。
文档不能过少, 要是过少那任务就会变成那种欠定义的问题, 模型就只能靠瞎猜;也不能过于详细, 不然就会变成代码的简单拷贝。真正高质量的文档, 得去描述关键行为, 这其中涵盖了文件路径, 公开的 API , 输入输出, 默认参数, 异常行为,配置项,模式字符串, 返回字段啦等等 , 而且还要去说明大致需要达成的功能。像这样可读、可实现、可验证的文档, 是智能体复现可测试行为的基础。
自动构建高质量实例
不是研究人员选取人工手写文档, 而是借助multi-agent机制自动搭建高质量实例, 每个实例和仓库里的一个核心能力或者工作流相对应, 像认证与连接、数据读写、批处理、导出流程等, 系统会运转原始单元测试并收集执行trace, 分辨哪些函数、类以及接口切实影响测试结果。
凭借这些信息, 文档得以区分为core、core以及non-core这三类, 直接被测试调用的接口务必详细记录, 会对可观察行为产生影响的核心间接组件同样需要覆盖。最终, 不同能力的文档合并成为一份完整的任务文档, 将其作为智能体从零生成仓库的唯一依据。这套机制构建起了包含4818个真实数据点的开源且高质量的长程SWE任务数据集。
严格模拟真实环境
于传统SWE任务不一样, 智能体于长程任务里面对的是已然经过清理的一副环境图。原来的源码以及测试均被拿掉了, git的历史记录给复位了, 那些缓存, site – packages方面残留的数据, pip生成轮胎状的文件呀有临时编译所留存的产物等可能出现泄漏的各样渠道全部都被清理干净了。智能体没办法唯有依据文档真切真切且需完完全全彻底地要达成整个仓库全部的重塑建造。
这意指着它得去规划项目的结构, 要创建模块的文件, 还得定义下公开的接口, 进而实现跨文件的交互,处理相关的依赖以及配置, 并且在许多轮的编辑与测试反馈里持续且源源不断地修复错误。错误会于长程的进程之中持续累积: 一个在早期设计时就不合理的模块, 极有可能对后续的多个文件以及调用链产生影响。仓库越发复杂, 就越难以一次性成功通过全篇所有的测试。
数据质量与难度平衡
论文给出了凭借题目难度打分来进行过滤的办法, 切实减轻了困难题目所占比例与轨迹质量之间的权衡难题。存在一些困难仓库、低分轨迹以及部分成功的样例, 它们依旧蕴含着宝贵至极的长程规划与实现能力, 绝不能轻易地就将其丢弃。这样的一种平衡促使数据集更具备实用性。
基于该数据集训练的-Qwen3-30B-A3B模型, 其在测试集上的表现, 从5.8%提升到了47.2%, 除此之外, 在另一个测试集上, 从4.3%提升到了23.0%, 而专门使用常规issue-level SWE数据训练的Scale-SWE-Agent, 却只能提升到29.2%以及18.3%, 对于测试集方面的体现, 实验结果显示了这种状况。这充分表明, 若要面向长程任务构建具备针对性的训练环境, 专门致力于解决修bug的数据, 是不能够替代长程数据的, 这一点是至关重要的。
代码智能体下一阶段
代码智能体的下一阶段, 并非仅仅是更迅速地修复单个issue, 而是要达能够理解文档, 能够规划架构, 能够组织模块, 能够实现接口, 并且最终生成一个完整可运行的软件仓库。这项研究把这个目标系统地构造成了可训练的数据集, 构造成了可验证的数据集, 构造成了可扩展的数据集。
它回应了一个核心疑问, 啥样的数据才能够切实地训练出拥有长程软件工程能力的智能体? 答案并非是更多的碎片化代码, 也并非是更为简易的题目, 而是高质量、结构化、可验证的全仓库生成任务。你是怎么认为的, 未来的 AI 程序员会彻底取代初级开发者吗? 欢迎于评论区去分享你的见解, 点赞并转发从而让更多的人能够看到这项突破!