跳到正文

DEEP RESEARCH PROJECT INTERVIEW · Q15 / 25

Teacher 生成的 Agent 轨迹为什么不能直接拿去训练,怎样筛出高质量样本?

从真实环境执行、三阶段质量漏斗、Observation Mask 和小批训练闭环,讲清 Deep Research 轨迹怎样生成、验证与发布。

作者与复核:吴师兄内容依据:公开教程、代码示例与工程推导查看关联教程 →查看吴师兄公开作品 →

25 道题目Q15
本页内容21 节

30 秒先说结论

让 Teacher 在可重放环境中逐步执行,工具返回只由环境写入。轨迹先查结构和角色,再查工具选择、参数、进展、异常恢复与停止,最后查答案完整和主张证据。训练时 mask 掉 observation,并区分错误、环境失败与截断未完成。

做 Deep Research 训练数据时,常见做法是把一批研究问题交给更强的 Teacher 模型,让它使用 Search、Visit、学术检索或计算工具完成任务,再把过程保存下来训练较小模型。

听起来像是把“优秀学生的解题过程”交给另一个学生模仿。

问题在于,Teacher 更强不等于每次都对。它可能调用格式正确,却选错工具;可能访问了很多页面,却没有推进任务;也可能在工具失败后自行补出一段观察,最后写出一篇流畅但证据对不上的答案。

如果这些轨迹未经验证就进入训练,学生模型会同时学到好习惯和坏习惯。数据量越大,错误模式可能越稳定。

所以面试官真正想问的是:

一条 Teacher 轨迹到底记录什么,为什么它只能算候选样本,怎样验证工具行动、环境观察、证据和答案,如何区分错误与未完成,又怎样从小规模训练结果反推数据分布问题?

先说清:这里的“轨迹”不是公开模型私有思维

工程上真正需要审计的,是系统可以观察和复现的过程。

一条轨迹可以包括用户任务、当前状态摘要、工具名称、结构化参数、工具返回、被采用的证据 ID、任务状态变化、停止原因和最终答案。

例如系统先搜索候选来源,随后访问官方页面,发现版本条件不一致,再补查第二个来源,最后只对已经获得支持的结论作答。这些动作和观察都能从日志与工具环境中核验。

不需要把模型不可审计的内部推理文本当成质量依据。即使 Teacher 写了一段听起来很完整的“思考”,也不能证明它真的使用了正确证据。

把评审重心放在可观察记录上还有一个好处:数据可以重放。审核者能用相同参数再次调用工具,检查环境是否返回了那段内容,以及答案中的主张是否确实来自这些观察。

Teacher 候选轨迹与可训练轨迹的差别

Teacher 只负责生成候选,环境真实性与质量门决定它能不能训练。

为什么强 Teacher 也会生成坏轨迹?

第一类问题是工具选择错。

简单常识题本来可以直接回答,Teacher 却习惯性搜索;需要访问原文时,它只看搜索摘要;需要计算时,它用自然语言估算。格式都合法,决策却没有学价值。

第二类问题是参数错。

搜索词过宽,Visit 指向无关页面,日期范围和对象条件丢失,或者计算输入和证据中的数字不一致。工具确实运行了,但处理的不是原任务。

第三类问题是无效循环。

模型反复搜索近义关键词、访问同一个页面、在没有新增证据时重复总结。长轨迹看起来更“努力”,实际没有进展。

第四类问题是观察伪造。

工具超时、权限受限或返回为空后,Teacher 可能根据常识补出一段结果。若数据管道只保存文本,不核对环境日志,这段伪观察会被当成真实输入。

第五类问题是答案越界。

证据只支持局部事实,Teacher 却给出确定性比较、因果解释或未经验证的最新结论。文章写得越顺,人工越容易忽略支持关系。

Teacher 的作用是提高好候选出现的概率,不是替代验证。模型更大也不能消除网页变化、工具故障、领域盲区和共同偏差。

轨迹必须在真实或可验证环境里执行

最危险的数据生成方式,是让 Teacher 一次性“编一条看起来像用过工具的过程”。

合格流程应让控制器逐步执行:Teacher 只能提出下一次工具行动;工具适配层实际运行并返回 observation;控制器把返回写入状态,再让 Teacher 决定后续动作。

真实环境更接近上线行为,但受网络、限流、页面变化和成本影响。模拟环境更稳定、可复现,却可能过于理想。

可以把两者结合。高频结构和异常分支在版本化模拟环境中覆盖,关键来源与最终效果在真实环境抽查。模拟返回必须来自固定语料或明确规则,不能仍由同一个 Teacher 自由编写。

每次执行至少记录环境版本、工具版本、时间、请求参数、返回状态、内容摘要或证据定位、重试与降级情况。否则轨迹出了问题,只能看到一段结果文本,无法判断是模型错、工具错还是来源变了。

可重放也不等于永远得到相同互联网内容。动态来源需要保存核验时间和必要快照,并标记哪些题属于时间敏感任务。

一条轨迹最少要保存哪些信息?

任务层要保存问题 ID、问题族、目标能力、范围、交付和允许使用的工具。

行动层要保存步骤 ID、工具名、结构化参数、调用时间、结果状态和前后依赖。

观察层要保存环境实际返回的来源标识、内容定位、错误类型和是否进入证据集合。

状态层要记录已经确认的主张、仍缺的信息、预算变化和停止原因。状态可以是结构化摘要,不要求保存不可验证的内在推理。

答案层要把每个关键主张与证据 ID 对齐,并区分事实、计算、推断、建议和证据不足。

治理层还要保存 Teacher、Prompt、工具、环境、规范化器和审核器版本,以及生成、重试、人工修改和发布记录。

这些信息让一条轨迹不只是训练文本,也是可以复盘的数据资产。格式标准化时,可以把不同 Teacher 的原始记录转换为目标模型所需的对话与工具调用格式,但原始血缘不能丢。

三阶段漏斗怎样筛轨迹?

相关数据构造材料强调,轨迹采样后需要严格过滤,可以按三阶段漏斗理解。

第一层解决“能不能解析”,第二层解决“过程是否真的在完成任务”,第三层解决“结论是否正确且有证据”。

顺序很重要。格式都不合法的样本没必要先做昂贵事实审核;格式合法也绝不代表过程和答案合格。

Teacher 轨迹三阶段质量漏斗

结构、行为、答案逐层过滤,任何一层失败都不能靠后一层的高分抵消。

第一阶段:结构与角色是否合法?

先检查样本能否被目标训练框架稳定解析。

工具调用是否只有允许字段,参数类型是否正确,JSON 是否完整,角色顺序是否符合协议,工具返回是否紧跟对应调用,最终答案是否只有一个明确出口。

还要检查 ID 引用。一个 observation 不能挂到不存在的工具调用上,答案引用也不能指向未出现的证据。

截断是这一层必须单独标记的问题。若序列达到长度上限后没有最终答案,它不等于模型做出了错误结论,只能说明样本未完成或采样预算不足。

规范化可以修复无语义影响的差异,例如字段顺序或可确认的角色名映射;但不能擅自补写工具结果、参数、证据和最终答案。修复会改变事实内容时,应重采样或拒绝。

结构门保证训练框架能够区分模型输出与工具环境 token;文本是否看起来整齐只是次要结果。

第二阶段:行动是否合理并持续推进?

一条行为合格的轨迹,每个行动都应服务于当前缺口。

先看工具选择。常识题是否可以直接完成,计算题是否优先使用可靠计算,搜索摘要不足时是否继续 Visit,专业论文问题是否进入合适来源。

再看参数质量。查询是否保留关键对象、时间和比较条件;访问目标是否来自真实搜索结果;计算输入是否能追溯到已经获得的证据。

然后看进展。每一步是否新增证据、排除假设、澄清范围或触发合理改道。连续多个步骤没有状态变化,通常是循环或无效探索。

还要检查异常处理。工具超时后可以重试,但要限制次数;页面受限后可以换来源,但不能伪造内容;证据冲突时应该继续核验,而不是选择更符合预期的一条。

最后看停止条件。证据不足时过早回答是问题,任务已经完成后继续搜索同样是问题。停止应由任务合同、关键主张覆盖和剩余风险决定,不由固定步数决定。

行为审核可以结合规则和模型,但关键状态必须能落到日志。审核器说“步骤合理”不够,还要指出它解决了哪个信息缺口。

第三阶段:答案是否完整、可信并受证据支持?

最终答案首先要完成用户要求。

问题要求比较多个对象,不能只写其中一个;要求说明时间范围,就不能把不同版本混在一起;要求给来源,就不能只列无法对应正文的链接。

随后做主张级核验。把答案拆成可检查的事实、数字、比较、因果和建议,逐条寻找轨迹中的证据。证据只能支持原文包含或可以合理推出的内容,不能因为主题相关就算通过。

计算结论要核对输入和方法。比较结论要统一指标、版本、样本和时间。推断与建议要明确标注,不能伪装成来源已经确认的事实。

还要检查引用覆盖和引用准确。引用多不等于质量高,同一来源的转载也不等于独立交叉验证。

开放问题可以有不同合理答案,但必须覆盖约束、证据、取舍和风险。无答案任务则要证明在规定来源和时间范围内证据不足,而不是 Teacher 没搜到就宣布不存在。

最终审核最好与 Teacher 的生成上下文隔离。否则审核器容易沿用候选答案的假设,忽略反证和遗漏。

“做错了”和“没做完”为什么必须分开?

训练阶段最容易出现一个反直觉错误:把所有没有最终答案的长轨迹都当负样本。

有些轨迹确实方向错误,例如工具选择持续不当、证据冲突仍下结论。

另一些轨迹只是被最大长度截断、网络反复失败或预算耗尽。它可能前面的动作合理,只是没有机会完成。

如果统一把未完成轨迹当作错误惩罚,模型可能学到“尽快输出一个答案比继续核验安全”。训练材料在强化学习部分明确提醒,截断样本若简单作为失败处理,可能诱导模型为了避免截断而随意回答。

工程上可以把结果拆成成功、事实错误、行动错误、格式错误、环境失败、预算耗尽和截断未完成。哪些能作为负样本、哪些需要重采样、哪些只用于分析,分别处理。

次优步骤也不是完全没用。材料提到高阶动作合成可以利用次优或错误步骤帮助模型学习决策,但前提是错误原因明确、正负分支可比较,而不是把整条脏轨迹直接喂给模型。

为什么 Observation 要做 Loss Mask?

工具返回不是模型应该生成的内容。

训练时如果让 observation token 参与预测损失,就等于要求模型记住或复述环境返回。模型可能学会在没有调用工具时生成一段像搜索结果的文本。

因此训练材料强调,对 observation token 做 loss mask,只让模型自身应产出的行动、结构化调用和最终回答承担对应训练目标。

这要求数据在角色与边界上绝对清楚。若工具返回被混进 assistant 文本,mask 可能漏掉;若模型说明被误标为 tool,真正要学的内容又会被遮住。

Mask 只解决“哪些 token 参与 loss”,不能证明轨迹质量。真实环境、正确工具选择、答案证据和分布检查仍然要在训练前完成。

去重不能只比较最终答案

同一个种子可能被 Teacher 多次采样,表面措辞不同,行动模式却完全相同。

如果它们跨入训练集和测试集,评估会高估泛化;如果大量留在训练集,模型会被少数高频路径支配。

可以从四层去重。

问题层按母题、改写和参数变体归入 family。

来源层把共享关键证据的样本归入 source group。

行动层比较工具序列、参数模式、错误恢复和停止模式。

答案层比较主张集合与证据映射,而不只比较文字相似度。

切分应以 family 和来源组为基本单元,再检查行动模式重叠。增强最好在切分之后完成,避免同一母题的变体落到不同集合。

数据分布决定模型会形成什么习惯

轨迹通过单条质量门后,还要看整批分布。

若 Search 和 Visit 占绝大多数,模型可能遇到任何问题都先搜索。若所有成功轨迹都没有超时和空结果,模型上线后不会恢复。若每题都有答案,它可能不愿承认证据不足。

需要按任务类型、工具类型、行动步数、错误分支、答案状态、领域、时效和难度统计覆盖。

数据分布要与目标场景和评测能力对齐,无需追求每个格子完全相等。低频但高风险的权限、冲突、无答案和降级场景,可以有意识补齐。

同样要观察行动模式熵。工具名称比例看似均衡,若每条轨迹都执行同一种固定顺序,模型学到的仍是脚本,而不是基于观察调整计划。

Teacher 轨迹质量与分布矩阵

单条正确只是起点,整批数据还要覆盖不同工具、失败、答案状态和行动模式。

首次小规模训练记录告诉了我们什么?

根据首次训练综合分析与阶段性数据生成策略文档,可以确认的一次首次训练使用清洗后的 187 条样本,训练 1 个 epoch,并在 10 个通用用例上比较格式、工具调用、工具准确性、答案准确性和完整度。

这次记录观察到,输出格式更稳定;但简单问题仍倾向调用 Search,工具选择改善有限,答案准确性与完整度也不足。

这个结果最有价值的地方,是暴露了数据分布和验收口径的问题;它不足以给小样本训练盖上“有效”或“无效”的总标签。

如果训练轨迹里 Search 与 Visit 模式偏多,模型就可能把“研究”理解成默认搜索。如果直接完成、计算、访问原文、异常恢复和完整答案样本不足,只修好 JSON 格式并不会自动获得决策能力。

187 条和 10 个用例都只是特定首次运行的记录,不能外推成生产效果,也不能把文件名中的 200 当成实际清洗后条数。

材料中还出现后续阶段的目标数量和比例,那些属于建议或规划,不是已经完成的数据。是否扩量应看清洗后有效覆盖、独立评测和失败分布,不看目标表写得多大。

一批轨迹怎样形成可审计闭环?

先冻结一版问题集、工具协议、环境和审核规则。

再让 Teacher 在环境中逐步执行,所有 observation 只由工具适配层写入。

候选进入结构门,区分可修复格式差异、需要重采样和不可用样本。

通过后进入行为门,检查选择、参数、进展、异常恢复和停止条件。

再进入答案门,做任务完成度、主张证据、引用、计算与边界审核。

合格样本按 family、来源和行动模式去重切分,转换为目标模型格式并生成 observation mask。

发布前保存数据版本、生成与审核版本、拒绝原因和统计分布。然后只用一小批训练,运行与目标能力对应的独立评测。

评测若只改善格式,就回看工具与答案分布;若工具选择改善但回答不完整,就补充完成条件与答案质检;若离线良好但真实环境失败,就补异常、时效和来源变化场景。

数据、训练与评测之间形成循环,但每次都要保留版本,不能边改边覆盖,最后无法知道改动来自哪里。

面试官继续追问,怎么接?

追问一:Teacher 比学生强,为什么还不能直接蒸馏?

强模型只提高候选质量,不保证每次工具选择、观察、证据和答案都正确。蒸馏会把稳定错误一起学进去,所以仍要环境执行和独立审核。

追问二:轨迹越长越好吗?

不是。长度可能来自重复搜索和无效循环。要看每一步是否新增证据、缩小不确定性或触发合理改道。

追问三:如何发现模型伪造工具返回?

Observation 只能由工具适配层根据真实调用写入,并保存请求、状态和来源定位;模型自由生成的观察不能进入训练。

追问四:为什么截断样本不能一律当负样本?

它可能方向正确但没做完。统一惩罚会鼓励模型提前给结论,应把事实错误、行动错误、环境失败和截断未完成分开。

追问五:格式通过率提升,能说明 Agent 变强了吗?

不能。格式只是第一层,还要独立评测工具选择、过程进展、证据准确、答案完整和异常恢复。

怎样把 Teacher 轨迹质检流程说完整

Teacher 生成的轨迹只是候选数据,不是金标准。我会让它在真实或版本化模拟环境中逐步执行,工具返回只能由环境写入,轨迹保存任务、行动参数、观察、证据、状态变化、停止原因和答案,不以不可审计的内部思维文本作为质量证明。

筛选采用三阶段漏斗。第一层检查格式、角色、ID 和截断;第二层检查工具选择、参数、有效进展、重复、异常恢复和停止条件;第三层检查任务完成度、主张级证据、引用、计算和事实边界。Observation 在训练时做 loss mask,但 mask 不能替代质量验证。

我还会把事实错误、行动错误、环境失败和截断未完成分开,避免模型为了逃避长轨迹惩罚而仓促回答。数据按 family、来源组与行动模式去重切分,再观察工具、失败、答案状态和难度分布。先用小批训练和独立评测验证具体能力,再按失败缺口补数据。现有 187 条样本与 10 个用例只是一次小规模记录,不能外推生产效果,后续规划量也不能写成已经完成。

Teacher 轨迹发布前检查清单

一条轨迹进入训练集前要回答什么

沿着任务、行动、环境观察、证据到答案逐层回放,下面任一项说不清,都只能留在候选池。

  • Observation 是否全部来自可验证工具环境,而不是 Teacher 自由补写?
  • 是否分别检查结构、行动进展和答案证据?
  • 是否区分真正错误、环境失败、预算耗尽和截断未完成?
  • 是否对 observation 做 loss mask,并验证角色边界没有串位?
  • 是否按问题族、来源和行动模式去重切分?
  • 是否把首次小样本观察与规划数量、生产效果明确分开?

INTERVIEW FOLLOW-UPS

面试官会怎样继续追问?

这些追问会继续检查方案取舍、验证方法和项目事实。
  1. Q01

    Teacher 比学生模型强,为什么仍不能直接蒸馏?

  2. Q02

    怎样发现一条轨迹只是在重复搜索?

  3. Q03

    截断样本为什么不能一律作为负样本?

  4. Q04

    格式稳定能否说明 Agent 已经学会研究?

PROJECT CHECK

换成你的项目,这几件事能否说清楚?

  • 工具观察全部来自可验证环境
  • 结构、行为和答案经过三层筛选
  • 错误、环境失败与未完成分别处理
  • 按 family、来源和行动模式去重切分
用自己的项目经历练一次