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

空逐月AI 前沿2026-09-18575 阅读💛 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 原文地址:

文章评论(3

吴超6 小时前

看标题就点进来了,内容果然没让人失望。

回复
杨丽华4 小时前

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

回复
一叶知秋1 小时前

支持作者,持续关注中。

回复