Repo2RLEnv 16个研究配方完全指南:SWE-smith、R2E-Gym、SETA等开源方法本地化实现与使用

发布时间:2026/10/30 1:41:10
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

项目地址:https://gitcode.com/gh_mirrors/re/Repo2RLEnv
点击查看免费下载

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-smithrepo_mutate / swe_smith健康的 Python 仓库向源码注入缺陷,用仓库自身测试暴露 bug
SWE-genpr_to_env / swe_gen已合并 PR 的 URL逆向还原 PR 变更,PR 头实现作为参考解
SWE-Flowrepo_reconstruct / swe_flow健康的 Python 仓库删除被调度的函数实现,让 agent 重建
CodeMidasrepo_reconstruct / codemidas可用仓库删除一个完整特性,基于行为契约重建
R2Eequivalence_tests / r2e仓库中的文档化函数函数级等价测试:隐藏原实现,写差分测试
SWE-Nextpr_runtime / swe_next仓库 PR 历史挖掘历史 PR 变更,两次运行对比测试
R2E-Gymcommit_runtime / r2e_gym首父提交历史回退一次提交,让新测试暴露旧 bug
CLI-Gymenv_repair / cli_gym健康的开发环境破坏运行环境,要求 agent 修复恢复
SETA Seed2Synthterminal_synth / seta_seed2synth问答记录种子从问题合成终端任务
SETA Evoltask_evolve / seta_evol已有的 Harbor 父任务进化出更难的子任务
DataArcterminal_synth / dataarcHarbor 种子任务按 few/self/evol 策略扩增种子
TMaxterminal_synth / tmax领域/技能采样配置按分类采样器生成终端任务
Endless Terminalsterminal_synth / endless_terminals类别/复杂度采样配置按采样设定无限生成终端任务
TerminalWorldterminal_reconstruct / terminalworldAsciinema 终端录制从录屏元数据与转录文本重建任务
FrontierSmithoptimization_synth / frontiersmith封闭问题种子把封闭题改造为连续奖励的优化任务
SCALERreasoning_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

项目地址:https://gitcode.com/gh_mirrors/re/Repo2RLEnv
点击查看免费下载

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考