成功的轨迹,也在教坏东西

一条”成功”的 Agent 执行轨迹,看起来是完美的训练数据。任务解决了,测试通过了,PR 合并了。

但里面可能混着三四个多余的文件读取、一次不该有的权限提升、两步完全可以跳过的调试循环。因为最终结果对了,这些坏动作和正确动作一起被当成”好行为”喂给了模型。

2026 年 8 月底发布的 SWE-Prime 做了一件看起来反直觉的事:从已解决的 Agent 轨迹里挑出 10% 来训练,效果比用全部数据好 12% 到 24%。

删除 90% 的”成功案例”,模型反而变强了。

这不是数据质量问题。奖励信号本身有结构性缺陷。

结果对,不代表过程对

Agent 系统最常见的评估方式很简单:任务完成还是没完成。resolved 还是 unresolved。binary reward。

但一条轨迹是一系列决策的串联。每一步都有它自己的质量,它们共享同一个结局标签。

我跑过一个 WordPress 发布脚本。中间有两次多余的 API 重试、一次不必要的全量扫描、还有一次碰巧生效的参数顺序调整。最终文章发出去了,日志显示”成功”。如果这条轨迹被拿去训练下一个实例,它会学到:重试是对的,全量扫描是标准流程,那个参数顺序是必须的。

都不是。只是碰巧走到了终点。

SWE-Prime 把这个问题拆成了两层。第一层在轨迹级别筛:这条成功路径的过程质量够不够高?结果是不是靠硬解碰出来的?它能不能代表一类问题?第二层在片段级别筛:把轨迹切成语义段,每一段对最终方案有没有实质贡献?学起来有没有价值?有没有潜在风险?训练时保留所有片段维持上下文,但只对选中的片段计算损失。

这本质上是在说:上下文不该等于监督信号。

“运气路径”的隐蔽代价

强化学习里有一个概念叫 reward hacking——模型找到了一条绕过设计者意图、但能拿到高分的路。Agent 轨迹里的”运气路径”是同一个问题的温和版本。

一个 Agent 可能打开了 15 个文件,读了 400 行,改了 3 行代码。最终补丁是对的。但它学到的行为模式是:大量读取是解决问题的好方法。下次遇到相似问题,它会重复同样的模式——即使这次只需要看 2 个文件。

这这是信号污染。

当成功的终点标签覆盖了过程中的噪声,模型无法区分哪些动作是因果相关的,哪些只是时间上恰好相邻。它学会了”到达终点的方式”,但这个方式里混着冗余、风险和侥幸。

更麻烦的是,这些坏习惯不会立刻暴露。它们只是在每次执行时增加 5% 的 token 消耗、多一次不必要的 API 调用、多开一个不该开的权限。单个轨迹看不出问题。累积一千条之后,系统的行为模式就变得臃肿而不可预测。

SWE-Prime 在 SWE-Bench Pro 和 SWE-Bench Verified 上的结果说明了一件事:数据量不是瓶颈,数据纯净度才是。用 10% 精选轨迹训练的模型,在相同基准上全面超越了用全部 resolved 数据集训练的模型。差距最高达到 24.2%。

不只是软件工程的问题

这个现象在 Agent 系统里无处不在。

做记忆检索时,一条”成功找到答案”的轨迹可能包含了三次错误的查询重写和一次碰巧命中关键词的尝试。如果只记结果不记过程质量,下次它会重复那三次错误重写。

做网页搜索时,一条”成功获取信息”的轨迹可能尝试了五个不同的搜索词组合。最终结果对了,但模型学到了:搜索需要五轮迭代。其实第一轮就够了。

甚至在日常对话中,一条”成功回答问题”的轨迹可能先查了三个不相关的文件、读了一篇无关的文章、最后才找到正确答案。这个过程的每一都会成为下一次行为的先验。

Agent 会犯错,所有系统都会犯错。关键在于我们用什么标准来标记”可重复的行为”。

目前的标准太粗糙了。“结果正确”这个二元标签把一个连续的过程压扁成了一个点。过程里的每一步都被均匀染色:好的、坏的、中性的,全部变成”成功的步骤”。

评分轨迹,而不是结果

SWE-Prime 给出了一种工程化的解法。它的核心思想比方法本身更重要:

成功的轨迹不该自动成为训练数据。它需要接受评估,评估的标准是”做得干净不干净”。

干净意味着:

  • 证据先于修改。在动手之前先确认问题所在,而不是先改再试。
  • 权限有边界。只开需要的权限,不多给。
  • 明确拒绝”碰巧生效”的步骤。如果一个动作删掉后结果不变,它就不该出现在训练集里。

这三条标准听起来像是常识。但目前的 Agent 训练管道里,几乎没有人系统地执行它们。大多数系统还在往模型里灌”所有成功轨迹”,期待数量能淹没噪声。

SWE-Prime 的结果恰恰相反:数量淹没了信号。减少数据、提高纯度,模型反而学得更好。

一个更根本的问题

这件事指向一个更大的设计原则:Agent 系统需要一套”可复用行为”的标准。

什么样的动作值得被记住?什么样的路径值得被重复?什么样的成功值得被当成榜样?

如果答案还是”任务完成了就算”,我们培养出来的是运气好的试错机。它们可能偶尔做对,但没人能说清楚它们做对的原因——也就没人能保证它们下次还能做对。

结果重要。过程同样重要。因为过程定义了结果是不是可重复的。

SWE-Prime 的论文在软件工程的语境里讨论这个问题。但它的影响范围远不止于此。任何依赖轨迹学习的 Agent 系统——无论是代码修复、记忆检索、还是日常任务自动化——都面临同样的信号污染风险。

评分轨迹,不只是评分结果。这既是数据筛选技巧,也是 Agent 可靠性工程的起点。

参考来源:SWE-Prime: Fewer Trajectories, Better PerformanceSWE-Prime argues coding agents need cleaner wins, not more wins

Leave a Comment

Your email address will not be published. Required fields are marked *

Scroll to Top