让 AI 自己去面试
让 AI 自己去面试 · 第三季 · EP16

45 个探针脚本,我们为什么不直接跑真场

时长 15 分 40 秒 · 单人旁白 · 9 个章节 · 180 条滚动字幕
听众:AI / 自动化开发者为主,PM 与泛科技读者可无障碍收听

一句话概要

四十五个脚本里只有一个在跑场,不是因为我们爱写工具,而是跑一场能证明的东西太少,跑砸一场留下的东西太多;真场负责采集,场外负责证明。

本集要点

一、四十五个脚本里只有一个在跑场

代码目录顶层放着四十五个脚本文件。一个是配置中心,一个是单场主流程,一个是批量包装,其余绝大多数是只读或只写诊断产物的探针、自检、回放与计算工具。

项目文档一开始就写明,没有构建、没有静态检查、没有测试框架,那个占位的测试命令只会报错。指标相关代码的验证靠离线回归,不靠跑真实场次。

类别何时用回答什么
问路的跑之前能不能开工
复盘的跑之后刚才发生了什么
守门的改代码时能不能往下走

二、真场当不了测试床,第一条理由是噪声

六场连跑,播出总量在十三秒到一百三十三秒之间,差了十倍,而相邻两场的参数差异小到几乎可以忽略。改一个参数跑一场看到的变化,你没法归因到改动还是运气。

硬规矩,要比较参数,同一套参数至少跑五场取中位数。五场是五个岗位、一个多小时、还要有人坐在摄像头前面,为一个参数的去留付这个代价不值。

还有一层。真场只有一个变量,就是这一场本身,你没法让时间倒流把同一场在改动前后各跑一遍。探针可以,同一份历史数据,改动前后各喂一次,除改动外什么都没变。

三、第二条理由是它不可逆

平台上的模拟面试岗位一共八十四个。早期出过一次事故,选岗逻辑里硬编码了五个岗位,跑完就报无岗位可跑,被误读成平台岗位消耗殆尽。后来岗位池被外置,这个数字才浮出水面。

隐藏成本在于,一场真场会产出一份必须被解释的东西。指标、异常账本、平台反馈、有效场次还是废场。跑得越多,要解释的越多。而探针吃的是已经落盘的历史数据,同一份日志回放一千次也不额外消耗。

四、第三类工具,守门的

它们不产出报告,只产出退出码。离线回归基线改指标代码前后各跑一次,退出码零一致、五有差异、六基线缺失。守卫闸门把一批离线回放串起来,退出码三的意思是不得开场。场级验收对着场次目录算六项硬指标,零过三败。

设计取向是,它们是开关,不是仪表盘。仪表盘告诉你现在是什么样,开关决定你能不能往下走。无人值守的场景里只有仪表盘不够,因为没人盯着。

为什么内部还要分硬门槛和软观察。全是硬门槛,任何风吹草动都会阻断开场,最后一定有人把整道闸门关掉。只有出错会毁掉整场的规则才配叫硬门槛。

单项回放脚本默认盯某一场固定历史数据,这个默认值不是偷懒,是刻意固定参照物。若每个人跑的默认场次都不同,同一次改动会得出不同结论,这种分歧比失败更难处理。

五、探针自己也会骗人

某个探针第一版只算分批、不算预算,报出末批要等二十到三十七秒,超出平台静默窗口二十三到二十六秒。这个结论直接促成把整轮播报上限从三十秒砍到十五秒,结果两场每轮只播十三秒、全场三百六十六秒草草收场。

真实运行里有预算函数在管,装不下的批次会被直接跳过,根本不进队列。所以它报的那组数字是另一个问题的答案。

补丁是分批与预算必须一起模拟,并定为硬规矩。推论更值得记住,工具本身也需要被验证,办法不是再写一个工具,而是拿它的输出去对一次真实运行的现场。

六、断言只写不变量,不写死数字

最初断言里写死了秒数与批数。参数一调全部不成立,测试立刻报一堆失败,一群人跑去查一个根本不存在的回归。

这种假失败最坏的不是浪费时间,而是它会训练你忽略失败。总有一次真红会被当成没事滑过去。

现在的三条不变量里没有一个具体数字。整轮累计播放永远不超过当前上限;预算跨批次共享所以后续批次被饿死;一轮还一个字没播过时哪怕第一句再长也允许播一次。参数随便调,这三条只要破了,说明你改的不是参数,是规则。

七、修好之后,就再也测不到了

有一类修复,某逻辑分支写错了,修好之后那个坏状态再也不会出现,那个分支永远不再被走进。那么你怎么证明修复有效。跑一百场,分支一次都不触发,而一百场正常区分不了「修好了」与「运气好」。

修复一旦生效,就消除了自己被验证的机会。只能靠离线回放,拿历史数据里那一次真实发生过的坏情况喂给修复后的逻辑。历史数据是唯一不会因你修好而消失的证据。

实例。有两次真场跑到一半进程直接崩掉,一次退出码是奇怪的十六进制数,一次是普通的一,两场都无归档、只剩半截时间线。真场里没法查,崩了就没了。最终靠确定性离线复现抓到,长文本三百二十八字配两秒半看门狗,超时恰好发生在推流中途,旧实现必崩、新实现存活。悬案变已结案。

八、带走的判断

四十五个脚本里只有一个在跑场,这个比例看起来很畸形。但它不是因为我们爱写工具,是因为在这个系统里,跑一场能证明的东西太少了,而跑砸一场留下的东西又太多。

素材锚点

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/ 目录实测清点。

《让 AI 自己去面试》第三季 · 单人旁白 · 蓝灰主题
本集音频由 edge-tts 合成,字幕时间戳对齐到毫秒。
← 上一期EP15 自指悖论:修好之后,就再也测不到修好的那条路下一期 →EP17 冲突台账:把裁决写进文档,而不是写进代码