five

RepoZero

收藏
github2026-05-11 更新2026-05-12 收录
下载链接:
https://github.com/JesseZZZZZ/RepoZero
下载链接
链接失效反馈
官方服务:
资源简介:
RepoZero是一个基准数据集和评估套件,用于评估大型语言模型执行零样本仓库级别代码翻译的能力——跨编程语言生态系统迁移整个真实世界的库代码库。它涵盖两个翻译任务:C2Rust(C++到Rust)和Py2JS(Python到JavaScript),总计包含35个开源库的600个测试文件。

RepoZero is a benchmark dataset and evaluation suite for assessing the capability of large language models to perform zero-shot repository-level code translation, i.e., migrating entire real-world library codebases across programming language ecosystems. It covers two translation tasks: C2Rust (C++ to Rust) and Py2JS (Python to JavaScript), totaling 600 test files across 35 open-source libraries.
创建时间:
2026-05-06
原始信息汇总

数据集概述:RepoZero

RepoZero 是一个用于评估大型语言模型(LLM)进行 零样本仓库级代码翻译 能力的基准数据集和评估套件。其目标是测试模型将整个真实世界库代码库跨编程语言生态系统进行迁移的能力。

核心任务

RepoZero 包含两个代码翻译任务,共涉及 35 个开源库600 个测试文件

任务 源语言 目标语言 库数量 测试文件数
C2Rust C++ Rust 11 200
Py2JS Python JavaScript (Node.js ESM) 24 400
  • C2Rust:要求模型将 C++ 库实现翻译为地道的、正确的 Rust 代码,需精准匹配原始 C++ 测试程序的 I/O 行为。
  • Py2JS:要求模型将 Python 库实现翻译为 Node.js ES 模块(.mjs)等价物,仅允许使用 Node.js 内置模块,输出需逐字节一致。

其中,Py2JS 任务的每个测试文件根据翻译复杂度被分为三个难度等级:EASY(148 个)、MEDIUM(149 个)、HARD(149 个)。

评估指标

所有评估脚本报告以下两个指标:

  • All-Pass Rate(全通过率):所有测试用例均通过的源文件比例。
  • Test-Case Pass Rate(测试用例通过率):每个文件通过的测试用例比例的平均值。

数据集结构与格式

数据集仓库结构如下:

RepoZero/ ├── crossant.json # Croissant 元数据描述符 ├── C2Rust/ │ ├── CppLarge/ # C++ 源库 (11 个仓库) │ │ ├── Clipper/ │ │ ├── ... │ │ └── url-parser/ │ └── cleaned_test_cases.jsonl # C2Rust 评估的测试用例参数 ├── Py2JS/ │ ├── dataset/ # Python 源文件 (24 个库,各 20 个测试文件) │ │ ├── base58/ │ │ ├── ... │ │ ├── yaml/ │ │ └── difficulty.json # 每个文件的难度分类 │ └── testcases_60/ # 测试用例参数 JSONL 文件 ├── evaluate/ # 评估脚本 └── run_c2rust/ 和 run_py2js/ # 运行脚本

数据集格式 包括两种 JSONL 文件:

  • gold_test_files.jsonl:每行是一个 JSON 对象,标识一个基准测试文件,包含分类、文件名、路径和所属库。
  • 测试用例 JSONL 文件:每行包含一个源文件单次测试调用的命令行参数。

C2Rust 源库列表(11 个)

Clipper, color, earcut.hpp, exprtk, hopscotch-map, idna-cpp, immer, indicators, inflection-cpp, sortedcontainers-cpp, url-parser

Py2JS 源库列表(24 个)

base58, bech32, bencoder, bidict, bitarray, bitstring, boltons, canonicaljson, construct, deepdiff, ecdsa, fractions, furl, idna, jose, jsonschema, markdown, moneyed, mpmath, networkx, pbkdf2, pyaes, rsa, schedule, sqlparse, whoosh, yaml

许可协议

数据集和代码基于 CC0 1.0 发布。基准中使用的所有源代码均衍生自开源仓库,其原始许可证在其各自目录内仍然有效。

搜集汇总
数据集介绍
main_image_url
构建方式
RepoZero是一个面向大型语言模型零样本仓库级代码翻译能力的基准数据集与评估套件,专注于将真实世界的跨语言生态库代码进行迁移。数据集涵盖C++到Rust(C2Rust)与Python到JavaScript(Py2JS)两项翻译任务,共计35个开源库的600个测试文件。构建时,研究团队从开源社区精选了11个C++库与24个Python库,并为每个库设计了若干测试用例,确保覆盖不同的翻译难度等级。Py2JS子集中的测试文件依据翻译复杂度被划分为EASY、MEDIUM与HARD三个层级。此外,数据集还提供了详细的CLI参数JSONL文件,用于驱动评估过程。整个数据集的元数据以Croissant格式描述,便于机器可读与交互。
特点
RepoZero数据集的核心特点在于其真实的仓库级翻译场景与严格的评估标准。每项翻译任务要求模型在不依赖外部依赖的情况下,将源库逻辑完整移植至目标语言,并确保I/O行为完全一致——C2Rust任务要求输出与原始C++测试程序逐字符匹配,Py2JS任务则要求CLI参数下的stdout逐字节相同。数据集引入了两项关键指标:All-Pass Rate(全部测试用例通过的文件比例)与Test-Case Pass Rate(每个文件中通过测试用例的比例),从而从整体与细粒度两个维度衡量模型能力。Py2JS子集中难度分类机制的加入,使得研究者能够分析模型在不同复杂度翻译任务上的表现差异。
使用方法
使用RepoZero进行模型评估需先克隆代码库并手动下载原始数据放置于根目录下。运行前需配置环境变量,包括API密钥(Anthropic或OpenAI兼容端)与可选的Python/Node二进制路径。用户可根据任务选择相应的运行脚本:C2Rust任务使用run_c2rust目录下的脚本,Py2JS任务则使用run_py2js目录下的脚本,后者还支持迭代自修复循环模式以提升翻译质量。评估时通过evaluate目录下的评测脚本计算通过率,结果自动写入指定输出路径。模型名称可通过修改脚本顶部的变量或在命令行传递-m参数来覆盖。整个流程支持多种代理框架,包括terminal agent与mini-swe-agent,便于灵活集成到不同实验环境中。
背景与挑战
背景概述
RepoZero是由北京大学等机构的研究人员于2025年创建的一个创新性基准数据集,旨在评估大语言模型在零样本仓库级代码翻译任务上的能力。该数据集聚焦于将整个真实世界的库代码库跨编程语言生态进行迁移,具体涵盖两项核心翻译任务:C++到Rust(C2Rust)和Python到JavaScript(Py2JS)。RepoZero收录了来自35个开源库的600个测试文件,覆盖了从字符串处理到数据结构的广泛功能领域,为研究代码翻译的语义保持、语言习惯适配及跨语言抽象对齐提供了标准化的评估框架。该基准的提出填补了现有代码翻译评测往往局限于函数级或文件粒度的空白,推动了代码翻译研究向更真实、更复杂的全仓库规模迈进。
当前挑战
RepoZero所解决的领域核心挑战在于实现零样本仓库级代码翻译的语义等价性与语言惯用性,要求模型在不依赖示例翻译的情况下,将整个库的逻辑忠实地映射到目标语言生态,同时确保字节级别的输出一致性。构建过程中,研究者面临多重棘手难题:如何从开源社区遴选出质量可靠、功能独立的代表性库,如何为每对源-目标语言体系设计可自动验证的测试用例集,以及如何避免翻译时简单包装源代码而真正实现黑盒重写。此外,跨语言差异带来的固有复杂性,如C++的模板元编程与Rust的所有权模型之间的鸿沟、Python动态类型与JavaScript异步机制的适配,均要求数据集的测试用例能够精准暴露模型在语义保持和边界条件处理上的脆弱性。
常用场景
经典使用场景
RepoZero专为评估大语言模型在零样本条件下完成仓库级代码翻译任务而设计,涵盖C++至Rust(C2Rust)与Python至JavaScript(Py2JS)两大翻译方向。其核心使用方式为:给定一个完整的开源库代码仓库,模型须在不依赖任何示例、预训练翻译对或外部依赖的情况下,将整个库逻辑翻译为目标语言的惯用实现,并通过统一的测试框架逐文件验证输出的一致性。数据集包含35个真实开源库的600个测试文件,每个测试文件对应多组CLI参数,评估时严格比对原版与译版程序的标准输出,据此计算全通过率与用例通过率。这一设定迫使模型不仅要理解语法层面的转换,更需把握库结构、API设计和语言生态中的惯用法,从而揭露模型在复杂、跨语言代码迁移中的真实能力边界。
衍生相关工作
RepoZero的提出直接推动了零样本代码翻译范式的系统性研究,启发了多个后续工作方向。在算法层面,研究者基于其评测框架探索了迭代自修复机制(Loop模式),通过让模型先生成测试用例再依据失败反馈循环修正译码结果,显著提升了长尾困难用例的通过率。在Agent工程层面,该数据集成为评估terminal-agent与mini-swe-agent两种代码代理架构翻译能力的标准沙箱,揭示了检索增强生成与结构化规划策略在仓库级迁移任务中的增效空间。此外,RepoZero中按翻译复杂度对测试文件进行的EASY/MEDIUM/HARD三级划分,为后续开发难度感知型的课程学习与分层微调策略提供了数据基础,也激发了针对代码复杂度度量与模型能力边界刻画的相关计量分析工作。
数据集最近研究
最新研究方向
RepoZero作为首个面向零样本仓库级代码迁移的基准数据集,聚焦于大语言模型在跨编程语言生态下的全量代码库翻译能力评估。当前前沿研究主要围绕两大核心任务展开:C++到Rust的系统级迁移与Python到JavaScript(Node.js ESM)的生态转换,涵盖35个开源库共计600个测试文件。该基准通过严格的全通过率与测试用例通过率双指标,推动模型在无需预训练示例的条件下,理解并复现源库的完整逻辑结构与I/O行为。这一方向直接关联到软件工程中遗留系统现代化、跨语言服务重构等热点领域,为评估大模型在真实开发场景中的代码理解与生成能力提供了标准化的验证环境,对促进多语言技术栈融合与自动化迁移工具有着重要的推动意义。
以上内容由遇见数据集搜集并总结生成
5,000+
优质数据集
54 个
任务类型
进入经典数据集
二维码
社区交流群

面向社区/商业的数据集话题

二维码
科研交流群

面向高校/科研机构的开源数据集话题

数据驱动未来

携手共赢发展

商业合作