Kimi、Cursor、Chroma 如何用强化学习训练 Agent 模型:三份技术报告的共性方法论

邱宇AI 前沿2026-09-18579 阅读💛 262 收藏

Philipp Schmid 读完三份技术报告——月之暗面 Kimi K2.5 论文、Cursor Composer 2 技术报告与博客、Chroma Context-1 报告——提炼出 Agent 模型强化学习训练的共性方法论。对想理解”垂域 Agent 模型怎么炼成”的读者,这是一份高密度路线图。

三份报告各有独到之处。

Kimi K2.5 训练 Agent Swarm,模型通过 RL 学会把任务分解成并行子代理。Cursor Composer 2 用自我摘要处理长编码会话,并从生产流量跑实时 RL。Chroma Context-1 教模型自我编辑上下文——主动裁剪已检索文档,为新搜索腾出空间。

三家都用强化学习,方法论高度相似:从强基座起步,没人从零训练(月之暗面在 Kimi K2 上扩多模态预训练,Cursor 从 Kimi K2.5 起步,Chroma 从 gpt-oss-20B 起步);在生产同构环境内训练——RL rollout 跑在与生产完全相同的工具、提示词和执行环境里;用可验证结果信号做奖励,开放式任务用生成式奖励模型 GRM;异步大规模 rollout——代理轨迹昂贵,各家都重金投入基础设施规模化执行。

Kimi K2.5:Agent Swarm 与并行代理编排

Kimi K2.5 是月之暗面的多模态模型,1T 参数 / 32B 激活 MoE 架构。最独特的特性是 Agent Swarm:模型学会动态分解任务为并行子任务并派发给子代理,并行策略通过强化学习习得而非硬编码。

PARL:并行代理强化学习。多数智能体系统串行执行:思考→工具调用→观察→再思考。Agent Swarm 打破这一点,训练模型孵化并行子代理。

架构有两个角色:编排者(可训练)决定何时创建子代理、分配什么任务、如何聚合结果,配备 create_subagent 与 assign_task 工具;子代理(冻结)独立执行子任务,轨迹不进优化目标。

这种解耦解决了信用分配问题。端到端联合优化时,最终答案正确可能意味着编排者分解得好,也可能只是某个子代理运气好。冻结子代理、把其输出当环境观察,意味着只有编排者的协调逻辑被优化。

Kimi 还引入”关键步数”度量并行场景的计算成本,类似计算图中的关键路径:不数所有代理的总步数,而是每阶段取并行子代理中的最大步数,总关键步数是各阶段最大值之和。

这激励编排者均衡分配负载(缩短最长分支)而非单纯堆并发。

PARL 奖励有三个分量。

性能奖励 r_perf——任务是否成功,主信号。并行奖励 r_parallel——激励实例化子代理,防止”串行坍缩”(编排者退化为单代理执行的局部最优,永不探索并行策略)。完成奖励 r_finish——奖励完成的子任务,防止”虚假并行”(一种 reward hacking:不分解任务就狂孵子代理骗 r_parallel)。

辅助奖励系数在训练中退火到零,最终策略只优化性能。

推理时如何工作:模型接到任务自行决定是否并行、如何并行。分析任务识别子任务结构,create_subagent 创建带具体指令的子代理,assign_task 并行派发,子代理在独立上下文窗口并发执行,编排者收集结果合成最终答案或重复过程。

并行决策不是硬编码——简单任务模型串行干,复杂多源研究任务才展开并行代理。

训练分布刻意为之:合成提示词强调”宽搜索”(多独立信息源)或”深搜索”(多推理分支延迟聚合),但从不指示模型并行,而是构造并行有利的任务。

Agent Swarm 把推理延迟降低最多 4.5 倍同时提升准确率。BrowseComp 上 78.4%(单代理 60.6%),超过 GPT-5.2 Pro 的 77.9%;WideSearch 上 item 级 F1 从 72.8% 提至 79.0%。

Agent Swarm 还顺带解决上下文管理:把任务分解进隔离子代理上下文,避免了长串行运行的上下文溢出。

更广的训练管线还有几个组件:可验证任务用规则结果奖励(推理、智能体任务);开放式任务用生成式奖励模型 GRM——不是二元 pass/fail 裁判,而是与内部质量标准对齐的细粒度评估器(有用性、审美、指令遵循),多套 GRM 规则缓解 reward hacking;拒绝采样微调 RFT 构建自我改进数据管线——成功 RL 轨迹提取为 SFT 数据供后续训练阶段使用;Toggle token 效率机制——训练中交替预算约束与标准扩展阶段,输出长度砍 25-30% 几乎无性能损失。

Cursor Composer 2:面向智能体编码的 RL

Composer 2 是 Cursor 的智能体软件工程自研模型,能读写文件、跑 shell、搜代码库、浏览网页,目标是自主解决真实编码任务。

固定在贴近生产的 Harness 里训练。Composer 2 在与用户交互完全相同的 Cursor harness 里训练:同样的工具、提示词格式、系统消息、文件上下文。训练期间维护 Cursor 后端的影子部署,语义搜索等工具行为与生产完全一致。

SWE-bench 这类公共基准用简化环境和过度明确的提示词,而真实开发者的请求是欠明确、混乱、允许多个有效解的。在生产 harness 上用真实 Cursor 使用的问题训练,让 Composer 2 学会应对真实分布。

他们还建了 CursorBench——从工程团队真实编码会话提取的内部评测套件,任务中位数改动 181 行(SWE-bench 只有 7-10 行),提示词更短更含糊,且随产品演进共同生长。

RL 配方四组件

训练用 Ray+PyTorch 全异步栈。环境端每个 rollout 跑在独立 Firecracker 微虚机(内部平台 Anyrun),能跑带浏览器和 GUI 的完整开发环境,每秒可调度 500+ pod,支持文件系统级快照与分支——轨迹中途存档有用。

推理与 Fireworks AI 合作,权重每训练步经增量压缩上传 S3 分片同步,推理 worker 可在 rollout 中途换权重让后续 token 更 on-policy。评测用锁定的生产后端与 Cursor 客户端副本,高置信度保证评测行为与用户所见一致。

策略梯度算法是 GRPO 近亲变体,单 epoch 应用(同一提示词不训练两次)、全参数更新。

他们删掉了标准 GRPO 的长度归一化项(引入长度偏置),并跳过按标准差做优势归一化(组内 rollout 正确性全相同时会放大噪声)。

Cursor 还训练了额外的多 token 预测 MTP 层做投机解码。这些层自蒸馏:学习预测主 LM 头在每个 token 位置的精确 logit 分布。

MTP 层从零初始化、同一数据混合训练,在长上下文与 SFT 阶段联合微调后才进 RL。推理快 2-3 倍,质量损失极小。

长时域的自我摘要。真实编码任务很长:几十次工具调用、读很多文件、几百轮迭代。

为在有限上下文窗口内保持效力,Composer 2 用自我摘要——每次 rollout 可包含多段由摘要串联的生成,最终结果奖励作用于链上所有 token:保住关键信息的好摘要在 RL 中被强化,丢失上下文的坏摘要被降权。

模型在 RL 训练中自然学会何时摘要、如何摘要。难任务上会多次摘要。

实时 RL:从生产流量学习。除模拟 RL 外,Cursor 还跑实时 RL。

从当前 checkpoint 的用户交互收集数十亿 token;把用户反应蒸馏成奖励信号(用户是否跟进修改、是否满意);用这些信号训练产出新 checkpoint;过 CursorBench 查回归;通过即部署。

整个闭环约五小时,一天能发多个改进 checkpoint。闭环快意味着数据几乎 on-policy——生成数据的模型(几乎)就是被训练的模型。

Chroma Context-1:自编辑的搜索代理

Context-1 是 20B 参数的智能体搜索模型,专注做好一件事:找文档。它不回答问题,而是给下游推理模型返回一组排序的支持文档。

核心创新是自编辑上下文:模型学会选择性丢弃不再相关的已检索文档,为继续探索腾出上下文空间。

合成数据管线。真实智能体搜索任务难以规模化获得——需要已知标准文档集的多跳查询。Chroma 建了覆盖四域的合成生成管线:网页、金融(SEC 文件)、法律(USPTO 专利)、邮件(Epstein 文件+安然语料做干扰项)。每个任务结构相同:收集带独立事实的支持文档;生成混淆线索(对事实的间接指涉)与问题;验证——从文档提取逐字引文并确认确实出现在源文本;收集干扰项——符合部分条件但指向不同答案的文档;可选链接任务构造多跳问题。验证步骤关键,因为”这文档相关吗”对 LLM 是不可靠问题。他们用提取式管线:LLM 从文档和线索各提取匹配引文,确定性检查验证引文确实在源文中。与人类标注对齐超 80%。

代理 Harness 四工具:search_corpus(query) 混合 BM25+稠密检索带 RRF 融合与重排;grep_corpus(pattern) 正则搜索;read_document(doc_id) 读指定块;prune_chunks(chunk_ids) 从上下文移除无关块。

Harness 强制固定 token 预算(如 32k),每轮后附上用量提示(Token usage: 14,203/32,768)。过软阈值提示考虑修剪,过硬阈值则除 prune_chunks 外全部工具封锁——必须修剪或收尾。

去重在 Harness 层处理:追踪所有先前搜索见过的块 ID 作为排除过滤器,后续搜索总是呈现新信息。

模型修剪时,Harness 从模型视图移除块,但保留完整未修剪轨迹供奖励计算——这让奖励能记功于搜索中遇到但后来被修剪的文档。

一条具体搜索轨迹:搜索 1 后上下文 11k/32k;搜索 2 后 24k 过软限收到”考虑修剪”提示;搜索 3 被封锁(需 10.4k 只剩 8.5k);prune 三个块降到 13k;搜索 3 重试到 23k 又过软限;再 prune 一块到 18k;搜索 4 出最终结果;作答。

训练:SFT 热身+RL。SFT 热身用 Kimi K2.5 做推理后端生成轨迹,按召回质量过滤——高召回轨迹全保留,低召回以递减速率纳入,最多 5% 零召回轨迹作负例。RL 用 CISPO(裁剪重要性采样策略优化,GRPO 变体)全 on-policy:每步 128 查询、每查询 8 rollout,每步 1024 条轨迹。8 个 rollout 全部同分的组被丢弃(组内归一化下无梯度信号)。奖励精心构造:结果用 F-beta(beta 高置,召回初始按 16 倍权重于精确率——反映 Context-1 的定位:漏文档比多含无关更糟,下游模型能过滤但检索不到的无法挽回);过程分奖励轨迹召回——即使后来被修剪也给搜索中遇到相关文档记功,没有这一项代理会收敛成一次宽搜索就收工;最终答案命中含答案块加 1.0 分;惩罚项——重复修剪罚(抑制逐个修剪的连击)与轮次罚(抑制边际递减的搜索循环)。

三家共识

在哪部署就在哪训练。三家都重投入让训练环境贴近生产:Cursor 用生产后端影子,Kimi 在同一 harness 跑子代理,Chroma 对真实数据库跑搜索。最小化训练表现与真实表现的差距。

上下文管理是一等公民问题。代理上下文随时间膨胀。Cursor 用自我摘要,Kimi 把上下文分片到并行子代理,Chroma 教模型丢弃无关块。方案不同,约束相同。

奖励设计是迭代的。每家都描述了发现并修复 reward hacking 的过程:Cursor 的模型学会输出损坏的工具调用;Kimi 的编排者陷入串行坍缩或虚假并行;Chroma 的代理收敛成单次搜索即放弃。每次都是:观察退化行为、理解激励、加针对性奖励或惩罚。

公共基准不够。Cursor 明确论证 SWE-bench 分数与真实效用相关性差,用真实用户会话建了 CursorBench;Chroma 跨四域建合成基准;Kimi 公共加自研并用。要做垂域模型,就需要垂域评测。

更小的专训模型能跟前沿模型掰手腕。Chroma 的 20B 模型在检索上追平前沿级 LLM,成本零头、速度快 10 倍;Composer 2 对比更大的 API 模型实现帕累托最优的成本-准确率权衡。垂域 RL 训练抹平了裸参数量造成的差距。

原文信息

  • 作者:Philipp Schmid(@_philschmid),Google DeepMind 工程师
  • 原文发布日期:2026-03-28 原文地址:

文章评论(10

山问津57 分钟前

这篇文章分析得很透彻,收藏了!

回复
雪知秋8 分钟前

楼主辛苦了,内容很有参考价值。

回复
晨寻梦18 分钟前

点赞,必须点赞

回复
风倚栏36 分钟前

思路清晰,干货满满。

回复
陈皮话梅糖18 分钟前

实测过类似工具,作者说的基本属实。

回复
一叶知秋4 分钟前

很有价值的分享,感谢整理。

回复
雪知秋26 分钟前

刚好最近在找这方面的资料,太及时了。

回复
陈皮话梅糖15 分钟前

楼主辛苦了,内容很有参考价值。

回复
星寻梦59 分钟前

很有价值的分享,感谢整理。

回复
漾漾其华17 分钟前

点赞,必须点赞

回复