探路智能体落地“最后一公里”:复现Cursor在线强化学习,RLinf-Online团队详解技术实现路径及背后思考

日前,我们基于 RLinf 框架实现了一个 Onlin RL 的示例,支持以组件的形式直接接入已部署的 Agent 服务中做在线强化学习,可帮助针对用户偏好在线调优 Agent 的服务效果,获得了许多伙伴的关注和反馈,今天我们将分享一些背后的思考,并为大家提供一个复现教程。

代码地址:

https://github.com/RLinf/RLinf

项目链接:

https://rlinf.readthedocs.io/zh-cn/latest/rst_source/examples/coding_online_rl.html

使用文档链接:

https://rlinf.readthedocs.io/en/latest/rst_source/examples/coding_online_rl.html

01

写在前面:在线强化学习技术浅谈

随着大模型能力持续突破,许多智能体已迈过"60分可用"的门槛,但我们仍需将其效果提升至80分乃至更高水准,使其真正深度融入多样化场景。强化学习教父 Sutton 预言,更高的智能将从智能体的经验中涌现。我们深深认同,强化学习是推动智能体实现能力跃升的关键技术路径,而在线强化学习的意义在于针对生产环境进行持续的自进化,成为智能体进一步发挥能力的利器。

Cursor 近期推出的 Tab 模型就是对在线强化学习有效性的有力印证之一。该模型将用户的每一次交互(如接受或拒绝建议)视作强化信号,直接参与模型的在线优化。在每日超过 4 亿次请求的真实反馈驱动下,模型能够以极高频率持续学习与改进,模型的建议接受率提升了28%,也为我们在智能体优化中引入在线强化学习提供了重要参考。

与此同时,随着越来越多智能体( Agent ) 服务进入实际部署阶段,如何为已上线的系统高效、低成本地引入在线强化学习能力,成为另一亟待解决的问题。 我们认为,在线强化学习训练不应该以服务的形式与 Agent 系统耦合并持续运行,而是应该以模块插件的形式与 Agent 系统解耦并且由Agent系统按需调用,从而实现系统的模块化设计与部署,使 Agent 服务组件与在线强化学习组件在功能上解耦,实现两部分组件独立迭代优化,而不增加整体系统复杂度。比如在线清洗数据的逻辑完全位于在线强化学习功能组件中,而不影响Agent服务组件。当在线强化学习将模型优化到理想状态后,即可暂停训练,并将优化后的模型部署至所有线上环境。未来若出现新的调优需求------例如用户偏好变化或工作流更新------Agent 系统可再次触发在线强化学习模块,启动新一轮训练。因此,定义 Agent 系统与在线强化学习之间的标准化交互接口,使其成为 Agent 系统的"可选项"甚至"标配能力",将是推动技术普及的关键

此外,如何通过在线强化学习也是实现 Agent 服务的降本增效也是一个关键议题。 面对用户增长带来的成本压力,厂商常寻求用小模型替代大模型,但必须保证效果不降级。我们认为可以通过在线强化学习将小模型能力在特定场景下拉齐甚至超过大模型。具体而言,可通过分流部分用户请求,对一个已离线 SFT 或者强化学习训练过的小模型进行在线强化训练,一旦效果达标即可全量替换,若未达标则可升级模型规模继续实验,继而实现一种用小模型替代大模型的成本可控的 Agent 优化路径,在一些 Agent 场景中可以获得 10 倍以上的成本下降

02

从思考到实践:RLinf-Online及其实现路径详解

沿着上述思考,我们日前推出了首个开源的 Agent 在线强化学习框架 RLinf-Online,它基于大规模强化学习框架 RLinf 对 Cursor 的在线强化学习方案进行了复现实验,验证了在线强化学习进一步提升模型的代码补全能力,更重要的是,它支持以组件的形式直接接入已部署的 Agent 服务中做在线强化学习,实现了 Agent 持续的自我优化与成本效益的提升。我们也将其全面开源,以期能够赋能更多的 Agent 优化与落地。

RLinf是今年9月份,无问芯穹联合清华大学、北京中关村学院共同打造并开源的大规模强化学习框架,这一灵活、高效、可扩展的框架不仅能够支持众多具身强化学习场景,也适用于推理任务中的强化学习应用,甚至可用于构建各类Agent。

具体而言,我们采用Continue 作为代码编辑器端,用户可直接在 VSCode 中安装 Continue 插件 (https://github.com/RLinf/continue)进行开发;**RLinf** 则作为后端系统,既负责大模型的 Serving,也承担在线强化学习的训练。值得注意的是,大模型的 Serving 后端也可以替换为已部署的 Agent 服务,而 RLinf 可灵活作为提供在线强化学习能力的通用组件接入系统。接下来我们将详细阐述这一成果背后的技术路径和实现过程。

1. 前情提要

代码补全功能简介

对于像 Cursor 这样的智能编程编辑器,核心功能之一就是高效、上下文感知的代码补全。在典型的代码补全任务中,当光标停留在某个位置时,编程助手会根据上下文给出插入内容的建议。实现这一能力的常见方式是 FIM(Fill-In-the-Middle) 任务:模型接收光标位置的上文和下文,预测中间应填充的内容。目前,大多数大语言模型(LLM)在预训练阶段已针对 FIM 任务进行过优化,只需按照以下格式组织输入:

`<|fim_prefix|>上文<|fim_suffix|>下文<|fim_middle|>`

模型即可生成合理的中间补全内容。这种设计使得 LLM 能够自然地适应编辑器中的代码补全场景。

Continue 插件的代码补全逻辑

在我们的实验中,我们基于开源 AI 编程IDE Continue 实现了完整的在线强化学习(Online RL)代码补全案例。

Continue 默认支持基于 FIM 格式的补全任务,但原生版本并不具备人类反馈(Human Feedback)上报功能。

为此,我们对插件进行了轻量级改造:

  • 当用户按下 Tab 键接受补全建议时,插件上报 accepted=True;
  • 当用户在 10 秒内未按下 Tab 或进行了其他编辑操作时,上报 accepted=False。

通过这种方式,我们能够直接从真实用户交互中获得强化信号(reward),无需额外训练一个 reward 模型去拟合人类偏好,实现了从人类到模型的直接强化学习闭环。

2. 系统搭建

流程概览

整个在线强化学习的流程可以概括为三个核心步骤:

(1)交互与反馈采集

Coding Agent 向用户提供代码补全建议,用户的"接受"或"拒绝"操作构成明确的强化信号。

(2)即时在线更新

用户反馈传到 RLinf 的后端系统用于训练该生成模型,模型基于 On-policy 策略实时更新,并同步回线上 Agent,以获取新的交互反馈。

(3)效果验证与部署

在线训练结束后,通过 A/B 测试 评估新模型的接受率是否优于原模型;若效果提升,则统一部署至线上环境。

RLinf-Online搭建

下面介绍如何基于RLinf快速搭建该流程:

(1)RLinf Worker抽象

RLinf 框架提供了 Worker 的编程接口,这是 RLinf 构建整个框架的基本组件。Worker 表示一个可执行的组件,大的组件可以是推理实例、训练框架,小的组件可以是数据加载器等。通过继承 Worker 类,可以将一个具体的执行组件进行抽象,并提供和其他 Worker 交互、以及被 RLinf 调度、分配和管理的能力。

(2)RLinf Channel通信

RLinf 框架提供了高性能、易用的异步通信抽象 Channel,自适应使用优化过的点对点后端(如 CUDA IPC 和 NCCL),并封装为生产者-消费者队列的通信模式。因此 Worker1 -> Worker2 的通信可以如下实现:

python 复制代码
self.comm_channel = Channel.create("Comm") #创建一个 channel
Handle1 = self.worker1.rollout(
  output_channel=self.comm_channel,
) # 执行数据生成
Handle2 = self.worker2.run_inference(
    input_channel=self.comm_channel,
)# 执行inference流程

仅需3行代码即可实现 Worker1 -> Worker2 的通信逻辑,大大简化了代码逻辑。

(3)基于RLinf构建在线强化学习训练流程

有了 Worker 和 Channel 这两个基本元素,我们便可以搭建在线强化学习的整套训练流程。整体系统架构如下图所示。

假设代码补全 Agent 已经作为一个完整的在线服务部署,由 用户前端(User Frontend)服务后端(Service Backend) 组成。为了让这一线上系统具备在线强化学习(Online RL)能力,我们在其 plugin 层 引入了一个独立组件------RLinf Runner 。与长期运行的后台服务不同,RLinf Runner 并不是一个常驻进程,而是一个可以由线上系统的 Controller 按需调用的轻量级模块。我们为 RLinf Runner 设计了与线上 Agent 的交互接口,用于:

  1. 获取在线数据,包括请求(request)、响应(response)内容以及用户交互反馈(accept/reject);

  2. 接收并更新模型权重,从而实现 Agent 策略的实时优化。

在 RLinf Runner 内部,我们将整个强化学习过程分解为三个核心 Worker:

  • Data Receiver:负责接收并缓存来自线上系统的交互数据;
  • Compute Reward:根据用户反馈计算即时奖励信号;
  • PPO Loss + Actor Trainer:执行策略优化与模型更新。

这些 Worker 之间的通信通过 RLinf Channel 实现,它提供高性能、异步的数据传递机制,使整个在线训练流程能够以流式方式持续进行。当 Service Backend 的 Controller 启动 RLinf Runner 后,在线强化学习过程便会自动运行:系统从线上服务中接收数据、计算奖励、更新策略模型,并将改进后的模型权重实时回传至服务后端。为保障线上服务的稳定性,在线强化学习可首先在部分愿意参与新模型试验的用户群体中进行部署与验证。

注:更加详细的系统部署与测试可以参照中文版文档https://rlinf.readthedocs.io/zh-cn/latest/rst_source/examples/coding_online_rl.html或者英文版文档https://rlinf.readthedocs.io/en/latest/rst_source/examples/coding_online_rl.html。

3. 算法设计

除了模块化的系统设计之外,我们也在在线强化学习(Online RL) 算法设计上进行了深入探索。在 Online RL 场景中,每个请求(request)通常只对应一次响应与一次用户反馈(accept/reject),因此 GRPO 不再适用,因为它依赖于对同一输入的多样化响应组来计算相对偏好。为此,我们采用了改进后的 PPO 算法 ,主要改动包括:去掉 critic 模型,优势估计(advantage estimation)退化为蒙特卡洛回报(Monte Carlo return) 的简化版(只使用当前的reward)。虽然这种方法可能带来较大的训练方差,但依靠 PPO 的 clip 机制 可以有效限制策略更新幅度,防止训练崩溃,从而实现一种高效且稳定的简化策略 。在代码补全的 Online RL 训练过程中,reward 来源于用户反馈信号(即用户的接受或拒绝操作)。

由于目前缺乏足够规模的真实 Online 使用场景,我们采用LLM 模拟用户打分(LLM-as-a-Judge) 的方式,对模型生成的补全结果进行评分。具体地,我们使用 LLM(DeepSeek-V3.1)对模型生成的补全结果进行 0--10 分打分,平均得分作为模型在测试集上的综合表现指标。

4. 性能一览

训练配置

数据集构建

我们选用 code-fim-v2 数据集,该数据集包含多种编程语言的代码补全样本。我们从中筛选出 Python 样本,并进一步过滤掉补全内容过短的样本,最终保留约 4000 条高质量数据 。其中3000 条 用于训练,1000 条用于测试。每个样本包含上文(prefix)与下文(suffix)代码片段,模型需根据上下文生成中间补全内容。

主要参数

实验基模型为 Qwen2.5-Coder-1.5B。由于未加入 KL regularization,过高学习率可能导致模型遗忘原有分布,因此我们选择较低学习率(2e-6)以保持稳定收敛。同时,采用bf16 训练精度,相较于 fp16 在训练早期的梯度范数更稳定。

此外,为了快速验证强化学习在该任务上的有效性,我们还采用了 GRPO (group size = 8) 进行离线训练对比实验,以评估不同训练范式下模型在代码补全任务上的性能变化。

实验结果

如图1所示,可以看到通过强化学习,模型性能持续增长。测试集结果如表1所示,Qwen2.5-Coder-1.5B-RLinf 在测试集上提升效果明显**(4.532 -> 6.897)** ,涨幅超50%,甚至超过同系列 32B 模型。这表明通过在线强化学习可以有效提升模型部署性能,并且小模型具有巨大潜力。

使用强化学习,性能持续增长

测试集指标对比

03

未来展望

在线强化学习为 Agent 的持续进化指明了方向,但同时也还存在诸多系统性挑战,包括在线数据的高效清洗与处理、模型动态更新过程中的性能稳定性保障,以及如何在多元用户偏好下实现个性化策略优化等关键问题。这些不仅是系统与算法上值得思考的问题,更是智能体最终落地所亟需解决的根本性难题。尽管如此,我们相信,随着智能体应用生态的逐步成熟与相关技术的持续突破,这些挑战终将被逐步克服。智能体也将由此实现从"从经验中学习"到"在交互中涌现"的根本性跨越。

RLinf-Online 是我们团队在智能体在线优化方案上的初步探索与实践,当前版本仅采用人类代理的形式进行性能模拟,但其结果已经清晰展现出在线强化学习的无限潜力。目前我们正将该流程上线生产环境,在实际业务中进行测试。同时,我们也期待与广大开发者、团队与合作伙伴展开深入协作,共同拓展大模型时代下强化学习的应用边界,赋能更智能、更高效的 Agent 未来。

相关推荐
可观测性用观测云3 小时前
AWS DevOps Agent 接入观测云最佳实践
agent
杨艺韬3 小时前
为什么需要理解 LangChain
langchain·agent
火车叼位4 小时前
GSD 里的 phase:创建、讨论、规划、执行、验证、转场
agent
How_doyou_do4 小时前
claude code源码万字深入分析
agent·claude code
我爱C编程4 小时前
基于分层QLearning强化学习的联合抗干扰算法matlab仿真
matlab·强化学习·分层qlearning·联合抗干扰
rising start4 小时前
Dify在Windows上的部署
大模型·agent·dify
Pitayafruit4 小时前
Windows 也能跑 Hermes Agent!完整安装教程 + 飞书接入,全程避坑
人工智能·llm·agent
深度学习机器4 小时前
一文快速看懂Hermes Agent
llm·agent
赵康4 小时前
用 Agent Skill 自动生成工作周报
agent·周报·skill