这项由中国人民大学高瓴人工智能学院、独立研究人员和AweAI团队联合开展的研究发表于2026年3月,论文

打开网易新闻 查看精彩图片

编号为arXiv:2603.03194v1。研究团队针对当前人工智能代码助手在复杂软件工程任务中的表现进行了深度评估,试图回答一个关键问题:现有的代码助手是否真的能够胜任单一代码库漏洞修复之外的更复杂任务。

想象一下你雇佣了一位编程助手,他在修复简单的代码错误方面表现出色,但当你让他处理涉及多个项目、需要专业知识或者需要大规模重构的复杂任务时,他的表现会如何呢?这正是研究团队想要探究的问题。

当前的人工智能代码助手虽然在简单的漏洞修复任务上表现不错,但现实中的软件开发工作远比这复杂得多。程序员们经常需要在多个相关项目之间查找资料,运用专业领域知识解决问题,应对依赖库的重大更新,甚至从零开始构建完整的项目。这些挑战远超出了简单的代码修修补补。

为了真正测试这些代码助手的能力边界,研究团队构建了一个名为BeyondSWE的综合评估体系。这个评估体系就像是为程序员设计的一套综合能力测试,从两个维度来考察代码助手:解决问题的范围有多广,以及需要运用的知识面有多深。

一、突破传统评估的局限性

传统的代码助手评估就像是只考察医生能否处理简单感冒,而忽视了他们面对复杂手术时的表现。目前最广泛使用的评估基准SWE-bench主要关注单一代码库内的局部问题修复,这就好比只测试一个维修工是否能修理单个房间的问题,而不考验他是否能处理整栋楼的系统性问题。

研究团队发现,现实中的软件开发工作要复杂得多。程序员们经常需要在多个相关项目中寻找解决方案,就像医生需要查阅各种医学文献和案例一样。他们还需要运用特定领域的专业知识,比如生物信息学或量子物理学的概念。此外,当底层依赖库发生重大更新时,程序员需要对整个代码库进行系统性的迁移和重构。

为了填补这个评估空白,研究团队设计了BeyondSWE评估体系。这个体系包含了500个来自246个真实GitHub项目的实例,覆盖了四种不同类型的挑战场景,每一种都代表着现实软件开发中的常见难题。

二、四大挑战场景的设计巧思

BeyondSWE的设计理念就像是为程序员量身定制的全能测试。研究团队精心设计了四种不同的挑战场景,每一种都针对软件开发中的特定难题。

第一种挑战叫做"跨代码库问题解决",就像是让程序员在没有说明书的情况下修理一台复杂机器,但他们可以查阅相关机器的维修手册和其他技术人员的维修记录。在这种场景下,代码助手需要主动查找和分析外部代码库中的相关资料,理解不同项目之间的关联性,然后将这些知识应用到当前的问题中。研究团队收集了200个这样的实例,每个实例平均包含1.3个外部链接,这些链接指向相关的解决方案或参考资料。

第二种挑战称为"领域专业问题解决",这就像是让一个通用工程师去解决需要生物学、化学或物理学专业知识的技术问题。代码助手不仅需要编程技能,还需要理解特定科学领域的概念和原理。研究团队与11个科学领域的专家合作,从量子计算、分子动力学到材料科学等领域选择了具有代表性的代码库,最终筛选出72个需要真正领域专业知识的实例。

第三种挑战是"依赖驱动的迁移",这种情况就像是你的房子需要适应新的电力系统或水管系统。当底层依赖库发生重大版本更新时,程序员需要修改整个代码库以适应新的接口和规范。这不是简单的小修小补,而是需要系统性地检查和更新数十个甚至上百个文件。研究团队收集了178个这样的迁移实例,涉及120个不同的代码库。

第四种挑战是"文档到代码库生成",这就像是根据建筑图纸从零开始建造一座房子。代码助手需要根据自然语言描述的功能规范,构建一个完整可运行的软件项目。这要求助手不仅要理解需求,还要做出合理的架构决策,正确实现所有功能。研究团队选择了50个高质量的实例进行这项测试。

三、实验设计的严谨性

为了确保评估结果的可靠性,研究团队在实验设计上下了很大功夫,就像科学家在进行药物试验时需要严格控制各种变量一样。

他们面临的第一个挑战是如何重现历史代码的运行环境。这就好比考古学家试图重建古代建筑的原貌,需要找到合适的材料和工具。由于软件依赖关系的复杂性和时间的推移,很多历史版本的代码已经无法在当前环境中正常运行。研究团队创新性地采用了智能助手来自动配置运行环境,让AI助手在Docker容器中反复尝试,通过试错循环来解决依赖问题,直到所有测试都能正常运行。

为了保证评估的公正性,研究团队还实施了严格的信息隔离措施。他们将代码助手的工作环境与最终的测试环境完全分离,这就像是在考试中不允许学生携带资料进入考场一样。代码助手产生的修改方案会被提取并应用到一个全新的、干净的环境中进行测试,确保没有任何作弊的可能。

此外,研究团队还清理了所有可能泄露答案的信息。他们删除了目标提交点之后的所有Git历史记录,防止代码助手通过查看未来的提交记录来获取解决方案。同时,他们还原所有被修改的测试文件,确保成功与否完全取决于问题解决的质量,而不是对测试的操控。

四、代码助手的真实表现

研究团队测试了九种不同的前沿语言模型,包括Google的Gemini 3 Pro、OpenAI的GPT-5.2、国产的GLM-4.7和DeepSeek-V3.2等。测试结果就像是一面照妖镜,清晰地展现了当前代码助手的真实能力水平。

整体来看,即使是表现最好的模型,成功率也仅仅达到41.82%,这意味着超过一半的复杂任务都无法成功完成。这个数字与这些模型在简单代码修复任务上的80%以上成功率形成了鲜明对比,就像一个在平地上跑步很快的人,到了崎岖山路上就显得力不从心。

更有趣的是,没有任何一个模型能在所有类型的任务上都表现出色。Gemini 3 Pro在依赖迁移任务上表现最佳,Seed-Coder在跨代码库问题解决上领先,而DeepSeek-V3.2在文档生成代码方面得分最高。这就像是不同的专业医生各有所长,心脏外科医生不一定擅长神经外科手术。

在具体的任务类型分析中,研究团队发现了一些有趣的规律。领域专业问题解决始终是最困难的,大多数模型的成功率都在36%以下。这说明当前的代码助手在处理需要专业领域知识的问题时还有很大的局限性,就像让一个通用工程师去解决需要生物学博士学位才能理解的问题一样困难。

文档生成代码的任务则展现了另一种有趣的现象。虽然模型们能够实现单个功能模块,平均通过率在45%-55%之间,但能够完全正确生成整个项目的实例却极少,最多只有8个。这说明代码助手在理解整体架构和协调多个模块方面还有明显不足,就像一个建筑工人能够很好地砌墙或安装门窗,但却难以统筹整个建筑项目。

五、搜索增强带来的意外发现

为了探索如何提升代码助手的能力,研究团队开发了SearchSWE框架,这个框架就像是给代码助手配备了一个智能搜索助理。代码助手可以在解决问题的过程中主动搜索相关信息,模拟真实程序员查阅文档和寻找解决方案的工作流程。

然而,搜索增强的效果却出人意料地复杂。虽然在某些情况下确实带来了改善,比如Gemini 3 Pro在领域专业问题上提升了7.5%,但整体上的改善并不稳定,有些模型甚至出现了性能下降的情况。这就像是给一个学生提供了图书馆的使用权,但他可能因为信息过载而分心,反而影响了学习效果。

研究团队深入分析发现,这种不一致的效果源于几个根本性问题。首先是信息环境的不匹配。搜索引擎优化的是人类可读的高层次文档,而编程任务往往需要的是具体的代码实现细节。这就像一个维修工需要详细的电路图,但搜索引擎却主要提供设备的使用说明书。

其次是版本时间错位的问题。搜索通常会返回最新版本的文档和教程,但代码助手处理的项目可能使用的是较老的依赖版本,两者之间的API差异可能导致解决方案无效。这就像用现代的维修手册去修理老式机器,方法可能根本不适用。

最后是语义漂移和上下文污染的问题。在专业性较强的小众项目中,搜索往往会返回大量不相关但关键词匹配的内容,这些噪音信息会干扰代码助手的判断。这就像在寻找特定型号汽车的维修方法时,却收到了大量其他型号汽车的信息,反而增加了困惑。

六、深层次的能力分析

通过对代码助手行为的详细分析,研究团队发现了一些有趣的模式。效率高的代码助手往往能用更少的操作完成更多的工作。Gemini 3 Pro平均每个任务只需要36.8次工具调用就能达到最高的成功率,而GLM-4.7需要105.4次调用才能达到相近的效果。这就像是有经验的工匠能够精准地选择合适的工具,而新手可能需要尝试很多次才能找到正确的方法。

在搜索行为分析中,研究团队发现搜索的质量比数量更重要。Gemini 3 Pro平均每个任务只搜索0.8到1.1次,但获得了最稳定的改善效果。相比之下,DeepSeek-V3.2平均搜索4.2到5.4次,但改善效果并不稳定。这说明精准的搜索比盲目的大量搜索更有价值,就像一个好的侦探能够快速锁定关键线索,而不是漫无目的地收集大量信息。

不同类型的任务也展现出不同的搜索模式。领域专业问题激发了最多的搜索行为,因为这类问题确实需要外部专业知识的支持。而文档生成代码的任务搜索频率最低,这表明代码助手能够认识到这类任务主要依赖提供的规范文档,而不是外部搜索。

七、现实案例的深度解析

研究团队通过具体案例深入分析了搜索增强失效的原因。在一个涉及天气数据服务的案例中,代码助手需要扩展一个类来支持获取"所有站点"的数据。虽然助手正确地意识到需要查找后端服务的具体协议,但搜索引擎返回的是面向用户的API帮助页面,而不是助手真正需要的后端源代码。

帮助页面只是模糊地提到可以"仅使用时间戳"来获取数据,但这种表述在具体实现时是有歧义的:是完全移除站点参数,还是将其设置为特殊值,还是使用通配符?由于缺乏源代码级别的细节,助手最终实现的解决方案虽然在简单情况下可以工作,但在处理复杂的边缘情况时会失败。

在另一个涉及Django版本升级的案例中,代码助手出现了更严重的问题。它产生了一个关于Django版本的幻觉,认为目标环境使用的是不存在的"Django 5.2"版本,并基于这个错误认知进行搜索和修改。这导致它将实例方法错误地改为类方法,破坏了与父类的兼容性。这种情况就像一个维修工基于错误的设备型号信息进行维修,最终可能造成更大的损坏。

在一个涉及代码检查工具的案例中,搜索返回了大量不相关的结果。由于"家族"这个词在不同技术领域有不同含义,搜索引擎返回了建筑设计软件和法律技术平台的文档,而不是目标项目真正需要的信息。这些噪音信息稀释了正确答案的权重,导致助手采用了错误的通用解决方案,在测试时产生了意外的副作用。

八、对未来发展的重要启示

这项研究的发现对人工智能代码助手的未来发展具有重要意义。首先,它清晰地表明了当前代码助手的能力边界。虽然这些工具在简单的代码修复任务上表现不错,但面对需要跨项目推理、专业领域知识或大规模重构的复杂任务时,仍然力不从心。

研究还揭示了搜索和编程能力整合的复杂性。虽然直觉上认为给代码助手提供搜索能力应该会提升其表现,但实际结果表明这种整合远比想象中困难。当前的语言模型在这两种能力的协调上还存在明显的不足,这可能需要在模型训练过程中专门针对这种整合能力进行优化。

对于软件行业而言,这些发现意味着我们需要重新审视对人工智能代码助手的期待。它们确实能够在特定场景下提供有价值的帮助,但还远未达到能够完全替代人类程序员处理复杂任务的水平。更现实的发展路径可能是将这些工具定位为程序员的智能助理,专注于提升特定类型任务的效率,而不是追求全方位的替代。

研究团队特别强调了评估体系的重要性。只有通过更全面、更贴近现实的测试,我们才能准确了解这些工具的真实能力,并指导后续的改进方向。BeyondSWE评估体系的公开发布为整个社区提供了一个重要的参考标准,有助于推动更客观、更深入的能力评估。

说到底,这项研究为我们描绘了一幅更加真实的图景:人工智能代码助手虽然在某些方面表现出色,但距离真正理解和处理复杂软件工程任务还有很长的路要走。这不是对技术发展的悲观判断,而是对现实的清醒认识。正如任何强大工具的发展都需要时间和持续改进一样,代码助手技术也需要在更准确的评估和更深入的研究基础上稳步前进。

对普通人而言,这意味着在可预见的未来,软件开发仍然需要人类程序员的专业技能和创造性思维。代码助手可能会让编程变得更加高效,但不会完全改变编程本质上需要深度思考和创新的特点。这或许是一件好事,因为它保留了人类在创造性工作中的独特价值和不可替代性。

Q&A

Q1:BeyondSWE评估体系与现有代码助手测试有什么不同?

A:BeyondSWE更贴近现实编程场景,它测试四种复杂任务:跨项目代码修复、需要专业知识的问题解决、大规模代码迁移和从零生成完整项目。而现有测试主要关注单一代码库内的简单漏洞修复,就像只考察医生治感冒的能力,而忽视复杂手术技能。

Q2:为什么给代码助手增加搜索功能后效果不稳定?

A:主要有三个原因:搜索引擎返回的通用文档与编程需要的具体代码细节不匹配;搜索结果通常是最新版本信息,但项目可能使用旧版本依赖库;专业术语的多重含义导致大量无关信息干扰判断。这就像给学生开放图书馆,但可能因信息过载反而影响学习效果。

Q3:当前最先进的代码助手在复杂任务上表现如何?

A:即使是最好的模型成功率也只有41.82%,远低于简单任务的80%以上成功率。没有任何模型能在所有任务类型上都表现优秀,领域专业问题最困难,成功率普遍在36%以下。这说明代码助手距离真正胜任复杂软件工程任务还有很大差距。