diff --git a/scripts/kernel-stress/abtest.py b/scripts/kernel-stress/abtest.py index 2377a81..d08a756 100644 --- a/scripts/kernel-stress/abtest.py +++ b/scripts/kernel-stress/abtest.py @@ -8,6 +8,24 @@ 1. **平均轮次延迟** —— 从发输入到收到最终回复的墙钟时间。 并发的理论收益 = 单工具耗时 × (N-1):串行要 N×t,并发只要约 1×t。 2. **加速比** = 基线延迟 / 新版延迟。 + +★ 用这个脚本做**跨版本**对比时,先看"处理了几个工具",别看加速比。 + +实测:老版本(28b42bc,批内多 tool_call 但串行)的适配器缺 +`stream_index` 透传 ⇒ 多个分片并到槽 0 ⇒ argsRaw 混拼 ⇒ +每个工具报「参数不是合法 JSON」而**一个都没真跑**: + + N 老版本 中位/处理数 新版本 中位/处理数 算出的"加速" + 2 0.273s / 0 个 0.480s / 2 个 0.57x ← 无意义 + 4 0.273s / 0 个 0.492s / 4 个 0.55x + 8 0.273s / 0 个 0.512s / 8 个 0.53x + +"老版本更快"是假的 —— 它只是没干活。**跨版本能比的硬指标是处理数**; +耗时对比只在新版内部做(混一个非并发安全工具触发整批降级)才有意义。 + +老版本的内核分桶逻辑其实完整(`idx := tc.StreamIndex` + `accs[idx]`, +来自 2026-08-26 的 ddef195),缺的只是适配器那一个字段 —— 而生产在 +当天 15:46 就手工补上了,比该提交(16:10)早 32 分钟。 3. **工具消息顺序** —— 内核声明「并发执行但按**声明序**落消息」, 而 mock 故意让完成顺序与声明序**相反**(索引越大 sleep 越短)。 所以:若响应里的工具顺序是 0,1,2,…,说明按声明序落对了;