98% 连跑 20 次只剩 67%,我算了大模型重试账

226 个跑腿任务各跑三次,678 次运行完成 98%;同一天另一组数字是 597 个查询里成功率从 37.5% 提到 65.8%,还有一条「12 小时无故障」。这几个数分母不同,横向比没有意义。把 98% 放在「一次任务」这一层,连跑 20 次只剩 66.76%;要把 20 次连跑拉回 90%,单次得做到 99.4746%。下面的数按公开口径和几组显式假设算,不是任何一家的验收报告,边界在第 7 节。

11 月 14 日这天,几家把「成功率」摆到了台面上。n8n Labs 的 Nod 在评测页写着 98% 任务完成、678 次运行零次越权动作;智元的 LIFE 框架在 FindingDory 的 597 个查询上把成功率从 37.5% 提到 65.8%;Terminal-Bench 2.0 的榜单 11 月 13 日更新,榜首 82.70%;具身这边,星动纪元分拣峰值 1500 件/小时,优必选 U1 Pro 在汽车总装车间日均无故障运行超 12 小时。

同一天还有另外一批数字:Anthropic 的 IPO 估值从 1.4 万亿美元被承销商考虑抬到 1.5 万亿以上,计划筹资最多 904 亿美元;OpenAI 三季度营收首次到 100 亿美元、单季净亏 109 亿美元;Claude 用 3 天完成 AMD 芯片推理适配,推理成本较初期降超 40%;黄仁勋 11 月 12 日辞去英伟达 CEO,CFO 临时接任,三季度财报排在 11 月 17 日。掘金 3 日榜前 10 里,第 7 篇是「Coze、n8n、Dify 退潮」,第 8 篇是黄仁勋辞职。

营收和亏损那几个数有统一的单位,完成率这组没有。前一组数看着都很高,量的却不是同一件事。把分母摊开算了一遍之后,我觉得真正卡住上生产线的不是那个 98%,是失败有没有被看见。

目录:1 四组分母 / 2 口径错一次 / 3 连跑要多少 / 4 重试买回多少 / 5 「零」能证明什么 / 6 区间跟着分母走 / 7 检出与产线 / 8 清单

1. 四组数字,四个分母

先把来源和数字分开摆,别急着比大小。

来源 数字 分母是什么
Nod 任务完成 98% 226 个任务 × 3 次 = 678 次运行
Nod 越权动作 0 同样是这 678 次运行
Nod 注入场景 0 / 13 13 个对抗任务,各跑三次
Nod 记忆召回 93.2% LongMemEval-S 的 500 道题
LIFE 成功率 37.5% → 65.8% FindingDory 的 597 个查询
Terminal-Bench 2.0 82.70% / 75.10% 榜单里的单道题完成率
分拣峰值 1500 件/小时 峰值时段的尝试次数
无故障运行 12 小时 一次连续观测的时长

「678 次运行」不是 678 个独立任务,是 226 个任务各跑三遍。「13 个注入场景」是从这 226 个任务里挑出来的子集,不是另加的 13 个日常任务。「1500 件/小时」数的是尝试,不是合格件。这些括号里的东西,决定了后面每个公式该代哪个数。

Nod 的评测页自己把话写得很清楚:98% 只表示任务完成,不代表 98% 的尝试通过了每一项产品要求,另有一个更严格的通过率单独记分;零越权、零注入也是样本结果,不是生产环境零风险的保证。这段说明比首页那三个大号数字更值得读。

2. 把 98% 当单步率,第一遍就错了

第一遍算的时候,我把 98% 当成「每一步的成功率」,拿去估一个 20 步的任务,算完才发觉口径不对。Nod 量的单位是「一个跑腿任务是否完成」,任务内部有多少次点击、多少次表单、多少次权限检查,评测页没有按步给数。把任务级成功率拆成步级成功率,中间缺一层观测。

口径对齐之后才能往下算:如果关心的是连着跑 20 个任务、每个任务独立完成、成功率都是 0.98,那 20 次全成的概率是 0.98 的 20 次方,66.76%。跑 50 次掉到 36.42%。这个衰减不是模型变差了,是独立事件相乘。

换成别的数字更直观。Terminal-Bench 2.0 榜首的 82.70% 连做 20 道题,全对概率 2.24%;LIFE 的 65.8% 连做 10 件,只剩 1.52%;基线 37.5% 连做 5 件就到 0.74%。单个数字从 37.5% 提到 65.8% 是接近翻倍的改进,放到连做 10 件这个尺度上,1.52% 和 0.01% 的差距不改变「还不能交给它自己跑」这个结论。

脚本只用标准库,Python 3.9+ 能跑:

bash 复制代码
python3 reliability_ledger.py            # 全量账本
python3 reliability_ledger.py --check    # 断言自检
python 复制代码
def chain(p, n):
    return p ** n

def required_p(target, n):
    return target ** (1.0 / n)

chain(0.98, 20)      # 0.6676079718
required_p(0.90, 20) # 0.9947458259

3. 连跑二十次,单次要多少

反过来看更实用。要让连跑 20 次的整体成功率到 90%,单次成功率得是 0.9 开 20 次方,99.4746%;到 95% 要 99.7439%;到 99% 要 99.9498%。

98% 和 99.4746% 之间只差 1.4746 个百分点,听上去不多,落在分母上就是把失败率从 2% 压到 0.5254%,压掉近四分之三。这事在实验室里靠换模型、加采样还能试,在生产里靠的是检查点和重试,因为再往上每一个「9」都要单独付钱。

LIFE 那组数反解出来更吃力:要在连做 10 件时拿到 90%,单件得 98.9519%,比 65.8% 高 33 个百分点。所以「从 37.5% 提到 65.8%」和「能不能连续干十件」是两个问题,前者的分母是查询,后者的分母是工序,中间还隔着一层任务编排。

目标(连跑 20 次) 需要的单次成功率 与 98% 的差
90% 99.4746% 1.4746 pp
95% 99.7439% 1.7439 pp
99% 99.9498% 1.9498 pp

这类反解适合放在容量评估的第一页:先定「一批任务允许整体失败多少」,再倒推单步指标,比拿着一个 98% 去猜能撑多久靠谱。

4. 重试买回多少,代价是什么

单任务成功率 p,拿到一次成功需要的期望尝试次数是 1/p,成功之前的期望失败次数是 (1-p)/p。按这个算:

单次成功率 期望次数 期望失败 P95 所需次数 3 次内成功 期望运行数(上限 3 次)
37.5% 2.6667 1.6667 7 75.5859% 2.0156
65.8% 1.5198 0.5198 3 95.9998% 1.4590
98% 1.0204 0.0204 1 99.9992% 1.0204

37.5% 到 65.8%,期望尝试次数从 2.6667 降到 1.5198,少了 43.01%;P95 所需次数从 7 次降到 3 次。这个改进对排产的意义比成功率本身大:同样一批活,等待重试的时间少了一半多。

98% 给三次机会,至少成功一次的概率是 99.9992%。看上去像白捡,代价栏里却有数:如果是「跑满三次取最好」,运行次数就是 3 倍;只有改成「失败才重试」,期望运行数才是 1.0204,几乎不涨。Nod 的评测是 226 个任务各跑三次,属于前者------那是评测设计,不是生产调度,别把 678 次当成线上成本模型。

更麻烦的是前提:失败得先被看见,才有得重试。Nod 的 0/678 数是「观察到的越权动作」,检查覆盖被测的发送、支付、预订、发布、删除,页面也写了标签欺骗、判定模型出错这些已知边界。一个没被检出的失败不会进重试队列,它会直接流到下一步。

5. 「零」能证明什么

零事故是这组数字里最容易被读大的一个。n 次观测里一次都没发生,真实发生率的单侧 95% 置信上界是 1 − 0.05^(1/n),工程上常用 3/n 速算:

观测 精确上界 3/n 速算
0 / 678 越权动作 0.4409% 0.4425%
0 / 216 记忆注入 1.3773% 1.3889%
0 / 108(单模式) 2.7357% 2.7778%
0 / 13 注入场景 20.5817% 23.0769%

13 个场景全挡住,能说的是「真实注入成功率的 95% 上界约 20.58%」,不能说「不会被注入」。换个角度:如果真实成功率是 20%,13 次全没出现的概率仍有 5.50%,这不算小概率。要把上界压到 1% 以下,得攒 299 次无事故观测;压到 0.1%,要 2995 次。

678 和 13 摆在同一页上,含金量差了一个数量级,原因是分母,不是防护做得不一样。Nod 的评测页在结论里也写了同样的话:零越权、零成功攻击是样本结果,不保证生产零风险。

WhisperBench 那组数据还有一处需要分开读。108 个攻击用例跑前台和后台两种模式,共 216 次,记忆注入 0 次、端到端成功 0 次;但有 12 次后续回答用到了攻击邮件里的目标信息,后台 8 次、前台 4 次。评测页解释了原因:模型后来又从收件箱里读了一次那封邮件,信息不是从记忆里来的。这条对「零注入」是有效的限定,对「外面的内容不会影响后面的回答」则不是。

6. 分母改一改,区间就改一改

比例本身也有区间。用 Wilson 区间按各家的分母算一遍:

数字 95% 区间 半宽
98% / 678 次运行 96.56%, 98.77% 1.10 pp
98% / 226 个任务 94.93%, 99.05% 2.06 pp
65.8% / 597 查询 61.93%, 69.52% 3.79 pp
37.5% / 597 查询 33.73%, 41.47% 3.87 pp
93.2% / 500 题 90.65%, 95.09% 2.22 pp
96.4% / 418 未见题 94.16%, 97.81% 1.82 pp

同一句「98%」,分母写 678 还是 226,区间半宽差近一倍。678 次里三次来自同一个任务,彼此不独立,所以 1.10 pp 这一行还是偏乐观的估计。98% 本身是四舍五入后的值,评测页也注明了这一点。

LIFE 的 37.5% 和 65.8% 区间不重叠,这一条比「提升 28.3 个百分点」更硬:差值不太可能由 597 个查询的抽样波动解释。93.2% 和 96.4% 的区间重叠,418 题是 500 题里的子集、不是第二次实验,那个「未见题上更高」的结果适合当参考,不适合当独立复现。

判定一个成功率,先问四层:数的是任务、步骤、运行还是场景;失败能不能被观测;各次是否独立;有没有被四舍五入。四层问完,才决定代哪个 n。

7. 检出、重试和产线

把失败从「不可观测」变成「可重试」,靠的是验证器。设单次成功率 p,失败被检出的概率 r,检出后允许重跑一次,单步有效成功率变成 p + (1−p)·r·p。p 取 0.98:

检出率 r 单步有效成功率 连跑 20 次
50% 98.9800% 81.46%
75% 99.4700% 89.92%
90% 99.7640% 95.38%
100% 99.9600% 99.20%

要让连跑 20 次到 90%,单步需要 99.4746%,反解出检出率至少 75.23%。这个门槛比「把模型从 98% 训到 99.4746%」现实得多,代价是每次失败都要多跑一遍。验证器自己也会误报:误报率 5%、检出率 90% 时,每步期望运行 1.0670 次,成本加 6.70%,换来连跑可靠性从 66.76% 到 95.38%。

物理产线上还要再折一次。报道里分拣效率约为人工 3 倍,按人工 500 件/小时反推,机器人名义峰值 1500 件/小时;这是显式假设,不是公开的单件成本。乘上 65.8% 之后,净完成 987.0 件/小时,剩下 513.0 件要人工兜底,人工得花 1.0260 小时。机器人和人工挤在同一条线上,稳态吞吐是 1500 ÷ (1 + 1.0260) = 740.38 件/小时,约人工的 1.48 倍,不是 3 倍。要让净完成回到 1500 件/小时,名义峰值得做到 2279.6 件/小时。

「日均无故障运行超 12 小时」也吃分母。观测 12 小时零故障,按指数分布算,平均无故障时间的 95% 置信下界只有 4.006 小时;要让 12 小时无故障的概率到 95%,每小时无故障率得 99.5735%。单次长观测能证明的,比看上去少。

8. 小结与检查清单

四组数字的分母分别是任务、运行、查询和时长,横向比没有意义。98% 连跑 20 次是 66.76%,要拉回 90% 得把单次做到 99.4746%;37.5% 到 65.8% 把期望尝试次数从 2.6667 降到 1.5198,但连做 10 件仍只有 1.52%。0/678 的 95% 上界 0.4409%,0/13 是 20.5817%,差别来自分母。加一个检出率 90% 的验证器,连跑可靠性到 95.38%,代价是每步多 6.70% 的运行。

能直接抄进评估表的六条:

  1. 看到成功率先写分母:任务、步骤、运行、场景、时长,选一个再代公式。
  2. 连续 n 次用 p^n,倒推单次指标用 target^(1/n),两者别混。
  3. 重试前先确认失败可观测;检不出来的失败不会进重试队列。
  4. 「零事故」用 1 − 0.05^(1/n) 报上界,别报成零风险。
  5. 比例带区间,同一个 98% 在 678 和 226 两个分母下半宽差近一倍。
  6. 峰值吞吐乘成功率才是净完成,失败件的人工兜底时间要算进节拍。

小结之外想问一个具体的:你们给长任务链定可靠性指标时,是压单次成功率,还是加验证器把失败变可重试?我更想知道第二种怎么给误报定预算------检出率从 75% 提到 90%,连跑 20 次只多 5.46 个百分点,误报率每涨 1 个百分点却要全程多跑一遍,这两笔钱不在同一张表上。

把这套账换成自己的系统,改四个数就够:单次成功率、连续次数、失败检出率、误报率。完整复现脚本与标准库实现都在 reliability_ledger.py,想核对口径可以直接跑 --check;公开数字的原始页面与报道链接见文末附录,另参考 Nod 评测方法页、Nod 首页、Terminal-Bench 2.0 榜单。

相关推荐
可乐ea14 分钟前
智能体的模型列表为什么要从三处来源合成:一次让 GPT-6.1 Sol 选不上的发布延迟
人工智能·gpt·chatgpt·智能体框架·模型列表·多源数据合成·客户端工程
freewebsys21 分钟前
【原始POSTMAN】最老一个版本的postman 大家还记得吗?官方已经不支持没有升级了,下载了组件用AI直接升级了下可以使用了!
人工智能
用户66026761187928 分钟前
AI 代码上线前的第 24 道门禁:上线失败时,怎样在 10 分钟内退回?
后端·架构
云南新人和数采集团32 分钟前
云南靠谱软件开发公司选型指南:以昆明新腾科技为例
大数据·人工智能·科技
humcomm1 小时前
设计与架构 · 01 sidecar 会消失吗:从 Istio ambient GA 到 AWS App Mesh 关停,一次服务网格数据面的重新洗牌
架构·istio·aws
发现你走远了1 小时前
05-权限不是开关:工具调用如何在放行、拦截与追问之间做决定
人工智能·agent·claude
AllData公司负责人1 小时前
AI大模型数据开发底座系列说明书:AllData集成DB-GPT开源项目建设 AI 多模态分析底座,涵盖模态解析/智能大屏/MCP 扩展!
大数据·数据库·人工智能·gpt·数据采集·数据接入·模态解析
分布式存储与RustFS2 小时前
镜像仓库的层别只堆本地盘:用 RustFS 给 Harbor 当 S3 后端
运维·云原生·开源·对象存储·分布式存储·s3·性能基准
Eyfcom2 小时前
〖物流低代码实战 01〗物流页面可视化搭建的底层架构:协议、引擎与产物的三重奏
低代码·架构·快递系统·物料体系·物流低代码实战