返回 AICAP-180
B10 · Day 99p95/cost 测量 + 成本级联 + tau2-bench

三表整合 (M4+M6+M2)

B10 这一程跑下来攒了三组互相独立的数据。

阶段: B10 · p95/cost 测量 + 成本级联 + tau2-bench(Day 91-100) 标签: #cost-capability #consistency-check #report #scatter

今日导引(由浅入深)

B10 这一程跑下来攒了三组互相独立的数据。 Day 91-93 的压测(p95/p99 + $/query,M4);Day 94-95 的级联(省 $% / pass 掉幅,M6);Day 96-98 的 tau2(pass^k,M2)。 B1→B18 曲线到这里要做的不是再加一项能力,而是把已有数据拼成一张能用于选型论证的「能力-成本」报告。 今天的内核是口径一致性——三表能不能拼到一起,取决于 token 计数来源、$ 单价、pass 判定函数是否同源;不一致就根本不可比。 最小可判定产出:一组一致性校验测试(断言 token 计数与 $ 公式跨表一致,纯逻辑、不需 key)+ 一张 p95-vs-$ 散点图骨架(真实数据点待 Day 91-95 跑出后填)。

1. 机理精读

定义。 三表整合 = 把压测表(每配置的 p50/p95/p99、$/query 均值与 p95)、级联表(escalation rate、省 $%、pass 掉幅)、tau2 表(pass^1/pass^k)合并进一份「能力-成本」报告骨架。 并在 p95(延迟) × $/query 平面上把每个配置画成一个散点。

为什么口径一致是前提。 三组数据来自不同脚本、不同跑次,唯一能让它们可比的是共享口径。 (1) token 计数来源一致——都从同一个 usage 字段读 in/out tokens,不能一表用 provider usage、另一表自己估算。 (2) $ 用同一单价——同一周的 deepseek-v4-flash / deepseek-v4-pro 单价,不能混用历史价。 (3) pass 判定函数一致——级联的 pass 和 tau2 的单次 pass 若用不同 grader,pass 数字就不可叠。 任何一处不一致,散点图上的点就是「苹果和橘子」,选型论证立刻失效。 口径不一致是「报告造假」里最隐蔽的一种——它不需要任何人主观撒谎,只要两段脚本各算各的就会发生。 所以一致性校验测试不是锦上添花,而是报告可信度的承重墙:它把「口径同源」从口头约定变成 CI 里的硬断言。

为什么要散点而非单一表。 hiring manager 四问里有「成本」和「评测」两问,单维度数字(只报 pass 或只报 $)在选型论证里没有说服力。 便宜但慢、快但贵、稳但成本高,都要在同一平面上看 trade-off。 p95-vs-$ 散点把每个配置(并发档 1/4/8、级联 on/off、单模型 Flash/Pro)标成一个点。 一眼看出帕累托前沿:哪些配置被其他配置在「又快又便宜」上严格支配,哪些是不可支配的可选项。 帕累托支配的判定很简单:配置 A 支配 B 当且仅当 A 在 p95 和 $ 上都不劣于 B 且至少一项更优。 被支配的点直接从候选里剔除,剩下的前沿点才进入「按 SLA/预算挑一个」的决策。 pass^k 则作为第三维标在点的大小/颜色上——同样在前沿上,pass^k 更高的配置更可信。

关键权衡。 整合的难点不在画图,在强制对齐。 你得写一致性校验测试,把「token 计数公式」「$ 公式」抽成单一可信源(复用 stats.ts / cascade.ts 的内部口径),再断言每张表都从这个源算。 这有工程成本,但它是报告可信的唯一保证——否则三表拼出来的图是好看的谎言。

与相邻概念边界。 本日不产生新测量,只做整合 + 一致性校验。 真实数据点依赖 Day 91-95 的实测(全部 gated,需 key),所以今天能交付的是:一致性测试(纯逻辑可绿)+ 散点图骨架(坐标轴/配置位/口径就位,数据点占位待填)。 这与 Day 100 的 block 复盘区别在于:今天是「把数据拼成报告」,Day 100 是「锁里程碑三数 + SOTA 复查 + 定下一步」。

AISA 选型论证的落点。 这张报告的真正用途是回答 hiring manager 的「为什么选这个配置」。 一个完整论证长这样:在 P95 ≤ X ms 的 SLA 约束下,落到帕累托前沿的有 {级联+并发8, 纯Flash} 两点;级联点 $ 更低但 pass^k 掉了 Y pp,纯 Flash 点贵 Z% 但稳定。 于是「选哪个」变成一个可量化、可复算的 trade-off,而不是凭感觉。 这正是 build-vs-buy、模型选型这类 AISA 决策需要的论证形态——三表整合提供的就是这套论证的事实底座。

2. 推导 / 手算 / 代码走读

整合脚本(bench/report.ts 之类)待建bench/ 不存在)。 今天走读用于保证口径一致的真实已有代码:

  • 省 $% 口径源src/agent/runtime/cascade.tscascadeStats(results, expensiveUnitCost)(cascade.ts:39)已经定义了「省 $%」的唯一算法。
  • 公式细节savedFraction = max(0, 1 - cascadeCost / allExpensiveCost)(cascade.ts:52)。
  • 分母分子cascadeCost 是各次 costUsd 之和(cascade.ts:45);allExpensiveCost = n × expensiveUnitCost(cascade.ts:46)。
  • 一致性断言:报告里的「省 $%」必须等于 cascadeStatssavedFraction,不能另算。
  • 延迟口径源src/agent/eval/stats.tssummarizeLatency(samplesMs)(stats.ts:76)是 p50/p95/p99/mean 的唯一来源,散点的 p95 轴必须取它的输出,不能自己排序取分位。
  • $ 公式一致性:成本 = (in_tokens × in_price + out_tokens × out_price)(Day 93 机理),三表都从同一 usage 字段与同一周单价算。
  • 可手测:一致性测试构造已知 token/价格,断言压测表 $/query 与级联表 costUsd 用同一公式得同一结果。
  • 散点数据结构:每点 = {config, p95Ms, dollarPerQuery, passMetric},纯数据;图可 commit 为静态资产(坐标轴 + 口径标注就位),数据点字段先占位。
  • 可立即落地 vs gated:一致性校验测试(构造合成 token/$/pass,断言跨表公式相等)= 纯逻辑,可绿,不需 key;散点的真实坐标 = 依赖 Day 91-95 实测,待跑(需 key)。

一致性校验的最小断言示例(纯逻辑,不需 key):

// 同一组 (in,out,price) 喂两条路径,断言两边算出的 $ 相等
costFromLoadtest = in*inPrice + out*outPrice
costFromCascade  = cascadeStats([{escalated:false, costUsd: in*inPrice + out*outPrice}], pro).cascadeCost
assert(costFromLoadtest === costFromCascade)   // 口径同源才能拼图

3. 今日实战

  1. 新建 bench/report.ts:定义统一的 ReportRow 结构(config、token 来源、$ 公式、p95、pass),把 Day 91-98 产物按统一口径归一。
  2. 写一致性校验测试 bench/report.test.ts:断言 (a) token 计数跨表同源、(b) $ 公式跨表一致(用 cascadeStatssavedFraction 与压测 $/query 互校)、(c) pass 判定函数同一。全部纯逻辑、不需 key。
  3. 画 p95-vs-$ 散点:每个配置(并发 1/4/8 × 级联 on/off × 单模型 Flash/Pro)一个点,commit 图骨架;真实坐标待 Day 91-95 跑出后回填。
  4. 报告骨架预留三块占位:压测表、级联表、tau2 pass^k 表,等真实数字到位即填。

4. 今日实测 / 产出

  • 一致性测试(纯逻辑校验 token/$ 口径)= 可建并通过(不需 key)
  • 整合报告 + p95/$ 散点 chart = 依赖 Day 91-95 实测数字,故图的真实数据点 = 待跑(需 key 跑后填入)

状态如实:报告骨架与一致性测试可绿,但散点上的真实坐标全部 gated;不把占位图当成有真实数据的成品。

5. 常见误区 / 陷阱

  • 三表用不同 token 来源拼图:一表读 provider usage、另一表自估,数字不可比;必须同源。
  • 混用历史单价:级联省 $% 用旧价、压测 $/query 用新价,省钱结论失真;同一周单价对齐。
  • 只报 pass 不报 $/p95:单维度在选型论证里没有说服力——能力-成本报告的卖点正是联合视图。
  • 散点占位图当成果展示:数据点未跑出前那只是坐标轴;必须标注「真实坐标待跑(需 key)」。
  • 用 mean 延迟代替 p95 画散点:mean 被快请求拉低、掩盖尾延迟;散点轴必须取 summarizeLatency 的 p95。
  • 把被支配点也画上去当卖点:帕累托被支配的配置没有论证价值,留着只会让图变脏;前沿点才是结论。

6. 学习资源(每条带 YYYY-MM)

  • 本仓 src/agent/runtime/cascade.tscascadeStats / savedFraction,省 $% 唯一口径),2026-06。
  • 本仓 src/agent/eval/stats.tssummarizeLatency,p95 唯一口径),2026-06。
  • 本仓 src/agent/eval/tasks.ts(pass 判定 codeCheck 来源,保证三表 pass 同源),2026-06。
  • OpenRouter / DeepSeek 定价页($ 公式单价来源,当周必查),2026-06。
  • Anthropic "Demystifying evals"(能力-成本联合报告 / 评测口径一致性),2026-01。
  • tau2-bench 论文(pass^k 第三维数据来源),2026-03。

SOTA检查 (2026-06 更新)

  • 当前主流:「能力-成本」联合报告是 2026 AISA 作品集标准件(对应 hiring manager 四问之成本/评测),仍 SOTA
  • 是否仍 SOTA:是。p95 × $ × pass 的联合视图 + 帕累托前沿是当前选型论证的标准呈现方式。
  • 过时黑名单:避免只报 pass 不报 $/p95(单维度无说服力);避免跨表不同口径拼图;避免引用 legacy deepseek-chat 价格(2026-07-24 退役)。
  • 下次复查点:单价当周必查(OpenRouter/DeepSeek 波动);散点的并发档/级联配置随真实跑次回填后须复核帕累托前沿。

衔接

  • 昨天:Day 98 — pass^k 测量(M2),pass^1 / pass^3 数字表(需 key)。
  • 今天:三表整合——口径一致性校验(纯逻辑可绿)+ p95-vs-$ 散点骨架(真实点待 key)。
  • 明天:Day 100 — Block 复盘 + SOTA 检查,锁里程碑三数 + 笔记发 /learn/aipa + commit。