字节跳动豆包大模型团队最近开源了一个新东西——Multi-SWE-bench,这是第一个真正意义上的多语言代码修复评测基准。它的出现,其实是为了回答一个很现实的问题:当大模型面对Python以外的编程语言时,代码修复能力到底行不行?
从ChatGPT到4o、o1、o3、Claude-3.5/3.7,再到Doubao-1.5-pro、DeepSeek-R1,大模型在编码世界掀起了一波又一波浪潮。如今,让AI自动解决GitHub上提交的真实Bug,早已成为衡量模型智能水平的重要标尺。但一个尴尬的事实摆在眼前:现有的主流评测数据集,比如SWE-bench,几乎全是Python项目。这导致部分模型在Python榜单上分数亮眼,可一旦切换到其他语言,表现就大打折扣。
为了弥补这个短板,字节跳动豆包大模型团队正式开源了Multi-SWE-bench。它以SWE-bench为基础,首次将评测范围扩展到了Python之外的7种主流编程语言,算是真正面向“全栈工程”的评测基准。所有数据都来自GitHub issue,团队花了近一年时间构建,目标只有一个——更准确地评估和提升大模型的高阶编程智能水平。
该数据集是业内首个面向多语言代码问题修复的大模型评测基准,覆盖Ja va、TypeScript、C、C++、Go、Rust和Ja vaScript等编程语言。作为一个标准化、可复现、覆盖多语言的开源评测基准,它的使命是推动自动编程技术从“只能搞定Python”这类单语言任务,迈向能解决真实复杂问题的通用型智能体。随着强化学习的兴起,团队还同步开源了Multi-SWE-RL,为强化学习在真实代码环境中的训练提供了标准化、可复用的数据基础设施。目前,论文、代码和数据集已经全部公开。
团队坦言,这次开源不过是万&里长征的第一步。单靠一个团队的力量,远远追赶不上技术发展的需求。所以,他们诚挚邀请更多研究者加入,共同参与开源基准和数据基础设施建设。
1. 主流代码基准的局限:语言单一、任务有限
代码生成任务,考验的是大模型的逻辑推理、上下文理解等综合能力。而SWE-bench这类代码修复基准,正是检验这些能力的“试金石”。SWE-bench基于GitHub issue,要求模型自动定位并修复Bug,兼具跨文件修改、复杂语义推理和上下文理解等挑战。相比HumanEval、MBPP等传统代码生成任务,它更贴近现实开发场景——这也是它成为衡量大模型高阶编程智能关键标尺的原因。
然而,随着行业快速发展和模型能力不断进化,SWE-bench的局限性逐渐暴露。最突出的问题有两个:一是语言维度单一——几乎所有评测都集中在Python,跨语言泛化能力得不到有效评估;二是任务难度不足——现有基准大多是短patch、单文件修复,超多文件、多步骤、超长上下文这类复杂场景基本没有覆盖。同时,任务也没有做难度分级,难以系统衡量模型在不同能力层次上的表现。
这些短板,让行业迫切需要一套覆盖主流编程语言、具备高质量标注实例与难度分级的多语言Bug修复评测集。
2. 涵盖7种语言、1632个真实修复任务的Multi-SWE-bench
Multi-SWE-bench的出发点很明确:补全现有基准在语言覆盖上的不足,系统评估大模型在复杂开发环境下的多语言泛化能力。它的核心特性包括:
- 首次覆盖7种主流编程语言(Ja va、Go、Rust、C、C++、TypeScript、Ja vaScript),构建多语言开发环境下的代码修复任务;
- 引入任务难度分级机制,将问题划分为简单(Easy)、中等(Medium)和困难(Hard)三类,涵盖从一行修改到多文件、多步骤、多语义依赖的开发挑战;
- 全部1632个实例来源于真实开源仓库,经过统一的测试标准和专业开发者的审核筛选,确保每个样本都有清晰的问题描述、正确的修复补丁以及可复现的运行测试环境。
基于Multi-SWE-bench的实验结果很有意思。虽然当前主流模型在Python上的修复率表现不错,但切换到其他语言,平均修复率普遍不足10%。
从数据可以清楚看到,部分主流模型在Python上的表现远远优于其他语言,且随着任务难度增加,修复率逐级下降。这说明,多语言代码修复仍然是大模型智能能力的一道重要分水岭,也是推动AI迈向通用编程智能体的关键方向。
3. 历时近一年系统性构建,引入严格人工验证
在构建Multi-SWE-bench的过程中,团队设计并执行了一套系统性的数据流程,分为五个阶段:项目筛选、数据采集、环境构建、任务验证和人工审核。每一步都力求最大程度上保证数据的真实性、全面性和可用性。
第一步:开源仓库筛选
团队基于GitHub公开仓库,从多个维度筛选高质量项目,确保覆盖7大主流语言。选择标准包括:GitHub Stars超过500(社区活跃度);至少半年持续维护;有CI/CD支持(可通过GitHub Actions等工具自动化构建与测试);构建过程可复现。
第二步:Pull Request爬取
完成仓库初筛后,通过自动化爬虫收集所有PR,并应用过滤规则:PR必须关联至少一个GitHub issue;包含测试文件的修改(确保修复行为可验证);已被合并至主分支。每条PR记录会提取关键信息,包括原始issue描述、修复补丁、测试补丁、commit信息等。
第三步:构建可执行的Docker环境
为了保证每个任务都具备完整的可运行性,团队基于每个PR构建了对应的Docker容器,复刻其运行环境。通过CI/CD配置、README等元信息提取依赖项并自动生成Dockerfile。对于构建失败的情况,会手动排查并尽力修复。
第四步:PR过滤和数据集制作
每个PR在构建好的环境中依次运行三种状态的测试:原始状态(未打任何patch)、仅应用测试补丁、同时应用测试与修复补丁。通过分析三阶段测试日志,识别是否存在有效的修复行为(如FAILED→PASSED),并排除存在回归风险或测试行为异常的样本。经过这一阶段,最终保留了2456条候选数据。
第五步:严格的人工验证机制
为了提升数据可靠性,团队引入了人工双重标注流程。共有68位专业标注者参与审核,每位标注人员都具备对应语言的开发经验。每条样本由两位独立标注员标注并交叉复核,最终所有标注结果还要通过内部QA团队的抽检。经过这轮筛选,最终保留了1632条高质量实例,且公开了所有标注问卷与评分数据,确保透明度。
这套系统化的数据构建流程,为未来自动编程智能体的评估与训练打下了坚实基础。
4. Multi-SWE-RL开源与社区招募
随着GPT-4o、o1、o3等新一代模型的爆火,强化学习方法在自动编程中的潜力越来越受到关注。基于“RL将对代码智能体起到重要推动作用”的判断,豆包大模型团队进一步构建了Multi-SWE-RL——为强化学习在代码环境中的训练提供统一、标准的数据基础。这让模型不仅有了学习的“教材”,还拥有了学习的“环境”。
作为首批贡献者,团队初步贡献了4723个实例,每个实例都配备可复现的Docker环境,支持一键启动、自动评估和快速接入RL训练框架。同时,团队完整开源了数据构建流程与工具链。
目前,团队同步启动了开源社区计划,鼓励开发者共同参与数据集扩展、RL数据贡献与新方法评测。Multi-SWE-RL项目提供了详尽的贡献教程、激励机制和实时更新的任务看板,确保社区协作高效透明。所有新增数据与评测结果将定期纳入后续公开版本,并署名所有有效贡献者。
豆包大模型团队期待与更多开发者、研究者共同推进RL for Code生态建设,为构建通用软件智能体奠定基础。
5. 写在最后
Multi-SWE-bench的定位,是成为大模型在多种主流编程语言与真实代码环境中的系统性评测基准,推动自动编程能力走向更实用、更工程化的方向。相比于以往聚焦Python的单语言任务,它更贴近现实的多语言开发场景,也能更真实地反映当前模型在“自动化软件工程”方向上的能力边界。
未来,团队将持续拓展Multi-SWE系列的覆盖范围——包括新增语言、扩展更多软工任务,并通过社区共建机制,鼓励更多研究者和开发者参与基准构建与RL训练数据贡献。
