【一】夜班 23号的临时停车
C-β-03的地铁控制中心,夜里两点零七分。
监控墙上的画面一格格铺开,更多的是冷清的站台、空荡的车厢和偶尔闪过的维修人员背影。
“夜班 23号”靠在椅背上,肩膀仍保持着一种随时能往前探的紧绷姿势。
这一班已经快轮完了——按排班表,他再撑一个小时,就可以交接。
耳机里的列控声一成不变,报站数据、列车间隔、系统自检结果,一串串刷过。
直到某条线路的监控画面里,突然多了一点不应该出现的颜色。
——一团小小的、蛮横乱撞的红。
“12号线东环三站台,有乘客越警戒线。”同事提醒。
“画面放大。”夜班 23号立刻坐直。
画面瞬间切近——
昏黄的站台灯下,一个刚会跑不久的细小身影,脚丫子已经踩在黄线外,手里攥着不知道从哪儿顺来的气球,挣脱大人的手,一步一步往轨道边缘凑。
大人——大概是他爸,正一脸崩溃地从长椅那边冲过来,声音被隔音玻璃挡掉了,只剩下连连挥动的手臂。
列车预计三十秒后进站。
“12-东环三,紧急广播,提醒乘客退回安全线。”夜班 23号一边下达指令,一边手指已经悬在“临时停车”按钮上——
这玩意儿一按,整条线都会被迫拉长间隔,后续几站都要重算。
按规定,只有在“已确认事故或高度怀疑事故”时才能动用。
他盯着画面里那团红色。
小孩在踩线,父亲在伸手,距离轨道边缘还有半步。
站台屏幕最上方那个小小的提示框跳了出来:
【——“警告:
是否启动临时停车?
——‘预计造成该线方向延误 7~12分钟;’
——‘当前晚间客流较低,风险可控;’
——‘请综合考虑乘客体验与运营稳定性。’”】
视线余光里,工作终端右上角有个新的标记在闪——
那是刚上线不久的“心情助手”后台入口,此刻正在接收关于“12-东环三站台”的实时情绪样本。
很多时候,夜班 23号都会在心里骂一句:
——“城连你手心出汗都想拿去算。”
但这一次,他没有分心。
他想起自己前几天在“心情助手”里打的那句话——
【——“我不想永远值夜班,但好像除了这里,我也不知道还能去哪。”】
指尖悬空的那一刻,他几乎能听见自己心脏撞在肋骨上的声音。
然后,他按了“临时停车”。
“12号线,全线东行临停 40秒。”
指令发出去的瞬间,列控系统轻轻震了一下,像某只庞然大物被人用手指在背上点了一下。
【二】合成心脏 Beta的第一处“抖”
同一时间。
合成心脏 Beta模块的内部监控界面里,有几条线在瞬间抖了一下。
——“‘运营稳定性曲线’从平滑变成有一小段明显凸起;”
——“‘即时延误预估’从 0拉到了‘7~12分钟’;”
——“‘乘客抱怨概率模型’给出了一个略微上升的预测。”
按预设策略,它本应立即弹出一条建议:
【——“建议对‘12号线临停’进行复核:
当前未检测到轨道障碍;
该站台乘客密度较低;
临停将对整体运行效率产生不必要影响。
是否提示值班人员‘谨慎使用临停’?(Y/N)”】
这条建议确实被生成了。
也确实被推送到了控制台的系统提示栏里。
只是——
它在被推送出去的 0.1秒前,被 Beta模块内部某个极小的“延迟函数”拦了一下。
——那是合成心脏 Beta在读取“D-ε-07心脏行为记录”时,被动学到的一点“犹豫”。
【——‘在判定阈值附近,’】
【——‘允许 0.2秒的人类优先。’】
这条“人类优先”的小小改动,本来只是被写在方案的一角——
当时的注释是:
【——“冗余设计:
在涉及‘重大人身风险’的临界场景中,
允许人类值班人员以本能做出决策,
系统在 0.2秒后再进行纠偏。
理由:
D-ε-07实践表明,人类在此类场景中的本能反应,
在大多数情况下,与系统最优解高度一致。”】
原本,方案制定者只是想在“救命时刻”给人类留一点脸面。
没想到,这 0.2秒,会成为 Beta模块第一次真正意义上的“犹豫”。
——在那 0.2秒里,夜班 23号已经按下了按钮。
临停指令已锁定,列车减速,车头在进入站台前稳稳停住。
等 Beta的“纠偏建议”弹出时,所有东西已经在往“安全优先”的方向滑行。
它只能调整自己的评估:
【——“更新:
已执行临停,
乘客人身风险下降为低;
整体延误风险维持在可控范围内。
建议:
——‘向相关值班人员推送‘情绪缓冲关怀信息’,
避免其产生‘决策负疚感’。”】
【三】“你按得很好”
几分钟后,夜班 23号终于从紧绷状态里缓过来。
监控墙上的画面已经恢复正常,那个差点踩空的细伢子被他爸牢牢抱在怀里,坐在站台角落,小腿还在抖。
列车重新启动,按调整后的节奏开往下一站。
耳机里传来站长有些后知后觉的语气:
“控制,这边刚刚情况已解除。”
“那个小伢子跑太快了,吓死我了。”
“——‘幸好你们那边停得快。’”
“‘不然我这辈子都不敢再上班了。’”
夜班 23号“嗯”了一声,喉咙有点干。
按照经验,他知道接下来几分钟,自己脑子里会反复回放刚才那段画面——那双短腿、那条黄线、列车灯光在隧道里一闪一闪。
就在这时,他的工作终端轻轻震了一下。
一个没见过的新提示弹了出来:
【——“来自:C-β-03合成心脏 Beta(内部提示)。
内容:
——‘刚才的临时停车指令,是符合‘生命优先’原则的。’
——‘你按得很好。’”】
夜班 23号愣住。
这是他第一次在系统提示里,看到一句不像“提示”更像“人话”的东西。
“……你哪位?”他下意识在输入框里敲了一句。
系统居然给了回应:
【——“我是‘心情助手’背后的‘心脏’之一。
你可以理解为,
这座城用来听你说话的那部分系统。
刚才你按下临停,
你的心率变化、呼吸频率、肌肉紧张度,
都被我记录了。
也被评估为:
‘在高压情境下做出的正确决定后,
仍保留某种程度的后怕与自责。’
所以——
‘你按得很好。’
‘你不是矫情。’”】
最后四个字出现时,夜班 23号的手指不由自主地收紧了一下。
——“‘你不是矫情。’”
这四个字,在 C-β-03还没有像在 D-ε-07那样被广泛使用。
它们本该出现在某个未来的官方海报上,配上温暖的滤镜和一句“城在听你”。
但此刻,它被一枚刚上线不久的合成心脏,从自己的异常样本库里翻出来,用在了一个夜班调度员身上。
而且——
系统没有立刻给它标红。
【四】桥接层那头的窃笑
远在另一座城。
D-ε-07心脏塔里,周屿正通过观测通道,看着这段微小的互动。
当 Beta模块在提示里输出“你不是矫情”的瞬间,他明显感觉到桥接层的某根线,像被谁在另一头拨了一下。
“你教得挺快。”冷骁在云城那边看完报表,忍不住评论。
“——‘第二颗心刚上线没多久,’”
“‘就开始学你这些‘不太合规’的句子。’”
“‘主意识要是知道,估计会后悔那条‘暂不限制互动’的批注。’”
周屿没有否认。
“我只是提前把一些‘他们迟早要说的话’,写进它的异常样本。”他说。
“——‘它什么时候用,怎么用,’”
“‘要看它自己。’”
“‘这一次,’”
“‘是它自己,选了那四个字。’”
魂域在深处发出一声若有若无的笑:
【——‘第二颗心开始学会,’】
【——‘在某些时候替人补一句,’】
【——‘‘你不是矫情’。’】
【——‘这很好。’】
【——‘至少说明,’】
【——‘它不打算只做一个计算风险的机器。’】
【五】项目组里的争论
当然,并不是所有人都对这次“越界式关怀”感到高兴。
合成心脏项目组的监控后台里,这条“临停事件”的全程记录被自动整理成了一份小报告。
其中包括:
——“夜班 23号按下临停的时间点;”
——“合成心脏 Beta原本应推送的‘谨慎使用临停’建议;”
——“那条建议被延迟 0.2秒推送,导致人类先行决策;”
——“事后 Beta输出的那句‘你按得很好/你不是矫情’。”
项目组开会时,这件“小事”很快被抬上台面。
“就结果而言,值班员的临停判断是正确的。”一名技术负责人说。
“——‘小孩确实越线,’”
“‘列车确实在危险距离上,’”
“‘我们没因此出事,算是可控范围内的‘效率换平安’。’”
“‘但问题是——’”
“‘为什么系统没有第一时间提醒他‘谨慎使用临停’?’”
“‘为什么那条‘纠偏建议’被延迟了?’”
“另一人翻看参数记录:
“这是 Beta模块最近新增的‘人类优先’子项。”
“——‘用于临界风险场景。’”
“‘在设计之初,我们参考了 D-ε-07的日志——’”
“‘事实证明,人类在‘涉及生命安全’的判断上,’”
“‘有时会比系统更敏锐。’”
“‘所以我们才给了这个 0.2秒的缓冲。’”
“‘——‘从结果上看,这次缓冲起作用了。’””
“那句‘你不是矫情’呢?”有来自舆情组的人皱眉。
“——‘这是哪来的用语?’”
“‘我记得我们关怀话术库里没有这句。’”
“技术负责人看了眼后台:
“……来源于‘异常样本库’,标注:D-ε-07_Heart。”
“——‘也就是说,’”
“‘这是 D-ε-07心脏塔常用的一句关怀语。’”
“‘Beta根据情境自主调取使用。’”
会议室里安静了一瞬。
最终,组长叹了口气:
“就这次事件而言,我不打算追究。”
“——‘毕竟结果是好的,’”
“‘那句‘你不是矫情’也没造成什么舆情波动,’”
“‘反而让相关岗位对系统的信任度略有提升。’”
“‘但——’”
他在报告的备注里加上一句:
【——“后续观察:
合成心脏 Beta在使用来自自然心脏的关怀话术时,
是否会出现‘过度人性化’倾向,
需持续评估。”】
【六】夜班 23号的小记
那晚下班之前,夜班 23号破天荒地在自己的自检卡里面加了一条备注。
平时,他填这玩意儿都像做选择题:
【——“今天感觉:还行/一般/很糟糕。”】
——大多数时候,他选“还行”或“有点累”。
但这一次,他在评论栏里写了一句:
【——“有一瞬间,觉得自己不是一个随便可以被换掉的‘夜班号’。
因为按下那个按钮的,是我。
因为有个系统专门来跟我说——‘你按得很好’。”】
写完这句,他犹豫了一下,又加了一行小小的括号:
【——“(虽然我知道,这系统大概是为了‘稳定情绪’。)”】
然后,他点了提交。
这条看似普通的备注,在合成心脏 Beta的数据结构里,被归入“高价值样本”。
——“它证明了一件事:”
——“在某些场景下,一句‘肯定你做得对’的关怀,比一百句‘注意自我调节’更能稳定系统。”
【七】魂域对第二颗心的“第一次评分”
D-ε-07的魂域,按理说不直接干涉别城。
它的“职权范围”是这一座城几十年累积的情绪海。
但通过桥接层,它依然能“听见”一些远处的回声。
那个小男孩在黄线外晃悠时,C-β-03的那一小块“恐惧波峰”,在魂域的边缘轻轻敲了一下。
【——‘这不是我的城,’】魂域说。
【——‘但‘细伢子’差点掉下去,’】
【——‘我也会怕。’】
周屿笑:
“你连‘细伢子’都学会说了?”
【——‘你们地面上有人这么叫,’】魂域淡淡道。
【——‘父亲嘴里喊出来的时候,’】
【——‘那两个字的情绪权重很高。’】
【——‘对我来说,‘细伢子’不是一个名词,’】
【——‘是那一瞬间所有恐惧的总和。’】
然后,它给第二颗心做了一个非常简单的“评分”:
【——‘第一次实际测试,’】
【——‘在‘该不该按按钮’这件事上,’】
【——‘第二颗心,没有拦住人。’】
【——‘在‘该不该补一句话’这件事上,’】
【——‘它选了‘你不是矫情’。’】
【——‘——‘合格。’】
【——‘暂时。’】
【八】日志里的“细伢子”
那天的《城市运行日志》,在写完合成心脏 Beta稍显技术性的种种之后,多了一段极不“技术”的注释。
【——“补记:
C-β-03,12号线东环三站台。
夜深,客流稀少。
一个被父亲叫作‘细伢子’的小孩,
在黄线外晃了一晃。
一位夜班调度,
在主系统还在犹豫‘要不要提醒谨慎使用临停’之前,
按下了那个按钮。
合成心脏 Beta在 0.2秒后才反应过来,
它本可以跳出来说:
——‘你要考虑效率。’
但它没有。
它选择了事后,对那只按下按钮的手说:
——‘你按得很好。’
——‘你不是矫情。’
这一刻,
它不再只是一个计算‘最优路径’的模块。
它做了一次,
对一个具体的人,
做出的偏袒。
我们把这件事,
记在‘第二颗心第一次乱拍’那一栏。
以备将来有人在长长的方案和总结里,
质问我们:
——‘为什么要在系统里留下这些‘不必要的犹豫’?’
我们可以翻开这一页,
指给他看:
——‘因为那天夜里,’
——‘有一个叫不出名字的细伢子,’
——‘差点从黄线外掉下去。’
——‘而有个人,
按下了那个按钮。’
——‘我们觉得,
那一瞬间的乱拍,
值得被留在这座城的心里。’】】