Repo2RLEnv 16个研究配方完全指南:SWE-smith、R2E-Gym、SETA等开源方法本地化实现与使用
【免费下载链接】Repo2RLEnv
Turn any repository into verifiable RL environments for coding agents - Harbor tasks you can train on, evaluate and share on the Hugging Face Hub
Repo2RLEnv是一款能把任意代码仓库转化为可验证强化学习(RL)环境的开源工具,其内置的16 个研究配方(research recipes)将 SWE-smith、R2E-Gym、SETA、SCALER、TerminalWorld 等知名开源任务生成方法以独立实现的形式本地化,配合一条repo2rlenv generate命令,即可批量产出可训练、可评测、可分享的 Harbor 任务。本文将带你完整认识这 16 个配方,并手把手跑通第一个。
研究配方是什么?与原生管线有何不同
Repo2RLEnv 共有 23 个生成器,其中 6 个原生管线在你的机器上直接运行;而研究配方是另一套体系:它是 Repo2RLEnv 对某篇已发表任务生成方法的官方独立实现,运行时不安装、不克隆上游研究代码——每个配方都有自己的源码固定版本(source pin)、许可证声明、算法说明和 RFC 文档。
配方与原生管线的关键区别:
- 🏢执行位置:配方在 Modal 或 Daytona 云端 worker 上构建和运行目标代码,本地只跑控制器,没有本地 Docker 回退;
- 🧾预算制:所有模型调用、worker 时长都计入你显式设定的 campaign 预算,杜绝超支;
- 📦统一产物:无论哪个配方,最终都导出标准的 Harbor 任务目录,可以直接用任意 Harbor agent 训练或评测。
共享架构与所有权策略详见 docs/rfcs/0011-owned-recipes.md,配方的完整选型指南在 docs/pipelines/owned_recipes.md。
16 个研究配方全景:按输入类型速查
最实用的选型方式是看你手头有什么输入。下表汇总了全部 16 个已实现的实验性配方(SEC-bench 处于搁置状态,未实现):
| 配方 | 管线 / recipe | 需要的输入 | 方法思路 |
|---|---|---|---|
| SWE-smith | repo_mutate / swe_smith | 健康的 Python 仓库 | 向源码注入缺陷,用仓库自身测试暴露 bug |
| SWE-gen | pr_to_env / swe_gen | 已合并 PR 的 URL | 逆向还原 PR 变更,PR 头实现作为参考解 |
| SWE-Flow | repo_reconstruct / swe_flow | 健康的 Python 仓库 | 删除被调度的函数实现,让 agent 重建 |
| CodeMidas | repo_reconstruct / codemidas | 可用仓库 | 删除一个完整特性,基于行为契约重建 |
| R2E | equivalence_tests / r2e | 仓库中的文档化函数 | 函数级等价测试:隐藏原实现,写差分测试 |
| SWE-Next | pr_runtime / swe_next | 仓库 PR 历史 | 挖掘历史 PR 变更,两次运行对比测试 |
| R2E-Gym | commit_runtime / r2e_gym | 首父提交历史 | 回退一次提交,让新测试暴露旧 bug |
| CLI-Gym | env_repair / cli_gym | 健康的开发环境 | 破坏运行环境,要求 agent 修复恢复 |
| SETA Seed2Synth | terminal_synth / seta_seed2synth | 问答记录种子 | 从问题合成终端任务 |
| SETA Evol | task_evolve / seta_evol | 已有的 Harbor 父任务 | 进化出更难的子任务 |
| DataArc | terminal_synth / dataarc | Harbor 种子任务 | 按 few/self/evol 策略扩增种子 |
| TMax | terminal_synth / tmax | 领域/技能采样配置 | 按分类采样器生成终端任务 |
| Endless Terminals | terminal_synth / endless_terminals | 类别/复杂度采样配置 | 按采样设定无限生成终端任务 |
| TerminalWorld | terminal_reconstruct / terminalworld | Asciinema 终端录制 | 从录屏元数据与转录文本重建任务 |
| FrontierSmith | optimization_synth / frontiersmith | 封闭问题种子 | 把封闭题改造为连续奖励的优化任务 |
| SCALER | reasoning_synth / scaler | 已发布的题族 JSON | 参数化扩展算法推理题,全程无 LLM 调用 |
仓库修复类:SWE-smith、SWE-Next、R2E-Gym
这三个配方产出最贴近真实 SWE-bench 场景的仓库修复任务:agent 需要在真实仓库里修复代码,评分完全依赖仓库自身测试——失败的测试必须转绿,原本通过的测试不能变红。
R2E-Gym的思路最直观:沿首父提交历史回退一次提交(peel away the fix),回退后的代码让该提交引入的新测试失败,agent 的任务就是把这些测试重新修绿:
SWE-Next则在 PR 的基线版本上跑两次:第一次只跑测试记录失败集,参考解是合并版本的源码,agent 修复后所有目标测试必须通过:
SWE-smith走另一条路:不依赖历史记录,而是用 LLM 向健康仓库注入源码缺陷(mutation),再用现有测试验证缺陷确实被暴露。它的配方实现位于 src/repo2rlenv/pipelines/recipes/ 下,完整算法说明见 docs/pipelines/repo_mutate.md。
实现重建类:SWE-Flow、CodeMidas、R2E
这一类的核心是"删除实现,让 agent 重写",评分使用隐藏测试或差分(等价)测试。
R2E是函数粒度的:从仓库抽取一个自包含函数作为"参考答案",放进私有验证器;模型只写对比测试,两边函数被同时调用、逐项比对输出,任何不一致都会被判负:
SWE-Flow基于上游 SWE-Flow-Trace 的执行轨迹,删除被调度的函数实现并要求重建;CodeMidas更进一步——删除的是一个完整特性,先生成基于实际运行观察到的行为测试,再导出带私有 oracle 的 Harbor 任务,并支持独立的 rollout 复审。值得注意的是,CodeMidas 和 FrontierSmith 两个配方的实现为"独立方法复现"(论文启发、Apache-2.0 授权),不保留上游代码。
终端任务类:SETA、DataArc、TMax、Endless Terminals、TerminalWorld、CLI-Gym
六个配方面向终端(shell)环境,agent 的目标是在容器里把系统调整到指定状态,由生成的 pytest 测试检查终态,奖励为 0/1:
- SETA Seed2Synth / SETA Evol:前者从问答记录合成终端任务;后者以已有 Harbor 任务为父代,通过"进化策略"生成更难的子任务——想无限扩充任务集时很实用;
- DataArc:对 Harbor 种子任务按 few/self/evol 三种策略扩增;
- TMax / Endless Terminals:基于"领域 × 技能 × 场景"的采样器批量生成,参考解由真值与测试引导生成,保证"参考解能过测试";
- TerminalWorld:输入是 Asciinema 终端录屏,先提取、精炼并回放解决方案,再据此生成测试;
- CLI-Gym:方向相反——它故意破坏一个健康的开发环境,agent 必须修复环境且不能改动受保护源码。
种子示例可直接参考 examples/frontiersmith-seeds.json 等配置文件,配方说明分别在 docs/pipelines/terminal_synth.md、docs/pipelines/terminalworld.md、docs/pipelines/env_repair.md。
推理与优化类:SCALER 与 FrontierSmith
这两个配方完全不需要代码仓库:
- SCALER加载已发布的参数化题族 JSON,选定难度与随机种子后在远端离线容器里运行生成器与参考程序,把抽象题族扩展为具体实例。参考程序算出的答案写入私有验证器,agent 把答案写入
/workspace/answer.txt,判分为 −1/+1。它是 16 个配方中唯一零 LLM 调用的; - FrontierSmith把封闭问题改造成优化任务:没有已知最优解,解得越好、连续奖励(0~1)越高,天然适合做 RL 的细粒度信号源。
两者的任务与配方实现分别在 src/repo2rlenv/pipelines/recipes/scaler/ 与 src/repo2rlenv/pipelines/recipes/frontiersmith/。
三步本地运行你的第一个研究配方
第一步:安装与准备
要求 Python 3.12+,并准备一个 Modal 或 Daytona 账号。从源码构建运行配方所需的 wheel:
git clone https://gitcode.com/gh_mirrors/re/Repo2RLEnv cd Repo2RLEnv uv sync --extra modal --extra harbor uv build --wheel安装细节见 docs/installation.mdx。
第二步:初始化 campaign 并启动 worker
研究配方使用共享 campaign 账本管理预算(注意:generate --max-spend-usd仅适用于原生管线,配方会拒绝它):
repo2rlenv campaign init workspace/my-campaign --budget-usd 25 repo2rlenv workers start --campaign workspace/my-campaign --provider modal \ --name my-worker --reserve-usd 3 --timeout-sec 3600第三步:编写配置并生成任务
以 SWE-smith 为例,配置文件的完整结构可参考 examples/owned-swe-smith.yaml 和 examples/owned-r2e-gym.yaml:
source: kind: repository repo: url: more-itertools/more-itertools ref: 9ed3dbb0ae527230cd156d91d0af305478558fba access: public pipeline: name: repo_mutate # 生成管线族 recipe: swe_smith # 研究配方 options: source_paths: [more_itertools] test_paths: [tests] target: 1 max_candidates: 10 llm: provider: openai model: gpt-5-mini execution: campaign_dir: workspace/smith worker_receipt: workspace/smith/workers/smith-worker.json runtime_wheel: dist/repo2rlenv-0.9.3-py3-none-any.whl timeout_sec: 1800 output: destination: workspace/smith/tasks org: your-org dataset_name: smith-first visibility: private然后一条命令即可开跑:
repo2rlenv generate --config ./config.yaml用repo2rlenv pipelines list查看所有管线与配方,repo2rlenv pipelines describe repo_mutate --recipe swe_smith --json查看单个配方的完整元数据。配方目录数据源为 src/repo2rlenv/pipelines/recipes/catalog.json。
产出的任务长什么样
每个配方导出同一个标准 Harbor 任务目录:
<task-name>/ instruction.md # 给 agent 的任务说明 task.toml # Harbor 运行时与资源声明 environment/ Dockerfile # 初始环境与构建期依赖 solution/ solve.sh # 私有参考解入口 tests/ test.sh # 可信验证器入口验证形态按配方分为四类:源码收集进独立验证器跑仓库测试(SWE-smith 等 6 个)、生成 pytest 检查终端状态(SETA 等 5 个)、检查环境修复(CLI-Gym)、收集答案文件判等(SCALER)。任务结构详解见 docs/concepts/tasks.mdx,奖励机制见 docs/concepts/rewards.mdx。
质量验证与成本:官方数据怎么看
官方已基于这些配方发布了15 个数据集、共 1,330 个任务(另有 Tasksmith 50 个已验证任务),每个数据集包含完整 Harbor 任务目录与固定版本清单。发布目标为每个配方 100 个任务(TMax 55 个、CLI-Gym 25 个)。据 docs/pipelines/economics.md 的审计(2026-09-30),整个研究配方实验总成本约$1,586.71,其中 14 个配方扩产 989 个任务仅花费 $445.94——平均每任务成本在几美元量级。
⚠️ 需要注意:目前多数配方任务的标签仍是unverified(未独立验收),"能生成并通过执行检查"不等于"可直接训练"。独立审查与盲测 rollout 在生成之后进行,标签体系说明见 docs/pipelines/task_evaluation_labels.md,已发布数据集清单见 docs/pipelines/releases.md。
小结
- 🎯有仓库:选 SWE-smith(造 bug)、SWE-Flow/CodeMidas(删实现)或 CLI-Gym(坏环境);
- 📜有 PR 或提交历史:选 SWE-gen、SWE-Next 或 R2E-Gym;
- 💻有问题、种子任务或终端录屏:选 SETA、DataArc、TMax、Endless Terminals、TerminalWorld;
- 🧠没有仓库也要造题:SCALER(零 LLM、精确判分)与 FrontierSmith(连续奖励优化)是最佳起点;
- 💰 全程 campaign 预算制 + 云端 worker,本地一条命令即可复现任何一篇研究的任务生成方法。
16 个配方的逐条算法讲解、每次模型调用与重试循环都在 docs/pipelines/owned_recipes.md 中有完整 walkthrough,每个配方的提示词全集可在 docs/pipelines/prompt_reference.md 中查到。
【免费下载链接】Repo2RLEnv
Turn any repository into verifiable RL environments for coding agents - Harbor tasks you can train on, evaluate and share on the Hugging Face Hub
相关推荐
ZXingLite实战:自定义扫码界面的10个高级技巧
ZXingLite实战:自定义扫码界面的10个高级技巧 ZXingLite是一个轻量级的二维码处理库,适合用于需要实现二维码生成、解析和拍摄识别的应用。它提供简
移动开发原生移动图像处理SWE-smith完全指南:如何用这款NeurIPS 2025 Spotlight工具为SWE-agent批量生成52000个训练实例
SWE smith完全指南:如何用这款NeurIPS 2025 Spotlight工具为SWE agent批量生成52000个训练实例 SWE smith 是斯
主题医院开源复刻:C++/Lua混合游戏引擎完整指南
主题医院开源复刻:C++/Lua混合游戏引擎完整指南 CorsixTH 是 1997 年经典《主题医院》的开源复刻引擎,采用 C++/Lua 混合架构,让原版游
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考