跳到正文

调优:归因、数据飞轮与黄金集 ​

一句话:调优的第一个动作是归因,不是训练;第二个动作是建题,不是改 Prompt。数据飞轮把运行事实变成可复用样本,黄金集把“什么叫做好”固定下来,实验只负责验证一次单变量改动。

对应原书:第 17 章《模型调优》、第 18—22 章《调优总览 / 轨迹数据 / 运行时数据处理 / 黄金数据集 / BadCase》。

为什么需要 ​

一次排障修好眼前问题,未必帮得了下一次:原因留在工程师记忆里,Trace 散在日志里,修复记录又在另一个系统;几周后同类问题换个表述再来,还是从头查。Agent 上线后要持续回答两组问题:任务有没有做好,以及做好花了多少代价。

传统应用靠代码规定行为,路径确定、可复现;Agent 把目标、工具与约束交给运行时,同一任务会因为上下文、反馈与生成不同走出不同路径。于是“对话顺利结束、接口没有报错”不再等于办对了——一次退款要确认是哪笔订单、适用哪条规则、结果有没有核实。

公开基准先把预期打下来:OSWorld 2.0 长流程任务严格完成率 20.6%,部分得分 54.8%;τ-bench 的 pass¹ 为 61.2%,同一任务八次全成功的 pass⁸ 低于 25%。会做、做完、稳定交付是三个层次,必须在自己业务上建立评估。最常见的错误动作是看到低分就改 Prompt,同时换模型、加 Skill、补知识库,分数动了却不知道为什么动。

核心机制 ​

一、三层归因:环境 → Harness → 模型 ​

模型负责理解与决策,Harness 负责上下文、工具协议、状态与权限,执行环境承载真实动作。归因顺序固定:先排除能独立复现的环境故障 → 再查 Harness 的信息与控制 → 最后判定模型能力缺口。失败现象本身不决定归因——工具选错,可能是能力不足,也可能是工具描述含混。

三个验证手法:绕过模型直调工具仍复现 → 环境;固定模型、修正 Harness 后错误明显减少 → Harness;固定 Harness、换模型后错误跨任务变体稳定出现 → 模型。更严格的是四组对照(原/候选模型 × 原/候选 Harness)。成本也能触发模型优化(长提示、重试、多模型复核超预算),但那是成本归因,不是能力归因。

二、目标与能力缺口 ​

优化目标看三维:质量看任务完成、关键动作、业务口径与约束遵守;可靠性看多轮、输入变化与工具异常下是否回退;成本看单位成功任务成本 = 全部执行成本 ÷ 成功任务数,失败与重试都进分子,比较时固定任务构成并同时报成功率。安全不靠模型自觉,由 Harness 与执行环境强制实施。

落到模型后,缺口分四类:任务理解与约束识别(条件不明时能提出澄清也算有效推进)、工具使用与反馈理解(调用成功不等于结果有效)、多步决策与状态利用、失败恢复与合理终止。

三、方法按“学习信号”选,不按先进程度选 ​

方法什么时候用学的是什么
SFT正确行为能被可靠示范在该时刻可见信息下应当生成什么
Agentic RL路径优劣只能靠实际执行判断,且环境可交互、反馈可验证连续决策中选择动作的倾向
蒸馏教师已具备能力,目标是迁移、压缩、降本教师的输出或行动轨迹

三者可组合:SFT 做 RL 冷启动;RL 专家再蒸馏做部署;on-policy distillation 在学生自己的状态分布上蒸馏。训练阶段要覆盖生产的主要上下文、工具协议与反馈方式。

四、SFT:轨迹不等于监督目标 ​

每个目标动作只能依赖该决策时刻已可见的信息。工具还没返回,目标动作就不能用它的结果;用户后补的条件,不能提前进入早期决策。否则离线信息优于线上,上线必然复现不了。

质量筛选不能只看成败:成功轨迹可能含多余查询,失败轨迹可能含有效恢复。做法是双重掩码——角色级(只对模型生成算损失)+ 质量级(错误动作保留为上下文、屏蔽损失,只监督验证过的修正行为)。配比上高频建稳定、长链路练跨步、异常补恢复,并保留通用问答样本防工具化回退。

验收靠执行评测:训练损失下降只说明更容易生成监督内容。让候选模型在固定 Harness 下自主运行,测试集按任务族分组、与训练集隔离,换季度或字段验证学的是方法而不是模板。

五、Agentic RL:奖励只是三根缰绳之一 ​

准入看六件事:确属策略问题、示范不可得、结果可验证、环境可重复可重置可隔离可追踪、基础策略已有有效轨迹、收益能覆盖 Rollout 成本。任务建模为部分可观测序列决策:观察、动作、转移、结束。结束要区分终止(成功/失败/预算耗尽)与截断(采样时限等无关原因,可做价值 bootstrap)。奖励四信号:结果(核心)、过程(可客观判断的关键状态)、成本(成功前提下优化)、约束,形式大致是 R = w₁R_task + w₂R_process − λC − μP。

三重控制边界不能互相替代:训练奖励作用在参数上;系统硬约束作用在每次执行上,不可绕过;独立评测在回路之外,判定真实能力与是否发布。奖励制止不了越权,越权也判断不了能力优劣;奖励本身还有奖励投机、代理目标偏移、评审器漂移三种风险。

长程任务靠课程式采样、只给可验证阶段的过程反馈、同任务多轨迹相对比较、显式覆盖参数修正/工具切换/状态回滚/澄清终止。把长轨迹切成文本片段并不会改善信用分配——只有分段对应可验证子目标或层级策略,信号传播才真的变短。

六、蒸馏:先补缺口,再谈替代 ​

先定能力范围(任务—职责—风险矩阵:学生独立执行 / 学生执行教师校验 / 教师直接执行),再选迁移范围:完整行为迁移,还是技能级迁移(工具路由、查询生成、结果核验)。后者成功标准更好定义,适合首次落地。教师信号分五层:最终输出 → 标签与理由 → 结构化动作 → 多轮轨迹 → 概率信号;用不用概率蒸馏,取决于能否拿到 log-prob 与词表对齐,这是工程约束。

三条路线:off-policy SFT(稳定,但有状态分布偏移)、on-policy RL(真反馈,但奖励稀疏)、OPD(学生真实状态 + 教师逐 token 评价,稠密但会复制教师偏差、压低探索)。定位缺口看学生相对有效路径的首个关键偏离,不是只看最终失败标签;教师高概率不等于正确,示范进训练集前必须验证。收益核算用两个数:质量保留 R_Q = 学生成功率 ÷ 教师成功率;单位成功任务成本要把重试、教师兜底、验证器、工具、运行时全部计入——成本下降但失败损失上升,是伪收益。部署上更现实的是级联:学生先做,置信度或一致性不足时升级教师,收益来自“少调用教师”,不必一次完全替代。

七、验收:五门禁、灰度四阶段、整单元回滚 ​

准入门禁在看结果前定好:接口兼容、目标收益(最小改善 + 置信区间)、能力回归(非劣效界值)、运行预算(单位成功任务成本 + 高分位时延)、安全硬门禁(违规频率与防护穿透率分开统计)。灰度走四阶段:影子验证(只读、隔离重放)→ 低风险灰度(只读工具、内部用户)→ 分阶段扩量(写操作晚开放)→ 稳定替换(保留旧版一个完整业务周期),每阶段预置扩大、暂停、回滚三个条件。

回滚对象是完整发布单元(模型 + Prompt + 工具 Schema + 上下文策略)。只回退权重,会得到一套从未验证过的组合;回滚也撤不掉已完成的写操作,资金类任务要独立做幂等、审计与补偿。推理框架是这套成本口径的底座:Prefill 吃算力、Decode 吃带宽,KV Cache 是显存里最紧张的资源;Agent 负载输入长、输出短、前后高度重复,缓存命中率本身就是成本。

八、数据飞轮:三段闭环,四条边界 ​

飞轮的三个动作是整理、评估、实验,加上一条回到运行的回路;缺了回路,样本越攒越多,行为却不变。四条边界的共同点是:每一段只对它能掌握的事实负责。轨迹不能凭空补出业务事实(超时重提、第一次其实已成功,要先补齐结果并关联);Pipeline 不能替代人工确认;评估不能代替候选执行;保存了一个版本,不等于运行中的 Agent 已经用了它。

数据在调优里有两个作用:帮助判断该改哪里,也帮助拒绝无效或带来退化的修改。样本增加、经验入库、候选生成都只是过程产物。

九、轨迹:先证明采集是真的,再谈结论 ​

三个对象要分清:Trace 是一组关联调用;Session 是一段可能含多条 Trace 的连续交互;Trajectory 是整理后的行为主干。SessionID 帮助查找,但不自动证明属于同一任务。分析从一条自己知道发生了什么的任务开始,核对问题、回答、工具调用与返回是否齐全;列表为空时依次查空间、时间、筛选、采集,区分“没采到”和“没做对”。

检索按问题选:TraceID 精确查某次执行,SessionID 看连续交互,无标识时用应用 + 模型 + 工具 + 时间组合;关键字匹配原话与错误表述,语义搜索找同义表达。相似度只负责选出候选,不代表同难度或同错误,不能当质量分用。读法固定:先看输入输出定目标与结果,再看概览(步骤、工具、Token、耗时),最后沿用户补充、行动、工具返回展开;多 Agent 要看主 Agent 交给子 Agent 的目标与实际收到的返回。

三类问题各有落点:工具失败先看 Agent 怎样处理(追问原因、修正参数后成功 = 能恢复;原样重试同一错误 = 改重试或停止条件)、耗时偏高找多出来的工作(反复检索同一材料、工具返回大量无关内容),不因总 Token 高就删步骤、业务质检看回答与执行事实是否一致——“完成”是输出,工具收到请求、任务执行结束、业务目标达成不是同一件事。结论要落到一组相邻事实——“要求给操作步骤 → 检索返回了步骤 → 回答遗漏步骤”,而不是“回答质量不好”。

十、Pipeline:把整理方法存成任务 ​

七类能力按结果选,不必全加:字段投影/过滤、实例构建、三档去重(精确/近似/语义)、采样与聚类、LLM 调用(分类、摘要、标注)、文本统计、单次或周期执行。

动手前先定一行代表什么:一次任务、连续多轮,还是并行路径。字段至少保留 input、output、agent_trajectory 与来源标识,并且要能回答质检目标——查“是否真的办成”,就必须保留工具反馈与业务结果。处理按成本排序:能筛的先筛、只要 N 条先采样、再做模型处理;LLM 标注只做分类与预筛,正式评分交给可校准的评估器。长期守三项约定:样本粒度、字段含义、数据用途——管线简单而输出被持续使用,比配置很多却无人消费更有价值。

十一、黄金集:题目 + 判断依据 ​

黄金集的“黄金”指题目与标准可信,不是指答案漂亮。知识问答给参考答案与必须覆盖的要点,操作任务说明业务应达到的状态,代码任务带测试与验收条件。Agent 曾经答错、但补齐了正确要求的任务,往往比成功样本更有价值。建设路径是候选集 → 六字段 → 手工确认几条 → AI 标注扩大 → 复核进黄金集;预标注只减少整理工作,标准仍由业务确认。

六个字段:input、actual_output、expected_output(合格示例)、rubric(必须做到什么、怎样判分)、scenario、source_ref。开放任务不要求逐字一致,参考答案与 rubric 可以一起用。选题五类:高频问题、已发生过的问题、业务边界与高风险、原本正常的题、表述变化与多轮问题。只收低分题看不到正常能力退化;用场景列找空缺,优先补空缺,而不是不断加近似问题;涉及实际操作要写明任务起始条件。

三种用法:校准评估器(好/坏/边界回答看机器分是否与业务一致)、比较版本(基线 + 候选同题,先看逐题再看总体)、回归检查。版本留档要建只读快照,比较期间不追加修改。最关键的一条:参与改写 Prompt/Skill 的题,与独立检查效果的题必须分开。反复看过并据此修改的题已经参与了调优,不能再当验证题。

十二、BadCase 到实验:一次只动一个变量 ​

评估器按问题选实现:格式与必填字段用 Code 规则,切题与遗漏用 LLM 评估,多步骤与工具一致性用 Agent 评估结合轨迹;多个评估器分别评“回答质量”与“业务操作完成”,总分要写清计算方式,不能简单平均。通用标准先立三条:是否回应了实际问题、关键说法是否有材料支持、操作任务是否给了足以继续执行的步骤。试评至少覆盖一条好回答、一条坏回答、一条信息不完整的样本;坏回答得高分,先查它收到的输入,再查评分条款。

看低分要带任务与时间范围,避免把不同标准、不同业务混在一起比;一条结果至少把原始问题、回答、分项判断与解释放在一起读。不要看到低分就立即改 Prompt,先判断问题是否成立、归因是否清楚。

确认问题后配实验:先记录 Baseline;第一轮只改最有依据的一项;被评分必须是本次新生成的回答与新轨迹;用独立黄金集的最新数据,实验期间不写入;同步记录评分标准、版本、Prompt 与关键参数。接入企业自有 Agent 时还要区分两类问题:连接与会话适配失败,还是回答质量失败——受理成功不等于题目完成,独立样本用独立会话。

对比时先确认同一批题、同一版标准,从退化题开始读,再看改善题和关键正常场景。输出变长不代表改善;候选总分更高但关键条款未过,不升级;只有一题改善、其他退化,说明把某种回答格式强加给了所有问题。采用前看三件事:严重错误是否消失、正常场景是否退化、耗时与消耗是否可接受。小批通过后扩到历史回归集,再验证未参与修改的独立样本,才进发布流程。

最小上手 ​

yaml
attribution: [environment, harness, model]     # 顺序不可换
objective: {quality: pass, reliability: no_regression, cost: per_successful_task}
training: {method: sft | agentic_rl | distillation, holdout: isolated}
dataset:
  fields: [input, actual_output, expected_output, rubric, scenario, source_ref]
  classes: [frequent, occurred, boundary_high_risk, previously_ok, paraphrase_multi_turn]
experiment: {baseline: recorded, variables: 1, scored: new_output, dataset: gold_latest}

验收看四件事:任一失败能按三层归因给出证据;黄金集里每道题都有人能解释为何保留;一次实验只动一个变量且记录完整;候选上线前跑过未参与调优的独立题。

生产动作 ​

  • 先修 Harness,再训模型。用训练弥补系统工程问题,是用最贵的方式做最慢的修复。
  • 把评测器当代码管。它有版本、有校准集、有误判记录;改评分标准要重跑历史样本。
  • 固定成本口径。单位成功任务成本,失败与重试计入分子,比较时锁定任务构成。
  • 把推理成本纳入同一本账。缓存命中率、Prefill 与 Decode 的比例,决定同样的模型能力花多少钱。
  • 推理侧要理解三个核心机制:Prefill 吃算力(读题,并行)、Decode 吃带宽(作答,串行生成)、KV Cache 是显存最紧张资源(与上下文长度 × 并发成正比)。Agent 负载特点是输入很长、输出较短、前后请求高度重复——缓存命中率就是成本。连续批处理让 GPU 满载,分块预填充防长请求卡顿;PD 分离把 Prefill 和 Decode 分到不同 GPU 集群,提升整体吞吐。投机解码用草稿模型加速生成,结构化输出保证工具 JSON 可解析。
  • 留一份没被看过的题。任何被反复用于调优的题,都不再具备验证能力。

边界 ​

  • 公开榜单不是验收。它只说明在某套环境与任务分布下的表现,业务口径要自己建。
  • 训练损失不是能力。损失下降只说明更容易生成监督内容。
  • 评估不是实验。评估检查已发生的执行,实验让新版本重新回答。
  • 奖励不是约束。高风险限制必须由系统硬控制,不能只靠负奖励。
  • 蒸馏不是替代。级联兜底是目标架构的一部分,不是失败的例外;未被消费的管线、从未进入实验的黄金集,也都还不算资产。

讲清楚 ​

调优的起点是归因:先排除环境,再查 Harness 的信息与控制,最后才判模型。落到模型后按学习信号选方法——能示范用 SFT,路径优劣要靠环境反馈用 Agentic RL,要迁移降本用蒸馏;三者可组合。训练损失不等于能力,验收必须在完整 Agent 里过五门禁、走四阶段灰度,回滚的是完整发布单元。

主线是数据飞轮:运行事实经轨迹整理和 Pipeline 变成 Dataset,业务确认后进黄金集,评估发现问题、实验验证单变量改动,有效变更再回到运行环境。最容易被跳过的一步是建题——没有一批可信的题和明确的判定依据,所有分数都不可比;而被反复用来调优的题,也不能再用来验收。

适用:Agent 效果归因、数据飞轮与模型调优验收 | 初稿 2026-10

把 AI 工程讲到既懂也会用