变化点
2025.12 · Skywork-R1V4
- 交错使用图像操作与搜索,构建可验证的视觉推理轨迹。
- 通过纯 SFT 学习工具交互,扩展多模态推理。
2025.11 · SkyRL-Agent(NovaSky Agent 框架)
- 将工具交互、异步任务调度和训练后端解耦。
- 支持真实环境中的多轮 Agent RL 与不同推理后端。
2025.06 · Skywork-SWE
- 构建可执行 SWE 任务与正确解题轨迹,用于代码 Agent SFT。
- 从单段代码生成转向仓库定位、修改和测试。
2025.06 · SkyRL-V0.1(NovaSky RL 框架)
- 将 rollout、训练和环境交互模块化,便于组合不同 RL 任务。
2025.05 · SkyRL-v0(NovaSky SWE 训练)
- 结合远程 sandbox 与异步 rollout,在真实代码环境中进行 RL。
(2512) Skywork-R1V4 (图像操作与搜索交错、纯 SFT)
🌺 论文摘要
参考链接
问题背景
- 被动看图难以处理细节与外部知识,工具轨迹中的错误操作又容易被 SFT 学到。
核心方法
- 工具轨迹:Python 图像操作与图像反搜、文本搜索交错执行。
- 数据过滤:检查答案、推理和真实工具结果的一致性。
- 纯 SFT:不到
30K数据混合训练感知、搜索和依赖明确的计划。
模型效果
- Qwen3-VL-30B-A3B → R1V4:MMSearch
18.7 → 66.1,FVQA53.3 → 67.2。
重要结论
- 过滤低质工具轨迹很关键;加入错误操作示范反而可能让模型重复低效行为。
核心贡献
- 给出感知、搜索与规划统一的多模态工具轨迹构建和 SFT 路线。
未来方向
- 扩展分割、深度估计和 DOM 操作,覆盖更复杂的视觉与网页任务。
- 加入记忆或预测模块维持长程计划;结合 SFT 与 Agentic RL 继续优化策略。
问题背景
- 视觉题目可能同时需要局部图像检查与外部知识,单次看图回答难以覆盖完整求解过程。
核心方法
工具轨迹与数据构建
轨迹采样
- 从 Thyme-RL、Fine-Vision 等选择高分辨率图片和问题。
- 教师生成 Python 图像操作,在 Sandbox 执行,将结果作为下一轮 Observation。
- 可执行裁剪、放大、旋转和对比度增强,直到信息足够生成答案。
一致性过滤
- 先检查最终答案,再检查最后一轮推理是否支持答案。
- 逐步比较操作图像与后续推理,去掉“裁出空白却声称找到目标”等幻觉。
- 删除执行错误和低效重复裁剪轨迹,避免模型模仿错误模式。

基础搜索
- 用 FVQA 问题采样 ReAct 轨迹,先过滤工具格式,再由 o3-mini 判断答案一致性。
- Serper 提供图像反搜、文本搜索和网页读取;长网页由 Qwen3-32B 摘要。
复杂任务合成
- 从百科实体及链接进行受限随机游走,保留实体关系与独特属性。
- 固定答案,把问题中的直接实体名逐轮改成间接线索,增加检索步骤。
- 检查答案唯一性,再用实体图片替换部分文字线索,使视觉成为必需信息。
交错执行
- 从 LiveVQA 构建图像操作与搜索交错的轨迹,由 VLM 过滤不一致操作。
- 例如先裁出建筑标识,再图像反搜,依据网页证据继续检查局部图像。
规划监督
- 把已验证轨迹转成计划:子任务说明、工具名称、参数和步骤依赖。
- 用“第 1 步识别的人物”等占位符连接上下游,保证计划可以沿已有结果执行。
混合模式 SFT
- 混合图像操作、搜索、交错执行和 Planner 数据,使用不同 System Prompt 区分任务。
- 加入属性识别、空间关系和普通 VQA,保留基础感知能力。
- 本工作只做 SFT,不追加 RL;训练重点是高质量工具轨迹。
实验设置(Skywork-R1V4)
基础模型与数据
- 基础模型:Qwen3-VL-30B-A3B;总 SFT 样本少于
30K。 - 图像任务每题
4次 rollout;交错任务从 LiveVQA 抽取3K问题。
评测任务
- VLMEvalKit:HRBench、MME-RealWorld、V* 等感知与视觉推理。
- MMSearch、FVQA、BrowseComp-VL:多步多模态搜索;对照 Qwen3-VL 与 Gemini 2.5。
关键结果(Skywork-R1V4)
搜索与感知
- MMSearch
18.7 → 66.1,FVQA53.3 → 67.2;工具交互明显补强知识型视觉问答。 - BrowseComp-VL
30.0 → 38.4,复杂搜索仍比基础搜索更困难。 - V* Overall
82.2 → 88.0,图像操作同时改善细粒度感知。
训练观察
- 未过滤的交错轨迹曾降低效果,一致性过滤后改善。
- 移除错误执行示范后,模型仍能在推理时纠错;不必把所有失败过程都当作优质监督。
未来方向
原文提出的方向
- 扩展分割、深度估计和 DOM 操作,覆盖更复杂的视觉与网页任务。
- 加入记忆或预测模块维持长程计划;结合 SFT 与 Agentic RL 继续优化策略。
(2511) SkyRL-Agent
🌺 论文摘要
参考链接
- paper, SkyRL代码, SA-SWE-32B, doc, R2E-Gym
核心方法
SkyRL-Agent 框架:Tool-接口+异步Dispatcher+桥接后端SWE-RL实验:AST工具增强 鼓励检索+增加环境提示信息+On-Policy+留一法优势估计数据:4.5k R2E-Gym,Scaffold:Simple ReAct Agent
模型效果(Qwen3-32B + RL)
纯RL,SWEpass@1 达 39分,相比基模提升15pt。- 超过DeepSWE
36分(报告42分),训练成本降一半。 弱于蒸馏模型SWE-Agent-LM-32B38分。- 泛化性:Terminal-Bench(+2.5%), BrowseComp-Plus(+1.3%), WebArena(+1.2 turns)
重要结论
关键贡献
SKyRL-Agent框架。SkyRL-Agent-SWE 开源实现。
问题背景
❓问题背景
RL阶段
- 阶段1:
单轮推理 - 阶段2:
简单工具使用:Mask-based Loss - 阶段3:
Long-Horizon 多轮Agent,POMDP。
现有RL框架缺陷
- 调度效率低:一堆Agent一起跑, 再一起训练。GPU等CPU、CPU等GPU等。
- 状态管理混乱:Agent内部操作,不属于环境,经常写死。
- 后端绑定:如VeRL-Tool, rLLM强绑定VeRL等。SkyRL-Agent后端无关,可使用各种。
部分可观测马尔可夫决策过程POMDP
在每一步
, 观察上下文,从策略 生成 动作,从环境接受 奖励,最大化 累计期望回报。通常对
完整上下文会做摘要/截断/检索等。交互历史不平稳,non-stationary
Transition-based 表示
- 不把对话看作1条长文本,而是看作独立的状态转换:在状态A,执行动作B,得到奖励C
- 标准RL格式:解耦上下文和模型学习
SkyRL-Agent 框架
📕核心方法
以工具为中心的AgentLoop
- 工具接口(Interface):允许用户请示插入新工具,无需改核心代码。
一切皆工具:PythonTool、BrowserTool、MemoryTool等。
异步细粒度调度器Dispatcher
初始化环境 CPU重->模型思考 GPU重->执行工具 CPU重Async Pipeline- 维护3个队列,
GPU永远有活干,利用率拉满。 - 如任务A-GPU思考,任务B-CPU初始化,任务C-CPU算奖励。
- 维护3个队列,
桥接后端Bridge
- Transition-based设计,LLM调用记录:
输入token+输出token+logprobs- 缓解训推不一致:记录logprobs。
- token-level保真:消除re-tokenization导致的策略偏移
- 算法灵活性:支持动态上下文摘要等更广泛的RL算法。
SWE-RL 实验
RL Recipe
工具增强
- 背景:Bug定位效果不行,限制SWE效果。
- 无法有效利用命令在代码库中导航。
过度依赖直接查看文件,很少利用搜索。- 无法定位相关上下文,消耗大量不想跟内容,消耗token。
- 方法:实现
基于AST的搜索工具。- 鼓励搜索:在每个搜索结果末尾,增加
上下文提示。引导精确查询。
- 鼓励搜索:在每个搜索结果末尾,增加
- 如果没有这个,端到端
Long-Horzion RL+稀疏奖励,会非常难训练。bash-only+ mini-swe-agent:R2E-Gym 解决率仅14/64=21.88%
增加环境提示信息
- 背景:(纯基模等) Agent容易产生
重复或非生产性的行为。无法调用工具、无调用或错误调用、死循环、丢失上下文不知还剩几步而放弃任务等。
- 方法:在
环境信息中,加入元信息。工具报错:格式命令错误,正确格式是:快没步数:你只剩5步了,请尽快提交Patch。编辑失败:过程编辑没生效,请检查行号。
full on-policy超长停止的轨迹:直接Mask丢掉。- 优势估计:Leave One Out 留一法优势估计,
不除以标准差。 不使用KL Loss和Entropy奖励。- 每一步均
保留前面的思考过程。 Simple ReAct Agent
实验设置
✍️实验设置
基础模型
- Qwen3-32B
训练任务/数据
- 4.5k R2E-Gym
评测任务/数据
- SWE-verified:超参:
40k,100步 - 泛化性评估:
- Terminal-Bench-0.1.1:80任务,命令行系统任务,
OpenHands - WebArena:
- BrowseComp-Plus
- Terminal-Bench-0.1.1:80任务,命令行系统任务,
算法/策略
On-policy,留一法优势估计,去掉KL损失和熵奖励,Mask超长截止的序列Simple ReAct Agent
超参
train_bs=mini_bs=64,rollout=8,lr=1e-6。32k,50步
关键结果(Qwen3-32B+RL)
🍑关键结果
模型效果(Qwen3-32B + RL)
纯RL,SWEpass@1 达 39分,相比基模提升15pt。- 超过DeepSWE
36分(报告42分),训练成本降一半。 弱于蒸馏模型SWE-Agent-LM-32B38分。- 泛化性:Terminal-Bench(+2.5%), BrowseComp-Plus(+1.3%), WebArena(+1.2 turns)
重要结论
关键贡献
- 1套 SKyRL-Agent 框架。
- SWE-Agent, DeepResearch Agent, MemoryAgent, ComputerUse Agent 实验。
未来方向
⛳ 未来方向
- 完善框架
- 扩展应用
- 纯RL到混合策略:结合
蒸馏+RLVR提升性能。
(2506) Skywork-SWE
🌺 论文摘要
参考链接
核心方法
SWE任务收集构建方法Repo+PR 收集+统一环境安装+执行验证等。- 基于
真实环境执行来做数据验证,3层增量式镜像(基础+环境+实例镜像)。
Skywork-SWE数据:10k任务+2.5k仓库+8k蒸馏轨迹。没开源数据Scaffold:Openhands
模型效果 (Qwen-2.5-Coder-32B + SFT)
- SWE-verified 达
36分,TTS-3达47分。
重要结论
- SWE
Data-Scaling,Test-Time-Scaling,轮数ScalingLaw 得到验证。 - 经过
单元测试验证的数据比SWE-smith合成数据靠谱,提升6.8%
关键贡献
- 仅开源模型,
未开源代码和数据。
问题背景(SWE任务挑战+SWEAgent)
❓问题背景
代码生成
- 竞赛代码、一次性生成,
self-contained。 - 简答代码(HumanEval/MBPP) -> 竞赛代码(LiveCodeBench) -> 推理LLM.
SWE
bug定位、修改源代码、执行测试,多轮迭代式解决问题。使用工具,长上下文依赖。一些工作:
SWE-Bench-extra:扩展了6k python数据,无环境。
SWe-Dev:测试用例合成pipeline。
SWE-Gym:有环境,仅2k数据;
SWE-Fixer/SWE-Smith:注入验证合理的bug,合成F2P实例,产生几k SWE任务实例。
挑战
- 环境验证不足:
可执行环境+验证过的单元测试+代码执行套件(统一执行脚本) - 高质量数据不足:
量大质低+质高量小- SWE-Dev:数据多,但缺环境和单元测试
- SWE-Gym:有环境,但仅11仓库
- SWE-Scaling Law 尚不清晰:SWE数据量小,Scaling Law尚未得到验证,增加数据是否带来效果提升?
全能派 Rich ACI
- OpenHands
- 提供
编辑器+命令行终端+网页搜索,agent在沙箱环境自主迭代式完成任务。 - 优点:上限高,能处理复杂问题,更像人。
- 缺点:成本高,容易陷入死循环
- 提供
- SWE-Agent
- 使用Agent-Computer-Interface,提供
编辑器+shell+测试运行器给LLM。
- 使用Agent-Computer-Interface,提供
专有精细派
专有Pipeline- Agentless:固定的
定位-修复-验证pipeline - Moatless:主张
有效上下文检索才是关键。
- Agentless:固定的
- 检索微调
- SWE-fixer:由粗到细,文件检索和编辑解耦。
📕核心方法
SWE任务收集构建方法和轨迹蒸馏
SWE任务收集构建和轨迹蒸馏流程:


Repo+PR数据收集和环境预过滤
Repo 收集
- 通过
Github DeveloperAPI收集Metadata信息 (name/star/pull数量等)。 过滤缺字段repo,数量:15k -> 8k
PR 收集
- 拉取Repo的PR,只选
这3类PRMerged:关键字closes/fixes/resolves#Linked to Issue:必须解决了某个Issue- 要
base_commit+gold_patch+test_patch
- 要
修改了测试文件:只保留修改了测试相关文件的PR
- 共
146w 任务
环境安装预过滤
- 尝试
去安装环境,过滤123w,最终共23k 任务
环境准备和执行验证
统一命令配置
环境初始化、依赖安装、测试命令。默认
python3.9,系统包gcc/g++/make/pkg-config,依赖:
requrements.txt,测试包:pytests/hypothesis/mock/setuptools
测试命令:
pytest
环境安装:三层增量镜像
每个实例一个docker实例镜像
基础镜像:ubuntu22.04,apt安装系统包,安装miniconda环境镜像:Repo复用,setup_env.sh,安装requirements.txt和额外开发测试包实例镜像:增量构建- 执行
setup_repo.sh,克隆仓库,checkout特定commit_id - 安装pre_sintall列出的
系统依赖
- 执行
执行验证
- 实例进行过,执行测试:
Empty测试:复现bug,应用empt-patch,得到:empty-FAIL, empty-PASSGold测试:验证修复,应用gold-patch,得到:gold-FAIL, gold-PASS
- 指标计算
FAILE_TO_PASS:empty-FAIL & gold-PASS- PASS_TO_PASS:empty-PASS & gold-PASS
PASS_TO_FAIL:empt-PASS & gold-FAIL
SkyWork-SWE 数据集分析
最终数据
2.5k 仓库,10k python任务实例- 每实例:
NL描述+可执行环境+单元测试
特点
- 数量大:2.5k仓库,10k实例
- 难度高:
平均编辑2.5个文件、74.2行代码,10.2个 FAIL2PASS。 - 编辑复杂度:难度适中,
60%多文件编辑,50%实例编辑1-3个代码库,70%少于50行代码编辑。 - 时间分布:2013-2025,但89%都是2018-2024这6年。
- 分布长尾:


AgentSFT 轨迹数据蒸馏
轨迹rollout/模型蒸馏
多个私有代码LLM+OpenHands v0.32.0,最多100轮- 一系列模型,模型-解决率依次Gemini2.5-Pro (20),GPT-4.1(18),o3-mini(15)...
轨迹验证/过滤:
应用patch做测试,通过所有测试才算成功。仅保留正确数据。
最终:
8k 轨迹数据。
实验设置
✍️实验设置
基础模型
- Qwen-2.5-Coder-32B-Instruct
训练任务/数据
8k SFT轨迹蒸馏数据,来自2.5k仓库+10k python实例
评测任务/数据
- SWE-Verified
- Skywork-SWE-32B:rollout=1,直接去评测,
38分 - Skywork-SWE-32B (+TTS):
rollout=8,使用Critic 打分,选最优轨迹评测,47分- Critic模型:OpenHands critic model
算法/策略
SFT,OpenHandsagent
超参
8 H100- 训练12h,3epoch,总计8000轮- Adam,
cosine decay, weight decay=0.01
关键结果 (Qwen2.5-Coder-32B)
🍑关键结果
效果
Qwen2.5-Coder-32BSFT后,SWE达38分,使用TTS(best-of-8)达47分。
重要结论
SWE Scaling Law 验证
- Data Scaling:
数据增加,效果增加,6.4 -> 38 - Test-Time Scaling:
Best-of-8,38 -> 47 - 轮数 Scaling:
10步:28,75步:37,100步:38。75步以后收益小。
- Data Scaling:
经过
单元测试验证的数据比SWE-smith合成数据靠谱,提升6.8%
关键贡献
- 1套
SWE Data Pipeline:自动构建大规模、高质量、SWE任务数据。 - SkyWork-SWE-32B:开源。
未来方向
⛳ 未来方向
自动为测试配置环境的agent- DeepSeekV3.2 已有环境构建Agent,负责
包安装、依赖解析、测试执行
- DeepSeekV3.2 已有环境构建Agent,负责
- 上下文限制:
目前仅32k,需扩展至128k,序列并行。- 但交互超过50轮时,会超过32k。
- 不同OpenHands版本Prompt不同,建议使用最新版本。
(2506) SkyRL-V0.1 (RL框架)
- blog, skywork blog
- SkyRL一个模块化的RL框架
(2505) SkyRL-v0
摘要背景
参考链接
模型效果
- 基于Qwen3-14B,从
SWE-Gym中选择少量数据,做RL训练,SWE达21分。
核心方法
- 环境:
远程sandbox server+异步Rollout;OpenHands scaffold+CodeAct Agent。
❓问题背景
背景
- 现有RL任务大多单轮、短期、无状态交互(简单搜索/代码等)。
- 但
复杂真实任务需要高级agent能力- 复杂任务:SWE-Bench、WebDev、Web浏览等
- 能力:
多工具调用、code、测试、长期规划等
挑战
Agentic RL训练具有挑战- 训练需要:
高速环境执行、高效rollout 稳定训练Long Horizon的RL算法
- 训练需要:
📕核心方法
Sandbox环境和Rollout优化
环境扩展:远程sandbox server
- 使用
远程sandbox server,环境和训练分开,确保gpu高效利用。 - Kubernets部署Sever:16CPU节点,运行80-100个容器,且没有稳定性问题。
- 开源。
Rollout加速优化
- 背景:agent和环境
多次交互,很耗时。- 如OpenHands+SWE 需要20-50轮,python测试很耗时。
- 方法1:
异步rollout- 每个轨迹独立进行,避免全局同步。
- 方法2:
三阶段Producer-Consumer Pipeline- 三个队列:初始化(准备环境) -> 运行 -> 评估(计算奖励)
- Asyncio:动态创建任务s,异步推送,提高系统吞吐量


RL设计
任务设计(Rollout/AgentLoop)
CodeAct+OpenHands scaffold- 三个Action:
execute_bash+finish+str_replace_editor - AgentLoop循环,直到任务完成。
奖励设计
- Rule:应用Patch,
测试全部通过:1分;其他:0分。
数据集
SWE-Gym 2.4kpython任务,但很难,GPT-4o仅9%。- 仅
选择能成功的部分数据- SkyRL-v0-80-data:7b pass@16,SkyRL-v0-220-data:32b pass@16,SkyRL-v0-293-data:gpt-4o或claude-sonnet
- 担心太难,没有学习信号。
2种常见失败模式
- 陷入死循环:模型连续3轮执行相同动作
- 没有结束动作:
实验结果 (Qwen3-14B)
✍️实验配置
模型
- OpenHands-7B-Agent -> SkyRL-Agent-7B-v
- Qwen3-8B(非推理) ->
SkyRL-Agent-8B-v0 - Qwen3-14B(推理) ->
SkyRL-Agent-14B-v0
训练数据
- SkyRL-v0-80/220/293-data,从SWE-Gym 选的。
框架
OpenHands scaffold+CodeAct Agent。
超参
- 32k,50轮。
🍑关键结果
- 14B 达21.6%
三个尺寸模型:7B、8B、14B,四种实验方法:Zero-Shot, Zero-Shot(推理)、SFT、RL。具体如下表所示:
| Resolved Rate | Technique | |
|---|---|---|
| Qwen3-14B | 18% | Zero-Shot (Thinking) |
| SkyRL-Agent-14B-v0 (Best👍) | 21.6% | Outcome based Reinforcement Learning |
| Qwen3-8B | 3.6% | Zero-Shot (Non thinking) |
| SkyRL-Agent-8B-v0 | 9.4% | Outcome based Reinforcement Learning |
| Qwen2.5-Coder-Instruct | 1.8% | Zero-Shot |
| OpenHands-7B-Agent | 11.0% | Supervised Fine-tuning |
| SkyRL-Agent-7B-v0 | 14.6% | Outcome based Reinforcement Learning |