三月末的天气已经开始回暖,售后中心的空调甚至切了制冷模式。林北端着保温杯,正对着电脑屏幕上新分配的工单发呆。
工单编号:#20260325-0047
异能类型:冰系
信号等级:四格
故障描述:情绪波动时异能不受控,严重影响正常生活。
备注:请务必安排经验丰富的技术员。
"四格信号?"林北嘀咕了一声,差点把茶喷出来。
他入职两周,接的工单多多少少也有几十张了,从一格到三格什么离谱的都见过。但四格信号这种东西,他只在入职培训的PPT上见过——还是那种灰色字体加括号写着"理论上存在"的级别。
他正想去找老周确认一下是不是系统录入错误,工位旁边的温度计忽然跳了一下。
从24.5℃掉到22℃。
林北抬头看了看空调出风口,风向没变。
21℃。
他低头看了眼自己保温杯里的枸杞茶,水面上凝了一层薄薄的冰碴。
19℃。
然后售后中心的玻璃门被推开了。
进来的是一个年轻女人。长发,黑色高领毛衣,牛仔裤,白色帆布鞋。整个人看起来干干净净的,像冬天早晨刚擦过的玻璃窗。但她身上有一种说不上来的距离感——不是那种高冷美女的故作姿态,更像是手机开了飞行模式,所有信号通道全关了。
温度还在往下掉。
前台小李端着杯美式走过去迎接,还没开口说"您好",手里的纸杯外壁就结了一圈白霜。小李愣了两秒,低头看看杯子,又抬头看看来人,露出了职业假笑:"您……预约了吗?"
"苏晚晚,下午两点的工单。"她的声音很平,像Siri默认语音包,没有任何多余的情绪起伏。
小李查了系统,点点头把人往里领。林北注意到,她走过的地方,地板���会留下一层极淡的白雾,几秒后才消散。前台饮水机的热水出口冒了一股冷气,旁边那盆绿萝的叶子边缘开始发白。
林北默默把保温杯盖拧紧了。
他心想:这位的异能控制系统,怕不是连休眠模式都没有,7×24小时全功率待机。
"林北,#0047是你的。"老周从办公室探出头来,朝他比了个"过来"的手势。
林北走过去,老周压低声音:"四格信号的冰系,全国登记在册的不超过二十个。这姑娘的案子之前在总部排过队,那边说架构太复杂不敢动。转到我们这儿来,是因为……"他顿了一下,"因为你。"
"因为我?"
"你上次修胖虎那个力量回路的方案,总部的技术主管看了,说思路很野但是有效。"老周拍了拍他肩膀,"这姑娘的情况比较特殊,你先看看,别勉强,实在不行我们上报。"
"行。"林北点点头,心想总部不敢动的转给地方售后,这操作很有大厂风范——出了事是地方背锅,修好了是总部英明决策。
他走回工位,苏晚晚已经坐在检测椅上了。她坐得很直,双手放在膝盖上,像一台刚开机还没加载完桌面的电脑,规规矩矩地等着。
林北搬了把椅子坐到她对面,保持了一个合适的距离——不算远,但绝对在安全范围内。他注意到她左手腕上戴着一个银灰色的手环,表面有淡蓝色的光纹在缓缓流动。
情绪抑制手环。
林北认识这东西。市面上不少异能者会用,原理是实时监测佩戴者的情绪波动,一旦超过阈值就强行压制。相当于给操作系统装了个粗暴的进程管理器——哪个进程CPU占用率高了就直接kill掉,不管你是不是正在干正事。
"苏小姐——"
"苏晚晚就行。"
"好,苏晚晚。"林北翻了翻手里的工单,"工单上写的是'情绪波动时异能不受控',能具体说说吗?"
她沉默了两秒。
"生气的时候,方圆十米会下雪。"她的语气还是很平,像在念一段产品说明书,"难过的时候,身边的水会结冰。特别开心的时候——"她顿了一下,"没有特别开心的时候。"
林北注意到她说最后一句话的时候,手指微微收紧了一点。
"这个情况持续多久了?"
"从异能觉醒开始。三年。"
"手环也戴了三年?"
"嗯。"
林北在心里算了一下——二十四岁,二十一岁觉醒,然后戴了三年情绪抑制手环。三年。一个人在最该肆意大笑和放声大哭的年纪,硬生生把所有情绪都掐灭了。
他忽然想起上一次修胖虎的工单时的感触。异能故障的背后,都是活生生的人。
"我先做个检测,"林北站起来,"可能需要你把手环暂时关一下。"
苏晚晚的手指按在手环上,没有动。
"放心,"林北指了指检测室的墙壁,"这儿的隔热层能扛住四级冰暴,上个月刚换的。你就算把这屋子变成冰箱,最多也就是我多穿件外套的事。"
她看了他一眼。那个眼神很短,但林北从里面读出了一点犹豫,还有一点——小心翼翼的感激。
手环上的蓝光缓缓熄灭。
变化几乎是瞬间的。
室温从19℃直接跳水到了8℃。苏晚晚身周半米内的空气开始凝结出肉眼可见的冰晶,像微缩版的暴风雪在她身边慢慢旋转。她的呼吸变得稍微急促了一些,指尖泛着淡蓝色的光。
检测椅的扶手上覆了一层冰。地板开始结霜。
但她的表情还是那样——平静的,空白的,像一面没有打开任何应用的屏幕。
林北却看到了完全不同的东西。
他的调试视角打开的瞬间,苏晚晚的异能源代码在他眼前展开,密密麻麻的,比他之前见过的任何一个案例都要复杂。
不是一般的复杂。
胖虎的力量回路像一条主干道,出了问题无非是某个路段坑洼了需要补补。一格两格信号的能力者,源代码结构通常就像一个简单的单页应用——HTML加CSS加一点JavaScript,找到bug改了就完事。
苏晚晚的源代码看起来更像一个大型分布式系统。
而且是设计得有问题的那种。
林北越看越皱眉。她的异能内核和情绪中枢不是简单的"有关联"——它们压根就是同一套东西。冰系异能的控制模块和情绪波动的信号处理共享同一个内核进程,没有做任何分层,没有隔离机制,没有防火墙,连个try-catch都没有。
打个比方:正常人的异能和情绪应该是两个独立的微服务,各跑各的容器,通过API接口通信。你开心也好生气也好,异能模块该干嘛干嘛,情绪波动顶多是传了个参数过去,异能那边收到了按逻辑处理就行。
但苏晚晚的系统是单体架构。异能和情绪是同一个进程里的两个线程,共享同一块内存。情绪一波动,等于直接在异能的运行内存里写入了脏数据。没有缓冲,没有校验,没有任何中间件来过滤。
这不是bug。
这是架构设计问题。
"看完了?"苏晚晚问。她的语气还是很平,但林北注意到室温又降了两度——她在紧张。
"看完了。"林北合上调试视角,斟酌了一下措辞,"你的情况比较特殊。"
"嗯,之前的技术员也是这么说的。然后就是摇头、叹气、建议我继续戴手环。"
她说这话的时候没有什么表情,但地板上的霜层厚了一毫米。
林北想了想,决定说实话。
"你的异能系统和情绪系统之间没有做分层。"他尽量用通俗的方式解释,"正常情况下,这两套系统应该是独立运行的,各管各的。但你的不是——你的异能和情绪跑在同一个内核上,共享所有资源。所以你一有情绪波动,异能就跟着乱了。"
苏晚晚眨了一下眼睛。
"你也是程序员?"
"我?不是,我之前干客服的。"林北挠了挠头,"不过你是?"
"后端开发。"
"那你应该懂——你这个情况不是某个接口报错了改改就行,是整个系统架构就没有做服务拆分。所有东西耦合在一起,一个模块出问题,整个系统跟着崩。"
苏晚晚安静了几秒。这是她第一次遇到能把她的问题说清楚的人。之前那些技术员只会说"你的异能和情绪关联太深",含含糊糊的,像产品经理写的需求文档——每个字都认识,连起来不知道在说什么。
"所以,"她问,"能修吗?"
这个问题问得很轻,轻到几乎听不出来里面藏着多少期待。但林北听出来了。三年。她等这个答案等了三年。
"理论上能。"林北说,"但不是一次能搞定的事。你这个相当于要对一个正在线上运行的系统做架构重构——要把单体应用拆成微服务,还不能停机,因为你的异能每时每刻都在运行。这个工程量……"
他想了想该怎么形容。
"大概相当于给一辆时速一百二的车换轮胎。"
苏晚晚的嘴角动了一下。
非常非常微小的一下,如果不注意根本看不到。但林北看到了——而且室温在那一瞬间回升了0.3℃。
"那你打算怎么做?"她问,"继续让我戴手环?"
林北看了看她手腕上那个银灰色的东西,摇了摇头。
"手环不是办法。"他说,"手环的原理是检测到情绪波动就强行压制,对吧?这个东西就像你在代码里到处写try-catch然后在catch里面什么都不做,直接吞掉所有异常——看起来程序不报错了,但问题还在那儿,只是你看不到了。"
苏晚晚轻轻"嗯"了一声。
"而且长期压制情绪对人的影响很大。"林北说到这里,犹豫了一下,还是说了,"三年不让自己有情绪,这个……代价太大了。"
室温又降了一度。
苏晚晚低下头,看着自己手腕上的手环。蓝光已经熄了,但那道被手环压出来的浅浅印痕清晰可见——三年,皮肤都已经适应了那个形状。
"你不知道没有手环的时候是什么样的。"她的声音终于有了一点波动,很小,但真实存在,"去年冬天,我接到一个电话——家里的猫走丢了。我就只是……难过了一下。然后我租的房子客厅冻了。暖气管爆了,楼下淹了。"
她顿了顿。
"房东让我赔了两万块,然后让我搬走了。"
"猫找到了吗?"林北问。
苏晚晚愣了一下,似乎没想到他会问这个。
"找到了。在小区门口的快递柜旁边蹲着。"
"那就好。"林北说。
苏晚晚又看了他一眼。这次比上一次长了一点。
检测室安静了几秒。冰晶还在她身边慢慢旋转,但速度好像比刚才慢了一些。
"我的方案是这样的,"林北打开工作台上的平板,开始写检测报告,"不动手环,但也不依赖它。我需要在你的异能内核和情绪中枢之间尝试构建一个中间层——你可以理解成一个消息队列。情绪信号先进队列缓冲,经过过滤和降级处理之后再传递给异能模块。这样你的情绪该有还是有,但异能不会被直接冲击到。"
"听起来像是在做服务治理。"苏晚晚说。
"对,本质上就是服务治理。加一层API网关,做限流、熔断、降级。"林北越说越顺,忽然意识到面前坐着的是同行——至少是半个同行,"不过这个中间层不能一步到位,需要慢慢搭。每次调整一点,观察运行状态,再调整。可能要……"
他做了个保守的估算。
"很多次。"
"多少次?"
"不确定。可能十次,可能二十次。看具体的运行情况。"
苏晚晚想了想:"那就是说,我要经常来。"
"对。"
"多久来一次?"
"初期最好一周一到两次。后面稳定了可以拉长间隔。"
她沉默了一会儿。
"我在城西上班,过来要四十分钟地铁。"
"我们周末也开门。"林北说。
苏晚晚点了点头。她伸手按下了手环,蓝光重新亮起来。室温开始缓慢回升。冰晶消散了,地板上的霜也在慢慢化掉,变成一层薄薄的水渍。
她站起来,从口袋里掏出一张纸巾,弯腰擦了擦检测椅扶手上的水。
"不用不用,"林北连忙说,"这个我来——"
"习惯了。"她说。语气还是平的,但这次林北听出了一点不一样的东西——不是Siri默认语音包了,更像是把音量调低了的真人。
她直起身,朝林北微微点了一下头。
"那我周六来?"
"行,我给你排上午十点。"
她走到门口,忽然停下来,没有回头。
"林北。"
"嗯?"
"你是第一个没有建议我'学会控制情绪'的技术员。"
然后她推门出去了。
门关上之后,室温花了大概三分钟才彻底恢复正常。林北摸了摸自己保温杯,杯壁冰凉,里面的枸杞茶冻成了一块冰坨。
他叹了口气,把杯子放到饮水机旁边解冻,然后去找老周。
老周正在办公室里喝茶,看见他进来,放下杯子:"怎么样?"
"不好修。"林北直说了,"她的问题不是bug,是架构设计问题。异能和情绪系统完全耦合在一起,没有做任何隔离。我之前见的那些案例,最多算是接口报错、内存泄漏,她这个……相当于整个底层要重构。"
老周慢慢点头,不意外的样子。
"我跟你说个数据。"老周压低声音,"四格信号的冰系能力者,全国在册的一共就十七个。这十七个里面,有九个长期靠情绪抑制手环过日子。有三个住在特殊监护机构里。还有两个……不在了。"
林北的手指停了一下。
"她这个级别的异能,功率太大了。"老周叹了口气,"就像一台服务器,普通人的异能可能就是个4核8G的云主机,她是满配的物理机,256核、1T内存那种。机器越强,失控的时候破坏力越大。所以大部分技术员的建议都是——戴手环,别摘,别有情绪。"
"那不就是让人当机器吗?"
"是啊。"老周看了他一眼,"所以这案子之前在总部排队排了半年,没人敢接。不是修不了,是怕修出事。万一中间层没搭好,情绪信号直接把异能内核冲爆了……你知道四格信号的冰系失控是什么概念吗?"
林北想了想:"冻一栋楼?"
"她上次只是难过了一下,就冻了整个客厅。如果是真正的情绪崩溃——"老周竖起三根手指,"三个街区。"
办公室安静了几秒。
"我不打算让她继续靠手环过日子。"林北说,"那个东西就是个止痛药,吃得越久副作用越大。她才二十四岁,总不能一辈子都不能笑不能哭不能生气吧?"
"那你打算怎么办?"
"慢慢来。在异能和情绪之间搭中间层,做缓冲和降级。一点一点建,每次建一小段,测试稳定了再继续。工期长,但至少是在解决根本问题。"
老周看了他好一会儿。
"你知道这意味着什么吗?长期工单,可能跨季度。万一中间出了事,责任在你。"
"我知道。"
老周又看了他几秒,然后点了点头,从抽屉里翻出一张表:"签字吧。长期维护工单,你做主负责人。"
林北签完字,回到工位。保温杯里的枸杞茶终于化了,变成一杯温吞吞的红色液体。他喝了一口,开始在平板上写维护方案。
第一步:在异能内核外层搭建一个轻量级的事件监听器,用来采集情绪信号的频率、幅度和模式。不做任何干预,纯监控。先跑两周数据,摸清楚她的情绪波动到底是什么规律。
第二步:基于采集到的数据,设计消息队列的过滤规则。哪些情绪信号需要降级处理,哪些可以直接放行,阈值设多少,熔断条件是什么——都要拿数据说话。
第三步:开始搭建中间层。一小段一小段来,每搭完一段就做压力测试。
他写了半个小时,抬起头来,发现工位桌面上还有一小片没化完的霜。他伸手碰了一下,冰凉的。
林北盯着那片霜看了几秒。
他想起苏晚晚走的时候说的最后一句话。"你是第一个没有建议我学会控制情绪的技术员。"
三年了,每个人都在告诉她要控制情绪。
但问题从来不是她的情绪,是她的系统没给情绪留一条安全的出口。
林北把方案文档保存了,文件名取的是"苏晚晚_架构重构_v0.1"。
v0.1。
后面还有很长的路。