0.99 的单步成功率,十次链剩 0.904,五十次链剩约 0.61。我第一遍看见这个数,以为是哪个地方算错了,自己拿 python 敲了行 0.99**50,还是这个数。0.99 跟 1 差的那点,在链长面前不是一点半点,是差出一大截。
这些数散得到处都是,各算各的,到现在没一个共同的叫法。10 月 12 日那篇讨论本地 LLM 能不能顶 Claude Code 的帖子,评论区里 TokenLat 说该按步骤评估、不该按模型评估;Sam LABBE 拿 q^10 说 0.99 十次链只剩 90.4%;howcani 算 11 次链想保 90% 得单步 0.9905;Arhan Canli 干脆把 0.90 的十次链结果摆出来:34.9%。四个人,同一个帖子,独立往同一件事上凑。他们不是在接力,是各自撞上了同一块空地。
这件事就是:agent 是串联系统,单步可靠性必须按链长折,不能裸比。它到现在没有名字。
我把它叫做:链账。一句话定义:选 agent 模型之前,把单步调用成功率按你预期的调用链长,折成端到端成功率,再拿折出来的数去比模型——而不是拿 SWE-bench Verified 上的裸分直接比。
叫它“账”,不是“率”,也不是“指标”。账是个动作:你搭一个本地模型跑 Claude Code 之前,得先算账。算的是 0.99 和 0.995 那 0.005 的差,落到 50 步链上,一个剩 0.61,一个剩 0.78。这 17 个百分点,才是“能托管”和“人得盯死”的分界。
但链账的 q 从哪来?别急着拿 SWE-bench。那篇帖子列了 Qwen 3.6 27B 报 77% Verified,DeepSeek V4-Pro 报 80.6%,GLM-4.7-Flash 报 59%。howcani 补的那刀更狠:在 500 道 Verified 上做配对比较,1 分的差距只有在两模型互不一致的题少于 7 道时才可分辨;不一致到 30 道,低于 2.2 分的差距基本不可分辨。77 对 80.6 差 3.6 分,样本不一致超过 30 道的话,这 3.6 分连噪声都算不上。更别提那篇帖子自己都写过,不同指南可能把 Verified、Pro、Terminal-Bench 混在一起报。
拿一把测不准的尺子量 q,再算链账,算出的 0.61 和 0.78 本身带着误差。链子算得再认真,尺子是歪的,账就是歪的。
等等,我差点滑去替那篇帖子收尾了。回来。链账这号要吹的不是“本地行不行”,是更窄的一件事:你手里拿来比的那个数,根本不是 agent 那个维度上的数。
SWE-bench 测写作任务,给 bug 生成正确补丁,一次生成一次判对错。agent 的实际工作是一条链:前面是工具调用格式对不对,中间是 schema 漂没漂,第三个文件改到一半上下文还认不认得自己。每一步都是独立的一次可靠概率,乘起来。那些失败模式——schema 漂移触发重试循环、多文件推理到第三个文件迷失、上下文在窗口一半左右变差——没有一样会体现在 SWE-bench 单次分里。
所以链账的 q 必须来自逐次工具调用日志,不能来自写作基准。这件事大部分人没做。那篇帖子的作者自己在回复里也认了:他文中“与演示不同”的判断,来自日常使用和他人报告,不是受控测量。他自己的 q 都没记,外头那些分数表更悬。
q 在一条链里还不是常数。Alex Chen 在评论区说失败风险随调用序号变,早段是 schema 和格式失败,晚段是上下文腐烂;作者回说漂移跟上下文深度阈值相关,不是固定调用序号。链账可以按均值先算一笔,但你真去记日志会看见,每一步的 q 长得不像同一个人。
算完这笔账,路由那点事才好说。真正省钱的不是全本地、也不是全前沿,是双模型路由:高频便宜调用给本地,少数困难调用升级。链账告诉你哪一步该升级——单步 q 掉到让端到端存活率跌破你容忍线的那个环节,就该切。路由器本身得便宜,拿个前沿模型去判断任务难不难,省出来的全赔进判断里。
你应该把这个词认领走!下次你在本地配一个模型、决定要不要拿它顶 Claude Code 之前,先别打开那张 SWE-bench 分数表;先定链长、定你能接受的端到端成功率,反推单步 q 得多少,再回头挑模型。把那张 q^k 表贴在实验记录最顶上,比任何 benchmark 分数都权威。
附带一个作废条件:如果半年内 agent 框架把单步失败的隔离做扎实了——失败不串联、重试不耗长上下文、schema 漂移能被硬门禁当场拦下——链账就该回炉。它吃的是“可靠性必须在长链里连乘”这个现实;这个现实哪天被工程手段拆了,链账就只剩考古价值。在那之前,先算账,再吵本地能不能替代 Claude Code!
