Notes · 2025.01.18
演示崩过
智在旅途当场跑不起来的那次。
「智在旅途」在评委面前崩过。天气、住宿、景点、预算拆给不同智能体,再收成一条路线。收的时候断了。屏幕停在转圈,房间里能听见风扇。我还在想下一句词,词已经没用。现场 vis 不看你下一句。看的是路线出没出来。
崩完接着改。改到评委点头。竖大拇指的时候手心是湿的。湿的原因不全是紧张,还有刚才那一次停住的余温。
崩在收口
拆开并不难。难的是收。各智能体都「成功」了,汇总那一步对不上:预算和住宿的日期错位,天气已经换了,景点还按旧的走。错位在本地偶发,演示网更慢,偶发变成必发。必发的时候没有降级路径,只能盯着转圈。
我们当时把成功路径录得很熟。失败路径没有词。没有词就会解释架构。架构在崩的时候像借口。借口评委听过太多。他们要的是:现在怎么办。现在怎么办必须是代码里有的:重试、跳过、给出半成品路线并标明哪一段缺。缺了仍给一条能看的东西,比转圈体面。
那次之后,演示稿里加了一页失败。失败页比成功页短。短才可能在崩的时候用上。长了你找不到。
转圈的那几十秒,房间里会有人看表。看表的声音没有,动作有。动作会把你的下一句词挤掉。词挤掉就不要硬接架构。硬接会越描越长。长了评委更烦。烦了即便后来修好,这一轮印象已经薄。薄的印象靠竖拇指也补不厚。拇指是后来的照片。照片里没有转圈。转圈只在当时。
冻数据和超时
崩过一次,我把演示数据冻住。天气用一份不会在现场变的样例,接口仍走真实路径,但准备好一份本地回放。真实路径通,用真实的。不通,切回放。切的动作要练。不练,现场会切错目录。
超时单独写。某个智能体超过约定秒数,就标红、降级、让其余的继续收。继续收可能丑。丑比停住好。停住是零。丑至少还有图。
课设里我冻过演示包。机器人课上超时让车停过。软件演示把这两件事合成一次:冻包,加超时。合成之前,我以为项目和课是分开的。崩的那一次把它们焊在一起。
回放开关不能藏在第三层菜单。藏了,现场手指会抖到点错。点错会二次崩。二次崩比一次崩难看。难看的处理是:开关放在桌面一个明显的脚本,脚本名写成「断网则用这个」。名字土。土的名字在湿手心里找得到。找得到才叫准备。准备不是再讲一遍愿景。
改到能点头
改不是加功能。是减依赖、加失败分支、把现场网速当敌人。敌人假设过了,成功路径仍然要快。快和稳打架时,演示优先稳。稳了再把成功路径的秒数压下去。压秒数不要在答辩当天凌晨做。凌晨做过,崩过。冻结期只改词,不改调用链。
评委点头,点的是这一次跑通了,加上你能讲清挂了怎么办。讲不清,跑通也像运气。运气在国创漏斗里不够用。漏斗后面还有人会问同一句。
崩完回旅馆或宿舍,先写三条:哪一步断、日志最后一行、下次切回放要几秒。三条写完再睡。不写,第二天只会记得「好惨」。好惨改不了代码。代码要步骤。步骤来自当时还热的那几行日志。日志一凉,人会开始编原因。编的原因通常太宏大,宏大的原因修不了。能修的都很小:超时秒数、汇总字段、目录名。
手心湿的照片可以用。用的时候我仍会记得转圈。记得转圈,写接口才会先写超时。
后来接口为什么先写失败
后来做检测接口,我先写超时和空结果,再写成功路径。顺序是从崩那里来的。成功路径人人想先写,因为它好看。好看的东西在现场最脆。脆的东西要后写,写完用失败去砸。砸不穿再拿去录。
下一场演示,开场前先故意断一次网,看降级出不出来。出不来就不要开场。开场词可以不熟。降级不熟,不能上场。
崩完之后冻哪一层
崩的是收成路线那一步。天气接口还在,住宿也在,拼起来的那条链断了。修好之后我把能跑的那次演示数据冻住,文件名带日期。答辩前一晚不许再改这一包。后来 FastAPI 的超时和空结果,就是从这次断链倒逼出来的:成功路径可以后写,挂了必须先有话说。