四十五个脚本里只有一个在跑场,不是因为我们爱写工具,而是跑一场能证明的东西太少,跑砸一场留下的东西太多;真场负责采集,场外负责证明。
代码目录顶层放着四十五个脚本文件。一个是配置中心,一个是单场主流程,一个是批量包装,其余绝大多数是只读或只写诊断产物的探针、自检、回放与计算工具。
项目文档一开始就写明,没有构建、没有静态检查、没有测试框架,那个占位的测试命令只会报错。指标相关代码的验证靠离线回归,不靠跑真实场次。
| 类别 | 何时用 | 回答什么 |
|---|---|---|
| 问路的 | 跑之前 | 能不能开工 |
| 复盘的 | 跑之后 | 刚才发生了什么 |
| 守门的 | 改代码时 | 能不能往下走 |
六场连跑,播出总量在十三秒到一百三十三秒之间,差了十倍,而相邻两场的参数差异小到几乎可以忽略。改一个参数跑一场看到的变化,你没法归因到改动还是运气。
硬规矩,要比较参数,同一套参数至少跑五场取中位数。五场是五个岗位、一个多小时、还要有人坐在摄像头前面,为一个参数的去留付这个代价不值。
还有一层。真场只有一个变量,就是这一场本身,你没法让时间倒流把同一场在改动前后各跑一遍。探针可以,同一份历史数据,改动前后各喂一次,除改动外什么都没变。
平台上的模拟面试岗位一共八十四个。早期出过一次事故,选岗逻辑里硬编码了五个岗位,跑完就报无岗位可跑,被误读成平台岗位消耗殆尽。后来岗位池被外置,这个数字才浮出水面。
隐藏成本在于,一场真场会产出一份必须被解释的东西。指标、异常账本、平台反馈、有效场次还是废场。跑得越多,要解释的越多。而探针吃的是已经落盘的历史数据,同一份日志回放一千次也不额外消耗。
它们不产出报告,只产出退出码。离线回归基线改指标代码前后各跑一次,退出码零一致、五有差异、六基线缺失。守卫闸门把一批离线回放串起来,退出码三的意思是不得开场。场级验收对着场次目录算六项硬指标,零过三败。
设计取向是,它们是开关,不是仪表盘。仪表盘告诉你现在是什么样,开关决定你能不能往下走。无人值守的场景里只有仪表盘不够,因为没人盯着。
为什么内部还要分硬门槛和软观察。全是硬门槛,任何风吹草动都会阻断开场,最后一定有人把整道闸门关掉。只有出错会毁掉整场的规则才配叫硬门槛。
单项回放脚本默认盯某一场固定历史数据,这个默认值不是偷懒,是刻意固定参照物。若每个人跑的默认场次都不同,同一次改动会得出不同结论,这种分歧比失败更难处理。
某个探针第一版只算分批、不算预算,报出末批要等二十到三十七秒,超出平台静默窗口二十三到二十六秒。这个结论直接促成把整轮播报上限从三十秒砍到十五秒,结果两场每轮只播十三秒、全场三百六十六秒草草收场。
真实运行里有预算函数在管,装不下的批次会被直接跳过,根本不进队列。所以它报的那组数字是另一个问题的答案。
补丁是分批与预算必须一起模拟,并定为硬规矩。推论更值得记住,工具本身也需要被验证,办法不是再写一个工具,而是拿它的输出去对一次真实运行的现场。
最初断言里写死了秒数与批数。参数一调全部不成立,测试立刻报一堆失败,一群人跑去查一个根本不存在的回归。
这种假失败最坏的不是浪费时间,而是它会训练你忽略失败。总有一次真红会被当成没事滑过去。
现在的三条不变量里没有一个具体数字。整轮累计播放永远不超过当前上限;预算跨批次共享所以后续批次被饿死;一轮还一个字没播过时哪怕第一句再长也允许播一次。参数随便调,这三条只要破了,说明你改的不是参数,是规则。
有一类修复,某逻辑分支写错了,修好之后那个坏状态再也不会出现,那个分支永远不再被走进。那么你怎么证明修复有效。跑一百场,分支一次都不触发,而一百场正常区分不了「修好了」与「运气好」。
修复一旦生效,就消除了自己被验证的机会。只能靠离线回放,拿历史数据里那一次真实发生过的坏情况喂给修复后的逻辑。历史数据是唯一不会因你修好而消失的证据。
实例。有两次真场跑到一半进程直接崩掉,一次退出码是奇怪的十六进制数,一次是普通的一,两场都无归档、只剩半截时间线。真场里没法查,崩了就没了。最终靠确定性离线复现抓到,长文本三百二十八字配两秒半看门狗,超时恰好发生在推流中途,旧实现必崩、新实现存活。悬案变已结案。
四十五个脚本里只有一个在跑场,这个比例看起来很畸形。但它不是因为我们爱写工具,是因为在这个系统里,跑一场能证明的东西太少了,而跑砸一场留下的东西又太多。
autobot/docs/TUNING-RETRO-2026-10-07.md §4 诊断工具表 · §5 下一步该怎么做;autobot/README.md 运行节常用命令;AGENTS.md 常用命令节 / 守卫子系统节 / 陷阱节 / 红线节。
数字锚点:六场连跑播出总量 13s ~ 133s(demo 与 sim10~sim15);平台模拟面试岗位 84 个;探针误导一次参数调整(上限 30→15)后每轮只播 13s / 全场 366s;确定性崩溃复现 = 长文本 328 字 + 2.5s 看门狗。顶层脚本数由 autobot/ 目录实测清点。