[论文阅读] 人工智能 + 软件工程 | NoCode-bench:评估LLM无代码功能添加能力的新基准

NoCode-bench:评估LLM无代码功能添加能力的新基准

论文:NoCode-bench: A Benchmark for Evaluating Natural Language-Driven Feature Addition

研究背景:当AI尝试给软件"加新功能",我们需要一张靠谱的"考卷"

想象一下,你想给常用的软件加个小功能------比如让聊天工具支持邮件订阅,或者让表格软件导出新格式。如果不用写代码,只需用自然语言描述这个需求,AI就能自动完成代码修改,那该多方便?这就是"自然语言驱动的无代码开发"的愿景:让普通人也能通过说话或写字来定制软件,不用再跟复杂的代码打交道。

但这里有个大问题:我们怎么知道AI能不能做好这件事?现有的评估工具大多盯着"修bug"或"解决问题",比如给AI一个"软件崩溃了"的描述,看它能不能修好。但"加新功能"和"修bug"完全不是一回事------前者需要理解现有软件的结构,还要在不破坏原有功能的前提下新增代码,难度大得多。而且,现有基准里只有极少数任务是关于加功能的(比如SWE-bench里仅7.3%)。

就像老师想测试学生的"作文创新能力",但手里只有"改错题"的试卷,显然测不出真实水平。于是,研究者们决定打造一张专门的"考卷"------这就是NoCode-bench的由来。

主要作者及单位信息

该论文由来自浙江大学、香港科技大学、斯图加特大学的研究者合作完成,核心团队包括Le Deng、Zhonghao Jiang、Jialun Cao、Michael Pradel和Zhongxin Liu(通讯作者),其中多数作者来自浙江大学区块链与数据安全国家重点实验室。

创新点:这张"考卷"和以前的有什么不一样?

  1. 聚焦"无代码功能添加"这一空白领域:不同于现有基准(如SWE-bench)主要关注bug修复,NoCode-bench专门针对"用自然语言描述新功能,让AI生成代码变更"的场景,填补了该领域评估工具的空白。

  2. 从"发布说明"出发,保证任务真实性:以前的基准常从"问题描述"或"代码提交记录"里挖任务,容易混入模糊或错误的案例。而NoCode-bench从软件的"发布说明"入手------这是开发者自己写的"更新日志",明确标注了"新增功能",相当于直接从老师手里拿了"官方题库",任务真实性大大提高。

  3. 有"精简版考卷"方便快速评估:完整版包含634个任务,对资源有限的研究者不太友好。于是团队人工筛选出114个高质量任务(NoCode-bench Verified),就像"模拟卷",既能保证评估效果,又能节省时间。

研究方法:这张"考卷"是怎么出的?

NoCode-bench的构建分5个步骤,就像出卷老师从选题到定稿的全过程:

  1. 选"教材"(项目选择):从SWE-bench的12个开源项目里,挑出10个符合条件的------必须有清晰的发布说明,且明确标注了"新增功能",还能关联到具体的代码修改记录(PR)。比如flask因为没有标注"功能"就被排除了。

  2. 找"题目素材"(实例收集):从选定的项目里爬取所有和"新增功能"相关的代码修改记录(PR),并筛选出同时改了源代码、测试文件和文档的PR------毕竟加功能不仅要写代码,还要更新说明书和测试用例。

  3. 搭"考场环境"(环境构建):为每个项目准备可复现的运行环境,用Docker镜像和Anaconda管理依赖,避免因为"环境不对"导致AI做对了也被判错。

  4. 筛"有效题目"(实例过滤):通过测试用例验证每个任务------新增功能后,必须有一些测试从"失败"变成"成功"(证明功能生效了),否则就剔除。最终留下634个有效任务。

  5. 优化"题目描述"(输入 refinement):有些任务的文档里没提新增的类或函数名,但测试用例里有,这种情况会导致AI写对了也通不过测试。于是研究者补充了这些"隐藏信息",还删掉了文档里的PR编号(避免AI"作弊")。

而评估实验则像"模拟考试":选了6个最先进的LLM(比如GPT-4o、Claude-4-Sonnet),用两种主流框架(Agentless和OpenHands)让它们完成任务,再通过"成功率""文件匹配率"等指标打分。

主要贡献:这张"考卷"到底有什么用?

  1. 填补了领域空白:首次提出专门评估"无代码功能添加"的基准,让研究者有了统一的工具来比较不同AI的能力。

  2. 揭示了LLM的真实水平:测试发现,最好的AI(Claude-4-Sonnet)在简单任务集里成功率仅15.79%,复杂任务集里更低。这说明现在的AI离"无代码开发"还差得远。

  3. 指出了AI的三大短板

    • 不会跨文件修改:多文件任务的成功率不到3%;
    • 看不懂软件结构:经常改坏原有功能;
    • 不会用工具:调用编辑工具时格式总出错,导致任务失败。

这些发现就像给AI开发者递了一张"改进清单",明确了未来需要突破的方向。

解决的主要问题及成果

  • 解决了"无代码功能添加"缺乏专门评估工具的问题,提出了NoCode-bench基准;
  • 构建了包含634个任务的数据集及114个人工验证的子集,支持多样化评估;
  • 评估了主流LLM的表现,发现其在跨文件编辑、代码结构理解和工具调用上的短板,为后续研究提供了依据。

一段话总结:

NoCode-bench 是一个用于评估大型语言模型(LLMs)在自然语言驱动的无代码功能添加任务上表现的基准测试集,包含来自10个项目的634个任务,涉及约114k代码变更,每个任务均配对用户文档变更与对应的代码实现,并通过开发者编写的测试用例验证。其构建通过五阶段流程(项目选择、实例收集、环境构建、实例过滤、输入优化)完成,以发布说明为起点确保任务真实性,并包含一个经人工验证的子集NoCode-bench Verified(114个任务)以支持轻量评估。评估结果显示,最先进的LLMs在NoCode-bench Verified上的最佳成功率仅为15.79%,在NoCode-bench Full上更低,主要因缺乏跨文件编辑能力、对代码库结构理解不足及工具调用能力欠缺导致。


思维导图:


详细总结:

1. 背景与目的
  • 无代码开发旨在让用户通过自然语言指定软件功能,无需直接编辑代码,LLMs在此领域有潜力,但需高质量基准测试评估其能力。
  • 现有基准(如SWE-bench)多关注bug修复或问题解决,较少针对无代码场景,且功能添加任务占比低(如SWE-bench仅7.3%),因此构建NoCode-bench以填补空白。
2. NoCode-bench构建(五阶段流程)
  • 项目选择:从SWE-bench的12个项目中筛选出10个,要求有发布说明、特征标注的更新条目及关联的GitHub PR。
  • 实例收集:爬取符合条件的特征添加PR,筛选出同时修改源代码、测试文件和文档的PR,截止2024年8月,获1571个候选实例。
  • 环境构建:为每个项目构建基础Docker镜像,用Anaconda管理版本隔离,解决依赖问题确保环境可复现。
  • 实例过滤:保留有F2P测试(从失败到成功的测试用例)的实例,最终获634个任务。
  • 输入优化:补充测试中引用但文档未提及的实体名称,屏蔽PR编号等避免数据泄露。
3. NoCode-bench Verified
  • 构建:从候选中随机抽样238个任务,由5名资深开发者按任务清晰度和评估准确性标注,最终保留114个高质量任务。
  • 作用:支持资源有限情况下的轻量、可靠评估,与NoCode-bench Full(634个任务)互补。
4. 实验设置
  • 研究问题(RQs)
    • RQ1:与SWE-bench的特征差异
    • RQ2:LLMs在Verified子集的表现
    • RQ3:LLMs在Full子集的表现
    • RQ4:LLMs失败的原因
  • 模型与框架:6个LLMs(3个开源:Qwen3-235B等;3个闭源:GPT-4o等),采用Agentless和OpenHands框架。
  • 评估指标:成功率(Success%)、应用率(Applied%)、文件匹配率(File%)、回归测试通过率(RT%)等。
5. 实验结果
维度 NoCode-bench vs SWE-bench
输入复杂度 文档变更平均长度约为SWE-bench问题描述的2倍(739.06 vs 480.37 tokens)
定位难度 平均修改文件2.65个(SWE-bench 1.66个),13.56%实例需新增/删除文件(SWE-bench 1.70%)
编辑难度 平均代码变更179.12行(SWE-bench 37.71行),20%实例变更超200行
  • RQ2(Verified子集):Claude-4-Sonnet表现最佳,成功率15.79%;Agentless框架应用率(98%)高于OpenHands(59%)。
  • RQ3(Full子集):平均成功率5.68%,低于Verified子集,因任务更复杂且含噪声。
  • RQ4(失败原因)
    • 跨文件编辑能力不足:多文件任务成功率仅2.03%(Full子集)。
    • 代码库结构理解不足:修改破坏现有功能(如DeepSeek-v3的错误修改)。
    • 工具调用能力欠缺:Gemini-2.5-Pro因格式错误成功率为0。
6. 结论

NoCode-bench为无代码功能添加任务提供了挑战性基准,现有LLMs表现不佳,需在跨文件编辑、代码库理解和工具调用方面改进。


关键问题:

  1. NoCode-bench与现有软件工程基准(如SWE-bench)的核心区别是什么?

    答:NoCode-bench聚焦无代码功能添加场景,以文档变更为输入,而SWE-bench等多关注传统问题解决,以 issue 描述为输入;NoCode-bench任务涉及更多跨文件编辑(平均2.65个文件 vs SWE-bench 1.66个)、更长代码变更(平均179行 vs SWE-bench 37行),且包含更高比例的文件增删(13.56% vs 1.70%),难度更高。

  2. LLMs在NoCode-bench上的评估表现如何?主要发现是什么?

    答:最先进的LLMs表现较差,在Verified子集上最佳成功率为15.79%(Claude-4-Sonnet),在Full子集上平均成功率仅5.68%;Agentless框架整体表现优于OpenHands;模型在单文件任务上的成功率(如Claude-4-Sonnet达24.59%)显著高于多文件任务(仅3.77%),表明跨文件编辑是主要瓶颈。

  3. 导致LLMs在NoCode-bench任务中失败的关键原因有哪些?

    答:主要有三点:一是缺乏跨文件编辑能力,多文件任务成功率极低;二是对代码库结构理解不足,修改易破坏现有功能(如DeepSeek-v3的错误实现);三是工具调用能力欠缺,模型难以生成符合格式的工具指令(如Gemini-2.5-Pro因格式错误成功率为0)。

总结:一张难住了当前AI的"考卷"

NoCode-bench是首个聚焦"自然语言驱动无代码功能添加"的基准,包含634个真实任务(及114个精选任务),通过严谨的五阶段流程构建而成。实验显示,即使是最先进的LLM,在这张"考卷"上的表现也很糟糕,主要因为跨文件编辑、软件结构理解和工具调用能力不足。

这不仅是对当前AI的"压力测试",更为未来的研究指明了方向------要实现"无代码开发",AI还有很长的路要走。

相关推荐
江畔柳前堤21 小时前
roLabelImg 详细安装教程
开发语言·人工智能·后端·云原生
阿里云大数据AI技术21 小时前
分链路差异化设计的DSP准实时数仓|钛动科技基于阿里云实时计算 Flink 版 + DLF Paimon + EMR Serverless StarRocks 的实践
人工智能·flink
陕西企来客21 小时前
2026年7月AI智能搜索曝光趋势研判
大数据·人工智能·机器学习·ai智能搜索曝光
阿里云大数据AI技术1 天前
从算力到智能体,面向 Agentic AI 的基础设施演进
人工智能·agent
hangyuekejiGEO1 天前
GEO技术服务选型指南
大数据·人工智能·python
阿里云大数据AI技术1 天前
EMR Serverless Spark AI Function 的双维降本实践
人工智能·sql·spark
维基框架1 天前
GitHub源码处理提速 一趟扫描反而更慢
人工智能·github
冬奇Lab1 天前
代码库知识库系列(05):向量检索 vs 知识图谱——加了调用图并没有变更好
人工智能
AKAMAI1 天前
你的源服务器可能是你做出的最昂贵决定
运维·人工智能·云计算
冬奇Lab1 天前
【无标题】
人工智能·开源