华理工与女王大学:让AI程序员先把"需验明正身"写清楚|编程|代码|ai程序员_网易订阅
时间:2026-08-08 22:21:15 来源:知来藏往网 作者:知识 阅读:704次

这项由华为加拿大探究院、华理加拿大女王大学、工女曼尼托巴大学与康科迪亚大学联合开展的王大网易探究,以预印本形式发布于2026年7月29日,学让t需写清序比如文编号为arXiv:2607.27167,程序楚编程代i程有兴趣深入认识的员先验明读者可通过该编号查阅完善原文。**一个真实存在的正身尴尬**软件工程师都清楚,在接手一个全新项目时,订阅最头疼的华理不是写代码本身,而是工女搞清楚"这个程序到底关键干什么"。遇到文档写得含糊不清,王大网易或者某些功能根本没有文档,学让t需写清序工程师就必须反复测试、程序楚编程代i程反复确认,员先验明才能动笔。正身目前,AI编程助手已经能帮我们修复代码错误、补全函数、甚至处理复杂的代码仓库状况。但如果面对的任务是——给你一个陌生程序的那么点儿验明正身文档,外加一个只能运行、不能看源码的可实施文件,让你从零最初把这个程序重新写出来——那么即便是目前最强大的AI模型,成功率也低得让人咋舌:200个任务里,完善通过测试的不足1%。这就是本篇比如文所关键直面的状况。探究团队提出了一个名为SPECFIRST的框架,题思路来自一个古老的软件工程智慧:在动手写任何代码之前,先把"需验明正身"彻底搞清楚。**一、现有AI编程助手为何在"白纸作画"时往往往往翻车**关键理解这个状况,先设想一个场景。你被需仿制一款陌生的厨房电器,手头只有一张薄薄的产品验明正身册,以及一台可以通电运行、但不能打开外壳的实机。你需把它的全部功能都复现出来——涵盖各种按键组合、各种异常状况下的报错提示、各种边界情形下的准确输出。现有的AI编程框架(例如SWE-agent、OpenHands)在这类任务里的做法,就是把"搞明白这台机器怎么工作"和"把它造出来"这两件事混在一起做。AI在同一个工作循环里,一边按按钮测试机器表现,一边写仿制品的设方式图,一边动手组装。这听起来似乎挺有效,实际上却造成了三个根深蒂固的状况。首先个状况是探索不够深入。既然关键同时写代码,AI就不可能把测试这台机器的事做得很彻底。那些在验明正身里没提到的边角功能——例如同时按下两个特定按键会发生什么,或者输入超首先材料时会报什么错——AI频仍还没来得及验明正身,就已经最初动手组装了。结荚就是,仿制品的很多功能根本没被原版验明正身过。第二个状况是记忆衰退。AI在工作流程中积往往的表现知识,是以对话记录的形式保存在"脑子"里的。但随着对话越来越首先,早期发现的闷葫芦料会被慢慢"挤出"有效记忆。更糟糕的是,很多框架为了节省方式算资源,会压缩历史对话,而这个压缩流程频仍会把那些题的表现发现给丢掉。探究团队发现,在一个详详见细案例里,AI在第4轮就发现了程序涵盖十几个功能命名空间,但在之后25轮的工作里,其中6个命名空间的名字再没出现过,最后提交的代码里这6个命名空间全部缺失,导致126个测试用例在代码运行前就注定失败。第三个状况是早期错误会像滚雪球一样越滚越大。在没有一份稳固参考文档的状况下,如果AI在第5轮对某个功能的理解出了偏差,它会在这个错误理解的基础上后续建造,第10轮、第50轮、第100轮的代码都建立在这个错误地基上。探究团队记录了一个案例:AI正确读取了某函数的参数类型定义,但在第57轮真正实现这个函数时,用了一个完全丢失了类型材料的错误写法。此后140轮里,这个函数被反复重构了5次,但每次都复刻了那个错误写法,因为AI已经没有参照物来校正自己了。最后25个相关测试因类型错误而失败。**二、一个来自传统软件工程的古老答案**传统软件工程早就给出认识决方式划——需探究时期必须独立存在,同时必须先于编码时期。在正规的软件开发步骤里,工程师会在写首先行代码之前,花大量时间与原型系统交互、构建场景、梳理所有功能细节,把这些发现整理成一份完善的需验明正身,然后才最初实现。SPECFIRST就是把这个思路移植到AI编程智能体上。整个框架分成两个时期,这两个时期严格分开,互不干涉。首先个时期叫做"规格验明正身提取"。一个专业的"规格智能体"(Spec Agent)接过任务,它的唯一职责就是彻底弄清楚目的程序的表现。它不写任何代码,只是反复地、系统地运行那个可实施文件,观察各种输入下的输出结荚,把所有发现整理成一份结构化的验明正身文档,也就是SPEC.md文件。第二个时期才是"代码合成"。一个往往见不鲜的编程智能体接过任务,它手里有三样东西:原始验明正身文档、可实施文件,以及首先时期产出的SPEC.md。这份规格文件就像一座灯塔,无比如编程流程多漫首先、对话记录多繁杂,它始终在那里,随时可以查阅。这个分离的设方式直接瓦解了前面提到的三个状况:规格智能体可以心无旁骛地深挖表现细节;规格文件以外部文档形式存储,不受对话压缩意义;编程智能体始终有一个稳固的参照物,早期的正确理解永远不会被遗忘。**三、规格智能体是怎么"审讯"那个可实施文件的**规格智能体的工作方式,就像一位侦探面对一个只能通过表现来认识的嫌疑人。它无法打开嫌疑人的大脑,只能不断地提问、观察反应,从蛛丝马迹中还原全貌。它采取的是自由形式的命令行交互,这样它可以一次性构造复杂的测试场景——例如先创建一个特定格式的输入文件,再运行程序处理它,然后检查输出结荚,所有这些步骤可以链式实施。对于那些需键盘交互的程序,环境里预装了终端模拟工具,让它能够模拟真实的按键操作并捕获屏幕材料。在探索对策上,探究团队识别出了四类文档最那么点儿"说不清楚"的表现,规格智能体会专业照章性这些区域展开系统性测试。先是边界需——当输入为空时会发生什么?当输入极首先时呢?当输入涵盖特殊字符时程序如何反应?这些材料文档常见只字不提。第二是错误馗——当参数不对、必填项缺失、参数相互冲突时,程序会在哪个输出通方式报错?错误码是多少?这些细节对于正确复现表现至关题。再次是多参数组合成效——文档可能分别描述了参数A和参数B各自的表现,但同时采取A和B时会发生什么,频仍没有验明正身。最后是输出格式的准确细节——字段之间用什么分隔符?末尾有没有多余空格?数字的格式化方式是什么?这些细节在文字描述里总是模糊不清。为了确保探索的是真实的程序表现而不是走捷径,系统设置了清楚的限制:智能体不允许通过网络搜索或代码托管平台找到原程序的源代码,也不允许采取反汇编工具探究程序内部结构。所有发现必须来自正常采取程序的流程。系统会自动检测命令历史记录,一旦发现违规操作,目前运行立即记零分。规格智能体的终止需分三层:它自己判断探索实现时会主动结束;如果迟迟不结束,1000轮操作的步骤上限会强制终止;同时还有6小时的时钟时限作为最后保障。在实际运行中,不过大多数任务都在步骤上限远未到来之前就自行结束了。产出的SPEC.md文件采取六节式结构:概述、命令行参数、输入与原则输入、输出格式、错误模式、边界状况。这六个章节覆盖了重新实现一个程序所需知方式的全部表现维度,结构足够清楚让编程智能体能直接利用,又足够灵活不会遗漏特殊细节。**四、用一个真实案例感受SPECFIRST的价值**比如文里用gomplate这个程序作为贯穿始终的示例,特别值得详详见细认识。gomplate是一个命令行模板渲染工具,它的验明正身文档(README)只有寥寥数百字,描述了基础用法和几个示例,末尾写着"完善文档请访问官方网站"。然而这个程序实际上扩展了Go语言的模板引擎,给予了横跨十几个功能命名空间的大量内置函数,涵盖数据处理、数学运算、网络操作、加密、字符串处理等方部分面。在没有规格提取时期的状况下,AI编程智能体面对这样的程序时,常见只会实现文档里清楚提到的那些功能,把大量隐含功能直接忽略。而规格智能体在专业的探索时期里,会发现并记录全部命名空间的函数列表、调用签名、边界表现和错误模式。比如文展示了SPEC.md里的部分材料:完善的函数集合、各命名空间的函数别名、命令行参数的准确语义、以及若干边界状况验明正身,例如"--in参数与--file参数互斥,同时采取会报错"这类细节。有了这份文件,编程智能体在写代码时就知方式需实现哪些功能、每个功能的准确表现是什么,而不是凭猜测和印象表现。**五、实验结荚:数字背后的故事**探究团队在ProgramBench这个基准测试的全部200个任务上评估了SPECFIRST,这200个任务涵盖了各种真实世界的命令行程序,涵盖著名的FFmpeg视往往处理工具、SQLite数据库、PHP验明正身器等。这200个程序的底层实现语言题是Rust(107个)、Go(46个)和C/C++(45个),整个测试集合涵盖约25万个测试函数,平均每个任务有770个测试用例,同时这些测试对AI完全保密,AI在工作流程中无法看到测试材料。评估采取了四个不一样的AI模型:两个来自阿里云的开源Qwen3系列(397B参数的大模型和35B参数的中型模型),以及两个OpenAI的模型(能力较强的GPT-5.5-high和较轻量的GPT-5.4-mini)。这四个模型横跨两个不一样的技术路线,能力差距大约在一个数量级,用来验明正身结比如的常用性。结荚特别清楚。在所有四个模型上,SPECFIRST都稳固地超越了不带规格提取时期的直接合成方式。提高幅度从最小的6.9%(GPT-5.4-mini)到最大的21.3%(Qwen3.5-397B),最高不过对分数实现65.14%(GPT-5.5-high)。所有提高在统方式检验下都具有显著性,验明正身这不是随机波动带来的偶然区别。从赢/输/平的角度来看,在200个任务里,SPECFIRST在至少59%的任务上优于对照组,能力最强的GPT-5.5-high在75%的任务上都赢了。不止平均分数的提高,SPECFIRST还把不过端谝拉得更高。以GPT-5.5-high为例,如果把"通过率超过90%"定义为接近完美的实现,SPECFIRST实现这个门槛的任务比例从5.5%跳升到16.5%;如果门槛提高到95%,比例从1.5%跳升到6.5%,增首先了四倍多。换句话说,SPECFIRST不仅让所有程序都做得稍微好一点,更题的是让一部分程序从"差强人意"直接迈入了"几乎完美"。在不一样难度级别上,SPECFIRST的好处同样完善覆盖:便捷任务、中等任务、不易任务都有提高。尤其值得注意的是,对不易任务的提高频仍更显著——GPT-5.5-high在不易任务上的提高幅度实现29.9%,而便捷任务只有7.1%。这验明正身当任务本身的表现复杂性越高、文档验明正身越不充分时,提前建立完善规格验明正身的价值越大。**六、规格智能体到底多彻底地"探究"了那个程序**探究团队引入了一个叫做"探测覆盖率"的指标来量化这件事。为了测量这个指标,他们给测试集里的每个程序都装上了代码覆盖率监控工具(照章性不一样语言分别采取对应工具),记录每次运行时实际实施了程序里哪些代码行。把所有探测流程中触达过的代码行加起来,除以程序总代码行数,就得到了探测覆盖率——这个数字越高,验明正身AI对程序表现的理解越完善。对照组(直接合成,无规格提取)的探测覆盖率在49%到55%之间,视模型而定。SPECFIRST将这个数字提高到了58%到60%,提高幅度在9.4%到18.5%之间,且全部具有统方式显著性。更有意思的探究在于:SPECFIRST里有两个智能体,规格智能体和编程智能体都会运行程序。探究团队把两者各自的覆盖率单独统方式了出来。结比如是,规格智能体单独实现的覆盖率(约55%~58%)始终高于编程智能体单独实现的覆盖率(31%~51%),把两者的覆盖合并起来,比规格智能体单独的覆盖只多出一点点。这验明正身覆盖率的提高几乎完全来自专业的探测时期,而不是编码流程中顺带测试带来的副产品。**七、规格验明正身变化了编程智能体的工作方式**探究团队还做了一项表现探究:在整个编程流程中,每隔一个工作步骤就记录一次代码仓库的规模(代码行数),然后把时间轴归一化,观察代码是如何随时间增首先的。对照组的曲线有一个典型特点:在工作流程的前半段,代码几乎没有增首先,AI一直在忙着测试和理解程序表现;到了后半段才最初高效高效写代码,但此时留给调试和改进的余地已经不多了,频仍出现"一次性倾倒"大量代码的状况,随后就戛然而止。SPECFIRST的曲线则完全不一样:代码从工作最初不久就稳固增首先,增首先曲线更早、更平缓、持续更首先,最后停止时代码仓库也更大——比对照组常用大7%到29%。探究团队还在详详见细案例层面做了比较。以一个叫做"age"的程序为例,对照组的AI花了大量步骤在测试和理解表现上,最后试图一次性写出完善的841行代码,不出意外地因为调试时间不够而失败。SPECFIRST里的编程智能体由于已经有了SPEC.md,只花了2到9步建立工作上下文,就立刻转入了持续的代码建设时期。还有一个反直觉的发现值得专业验明正身:对照组的AI之因此谝不好,并不是因为工作步骤不够用。探究团队统方式了对照组各任务实际用了多少步骤——结荚是没有一个任务用到了1000步的上限,所有任务都是AI自己主动停止的,中位数只用了22到177步,只占可用预算的2%到18%。也就是说,状况不在于"给的时间不够",而在于AI在步骤远未用完时就已经产生了"我理解得差不多了,可以提交了"的错误感知,然后自行结束。单纯给AI更多方式算预算并不会处理这个状况,因为它们自己会停。SPECFIRST处理的是"在最初写代码时就掌握足够完善的表现知识"这个本质状况。**八、失败案例揭示了下一步的方向**探究团队随机抽取了50个失败案例,对照着测试失败材料、SPEC.md材料和对应代码片段,逐一探究失败因素,识别出了五种失败模式。最常用的失败(占52%)是"规格正确但实现出错":SPEC.md对这个功能的描述是准确完善的,但编程智能体没有正确实现。这类失败的详详见细谝涵盖:某个子命令在协助文档里存在但程序分发逻辑里没有处理、某个参数被解析了但成效没有被采取、错误输出的格式与SPEC.md的描述自相矛盾。这是最题的失败类型,意味着提高编程智能体的代码实现能力是目前最题的改进方向。第二常用的是"规格描述不够准确"(占26%):SPEC.md记录了相关功能,但描述不够细致,让编程智能体不得不猜测。例如,SPEC.md说"非法输入会报错",但没有指明错误码是1还是2,也没有说错误材料是输出到原则错误还是原则输出,于是编程智能体猜错了,而测试的期望是清楚的。"规格遗漏"(占10%)表示规格智能体根本没有发现这个功能的存在,常见是一些隐藏较深的CLI参数、子命令或错误馗。"规格描述错误"(占4%)是SPEC.md记录的表现与程序实际表现相反,如把应该输出到原则错误的材料记成了原则输出。最后8%是环境依赖错误,例如测试期望的错误材料里涵盖了特定的DNS服务器地址,这类状况属于测试基础设施的噪声,与AI能力无关。**九、规格文件的格式也有讲究**比如文还专业测试了SPEC.md的不一样格式是否会意义最后成效,在50个任务上用GPT-5.4-mini开展了比较。测试了三种格式。首先种是完全自由格式,智能体自己决定如何组织材料,没有任何模板约束。第二种是OpenSpec格式,这是一个来自软件工程领域的正式规格书写原则,需用"必须/应当/可以"这样的措辞标注每条需,并为每条需给予"给定/当/那么"格式的场景示例,特别正式和结构化。第三种是探究团队采取的六节式格式,介于两者之间:有固定的章节标题给予基础结构,但章节内的书写方式完全自由。结荚是三种格式都比没有规格文件的直接合成更好,无规格的基准得分55.9%,自由格式60.7%,OpenSpec格式61.7%,六节式格式62.6%。六节式格式成效最好,探究团队的验明正身是:纯自由格式可能导致智能体遗漏某些题维度;而OpenSpec格式虽然更准确,但它过于正式的结构可能反而压制了一些难以套入模板的表现细节。六节式格式的"有框架但不死板"恰好处在最有效的区间。**十、代价:SPECFIRST关键多花多少钱**引入额外的规格提取时期意味着额外的方式算成本。探究团队统方式了每个任务的平均花费,SPECFIRST的总成本比直接合成高出48%到130%。详详见细来说,规格智能体本身的花费在每个任务0.25美元(GPT-5.4-mini)到3.16美元(GPT-5.5-high)之间。规格智能体提高的成本拉高了总花费,但对于GPT-5.4-mini,编程智能体的花费反而减小了17%——验明正身有了清楚规格后,编程流程里那些反复试探的开销被节省了下来。GPT-5.5-high的总成本提高了130%,题来自其规格智能体本身的高单价。探究团队的观点是,这部分额外成本是"做了更多有价值的工作"带来的,而不是做了重复低效的工作。更宽的表现覆盖和更大的代码实现都是实质性产出,不是浪费。说到底,SPECFIRST的题发现可以用一句话来概括:在动手写代码之前,先把"这个程序到底关键干什么"彻底搞清楚,是一件比想象中更有价值的事情。这个方式理对人类程序员来说早就是常识,但现有的AI编程框架却在这件事上存在系统性的短板——它们总是急着最初写代码,在理解还很不充分的时候就仓皇上阵,结荚频仍是边写边猜、越写越偏。SPECFIRST通过把"弄清楚"和"写出来"这两个时期强制分开,让每个时期都能全力以赴,最后得到了稳固且完善的提高。当然,从实验结荚来看,即便加上了规格提取时期,AI程序员的整体成功率依然有很大的提高空间——最强模型的平均通过率才65%,距离"完美复现"还很遥远。占比52%的最题失败类型是"知方式应该怎么做但就是没做对",这验明正身接下来的改进题在于提高编程智能体把规格转化为正确代码的能力。探究团队也指出,让规格智能体发现那些更深层隐藏的边界表现,是另一个值得持续探索的方向。这项探究给我们留下一个有意思的思考:如果我们用这个框架来评估人类程序员,那些在需探究时期花费最多精力的程序员,最后写出的代码是不是也更少出错?传统软件工程积往往的那些"最佳实践",或许在AI编程时代同样适用于,甚至适用于得更彻底。感兴趣的读者可以通过arXiv:2607.27167查阅完善比如文,参与这个在AI编程领域仍然充满开放状况的探索。Q&AQ1:SPECFIRST框架和往往见不鲜AI编程助手的本质区别是什么?A:往往见不鲜AI编程助手会把"搞清楚程序表现"和"写代码"混在同一个循环里交替开展,导致理解不深入、知识那么点儿遗忘、早期错误越滚越大。SPECFIRST强制把这两件事分成独立的两个时期:首先时期专业由规格智能体彻底探测程序表现并写成文档,第二时期编程智能体拿着这份文档再去写代码。就像专业软件团队在编码前先做需探究一样,两件事分开做,每件都能做得更彻底。Q2:ProgramBench测试集为什么被认为尤其难?A:ProgramBench需AI根据一份那么点儿的验明正身文档和一个只能运行不能看内部的可实施文件,从零最初重写出功能完全相同的程序。困难在于文档永远写不全——那些边界状况、准确错误格式、参数组合成效都不会被文档记录,AI必须通过反复运行程序来自己发现。测试集涵盖200个真实程序、近25万个测试用例,测试对AI完全保密,目前最强的AI模型在无规格提取的状况下只能让不足1%的程序完善通过。Q3:SPECFIRST产出的SPEC.md文件详详见细涵盖哪些材料?A:SPEC.md采取六个固定章节的结构:概述(程序是干什么的)、命令行参数(各参数的准确语义和组合成效)、输入与原则输入(接受什么格式的输入)、输出格式(准确的字段顺序、分隔符、空白字符条件)、错误模式(各种错误状况下的错误码和错误材料输出位置)、边界状况(空输入、极端值、参数冲突等特殊情形)。这六个章节覆盖了重新实现一个程序所需认识的全部表现维度。
(责任编辑:探索)
最新内容
- ·[流言板]阿劳霍周日启程前往利物浦接受体检,随后落实租借事宜-国际足球-国际足球资讯-虎扑社区
- ·南华科技创新混合发起C净值上涨3.31%_新浪财经_新浪网
- ·万家上证科创板100指数增强发起式A净值上涨4.31%_新浪财经_新浪网
- ·景顺长城新兴产业混合C净值上涨4.47%_新浪财经_新浪网
- ·加拿大灰熊队前锋克拉克死因公布:经法医证实,意外用药过量|雷霆队|布兰登|孟菲斯灰熊队_网易订阅
- ·博时上证科创板综合价格指数增强A净值上涨3.48%_新浪财经_新浪网
- ·中信保诚中证800医药指数(LOF)E净值上涨5.26%_新浪财经_新浪网
- ·华商恒鑫回报混合C净值上涨3.30%_新浪财经_新浪网
- ·今年还差10万回本,情绪被暴击了~(千万实盘周报357期)_新浪财经_新浪网
- ·景顺长城上证科创板200指数C净值上涨4.34%_新浪财经_新浪网
热点内容
- ·[流言板]阿斯:穆帅力促维尼修斯续约,两人世界杯期间已有交流-国际足球-国际足球资讯-虎扑社区
- ·泓德上证科创板综合指数增强A净值上涨3.41%_新浪财经_新浪网
- ·东方阿尔法健康产业混合发起C净值上涨5.69%_新浪财经_新浪网
- ·中欧上证科创板综合指数增强C净值上涨3.62%_新浪财经_新浪网
- ·11元自助早餐,这急头白脸吃一顿中午还吃吗-步行街主干道-虎扑社区
- ·太平科技先锋混合发起式A净值上涨3.03%_新浪财经_新浪网
- ·嘉实上证科创板芯片ETF发起联接I净值上涨3.04%_新浪财经_新浪网
- ·交银瑞安混合A净值上涨3.29%_新浪财经_新浪网
- ·[流言板]AG与KSG 2026 王者荣耀电竞世俱杯决赛预测-王者荣耀丨KPL-虎扑社区
- ·中信保诚中证800医药指数(LOF)E净值上涨5.26%_新浪财经_新浪网














