同一个模型修同一个问题,试五次,终于有一次成功。我们很容易说“它会了”,可下一位用户只有一次机会,仍然可能撞上另外四条路。一次成功证明这条路能够被走出来;把任务放心交出去,还需要模型经常选中它。能力的形成,很大一部分就在这两个状态之间。
一条成功轨迹通常包含许多恰到好处的选择:读了正确的文件,注意到一个不起眼的条件,在第一次失败后换了方法,最后还做了有效的检查。模型已经能够组合出这些动作,却未必稳定地这样组合。提高可靠性,就要让有用的选择在相应情境里更容易出现,让它们更容易接成一段完整的工作。
多试几次,和下次更会做,是两件事
最直接的办法是多尝试,再用可靠的检查挑出成功结果。下面假设每次尝试相互独立,成功概率相同,而且成功能够被准确识别。增加尝试次数,可以提高这一轮至少拿到一个成功结果的机会;模型单次的成功率仍留在原处。把单次成功率也调高,再看两项数字,便能看到训练希望带来的变化。
这一轮的概率 = 1 − (1 − p)ⁿ。其中 p 为单次成功率,n 为尝试次数。
例如,单次成功率为 20%,独立尝试五次,至少成功一次的概率约为 67%。如果能识别成功、失败的代价又可接受,多试几次已经能做出更好用的产品。但把五次尝试改成五位用户各用一次,同样的模型让五个人全都成功的概率只有 0.032%。智能体评测中的“至少一次成功”与“每次都成功”衡量的是不同事情。能力展示可以挑一次好结果,稳定服务需要改变每次交付的机会。
怎样提高这个机会?可以把过程分成四件相接的工作:让好路径有机会出现,辨认它是否真的成功,让模型学会其中的选择,再看这种改变能否迁移到新任务。 训练算法参与第三件事,前后的任务、环境与评价决定了它究竟在学什么。理解这个系统,比把所有进步统称为“更多数据、更强训练”更有用。
先让值得学习的做法出现
想象一个模型在修复配置问题。它经常直接改生成出来的文件,眼前的测试通过了,下次构建却又把修改覆盖掉。一个有经验的人会追问:这个文件由谁生成?随后找到源配置,修改源头,再重新构建并验证。这里相差的也许只有一次关键查询,却把后面的工作带到了完全不同的路径上。我们要让模型学到的,是这个查询在什么情境下值得发生。
人可以示范这条路,技能可以提醒查生成关系,工具可以直接给出依赖入口,更大的尝试预算也可能让模型自己找到它。这些支持都在改变探索条件,让有价值的行为不至于被大量无效尝试淹没。领域材料与中间训练则从另一侧帮忙:模型先熟悉生成文件、构建系统和依赖关系,才更容易把观察组织成有效判断。
外部支持可以这样参与能力形成:人不必一次写出所有答案,可以只补那个让任务走不下去的缺口,再观察模型如何把其余部分接起来。更强的模型还可以生成示范,已有程序可以提供精确计算,环境可以提供即时反馈。能力在这些条件下组合、展开,新的做法也可能在探索中形成。我们要收集的学习材料,就从这些实际完成的工作里来。
再决定,什么才算真正的成功
如果验收只看修改后的文件内容,前面那条错误路径也能得满分。把重新构建加入环境,问题才会暴露;再检查原本正常的功能,才能知道修复是否带来了退步。评价标准因此参与定义了能力。“模型会修复配置”这句话究竟意味着什么,很大程度上取决于我们让它面对哪些条件,又检查了哪些后果。
-
结果是否成立。 目标产物、真实环境状态、业务行为是否满足要求。能执行的地方,就运行构建、查询状态、校验数据;主观质量则需要明确的评价尺度,必要时由人校准模型评分。
-
成功是否符合任务约束。 绕过检查、破坏原有数据、偷偷缩小需求,也可能制造一个好看的结果。评价需要覆盖这些不能被牺牲的条件,同时容许不同的有效解法。把“必须走我示范的每一步”也当成成功标准,会把探索空间锁在旧方法里。
-
这条路径是否值得复用。 同样完成任务,一条路径定位清楚、检查充分,另一条反复猜测、碰巧通过。耗时、调用成本、对无关对象的改动,以及决定有没有依据,都能帮助筛选。保留失败后合理修正的过程也有价值,模型需要学会恢复,而不只是模仿一条从未出错的理想路线。
一条可学习的轨迹,因而应当把当时的任务、模型实际看到的观察、选择的动作和环境结果联系起来。只留下最终补丁,会丢掉“为什么去找生成源头”的情境;把后来才知道的答案塞回先前输入,又会教出一个在真实工作中拿不到那些信息的学生。轨迹整理要保存关键选择发生的条件,并剔除错误记录、敏感数据和不适合复用的内容。
训练改变的是,下一次怎样选择
监督微调把筛选出的好轨迹当作示范。模型在相应上下文里学习接下来的内容和动作,参数更新使这些选择以后更容易出现。对于配置例子,示范可以包括发现生成标记、查询生成入口、修改源文件和重新构建。它不只是记住这次改了哪一行,也有机会学会一组可迁移的关系:眼前的文件可能只是产物,持久修改需要找到产生它的地方。
强化学习则让模型在环境中继续尝试,根据奖励调整行为。我们可以检验修改是否经得起重建,而不必给每道题预先写一条唯一解法。模型有机会在不同路径之间比较,逐渐提高能获得好结果的选择的概率。DeepSeek-R1 的早期报告既展示了可验证任务上的强化学习,也描述了冷启动示范、强化学习和筛选数据相接的流程。示范提供有效起点,探索把起点继续往前推。
为了判断配置有没有修好,我们已经准备了原始项目、重建命令和结果检查。恢复项目后,模型可以再次尝试,检查结果又能提供反馈。开发时用它比较两版工具或流程,训练时用它支持模型探索;任务环境开始同时服务于这两种改进。SWE-Gym把软件任务、可执行环境与测试组织在一起,正是让真实软件工作能够反复用于训练的一种实践。
- 已有训练:预训练 · 中训练 · 后训练
- 任务与当前上下文:目标 · 事实 · 约束
- 模型:理解处境,选择下一步
- 外部支持:专家引导 · 技能 · 现成工具
- 任务环境与验证器:重置 · 执行 · 观察 · 评价
- 监督微调:筛选优秀轨迹;学习情境中的有效选择
- 强化学习:在环境中尝试;用结果反馈调整行为
优秀轨迹提供示范;可复现环境与验证器支持继续探索。训练更新后的模型,再回到任务里检验学到的做法。
这些工作改变的是不同东西:提示或技能进入当前上下文,改变这一次可用的条件;多次尝试与筛选,增加这一轮找到好结果的机会;训练更新参数,改变模型面对后续任务时的行为分布。它们相互配合,但判断一次效果提升时,仍要知道改善发生在哪一层。
换一批题,才能知道学到了什么
训练过的配置问题做对了,只是起点。换一个构建系统、隐藏生成标记、让错误出现在另一种文件里,模型是否仍会寻找来源关系?换一类无需追查生成过程的任务,它会不会过度调查?评测既要检查该出现的行为,也要检查它不该出现的场景。这样才能区分掌握方法与形成一个新的机械习惯。
开发用的失败案例可以进入回归检查,保护已经获得的能力;判断泛化时,还需要没有参与训练和反复调参的新任务。比较模型前后表现,也要尽量保持环境、工具和尝试预算一致,否则更高分数可能来自更强的外部帮助。我们需要知道两件事:整个产品是否更好用了,以及模型本身是否更能独立完成工作。两种进步都值得要,也应当分别看清。
产品把这个过程接成循环
真实使用不断带来新问题:开发者没见过的项目结构、用户没有说全的需求、只在某种环境下出现的失败。把问题还原成可以重跑的任务,补入评测,再判断该修改知识、方法、工具还是执行条件,线上失败就成了下一轮开发的依据。与此同时,专家引导和改进后的系统会留下更多优秀轨迹,经过验证后用于训练。失败帮助找到下一处缺口,成功提供可学习的路径,两条回路通过同一份工作相互促进。
更强的模型回到这些任务中,对外部提醒的依赖可能减少,也能开始处理更复杂的情况。工具和环境继续运行,评测继续检查,新的问题又推动下一轮改进。一次成功就是这样逐渐变成可稳定交付的能力。接下来的自进化问题也由此变得具体:模型能否参与寻找失败原因、改进工具与技能,进而改善自己下一轮学习所依赖的条件?