返回

第二十章 苏醒

首页
关灯
护眼
字:
上一页 回目录 下一页 进书架
一个长期未被更新的时间同步模块在特定并发条件下产生纳秒级时间戳错位,导致分布式神经信号采集节点的数据帧校验在压力测试中触发了连锁崩溃。问题是在例行压力测试中暴露的,但波及范围远超预期——好几个关键客户的实时数据接口全线瘫痪,孟总亲自下到十二层来了解情况,身后跟着两个助理,每个人的手腕上都亮着稳定的蓝光。

    项目组里几个年轻工程师围在主控台旁边,手忙脚乱地回滚版本。有人提议等依赖库官方发布补丁,有人主张临时绕过时间同步模块自己写一套校验逻辑,有人已经开始在技术论坛上搜索类似案例的解决方案。周明远坐在自己的工位上,面前三块屏幕全是密密麻麻的错误堆栈,红色日志一行接一行地往上跳。他的手指在键盘上轻轻敲了两下,然后停了下来。

    他以前面对这种故障会直接跳进代码,靠接口的速度优势快速试错——写一个临时补丁,跑一遍测试,报错了再改,改了再跑,在反复迭代中找到最快能用的方案。那是他在瑞联养成的习惯,也是做完初级植入后接口带给他的能力——手指的反应速度比大脑的决策速度快那么一点点,那一点点在应急场景里就是优势。

    但现在他没有这么做。他靠在椅背上,把错误堆栈从头到尾逐屏滚动,花了约二十分钟把每一行关键报错日志都读了一遍。然后他从抽屉里翻出一支铅笔和一张便签纸,开始画故障树——从最底层的时钟源漂移开始,往上画到时间同步模块的时间戳错位,再往上画到数据帧校验失败,最后画到接口超时。每一层之间用箭头连接,箭头旁边标注了因果关系。他的字迹比以前更潦草了一些,但每一个箭头都画得很直。

    画完之后他把便签纸放在桌上,站起来走到白板前面。项目组几个年轻工程师还在争论版本回滚方案,他听了几分钟,然后开口:“先不回滚。回滚之后依赖冲突只会更复杂,而且上次安全升级之后我们的内核版本已经不兼容旧版库了——你们看看上一轮适配测试报告里那页兼容性矩阵就知道。绕过时间同步模块自己写校验逻辑也不行,因为你绕过去之后所有分布式节点的时间戳就失去了统一的参照系,不同节点的信号采集窗口会对不齐,帧校验通过率反而会降得更快。”

    他拿起白板笔,在板上画了一套极简的架构图。“我们从中间层切入。不修时间同步模块,也不绕它,而是在数据帧校验这一层加一个冗余校验缓冲。核心逻辑是:当校验模块检测到时间戳错位导致的帧校验失败时,不要立刻丢弃该帧——先把它暂存在一个环形缓冲里,然后通过一条备用低带宽通道把异常信号的元数据旁路到第二校验节点,在第二节点用独立时钟源重新确认时间戳合法性,确认之后再回写主链路。这样主链路不用等时间同步模块修复,第二校验节点本身就带了独立的时间戳验证,整个系统的实时性可以维持在可容忍的延迟范围内。”

    他在白板上边画边讲,用词干净利落,逻辑链条每一环都严丝合缝。几个年轻工程师起初还皱着眉,但当他画到第二校验节点如何与主链路同步状态时,有人开始在笔记本上快速记录。他每画一个箭头都会回头看一眼那个记录的人,确认对方跟上了才继续。孟总在会议室后面站着听完了全程,没有打断,只是在周明远讲到环形缓冲的容量规划时轻轻点了一下头。

    方案定下来之后,整个项目组又花了不到两小时完成代码实现和压力验证。孟总在故障复盘会上当众说了一句:“这次应急处理,速度不是最快的,但思路是最清楚的。周总今天画的这张图,建议架构组拿去做故障处理流程的范例。”他在白板上拍了张照片,然后用手指点了一下图上的第二校验节点,补了一句——“这个独立校验的思路,下一版接口的安全架构里可以借鉴。”

    散会后周明远回到工位,坐在椅子上,把那张画了故障树的便签纸折好放进抽屉。以前他处理这类故障用的不是这种方法。那时候他依赖的是接口的速度优势——手指比大脑快一点点,试错的循环密到几乎没有间隙。但今天他刻意放慢了。不是不能快,是不想快。不是因为快是错的,是因为他发现,在“快”里面他无法确认哪些决策是接口帮他选的,哪些是他自己选的。而今天这张故障树上的每一个箭头,都是他自己画的。

    下午他把今天故障处理的经过整理成一份简短的复盘笔记——不是公司要求的格式,是他自己习惯的那种记录方式。写到结尾时他想起了张薇以前在NGI-7测试后说过的一句话,大意是在特定参数下被试会出现对自主感的观察能力。他当时不理解这话是什么意思。现在他理解了。他落笔写道:“以前觉得那二十分钟是浪费时间,因为接口可以让我更快地试错。现在觉得不是。那二十分钟里我在画故障树——从底层时钟源漂移到上层接口超时,一层一层推,每一个箭头都是我自己画的。这个推的过程没有神经信号,没有数据包,没有延迟,它是我自己的。接口可以让手指更快地敲代码,但它不能让一个人在错误堆栈前面选择先停下来想清楚。那个选择——停下来的选择——不是数据包,是我的。”

    晚上他给张薇发了一条消息:“今天处理了一个故障。用的不是接口的速度,是另一个东西。”张薇回了一个问号。他盯着那个问号看了一会儿,打了一行字又删了,再打,最后只发了一句话:“以前做测试的时候,那些用来抑制自发运动的认知资源——现在好像空出来了一些,可以用到别的地方。”

    张薇隔了很久才回。她发了一张图——实验室白板上的那个极小的蓝点,还是上次画上去的那个,旁边被她加了一行新字:“认知资源重新部署:从抑制到观察。”字迹是她的,蓝色记号笔,收笔处有她习惯性的轻微上扬。下面又跟了一条消息:“这是你走完那四轮回调之后,神经系统自己重建的功能。不是我设计的,是你自己长的。”

    周明远看着这行字,把手机关掉。窗外望京的楼群在夜色中亮着星星点点的光。他的手指在膝盖上轻轻画了一个圈——一个很轻的、不规则的、逆时针的圈。

    二月最后一个周六,林晚晴在书房里批改新学期第一批周记。周明远在客厅里给周雨检查数学作业。周雨趴在茶几上,手里转着自动铅笔,嘴里叼着一根橡皮筋。她最近的数学成绩稳中有升,但解题方法还是和上学期一样跳跃——有些步骤从条件直接跳到结论,中间缺了几步。

    “你看这道题,”周明远把作业本往她那边推了推,用铅笔指着其中一行,“从这里到这里,你跳了一步。是因为你觉得这一步可以省略吗?”

    周雨凑过去看了看,咬着橡皮筋想了想。“不是。是我觉得这一步太简单了,写出来浪费时间。”

    “那你写出来试试,看看是不是真的浪费时间。”

    周雨把橡皮筋从嘴里拿出来套在手腕上,接过他递来的铅笔。周明远注意到她用的是自动铅笔,不是以前那种要削的铅笔。他想起林晚晴说过,以前她会和同学比谁削铅笔削得更长,现在不用了。但那层在她左手中指上磨出来的茧还在——他今天才发现,她握笔的力度比以前轻了,但那个茧的位置和形状一点没变。

    她趴在茶几上重新演算那道题,把之前跳过的那一步写了出来——从已知条件到中间推导,再到结论。写到第三步时她的笔停了一下,然后抬头看周明远,说“哦,这一步其实不能省,我刚才跳过去的时候没注意到这里有一个符号变了”。周明远没有说“我早告诉你了”,也没有说“下次注意”。他只是在草稿纸的空白处画了一个小圈,然后把铅笔放回她手里。

    林晚晴在书房里透过半开的门看到了这一幕。她停下红笔,把手肘支在书桌上,安静地看着。她看到周明远把草稿纸往周雨那边推回去,用手指点了一下那个被她自己纠正过来的步骤,周雨边写边说“我知道我知道”,语气有点不耐烦,但嘴角在笑。周明远也笑了一下——不是那种嘴角上扬的标准微笑,只是眼睛微微眯了一下,和他很多年前在瑞联加班到深夜、她端热汤给他时他露出的表情一模一样。

    那一刻林晚晴忽然意识到一件事:她以前一直在数他敲枕头的次数,在观察他的手指是不是又不听话了,在等那台被接上去的机器会不会在某一天重新夺走她的一部分丈夫。但今晚她没有在观察他——她只是坐在书房里,透过半掩的门,看着周明远教周雨做数学题。不是观察病人,是看家人。

    她想起早在赋分制刚出台时,周明远坐在沙发上对她解释这次回调——“张薇说需要分几次回调,每一次都会先经历短暂的自主感下降,然后慢慢回升。”那时候他描述这些时用的是技术术语,声音平静,像是在讲解一个和自己无关的算法。她当时说“我不太确定那是适应还是投降”,因为他以前也“适应”过——做完初级植入后排异期结束的那段时间,他不再敲枕头了,不再摩挲东西了,她以为他适应了,后来发现那不过是身体学会了克制。她把这种克制叫投降。现在他从客厅那边抬起头,正好和她的目光隔着门缝碰了一下。他手里还拿着周雨刚改好的那道题,纸页在灯光下微微发亮。

    晚饭后两个人坐在沙发上。茶几上那杯水已经不冒热气了。周明远靠在沙发背上,比以往更往后靠一些,把后脑勺轻轻抵住墙上那个被他蹭过无数次的地方。他闭着眼睛,呼吸很平。林晚晴问他今天工作怎么样,他说孟总在会上表扬了故障处理方案,还让他下次架构评审时帮忙看看新一代接口的设计文档。他说这些的时候语气很平淡,像是在复述一件和自己没什么关系的事情。但她注意到他在说到“下一代接口”时,手指在膝盖上轻轻画了一个圈——不是敲,是画,逆时针,很慢。那个动作以前是她对他做的,后来他不再画了,再后来在某个深夜她把手放在他手背上等了一整夜,他还是没有画。现在它自己回来了。

    “你最近好像很少问张薇的实验了。”她说。这句话说得很轻,语调平稳,没有任何试探的语气。

    周明远睁开眼看了她一眼。“嗯。”

    “是因为回调结束了?”

    “不完全是。”他把手从膝盖上拿起来,放在沙发扶手上,“以前我每次跟她讨论数据,其实是在等一件事——等数据告诉我,我是不是在变好。后来我发现数据只能告诉我参数是不是在正常区间,但它不能告诉我——我是不是还在这里。那个问题不是数据能回答的。”

    “那你现在还用数据问自己吗?”

    “不问了。”他转过头看着她,“以前我用数据证明我还在。现在——”他想了想,“我不需要证明了。”

    林晚晴没有追问。她只是把手放在他的手背上。他的手背是温的——不是恒温模块的暖,是那种在室温里待了很久之后自然散发的体温。她用手指在他虎口处轻轻按了一下,那里有一层极薄的茧——是他最近在家修理了几次旧家具之后磨出来的。一只做过神经接口的手,磨出了修家具的茧。这个发现让她觉得有一种说不清的踏实。

    “你知道吗,”她说,“前些日子你手凉的时候,我给周雨织了一副手套。织完了才发现,我已经很久没有主动拉你的手了。不是不愿意,是怕——怕拉到的不是你的手。”

    “现在呢?”

    她把手翻过来,掌心向上。他把手放在她掌心里,手指微微弯曲,像一个很轻的拳头。她握住那只手——是暖的。她用拇指在他手背上来回轻轻磨蹭,摸到了那层薄茧微微粗糙的质地。她的手没有他的大,但很热,不是恒温模块的恒定输出,是她自己血液的温度,从她指尖一点一点渗进他的皮肤里。

    “是。”她说。窗外的梧桐树枝在夜风中轻轻晃动,枝头的芽苞在路灯下泛着一层极淡的青色。

    条例正式施行当天,韩世清没有安排任何会议。他把办公桌上的文件重新归类整理了一遍——左边是已经批阅的日常公文,中间是需要提交到第三次季度评估的材料,右边是条例正式文本以及法工委、卫健委和工信部联署签字的备案页。秦铭的名字签在法工委那一栏,字迹一如既往地工整。工信部的联署最终还是签了——在条例附件的后续研究计划中为非侵入式设备留出了分类评估的空间之后,孟正则没有再坚持反对意见,只是把那份引用了《少年中国说》的文件塞回了抽屉深处。

    韩世清翻开条例正式文本。扉页上盖着立法备案的红章,纸张是很厚的铜版纸,翻页时发出清脆的摩擦声。他跳过前言和总则,直接翻到第三章——关于青少年神经数据的分类与保护。这一章的很多条款他都参与过讨论,有几个术语是他在法工委的草案上用铅笔改过的,现在它们被印成了宋体字,每一个字都端端正正地坐在横线格里。

    他在“意图性数据的保护等级”那一页折了个角,然后合上条例,把文本放进文件夹。没有庆祝,没有仪式。条例从纸面到执行之间还有很长一段路——排异评估标准的统一方案还在卫健委征求意见,登记随访系统的省级试点还在逐步铺开,非侵入式设备的摸底调查才刚刚出了第一轮数据。这些他都知道。但条例本身是一个标志:从今天起,青少年神经数据的保护不再是行政指令里的临时条款,而是成文的、有法定约束力的法律条文。任何人想挑战它,都需要走修法程序,而不是发一封邮件。

    这个区别,大到足够让他今晚睡得好一些。

    他批了几份日常公文,又翻开市教委关于非侵入式设备摸底调查后续跟进的简报。简报建议在下一次季度评估中将非侵入式设备的使用数据与赋分制登记数据进行交叉分析,以识别是否存在高知家庭密集使用非侵入式设备的聚集性特征。他用铅笔在旁边写了几个字——“同意。交叉分析时需注意数据脱敏与隐私保护。”然后他把简报放在中间那摞文件上。

    他拉开抽屉,取出速效救心丸。这一瓶是上个月新开的,现在又空了将近一半。他把药瓶放在桌面上,拧开瓶盖倒出几粒,含在舌下。微苦的药味在口腔里缓缓散开,他靠着椅背闭了一会儿眼睛。胸口那股闷胀感从早上就开始时隐时现,他上午批文件时已经含过一次,中午吃饭前又含过一次——今天频率似乎比上周更高了一些。他没有去数。数药的次数太多会让他想起父亲——那个在县城中学教了三十年数学的男人,五十九岁死于心肌梗死,走的时候手边没有任何急救药。他的父亲一辈子没有吃过什么昂贵的药,最后连吃急救药的机会都没有。而他今年五十八岁,坐在长安街上这间办公室里,抽屉里有急救药,但也在用最快的方式消耗它。

    闷胀感在含药之后稍微减轻了一

第二十章 苏醒-->>(第2/3页),请点击下一页继续阅读。
上一页 回目录 下一页 存书签