光绪二十三年,天津机器局附设了一个电报房,管着局里到各炮台、各仓库的专线。电报生周世昌每天的工作,是每隔一刻钟向六处站点拍发一个无意义的信号——业内叫"空码"——对方收到,立即回一个同样的空码。一来一回,证明线还通着,两头的人都活着。
更夫打梆子报平安,也是这个理。只是更夫的梆子声里,藏着一桩永远算不清的账。
周世昌的空码簿上,记着光绪二十一年秋的一桩事。大沽炮台回码迟了半炷香工夫——按规矩,三分钟内不回即视为断线,世昌已经起身要去报修——第四分钟,码来了。后来查明,是炮台电报生临时去茅房,同僚替他坐席,手生,找键找慢了。
"这三分钟的槛,是曾文正公当年定的。"老电报生刘师傅说。同治年间,捻军流窜,天津机器局初设电报,曾文正公怕线路被剪、站点被端,定下一刻钟一问、三分钟不回即告警的规矩。这规矩传了三十年,救过急,也闹过无数笑话。
光绪十九年,北塘仓库回码迟了两分半,世昌照章报修,派了巡线工冒着风雪出去查。查到第三日,才发现是仓库电报生的钟表慢了——他以为没到一刻钟,其实早过了。巡线工冻坏两根脚趾,仓库电报生革职。从那以后,世昌对"三分钟"这三个字又恨又怕。
定短了,风吹草动都是警报。电报生离席喝茶、钟表慢走半圈、甚至线路上一阵莫名的电噪,都能触发一场虚惊。虚惊多了,报修的人疲于奔命,真正断线时反倒懈怠——这叫惊群之弊,世昌后来从西洋书里读到这个词,觉得贴切。
定长了呢?光绪二十一年夏,大沽炮台当真被雷暴打断线路,七分钟无人知晓。那七分钟里,炮台守军以为机器局照常运转,机器局以为炮台一切如常,两头各按各的旧令行事,差点酿成大事。事后追责,曾文正公定的三分钟竟无人敢改——改短,虚惊更多;改长,盲区更大。
世昌试过一种折中。他私下把六处站点分成三等:大沽炮台直面海口,最要紧,三分钟不动;北塘仓库次之,宽到五分钟;其余几处闲差,八分钟也罢。分等而治,虚惊少了些,但新麻烦跟着来——一处断线,他得先想"这处是几分钟的槛",这一想,就慢了半拍。
后来西洋技师来机器局参观,世昌把这难题说给一个荷兰人听。荷兰人画了一条曲线给他:横轴是超时阈值,纵轴是"误报次数"和"漏报损失",两头翘、中间凹,像一口锅。"你选的任何数字,"荷兰人说,"都是在这口锅里挑一个点——离这头近,就离那头远,没有两全。"
世昌把这条曲线抄在空码簿的扉页上,日日看,看了三年。三年里,他渐渐悟出另一层:三分钟也好,五分钟也罢,都是死数。线路的老嫩、天气的阴晴、甚至电报生当日的心气,都是活的。用死数去框活物,本就不是长久之计。
光绪二十六年,世昌自己改了一套规矩。他不再盯死"几分钟不回",而是看"回码的脾气变了没有"——大沽炮台平日回码总在两分十秒到两分四十秒之间,若连续三次超过两分五十秒,即便没到三分钟,他也起身查看。北塘仓库的回码向来拖沓,五分半是常事,但若突然连续两次三分内就回,他也警觉:那边是不是换了生人,或者线路被人并了旁支?
这套法子,西洋书里后来叫自适应阈值——世昌当然不知道这个词。他只是觉得,更夫打梆子,听的不光是"响没响",还有"响得对不对劲"。梆子快了,可能是更夫心慌;梆子慢了,可能是更夫病了;梆子声哑了,可能是更夫被人捂住了嘴。
庚子事变,机器局焚于拳乱。世昌的空码簿残页被人从灰烬里拾出,辗转到了上海。上海电报局的洋工程师看了扉页上的曲线,又看了世昌后来补记的"回码脾气"之说,译成英文,寄给伦敦的学报。学报编者加了一段按语,说中国电报生的经验,暗合了西洋新近研究的故障检测概率模型——只是中国人的法子更粗粝,凭的是人手一记,不是机器自动。
世昌若是知道,大概会笑。他晚年回扬州乡下,邻村有个更夫,每晚敲梆报时。世昌常去听,听了半年,跟更夫说:"你今晚梆子敲得急,是不是白日里见了什么生人?"更夫大惊,问你怎么知道。世昌说:"你平日敲四下停一停,今晚敲完三下一顿,第四下追得紧——这节奏变了,我听得出。"
更夫打梆子,电报生拍空码,后来机器房里自动发送的心跳包——变的只是器具,那口"误报与漏报"的锅,形状从未改过。阈值定在哪,都是挑一个痛法;真正的功夫,不在挑数字,而在读出数字背后的脾气。