用强化学习革新代码建议:Cursor Tab 如何变得更聪明、更懂你
了解 AI 代码编辑器 Cursor 如何运用在线强化学习(RL)技术,打造出一个全新的 Tab 模型。新模型不仅将建议数量减少了 21%,更将接受率大幅提升 28%,为开发者带来更流畅、更少干扰的编码体验。
对开发者而言,追求极致的生产力是永恒的课题。在 AI 时代,一个好的代码编辑器扮演着至关重要的角色。在 Cursor,提升开发者生产力是其团队的核心目标,而其中的一个关键角色,就是 Cursor Tab——一个能预测开发者在整个代码库中下一步行动的智慧系统。
每当用户敲下一个字符或移动光标,Cursor Tab 就会开始运作,试图预测其意图。如果系统有足够的信心,就会以灰色文字显示建议,用户只需按下 Tab
键即可接受。
这个系统每天处理超过 4 亿次的请求,这意味着 Cursor 手上握有海量的数据,清楚知道哪些建议被用户欣然接受,哪些又被无情地忽略。这篇文章将揭晓 Cursor 如何利用这些宝贵的数据,透过「在线强化学习」(Online Reinforcement Learning),让 Cursor Tab 变得前所未有的聪明。
Cursor 的做法可能有点非主流。多数大型语言模型(LLM)的供应商,习惯于使用静态数据集或付费标签员来训练模型,每隔几个月才发布一次所谓的「大版本更新」。但 Cursor 的模式不同,其团队每天都会频繁地向用户推出新的微调模型,并利用即时数据进行训练,让 AI 的进化真正「活」起来。
不只是更聪明,而是更懂得「闭嘴」
任何开发者或许都有过这样的经验:AI 助手不断跳出一些毫不相干的建议,打断了正顺畅的思绪,让人烦躁不已。这就是「杂讯建议」(Noisy Suggestions)的问题。
维持一个高的建议「接受率」至关重要。如果接受率太低,就表示系统推送了太多错误的建议,这不仅没帮助,反而会干扰开发者的心流(flow state)。
要实现高接受率,不单是让模型变得更聪明,更关键的是要教会它何时该保持沉默。有时候,代码的上下文信息不足,即使是拥有完美知识和推理能力的 AI,也无法猜透用户的心思。在这种情况下,最好的做法就是——什么都不建议。
抛开旧方法:Cursor 如何用「策略梯度」训练 AI
要过滤掉那些恼人的低品质建议,最直观的方法可能是训练一个分类器。例如,有研究发现 GitHub Copilot 曾使用类似方法,透过一个逻辑回归模型,根据编程语言、前一个建议是否被接受等 11 个特征来打分数,当分数低于一个门槛(比如 15%)时,就不显示建议。
这个方法可行,然而,Cursor 想要一个更根本、更优雅的解决方案。目标不是在模型产生坏建议后再把它们过滤掉,而是希望 Tab 模型从一开始就不要产生坏建议。
这就是「策略梯度」(Policy Gradient)方法登场的时候了。
简单来说,策略梯度是一种优化「策略」(Policy)的方法,目标是最大化「奖励」(Reward)。在这里:
- 策略(Policy):就是 Tab 模型本身。
- 奖励(Reward):是为模型采取的每个行动所赋予的分数。
这个算法的运作方式,就像一个反馈循环。它允许模型随机尝试不同的行动(显示或不显示建议),观察哪个行动能带来高奖励(用户接受了建议),哪个行动导致低奖励(用户拒绝了建议)。接着,它会正向强化那些带来高奖励的行为,同时抑制那些导致低奖励的行为。 为此,Cursor 设计了一套奖励规则。举个例子,假设目标是让模型只在接受率预期超过 25% 时才提出建议,那么奖励可以这样设定:
- 建议被接受:奖励 +0.75
- 建议被拒绝:惩罚 -0.25
- 未显示建议:奖励 0
透过这个机制,模型会为了最大化总奖励,而学会只在它自己估计接受率够高时才出手。它在内部自己建立了一个关于接受率的判断模型,而剩下的就交给优化算法去处理。
不断进化的 AI:Cursor 的在线学习循环
策略梯度方法有一个前提:用来训练的数据,必须来自正在被优化的那个模型。这意味着,一旦模型更新了,就不能再用旧模型的数据,因为那已经是「过时」的信息。
为了取得最新鲜、最有效的「在线策略」(on-policy)样本,Cursor 必须快速地将新模型部署给用户,观察它的表现,然后将这些新的互动数据立即投入到下一轮的训练中。
这对 Cursor 的基础设施是个不小的考验。整个系统需要一个高效的循环,从用户那里收到一个建议的互动数据,到这些数据被用于训练下一个模型,时间要尽可能短。目前,Cursor 推出一个新的模型检查点并收集下一轮数据,大约需要 1.5 到 2 小时。这在 AI 产业中已经算是相当快的速度,但 Cursor 相信,未来还有很大的进步空间。
更少打扰,更高效率:新 Tab 模型的亮眼成绩
透过上述方法,Cursor 成功训练出了一个全新的 Tab 模型,而它现在已经成为 Cursor 编辑器中的预设选项。成果非常显着,可以直接看数据:
指标 | 旧模型 | 新 RL 模型 | 变化 |
---|---|---|---|
建议显示率 | 基准 | 基准 | -21% |
建议接受率 | 基准 | 基准 | +28% |
简单来说,新的 Tab 模型学会了在更恰当的时机提出建议,从而减少了 21% 的打扰,同时它提出的建议品质更高,让接受率大幅提升了 28%。
Cursor 希望这次的改进能显着提升开发者的编码体验,未来也计划继续深化这些方法的应用。这不仅仅是一次模型的更新,更是其团队对打造极致开发者工具承诺的体现。