这项由Skywork AI和昆仑公司联合进行的突破性研究于2025年6月24日发表,论文题目为"Skywork-SWE: Unveiling Data Scaling Laws for Software Engineering in LLMs"。该研究首次在软件工程领域验证了人工智能的数据规模效应,开发的Skywork-SWE-32B模型在不使用验证器或多次尝试的情况下,在SWE-bench Verified基准测试中达到了38.0%的准确率,创下了开源模型的新纪录。有兴趣深入了解的读者可以通过论文链接https://arxiv.org/abs/2506.19290获取完整研究内容,模型已在https://huggingface.co/Skywork/Skywork-SWE-32B开源发布。
当我们的电脑程序出现故障时,通常需要程序员花费大量时间查找问题、修改代码、测试修复效果。现在,人工智能正在学会像经验丰富的程序员一样自动修复软件问题。这个过程就像培养一位虚拟程序员,让它学会诊断和治疗软件的"疾病"。
软件工程对人工智能来说是一个极其复杂的挑战。与简单的代码生成不同,修复真实软件问题需要人工智能具备两种关键能力:持续的迭代问题解决能力(通常需要超过50轮交互)和长文本依赖关系理解能力(需要处理超过32000个字符)。这就像要求一位医生不仅要能快速诊断病情,还要能制定长期治疗方案并持续调整。
现有的软件工程数据集存在三个主要问题。首先是缺乏足够的环境和验证支持,就像医生没有完整的检验设备一样,无法准确验证治疗效果。其次是高质量训练数据稀缺,相比其他人工智能领域动辄百万级的数据量,软件工程领域的高质量数据只有几千个实例。最后是数据规模效应的适用性不明确,没有人知道在软件工程这个特殊领域,增加训练数据是否真的能让模型变得更聪明。
为了解决这些问题,研究团队开发了一套自动化的数据收集流水线,就像建造了一座现代化的"软件医院"。这座医院能够系统地收集和处理大量真实的软件问题案例,最终构建了包含10169个经过严格验证的Python任务实例的Skywork-SWE数据集,这些实例来自2531个不同的GitHub仓库。每个实例都配备了专门的运行环境镜像,确保能够自动执行和验证单元测试。
一、构建软件修复的"医学院":全自动数据收集系统
研究团队设计的数据收集系统就像建立一所培养软件医生的医学院。这个系统分为三个主要阶段,每个阶段都有其特定的功能和目标。
第一阶段是数据收集和预筛选,相当于医学院的招生环节。系统首先从GitHub上收集了151472个代码仓库的元数据信息,就像收集医学院候选人的基本信息一样。这些仓库按照星标数量排序,优先选择那些受欢迎程度较高的项目,因为这些项目通常代表了更成熟和更有价值的软件。然后系统从这些仓库中提取pull request(代码合并请求)数据,形成初始的任务实例。系统只保留那些已经合并且解决了GitHub问题的PR,并且这些PR必须修改了测试相关的文件。经过这一轮筛选,系统从146568个初始任务实例中保留了23389个有效实例。
接下来是安装验证环节,就像医学院的入学体检。系统将这些候选任务实例在基础环境中进行安装测试,通过执行预定义的安装命令来验证环境的可用性。这个过程发现许多实例由于依赖问题或配置问题无法正常安装,最终筛除了123179个失败实例,保留了23389个通过验证的实例。
第二阶段是环境配置和基于执行的验证,这相当于为每位医学生配备专门的实验室和诊断设备。由于不同软件项目的环境需求差异巨大,手动配置每个项目的运行环境是非常耗时且难以规模化的工作。研究团队采用了统一的默认配置策略,就像标准化医学实验室的设备配置一样。
这个统一配置包括几个核心组件。首先设置Python 3.9作为默认运行环境,安装构建原生扩展所需的基本系统包(如make、gcc、g++、pkg-config)。然后通过requirements.txt文件安装Python依赖,并补充常用的开发和测试包如pytest、hypothesis、mock和setuptools。为了适应不同GitHub仓库的命名约定差异,配置还包括对可选额外包如test、tests和dev的回退安装命令。测试执行使用统一的pytest命令进行标准化,禁用缓存使用并抑制弃用警告,以产生一致和可重现的结果。
系统使用Docker技术自动构建隔离的运行环境镜像,采用三层镜像架构来最小化冗余计算并支持镜像复用。基础层镜像从Ubuntu 22.04构建,安装基本系统包并配置Miniconda和conda-forge渠道。环境层镜像在基础镜像上创建Conda环境并安装依赖包。实例层镜像进一步扩展环境,克隆目标仓库、检出特定提交、安装系统依赖并执行可编辑安装。
验证过程包括两个步骤:空测试和黄金测试。空测试将测试补丁应用到基础提交并运行测试套件,失败的测试标记为empty-FAIL,通过的标记为empty-PASS。黄金测试同时应用测试补丁和生成的代码补丁,然后重新运行测试套件,失败的测试标记为gold-FAIL,通过的标记为gold-PASS。系统定义FAIL_TO_PASS为在空测试中失败但在黄金测试中通过的测试集合,PASS_TO_PASS为在两个阶段都通过的测试。只有具有非空FAIL_TO_PASS集合的实例才被保留,表明应用的补丁解决了至少一个失败的测试用例。经过这一验证过程,从23389个候选实例中筛除了13220个,最终得到10169个验证实例。
第三阶段是代理轨迹生成,相当于记录优秀医生的诊疗过程供学生学习。研究团队利用多个高性能的专有代码LLM(如GPT-4、Claude、Gemini等)为每个任务实例自动生成代理轨迹,使用OpenHands代码代理框架,每个轨迹限制最多100轮交互。生成的轨迹需要通过严格验证,只有最终补丁能通过所有测试的轨迹才被视为有效。系统将验证过的轨迹聚合为多轮监督微调数据,确保数据质量的一致性。
最终的Skywork-SWE数据集包含10169个验证实例,来自2531个独特仓库,每个实例都配备专门的Docker镜像支持可重现执行。平均每个镜像占用约1.2GB存储空间,总存储占用约11.9TB。
二、数据集的丰富特征:软件世界的真实写照
完成的Skywork-SWE数据集就像一个包含各种疑难杂症的医学案例库,展现了真实软件世界的复杂性和多样性。
在规模方面,Skywork-SWE显著超越了现有基准。它包含10169个验证实例,是SWE-Gym Lite和SWE-bench Verified规模的20多倍,后两者分别只有230和500个实例。更重要的是,这些实例跨越了超过2500个仓库,而之前的数据集最多只包括12个仓库。这种更广泛的覆盖引入了更多样化的真实软件工程场景。
数据集展现了GitHub仓库来源的实质性多样性,遵循长尾分布模式。大约450个仓库(约占4.4%)贡献了超过66%的实例,而剩余的9719个仓库贡献了不到34%的实例。超过9000个仓库每个包含少于三个实例,这显著增强了数据集的多样性。知名项目如pydantic、dvc、sqlglot、pennylane与大量较小仓库并存,表明了软件项目的广泛代表性。
从时间分布来看,数据集实例的年度分布从2013年到2025年呈现有趣的模式。早期(2013-2015年)实例数量相对较少,分别为10、35和85个。从2016年开始出现显著增长,2017年超过500个,2020年达到峰值1678个。2021年到2023年每年实例数量持续超过1500个,仅2024年就贡献了超过700个实例。总体而言,超过89.5%的实例来源于2018-2024年期间,反映了对近期软件开发活动的强烈关注。
在编辑复杂性方面,Skywork-SWE实例展现了关联补丁编辑的不同程度结构复杂性。41.6%的实例涉及单个文件的编辑,但超过80%的修改涉及最多三个文件,展现了集中和分布式复杂性。64.7%的实例影响少于两个函数,而超过15个函数的更改少于2%。近50%的实例包含一到三个代码块,而跨越十个以上代码块的编辑占不到12%。70.3%的实例涉及少于50行编辑代码,超过85%保持在100行以内。
验证强度也是数据集的重要特征。每个实例都通过单元测试进行验证,许多展现多个测试用例。FAIL_TO_PASS覆盖范围比之前基准更全面,平均每个实例有10.2个从失败到通过的测试和86.2个保持通过的测试,允许更严格的补丁正确性验证并鼓励模型输出的稳健评估。
三、训练超级软件医生:Skywork-SWE模型的诞生
有了丰富的"医学案例库"后,研究团队开始训练他们的超级软件医生。这个过程就像培养一位能够处理各种复杂软件问题的专家医生。
训练过程首先需要收集高质量的专家示范。研究团队使用多个高性能的专有LLM(包括Gemini-2.0-Flash、Qwen-2.5-Max、Doubao-1.5-Thinking-Pro、DeepSeek-V3、o3-mini、GPT-4.1和Gemini-2.5-Pro等)在Skywork-SWE数据集上进行轨迹生成。这些模型就像不同专业背景的资深医生,每个都有自己的诊疗风格和专长。
轨迹生成的过程充满挑战。即使是最先进的专有LLM在Skywork-SWE数据集上也只能达到有限的成功率。表现最好的Gemini-2.5-Pro解决率仅为20.23%,其次是GPT-4.1的18.54%和o3-mini的15.94%。其他模型表现更低,DeepSeek-V3和Qwen-2.5-Max在确定性解码(温度=0)下分别只达到12.92%和8.29%的解决率。这种低性能归因于GitHub仓库的广泛多样性和大量单元测试的存在。总体而言,执行SWE任务具有挑战性,数据收集效率相对较低。
尽管单个模型的成功率有限,但通过汇总不同模型在不同温度设置下的成功轨迹,研究团队最终收集了8447个成功轨迹。经过格式一致性的仔细筛选,最终用于训练的成功轨迹减少到8209个实例。
模型训练采用监督学习方法,以Qwen-2.5-Coder-32B-Instruct作为基础模型。训练过程使用TorchTune框架在8块NVIDIA H800 GPU上进行12小时微调。训练配置包括AdamW优化器,权重衰减0.01,余弦学习率调度,峰值学习率5e-5,对超过8000个多轮长文本轨迹训练3个epoch。
训练完成的Skywork-SWE-32B模型支持最多32768个令牌的上下文长度。当交互轮数超过50时,生成的训练轨迹可能超过32K令牌限制。为了适应这样的长序列,在将模型上下文长度从32K扩展到128K令牌时需要在LLM训练框架中使用序列并行技术。
四、验证超级医生的诊疗能力:突破性实验结果
训练完成后,研究团队需要验证这位超级软件医生的实际诊疗能力。他们在SWE-bench Verified基准上进行了全面测试,这个基准就像软件工程领域的医师资格考试。
Skywork-SWE-32B在标准推理策略下(单次尝试,N=1)达到了38.0%的准确率,这一成绩超越了之前所有基于Qwen2.5-Coder-32B的开源模型。特别值得注意的是,在相同LLM骨干网络下,该模型比SWE-smith-LM-32B高出绝对6.8个百分点,充分展现了高质量训练轨迹的有效性。
更令人兴奋的是,当应用测试时缩放(TTS)技术时,Skywork-SWE的准确率进一步提升到47.0%,在32B规模的开源SWE代理模型中创下了新的技术水平。这种改进证明了清晰的数据缩放规律和测试时缩放技术在SWE任务上进一步增强性能的潜力。
实验结果显示了一个重要现象:代码代理框架比模型规模更重要。虽然更大的开源模型能带来轻微改进,但性能提升相对有限。例如,Qwen-2.5-72B和DeepSeek-V3-671B分别达到30.2%和38.8%的解决率。这些结果表明,仅仅增加模型规模并不是驱动软件工程任务性能的主导因素。相反,任务特定的高质量训练数据和精心设计的代码代理框架发挥更关键的作用。
在所有评估的代码代理框架中,OpenHands通过在专有和开源模型上一致达到最高解决率而脱颖而出。超过一半的评估方法采用OpenHands,强调了其在复杂SWE任务中的有效性和广泛采用。
五、发现软件工程的神奇规律:数据规模效应
研究中最令人兴奋的发现是在软件工程领域首次验证了数据规模效应。这个规律就像发现了软件医生学习能力的基本定律。
实验结果清晰地展示了Skywork-SWE-32B在SWE-bench Verified上的解决率与训练轨迹数量之间的对数线性关系。性能随着数据量增加呈现明确的上升趋势,没有显示饱和迹象。几个关键数据点说明了数据缩放的实际益处:在2000个轨迹时,Skywork-SWE-32B超越了SWE-Dev-32B;在6000个轨迹时超越了OpenHands-LM-32B-v0.1;在8000个轨迹时超越了SWE-Agent-LM-32B。
这些结果强调了扩大高质量训练数据可以匹配甚至超越通过更复杂代理设计在SWE任务中获得的性能提升。当训练轨迹数量从125个增加到8000个时,模型性能从6.4%稳步提升到38.0%,展现了持续的改进趋势。
研究团队还分析了测试时缩放策略对模型性能的影响。Best-of-N采样效果显著,随着独立推理次数N的增加,解决率持续改善。当N提升到2、4、6和8时,解决率分别达到42.4%、43.2%、45.2%和47.0%。这种趋势表明额外的推理有助于减轻输出变异性,在推理时缩放计算可以显著增强模型性能。
最大推理轮数的影响同样重要。解决率从10轮的28.2%增加到100轮的38.0%。改进在早期阶段最为显著,从10轮到25轮产生4.6个百分点的增益,而后期增长较小,如从75轮到100轮只有1.0个百分点增益。SWE任务通常需要多轮交互来解决相应GitHub仓库中的问题,因此当测试时缩放预算通过额外交互轮数增加时,LLM显著受益于扩展的迭代缩放。
六、实践中的经验智慧:构建软件工程AI系统的指南
通过开发Skywork-SWE的过程,研究团队积累了宝贵的实践经验,就像资深医院院长总结的办院心得。
在收集GitHub仓库时,数据泄漏问题需要特别关注。SWE-bench Verified包含来自12个流行Python GitHub仓库的500个实例。在从官方PyPI集合策划新的SWE数据集时,必须排除已包含在SWE-bench Verified中的仓库以防止潜在数据泄漏。此外,在来自同一仓库的pull request实例上进行训练和测试可能导致性能虚高,这可能由于代码库级别的部分污染或来自相同仓库的pull request之间比来自不同仓库的更高相似性造成。
运行环境配置是另一个重大挑战。SWE任务中的每个实例都需要相应的运行环境来验证生成的补丁是否通过单元测试。研究团队采用了经过手动验证具有合理覆盖范围的默认配置来筛选具有有效环境的实例。然而,这种方法不可避免地导致显著的数据损失,因为不可能使用单一统一配置命令为跨多样仓库的不同pull request实例配置所有正确环境。考虑到常用GitHub仓库的有限数量,这个高质量数据源值得更精细和高效的环境设置方法。
运行环境重用是一个实际的工程问题。在代理轨迹生成期间,每个任务实例的运行时Docker镜像必须在本地构建以支持推理和验证。这个过程对磁盘密集度很高,500个SWE-bench Verified任务的完整实例级镜像集需要大约1000GB存储空间。由于磁盘容量有限,镜像在推理后实时删除,必须为后续验证重建,导致冗余开销。为解决这个问题,研究团队将实例分成小批量,而不是在验证前完成所有实例的推理。对每个批次,他们执行推理,然后验证,最后删除相应镜像以释放磁盘空间。这种改进的流水线在存储有限时重用构建的镜像进行推理和验证,显著减少冗余Docker操作。
代码代理框架的选择同样关键。研究中使用了最新OpenHands(版本0.32.0)代码代理框架。不同版本的OpenHands在系统提示和执行流水线方面表现出变化,这可能导致实质性性能差异。因此建议使用最新版本的OpenHands框架来评估SWE-bench。重要的是,在OpenHands版本之间切换需要更新相应的SWE-bench代码分支和Docker Hub命名空间以确保兼容性。
训练代理模型时也面临技术挑战。Skywork-SWE-32B模型目前支持最多32768个令牌的上下文长度。然而,当交互轮数超过50时,生成的训练轨迹可能超过32K令牌限制。为了适应这样的长序列,在将模型上下文长度从32K扩展到128K令牌时,LLM训练框架中需要序列并行。未来工作计划探索支持序列并行的LLM训练框架,如VeRL和360-LLaMA-Factory,以支持最多128K令牌输入的多轮监督微调。
七、展望未来:软件工程AI的发展方向
这项研究为软件工程AI领域开启了新的篇章,就像为医学人工智能指明了发展方向。
研究团队提出了两个特别有前景的未来发展方向。首先,现有的基准测试如SWE-bench几乎完全专注于Python,限制了它们在更广泛软件开发环境中评估LLM的能力。将评估扩展到多种编程语言对于更全面评估软件工程能力至关重要,正如Multi-SWE-Bench等倡议所展示的那样。
其次,SWE任务在运行环境中执行和验证单元测试以提供准确验证的奖励。这种设置为探索在线强化学习方法铺平了道路,这在最近的LLM社区中是一个活跃的研究方向。
研究结果强调了高质量、基于执行的数据仍然是SWE代码代理的主要瓶颈,系统性数据扩展可以大幅缩小与专有LLM的差距。这个发现对整个开源AI社区具有重要意义,表明投资于数据质量和规模可能比单纯增加模型参数更有效。
从更广阔的视角看,这项工作证明了数据缩放规律在专业领域如软件工程中的普遍适用性。这为其他需要复杂推理和多步骤问题解决的专业领域(如科学研究、医学诊断、法律分析等)提供了有价值的参考。
Skywork-SWE的成功还展示了开源AI生态系统的潜力。通过开放数据集、模型权重和详细的技术报告,研究团队为整个社区贡献了宝贵资源,这种开放协作的精神正是推动AI技术快速发展的重要动力。
归根结底,这项研究不仅仅是技术上的突破,更是对AI如何学习和进步这一根本问题的深入探索。正如我们看到的,给AI足够多的高质量学习材料,它就能在复杂的专业领域达到接近人类专家的水平。这个发现对于未来AI系统的设计和训练具有深远的指导意义,也让我们对AI在各个专业领域发挥重要作用的未来更加充满期待。
Q&A
Q1:Skywork-SWE是什么?它能解决什么问题? A:Skywork-SWE是一个能够自动修复软件Bug的人工智能模型。它可以像经验丰富的程序员一样,自动诊断软件问题、修改代码并验证修复效果。该模型在软件工程基准测试中达到38.0%的准确率,使用测试时缩放技术后可达47.0%,创下了开源模型的新纪录。
Q2:数据规模效应在软件工程中真的有用吗? A:是的,这是该研究的重要发现。实验证明,随着训练数据量从125个增加到8000个实例,模型性能从6.4%持续提升到38.0%,呈现清晰的对数线性关系且没有饱和迹象。这证明了在软件工程这个复杂领域,更多高质量数据确实能让AI变得更聪明。
Q3:普通开发者能使用Skywork-SWE吗?如何获取? A:可以。研究团队已将Skywork-SWE-32B模型在HuggingFace平台开源发布(网址:https://huggingface.co/Skywork/Skywork-SWE-32B),开发者可以免费下载使用。同时,包含10169个验证实例的Skywork-SWE数据集也将开放,为软件工程AI研究提供宝贵资源。
好文章,需要你的鼓励
这项研究提出了"高效探测"方法,解决了掩码图像建模AI难以有效评估的问题。通过创新的多查询交叉注意力机制,该方法在减少90%参数的同时实现10倍速度提升,在七个基准测试中均超越传统方法。研究还发现注意力质量与分类性能的强相关性,生成可解释的注意力图谱,展现出优异的跨域适应性。团队承诺开源全部代码,推动技术普及应用。
伊利诺伊大学研究团队开发了CLAIMSPECT系统,通过层次化分解复杂争议、智能检索相关文献、多角度收集观点的方法,将传统的"真假"判断转变为多维度分析。该系统能够自动构建争议话题的分析框架,识别不同观点及其支撑证据,为科学和政治争议提供更全面客观的分析,已在生物医学和国际关系领域验证有效性。
清华大学研究团队首次提出情感认知融合网络(ECFN),让AI能像人类一样理解和表达情感。该系统通过多层次情感处理架构,在情感识别准确率上比现有最佳系统提升32%,情感表达自然度提升45%。研究突破了传统AI情感理解的局限,实现了跨模态情感融合、动态情感追踪和个性化情感建模,为医疗、教育、客服等领域带来革命性应用前景。
哈佛大学研究团队通过创新的多智能体强化学习方法,让AI在战略游戏中学会复杂推理。研究发现AI通过游戏竞争能发展出类人思维能力,在逻辑推理、创造性解决问题等方面表现显著提升。这项突破性成果为未来AI在医疗、教育、城市管理等领域的应用奠定基础,展现了通过模拟人类学习过程培养真正智能AI的新路径。