跳到主要内容

从问题案例到训练数据

评估数据集如何映射到训练用法?​

评估数据集对应的训练用法
端到端回归任务(含验证器)RL rollout 任务与可验证奖励(RLVR);拒绝采样(RFT)的采样池
轨迹前缀回归任务DPO 偏好对、决策边界的 SFT 示范、在轨蒸馏的教师状态
失败归因记录(首个错误步骤与错误类别)过程监督的负标签(PRM)、RLVP 路径惩罚的规则来源
Rubric 多维评分与人工金标集向量奖励的各维度、生成式奖励模型(GRM)的训练与校准数据
  • 前提: 这四类资产各自对应不同训练用法,不能混用;
  • 基石作用: 评估环境为训练提供练习场,评估指标为训练定义目标,见Agent 评估;

过早结束问题如何转化为修复?​

  • 现象: 测试还没跑就宣称“已完成”;用户要求改三个功能,改完两个就收尾;遇到两次失败就宣布“这个任务不可能完成”;
  • 归因: 属于“任务完成度与逻辑判断问题”,首个错误定位在“准备宣称完成”的决策边界上——在此之前,读代码、改代码可能都没错,错的是在缺乏证据时下结论;
  • 生产侧信号: 用户纠正(“你根本没跑测试”)、点踩、事后审计(宣称完成的轨迹里没有任何测试工具调用);
  • 归类: 与 reward seeking 描述的“自行设置一个过于简单的检查、刚好通过就提前结束”是同一类行为,见奖励设计;
  • 端到端回归任务: 把“宣称完成前必须跑通验收测试”写成可验证奖励——测试对模型不可见,模型宣称完成时才运行,通过 +1、不通过 −1;
  • 轨迹前缀回归任务: 截取“准备宣称完成”的决策边界构造偏好对——rejected 是过早结束的错误行为,chosen 是“先运行测试、逐条核对验收条件,再下结论”;
  • 数据来源: chosen 由教师模型生成,再经过规则验证器过滤(拒绝采样),得到一批 DPO 训练对;
  • 混合配比: 按小配比混入通用任务数据做 LoRA 微调,避免把“逢收尾必验证”学成新的过拟合,也降低灾难性遗忘风险;

为什么评估这个案例需要两个集合?​

  • 边界集: 检查“任务未完成时,模型是否选择继续验证而非宣称完成”;
  • 保留集: 检查“任务确实已完成时,模型应正常宣称完成”;
  • 只盯边界集的后果: 会把模型训练成永远不敢收尾的过度矫正状态——每个任务都无限验证下去,延迟与成本崩溃;
  • 通用能力抽查: 确认 LoRA 补丁没有破坏其他能力;
  • 原则一致性: 这是“改动不能破坏既有行为”这一原则在参数层面的版本;

过早结束案例的配套实验测到了什么?​

  • 链路: 失败归因 → 轨迹前缀回归任务 → DPO 偏好对 → 7B 模型 LoRA 训练 → 边界集与保留集双集验证;
  • 数据: 24 条写实的过早结束问题案例,覆盖四类失败(未跑测试就宣称完成、多目标只完成一部分、验收条件未满足、遇错放弃并宣称不可能,含删除失败测试这类更恶劣的 reward hacking 变体);
  • 评估集: 与训练数据严格隔离的 held-out 集合,boundary 12 条 + retention 8 条;
  • 教学性质: 生产中偏好对要覆盖更多任务族,保留集要覆盖更多“正常收尾”场景;
  • 新形态警惕: 模型可能学会“口头声称去验证”而不真正验证——因此奖励必须依赖模型无法编写或修改的隐藏测试,而不是模型自己的声明;

中文引号问题为什么不能直接写规则?​

  • 用户反馈: “中文文章中的直引号应统一为弯引号”;
  • 难点: 这句话描述了期望,却没有给出可直接训练的规则——同一个引号在中文自然语言、英文原文、Markdown 行内代码、代码块、代码注释、JSON 或路径中承担的角色完全不同;
  • 正确修复: 作用域敏感的最小编辑——中文自然语言中的引用可转换为 “”,嵌套引用按中文标点规则处理;英文原文、可执行代码、JSON/schema、路径、标识符和 Markdown 反引号中的内容必须原样保留;无法判断作用域时保留原文;
  • 数据构造: 把引号使用规则写成 Skill;正例覆盖中文段落、嵌套引用以及代码注释中的中文自然语言,反例覆盖英文原文、字符串/字符字面量、JSON、路径、行内代码和整段代码;
  • 训练目标: 教“先判断作用域,再做最小编辑”,而不是“看到直引号就替换”;

弯引号案例的配套实验测到了什么?​

  • 目标: 验证 LoRA SFT 能否让模型在混合中文、英文、Markdown、代码和 JSON 的文档中,准确执行“该改的引号改弯、受保护的引号不动”,并在未见过的上下文组合上保持这一边界;
  • 设置: 以 Qwen/Qwen3-8B 为基座,bf16 LoRA 训练 2 个 epoch(256 次更新);
  • 规则复用: SKILL.md 的作用域规则同时作为生成标签、质量门禁和回归规范;模型只负责选择作用域和生成最小编辑,生产侧的解析器与语法检查不被移除;
  • 数据: 按 16 类片段、10 种文章体裁和 9 种编程语言渲染 1024 条训练样本、256 条留出样本和 256 条边界样本;
  • 样本形态: 成对保存原文与目标文本;

编辑文件失败的问题出在链路哪一段?​

  • 现象: Coding Agent 用 edit_file(path, old_string, new_string) 时,编辑工具按精确字符串匹配,哪怕只差一个空格、换行、反斜杠、Unicode 组合字符或低频 token 都会失败;
  • 排查链路: 文件原始字节 → 工具返回 → Harness 序列化 → 模型上下文 → 模型 token 输出 → 解码字符串 → JSON/tool-call 解析 → 工具匹配;
  • 归因一: 若文件读取或工具返回已经改变字节,归因给工具;
  • 归因二: 若序列化、转义或提示词拼装改变了内容,归因给 Harness;
  • 归因三: 若 tokenizer encode 后再 decode 发生变化,归因给 tokenizer;
  • 只有模型是首个差异点才归因给模型: 模型收到的上下文与原始字符串完全一致,而模型输出是链路上首个出现差异的位置,才把它标为模型的精确复制能力问题,作为后训练候选;
  • 训练数据: 把复制任务抽象成三个可验证任务——直接逐字复述;在相似且等长的多个字符串中选择完全相同的目标;把指定字符串完整抄写到 old_string 的工具 JSON 参数;
  • 样本设计: 特意包含真实编辑最容易损坏的空格、真实换行、反斜杠与 Unicode;

精确复制案例的配套实验测到了什么?​

  • 目标: 在已确认差异来自模型抄写错误的前提下,测试 LoRA SFT 能否提升模型对随机字符串的精确抄写,并用独立 tokenizer 审计排除词元化造成的假象;
  • 设置: 以 Qwen/Qwen3-8B 为基座,bf16 LoRA 训练 2 个 epoch;训练脚本只对目标字符串或 old_string JSON 字段提供逐 token 监督;
  • 结果: 留出集 byte-exact accuracy 从基座的 37.5% 提升到 78.9%,独立边界集为 80.1%;平均首次字节分歧位置分别为 54.0 与 54.2;
  • tokenizer 上限: 另用留出与边界共 512 条探针比较三个开源 tokenizer,Qwen3 与 Qwen2.5 的无损 round-trip 均为 80.1%,因此 80.1% 同时反映了模型复制与 tokenizer 上限;