同一个 Agent、同一段 prompt、温度设成 0,跑五次却只有三次成功——这不是采样噪声,是概率分布本身在托管端每天都有微小漂移。IBM Research 把这段被平均值掩盖掉的落差正式命名为 consistency gap,配一套只需一条轨迹的离线诊断和一次性 guideline 注入,Pass^5 从 53% 抬到 69% 而 Mean@5 一分不掉。
本文基于 IBM Research(Evelyn Duesterwald、Lilian Ngweta 等)2026 年 9 月 15 日发表于 Hugging Face Blog 的《Your Agent Aced the Task. Will It Do It Again?》。原文链接:https://huggingface.co/blog/ibm-research/altk-evolve-consistency。ALTK-Evolve 开源仓库:https://github.com/AgentToolkit/altk-evolve。
路演现场的常见事故:Agent 在彩排里跑通了整条工作流,正式演示同一个提问却走了另一条分支、失败。舞台上尴尬三十秒;生产环境里就是可靠性问题——上一次给用户对上账的那条 workflow,下一次同样的请求可能失败。对财务对账、合同条款审查这类关键路径而言,这不是「偶尔一次」的小事,而是能直接毙掉整个业务上线计划的 showstopper。
问题是,几乎所有榜单都把这段变异性藏在了平均值背后。IBM Research 在 AppWorld 上用 GPT-4.1 跑一个 ReAct Agent,五次重复:平均成功率 77.4%——纸面上是个「能打」的数字。但把口径换成「五次全部成功」的任务比例,只剩 53.0%。这两个数中间差 24.4 个百分点。这段落差就是他们要命名并度量的东西:consistency gap(一致性差距)。
绝大多数评测汇报的是前一个数字。这篇工作要给出的是后一个数字的测量方法,以及把它压下去的一整套流程。

图 1:Mean@5 与 Pass^5 在 AppWorld 各难度层上的差距。ReAct/GPT-4.1 汇总层落差 24.4pp,Hard 层拉大到 30.2pp。图片来源:IBM Research / Hugging Face Blog
先厘清三个容易混的指标,因为它们只差一个位置的符号,方向却完全相反:
三者的排序恒定:Pass^k ≤ Mean@k ≤ Pass@k。落到用户体验上,一个真实用户重问同一个问题时体验到的,就是 Pass^k。Mean@k 说不清「这次这个 Agent 会不会出岔」,只能说「一百次平均下来大概不错」。
AppWorld 上那 24.4pp 的差距意味着:这套评测里有近四分之一的任务,Agent「有时候能做,有时候不能做」,而任务本身从头到尾没变。作者把这类任务定义为「问题不在能力,在稳定性」——一个 Agent 完全可以既有能力、又不可靠,两条轴互相独立,不会因为你换更大的模型就自动解决。
LLM Agent 每次做决定——挑哪个 API、传什么参数、要不要重试——都是从下一 token 的概率分布里采一个出来。这个分布长什么样,直接决定了 Agent 的稳定性:
单个决策点翻一次不算什么,但一整条轨迹要连续做几十个决定,每一步 3% 的翻转概率乘上二三十步就是「这条 run 走了完全不同的路径」的高概率事件。24 个百分点的落差就是这么攒出来的。
更反直觉的一点:这个问题不会因为你把 temperature 调到 0 就消失。贪心解码、固定随机种子只管「怎么把分布转成 token」这一步,管不了「分布本身」。托管端每天的模型副本、batch 组成、GPU 编排都在微调概率,同一段 prompt 打过去,今天在 flat 分布上选了 A,明天就可能选 B。作者原文说得直白:ReAct Agent 全程 T=0.0 跑,观测到的方差都不是常规采样噪声,而是托管端非确定性。
这对中国开发者尤其值得记下一笔——通义千问、DeepSeek、豆包、Kimi 都是托管端 API,同样的浮点非结合性和 batch 抖动一分不少。谁如果指望「我把 top_p 关了、seed 定死就能复现实验」,等于把架构风险押在一个模型侧根本不承诺的假设上。
知道问题在哪之后,剩下的活就变成搜索:一条完整轨迹里,哪几步是「flat 的那种」?知道了又能怎么办?
免费获取企业 AI 成熟度诊断报告,发现转型机会
IBM 这套方案叫 ALTK-Evolve,之前那篇博客介绍过它怎么把 Agent 自己的过往轨迹蒸馏成可复用的 guideline,再在推理时注回上下文。原来那一版优化的是平均通过率;这次新加的 Consistency Analyzer,目标换成了压 consistency gap。

图 2:Consistency Analyzer 与 Guideline Generator 的两段式流水线:从轨迹到 scorecard 再到 guideline,最终写回 Agent 记忆并按需注入。图片来源:IBM Research / Hugging Face Blog
分两段:
第一段:诊断。给一条已录制的轨迹,分析器逐个决策点做受控重采样——把上下文原样重放到那一步,让模型一次输出 k 个 completion(默认 k=5),看这 k 个结果分歧有多大。分歧度落到一张 consistency score card 上,直接标出哪几步最可能在下次翻转。
三个工程细节值得留意:
轨迹长度 × 一次 completion。第二段:生成 guideline。每一个被标出的「flat 步」进入 guideline 生成器,产出一条 ALTK-Evolve 格式的自然语言指导,进入既有的存储/检索管道,下次相似上下文命中时自动注入。
作者给了 AppWorld 上的一条真实样例,任务是「我 SimpleNote 里的清单勾了几件」:
Guideline 1:数笔记里那种复选框式标记时,用行首锚定的正则,别用普通子串计数——笔记标题里常常在图例行也复用同一个符号。
Guideline 2:查笔记的查询结果永远做一次多条命中的校验,确认是「那条」笔记再往下走。
注意这两条不是任务专属的琐碎 trivia。「字符串计数踩到重复符号」「不校验搜索结果就直接用」是任何长上下文 Agent 都可能翻的通用错误。分析器盯的不是失败、而是不稳定——它捕捉的是「这次侥幸做对但下次可能做错」的步骤,不是「已经错了」的步骤。
评测在 AppWorld test_normal 的 168 个任务上跑:每个任务先用一条基线轨迹生成 consistency guideline,再用 5 次全新的 run 测 Pass^5。结果:

图 3:引入 Consistency Guideline 后,AppWorld 各难度层 Pass^5 的绝对提升。汇总层 +16.0pp,中等层 +22.9pp,困难层 +14.3pp。图片来源:IBM Research / Hugging Face Blog
作者特别强调一条硬约束:Mean@5 不许下降。任何靠牺牲平均通过率去换 Pass^k 的方案,本质只是把不可靠性换了个地方藏,不是真解决。结果上三个难度层的 Mean@5 都是持平或者上升,没有出现「用稳定性换掉能力」的 trade-off。
最容易被质疑的一点是:「你从这条 run 里蒸馏出来的 guideline,是不是只对这条 run 有用?」
作者做了两组对照。第一组还是 GPT-4.1,把 guideline 用到同一 AppWorld 场景下的另一条相关任务(比如同样是清单类查询、但目标不同)——Pass^5 提升 +13.0pp,只比 same-task 少了 3 个点。也就是说 guideline 不是死记轨迹,而是抓到了某种「这类步骤容易翻」的模式。
第二组更有意思:把整套流程搬到一个弱得多的模型 gpt-oss-120b 上。基线 Pass^5 只有 10.1%,加 guideline 后 same-task 抬到 16.1%(+6.0pp),而similar-task 的提升 +8.7pp 反而超过了 same-task。作者的解读:在弱模型上,同类型的失败模式更普遍,一条 guideline 覆盖到的相似步骤反而更多。这条数据把「shortcut 记忆一条轨迹」的怀疑基本排除了。
IBM 这套东西的价值主张,落到国内在做 Agent 的团队身上,值得对着自己的现状对一遍:
第一,甲方问的「上次能行为什么这次不行」,学名叫 consistency gap。 过去很多团队交付时给的是「测过 20 条 case,成功 17 条」的 Mean@k 数字,甲方复测踩到那三次翻车才发现说不清。这不是你的评测方法错了,而是你没做另一个数——Pass^k。哪怕先从 Pass^3 开始报,都能提前把「看着能打其实不稳」的场景挑出来。
第二,托管 API 不承诺决定性。 上面反复讲的浮点非结合性、batch 抖动,通义千问、DeepSeek、豆包、Kimi 一个不落。国内团队常见的做法是「把 temperature 关了、seed 定死」当护身符,然后在验收前发现同一批 prompt 的输出漂了,再花两周查代码——查不出的原因是根本不在代码里,在托管端。要接受这条约束,把 Pass^k 当作和吞吐、延迟同级别的可观察指标去跟。
第三,Consistency Analyzer 和 Self-Consistency 不是一回事,别混。 Wang 等人 2022 年的 Self-Consistency(多次采样投票)是运行时每条 query 都重跑 k 次,成本乘 k、每次都花;IBM 这套是离线扫一遍历史轨迹、生成永久的 guideline 存起来,下次同类上下文自动带进去,运行时只多一次检索。前者的成本随流量线性放大,后者是一次性投入。你如果预算不够跑 self-consistency,Consistency Analyzer 这条路值得先试。
第四,什么场景值得上、什么不用。 简单的一次性 QA、意图分类,Pass^k 通常已经很接近 Mean@k,consistency gap 小到不必单独治理;ReAct/Tool-Use 这类会连续做十几个决策的长轨迹、每步都能翻的场景,才是这套方法的甜点区。财务对账、报销审批、合同条款校验、供应链单据比对——所有「链条长且不能失手」的国内落地场景都归这一类。
第五,落地路径。 参考顺序:先把评测口径从 Mean@k 加一列 Pass^k、看差距;差距小于 5pp 可以先不管;差距 10pp 以上把 ALTK-Evolve 拉下来对着现成 pipeline 跑一遍;如果模型是通过国内 API 网关走的,注意做一次基线复测——不同副本策略下的 flat 分布数量可能和 OpenAI 直连时的观察不完全一致。
决策步数 × 一次 k=5 completion,可以在生产 trace 上离线做,不用回放环境。如果你手上有一条正在爬坡的 Agent 项目,最小可执行动作只有一条:把 Pass^3 的数拿出来看一眼。看到那个差距的第一反应通常是「原来不是我评估口径的问题」——那就是这套方法的入场券。
关注公众号

扫码关注,获取最新 AI 资讯
3 步完成企业诊断,获取专属转型建议
已有 200+ 企业完成诊断