U盘回到苏晚手里用了六天。
不是林一诺拖延。是流程不允许更快——下一次涉及S-01房间的合规作窗口,最早是六天后的B组设备巡检。提前接触会打破排班节奏,打破节奏会被系统标记为异常。
六天里,苏晚的程和之前没有任何区别。吃饭、采样、看书、睡觉。心率稳定在六十到六十五之间。呼吸频率九到十一次每分钟。八台监控设备记录下的是一个安静的、高度配合的实验体。
第六天下午,林一诺跟着设备巡检的后勤人员走进来。
流程和上次终端扫描类似——他负责检查房间内医疗监测设备的校准状态,后勤负责记录。苏晚坐在椅子上,终端搁在膝盖上。
林一诺检查床头血氧仪的探头接口时,左手从白大褂口袋里摸出了U盘,贴着设备外壳的缝隙塞进了床头柜和墙壁之间的间隙。
四厘米宽的缝隙。U盘的厚度是七毫米。卡在里面不会掉,从任何角度看不到。
苏晚翻了一页书。
二十分钟后,巡检结束,两人离开。
当天夜里凌晨三点零七分,监控系统志轮转。零点五秒的录像间隙。
苏晚从床上坐起来,手伸进床头柜和墙壁之间,取出U盘。
她没有终端。
U盘进终端会留下USB设备接入的系统志——哪怕只接入一秒钟,时间戳也会被记录。张磊的数据审计系统每天凌晨四点跑一次全量志扫描。三点零七分接入,四点零零分被扫到,中间不到一小时。
苏晚没有那么蠢。
她需要的不是“看”U盘里的文件。她需要的是“知道林一诺给了什么、没给什么”。
而这个信息,U盘的物理特征就能告诉她。
存储芯片的写入作会改变设备的微观状态——具体来说,NAND闪存在写入数据时会产生轻微的热量积累,写入量越大,芯片温度越高。苏晚拿到U盘时距离林一诺写入数据已经过了至少几个小时,温度差异早就消散了。
但还有另一个线索。
U盘外壳上,林一诺加装的那个微型滑动开关。出厂时不存在的部件,焊接点的手工痕迹说明这是个人改装。开关目前在第一个位置——只读模式。这意味着林一诺在写入完成后把开关拨回了原位。
写入了多少?
苏晚把U盘举到眼前,借着窗外透进来的微弱光线看外壳。安保部门的资产编号贴纸上,林一诺用圆珠笔写了一个数字。
极小。写在贴纸边缘,不刻意找看不到。
“22”。
22个文件。
苏晚在脑中过了一遍她给出的信息清单。清单上一共列了三十一项——实验室网络拓扑结构、A区电力系统配电回路图、安保系统冗余备份节点位置、MODBUS通道残余带宽容量、中央服务器物理布局图、备用电源详细线路图、各层门禁系统的型号与固件版本、通风管道的工程截面图……
三十一项,回来二十二项。
差九项。
哪九项?
不用猜也知道。林一诺给了他能拿到的,扣下了他觉得最危险的。
中央服务器的物理布局图——碰这个东西需要进入核心机房,核心机房的门禁志直接报到张磊桌上。
备用电源的详细线路图——电力系统属于基础设施安全范畴,图纸存放在工程部的加密分区里,B组研究员的权限够不到。
还有几项涉及安保系统底层架构的技术文档,同样在林一诺的权限天花板之上。
二十二项是他的极限。剩下九项,要么他拿不到,要么他拿得到但不敢拿。
苏晚把U盘放回床头柜缝隙里。
躺回床上。
她没有失望。恰恰相反——如果林一诺把三十一项全部带回来,她反而会重新评估这个人。全部照办意味着两种可能:要么他鲁莽到不计后果,要么他在执行别人的指令。前者不能用,后者是陷阱。
二十二项,有筛选,有判断,有取舍。
说明他在用自己的脑子。
好。
那就用他的脑子。
---
第二天,苏晚没有做任何动作。
第三天也没有。
第四天,周一,采样。苏晚在终端的文本编辑器里写了一段东西,保存在电子书阅读器的自定义书签脚本里。等着下一个安全窗口传出去。
传出去的不是催促。不是追问“为什么少了九项”。不是新的信息需求清单。
是三份文档。
第一份,标题栏空白,正文是一段数学推导。从哈密顿量的变分形式开始,经过十七步代数变换,最终导出一个关于蛋白质折叠能量景观中局部极小值分布密度的解析表达式。推导过程中引用了三篇论文的中间结论,论文编号分别对应A区内部研究数据库中的RD-2024-0112、RD-2024-0298和RD-2024-0455。
第二份,同样没有标题。内容是一张表格——左列是十四种已知的T细胞表面受体亚型编号,右列是每种亚型对应的最优抗原呈递效率区间。表格下方附了一段说明文字,解释了亚型编号E7到E11之间存在的非线性跳变现象,并给出了跳变的物理机制——四号染色体上那段“意义未明”的调控元件在转录过程中产生的RNA二级结构扰。
第三份,最短。只有四行字。
“你的离心分离方案用的是蔗糖密度梯度,上限设在45%。换成碘克沙醇,上限拉到60%,分辨率会提升两个数量级。你现在分不开的那两个组分,不是不存在,是你的梯度太粗看不到。”
三份文档的共同特征:没有一份是苏晚自己需要的东西。
全部是林一诺需要的。
---
林一诺拿到这三份文档是在周三深夜。
他窝在B组实验室内间的储物室里——这个地方已经成了他的第二办公室,没有摄像头,隔音过得去,唯一的缺点是坐在试剂盒上屁股疼。
第一份文档,他看了二十分钟。
前三步推导他跟得上。第四步开始吃力。第七步之后他放弃了跟,直接跳到结论,然后倒推。倒推到第十二步的时候,他停住了。
这一步用了一个trick——把蛋白质折叠的自由能曲面投影到一个低维流形上,然后在流形的切空间里做微分。这个作在纯数学领域叫“降维嵌入”,在计算生物学里偶尔有人用,但用在蛋白质折叠问题上,并且用得这么净的——
林一诺本科学的是生物物理。硕士跟的导师是国内蛋白质结构预测方向的前三十。他读过的相关文献不少于五百篇。
五百篇里没有一篇这么做过。
不是没人想到。是想到了也算不动。流形嵌入需要对能量曲面的全局拓扑结构有极其精确的先验知识,否则降维过程中会丢失关键信息。正常情况下,获取这种先验知识需要跑上百万次分子动力学模拟。
苏晚没跑模拟。她的先验知识来自脑子里那六百条研究志的交叉比对——不同实验在不同条件下观测到的局部能量数据,被她拼成了一张足够精确的全局图。
等于是用人脑替代了超算。
林一诺把第一份文档翻回第一页,从头到尾重新看了一遍。这次不是看推导过程。是看字里行间透出来的东西。她不是在解一道题。她是在展示一种能力——我能看见你看不见的结构。
第二份文档更要命。
T细胞受体亚型的分类和效率区间,这个问题林一诺自己也在做。做了三个月,卡在E7到E11的非线性跳变上——实验数据明摆着有异常,但他找不到物理解释。组里其他人的态度是“可能是实验误差”。他不信是误差,但信不信没用,给不出替代解释就等于没说。
苏晚给出了替代解释。
四号染色体调控元件。RNA二级结构扰。
林一诺把这段解释读了三遍,每读一遍脖子后面的汗毛都竖一次。不是因为害怕。是因为——他自己的脑子里也隐隐有过这个方向的念头,但只是一个模糊的念头。模糊到他自己都没当回事。
苏晚把那个模糊的念头变成了一套完整的机制链。从基因组层面到转录层面到蛋白质层面到细胞功能层面,四层因果关系,每一层都有数据支撑,每一层和下一层之间的逻辑接口都严丝合缝。
这不是小聪明。
小聪明是灵光一闪。这个东西不是灵光一闪能闪出来的。这是系统性地、结构性地看透了整个领域的底层逻辑之后,从上往下一层一层铺设出来的东西。
第三份文档,四行字。
林一诺看完那四行字之后,在储物室里坐了很久没动。
碘克沙醇替代蔗糖密度梯度。上限拉到60%。
他上个月刚跟组长提过这个方案。组长否了。理由是碘克沙醇的成本是蔗糖的十五倍,在现有预算框架下不现实。
但组长否的不是成本问题。组长否的是“你凭什么觉得45%以上还有东西”。
凭什么?
凭苏晚那张表格里E7到E11的非线性跳变数据。如果那个跳变是真实的物理现象而不是实验误差,那就意味着在蔗糖梯度45%上限看不到的密度区间里,确实存在一个被遮蔽的组分——不是不存在,是梯度太粗看不到。
三份文档串在一起了。
第一份给了理论工具。第二份给了关键数据。第三份给了实验方案。
从天上到地下,一条完整的路径。
林一诺拿这三份东西什么?直接拿去做实验。如果结果验证了苏晚的判断——梯度拉到60%之后确实分出了新组分——那这个发现的学术价值不用他评估,任何一个搞免疫学的人看到都会明白意味着什么。
苏晚在给他递东西。
不是施舍。是交换。
你给我二十二项情报,我给你三个悬了三个月的技术难题的解决方案。交换比例悬殊——她给的东西远比她收到的值钱。
但贵重的礼物从来不是为了公平交换。是为了让你欠债。欠到还不起。还不起的债最终只有一种清偿方式——忠诚。
林一诺把三份文档从头到尾看了第三遍。
第三遍的时候,他注意到了一个问题。
第一份文档,第十四步推导。一个求和符号的上限写成了N-1。
林一诺盯着那个N-1看了三分钟,把前后文的数学关系重新梳理了一遍。
应该是N。
不是N-1。
求和上限差一个整数项的后果——在这个具体的推导中——不太严重。最终结论不受影响,因为当N足够大时,多一项少一项的贡献可以忽略不计。苏晚的结论本身是对的。
但过程有瑕疵。
如果是任何其他人写的文档,林一诺会认为这是笔误。可这是苏晚。一个能用营养液流痕写二进制编码的人,一个能从六百条研究志里交叉对比出蛋白质折叠能量景观全局拓扑的人。
她会写错一个求和上限?
林一诺想了很久。
然后他做了一个决定:说出来。
不是因为他想证明什么。是因为——如果他假装没看到,那他就不是一个合格的科研人员。不合格的科研人员拿到再好的方案也是浪费。
他在下一次接触窗口里传回了一段文字。
没有铺垫,没有感谢,没有寒暄。
“第一份文档,第十四步,求和上限应为N,非N-1。渐近行为不受影响,但精确解偏差在小样本条件下可观测。”
---
苏晚收到这段文字的时候,正在数天花板上的光斑。
数到第四个的时候,她不数了。
N-1。
他找到了。
苏晚在黑暗中闭着眼。这个测试的原理很简单——如果林一诺盲目接受,说明他被“碾压”之后丧失了独立判断。丧失独立判断的人不能,只能服从。服从者在压力下会崩溃,崩溃的人会暴露所有秘密。
但他没有盲目接受。
他看完了。他理解了。他承认推导的价值。然后他在承认价值的前提下,指出了其中一个微小的、不影响结论的、但确实存在的错误。
并且——这是最微妙的部分——他的措辞没有任何谄媚。没有“可能是我理解有误”的前缀,没有“不知道对不对,请您指正”的套话。直接说“应为N”。判断句。没有商量。
一个被碾压之后还能保持专业直觉的人。
可以用。
---
五天后,A区例行服务器维护。
每季度一次的硬件检查,需要运维人员进入核心机房对服务器做物理层面的检测——硬盘SMART状态、风扇转速、电源模块输出电压、网线接口的物理连通性。
B组研究员不在正常的机房准入名单上。但王副博士倒台后的人员紧缩让运维组缺人——编制七个,实到四个,剩下三个有一个病假两个被借调去处理数据修复的紧急任务。
四个人检查三十多台服务器,一个下午不完。
运维组长跟各组借人。B组出了一个。
林一诺主动报的名。
组长问他:“你懂服务器?”
“本科修过计算机网络,选修课。”
组长看了他一眼,没多问。能多一双手就行。的是体力活加眼力活——开机柜门、读仪表参数、在检查单上填数字。不需要多懂。
下午两点十五分,林一诺跟着运维人员进入核心机房。
机房在A区地下二层,恒温恒湿,气味是服务器散热风扇吹出来的那种燥的暖风。三十六台机柜排成四排,蓝色的LED状态灯在金属面板上闪烁。噪音很大——风扇声形成一种连续的低频嗡鸣,说话得提高音量。
这个噪音是天然的掩护。
林一诺被分配的区域是第三排,负责十二到十八号机柜。工程蓝图的存储位置在十五号机柜——他在之前的六天里通过零散的内部文档交叉对比确认了这一点。
运维组的人各管各的区域,没人盯着谁。组长在第一排,距离他最远。
林一诺打开十五号机柜的前面板。两台2U服务器,四台1U服务器,底部一台NAS存储阵列。NAS的前面板有四个硬盘托架,其中第三个托架的状态灯是橙色——降级模式,说明RAID阵列中有一块盘的健康状态下降了。
正常的维护作是记录这个异常,填在检查单上,等运维组后续处理。
林一诺在记录异常的三十秒里,右手从白大褂前口袋里摸出了那只改装过的U盘。
NAS的前面板下方有一个USB维护接口。出厂设计,用于固件升级和志导出。
U盘入。滑动开关拨到第二位。
NAS的作系统没有图形界面。屏幕上跳出一个命令行终端。
林一诺只敲了两行命令。
第一行:挂载存储卷。
第二行:递归复制目标目录到外接设备。
目标目录的路径他提前记住了——/archive/eng/blueprint/全量备份/。
复制进度条在终端里跑。没有百分比显示,只有不停滚动的文件名。
eqp_layout_B2F_v3.2.dwg
power_grid_main_backup_routing.pdf
hvac_duct_cross_section_all_floors.pdf
network_topology_full_classified.json
文件名在屏幕上一行一行地翻过去。每翻一行,林一诺的心跳就快一拍。
总大小约340MB。USB2.0接口的传输速率理论上限是480Mbps,实际约30MB/s。整个复制过程需要不超过十五秒。
第十一秒的时候,第二排传来运维人员的声音:“十号机柜的PDU跳闸了,谁带了万用表?”
林一诺的手没动。
第十三秒。文件复制完成。终端最后一行显示:copy complete, 47files, 338.7MB。
第十四秒。拔U盘。开关拨回。U盘回口袋。
第十五秒。他从白大褂另一个口袋里掏出万用表,举起来喊:“我有。”
声音稳。手稳。
步子不太稳。但机房的防静电地板本来就滑,走路不稳不算异常。
---
苏晚拿到完整数据是在两天后。
凌晨三点零七分。U盘从床头柜缝隙里取出。
这次她需要入终端。340MB的工程图纸不可能不看就理解内容——她不是,读不了U盘的磁信号。
但她只有零点五秒的监控间隙。
零点五秒不够入U盘、打开文件、阅读内容。
苏晚不需要零点五秒来读文件。她需要零点五秒来启动一段预先写好的脚本——这段脚本的功能是把U盘里的文件解包、转换为纯文本格式的结构化数据描述,然后写入终端的一个隐藏缓存区域。脚本执行时间约零点三秒。
剩下的阅读工作在之后的时间里完成。文件不在U盘里了,在终端的缓存里。伪装成电子书阅读器的临时渲染文件。文件名和扩展名都与系统默认的阅读器缓存格式一致。数据审计系统扫描到这些文件时,会把它们归类为“阅读器正常运行产生的临时数据”。
苏晚用了一整夜读完了全部四十七份文件。
配电回路图。每一条电缆的走向、额定载流量、过载保护阈值、切换时间。
通风管道截面图。主管道直径八十厘米,足够一个瘦削的成年人通过。分支管道在B2层西侧收窄到四十厘米,不可通行。但B2层东侧有一段维修检查口相连的过渡段,口径六十五厘米——紧一点,能过。
网络拓扑结构图。完整版。不是之前林一诺给的局部版本。完整版上标注了每一个交换机的物理位置、每一条光纤的路由走向、每一个防火墙的部署节点。
还有一份她之前没有列在清单上、但林一诺自作主张带出来的东西——
“普罗米修斯”基地的整体工程蓝图。
地上三层,地下四层。总建筑面积约两万八千平方米。
苏晚的眼睛在屏幕上扫过图纸的每一条线。
扫完之后她关了屏幕。闭上眼。
图纸上的线条在她脑中重新排列。二维的平面图被折叠、拉伸、堆叠,变成三维的空间结构。每一层楼板的厚度、每一面承重墙的位置、每一立柱的截面尺寸——图纸上标注的所有数字灌入这个模型,像混凝土浇进模具。
电缆走向叠上去。红色是强电,蓝色是弱电,绿色是光纤。
通风管道叠上去。灰色的管线在楼层之间穿梭,分叉,汇合。
门禁节点叠上去。每一扇需要刷卡的门,每一台闸机,每一个紧急出口的电磁锁。
监控摄像头叠上去。已知的、推测的,全部标注位置和覆盖角度。
整个“普罗米修斯”基地的三维模型在苏晚的大脑中成型了。
她开始走。
不是身体在走。是意识在模型中走。
从她的房间出发。门口左转。走廊向西三十米。经过两个摄像头的覆盖区域——第一个的盲区在走廊与消防栓之间的凹槽,宽度三十五厘米,可以贴墙通过;第二个没有盲区,必须在录像间隙内通过,步行速度需要达到每秒两米以上。
到达走廊尽头的防火门。防火门是机械锁,不联网,但锁芯型号是标准的六弹簧锁,开锁工具可以用医疗监测设备上拆下的弹簧片代替。
防火门后面是消防楼梯。向下两层到B2。B2层的通风管道检查口在东侧走廊的吊顶检修盖板下方。盖板固定螺丝是十字型,可以用改装后的U盘外壳上的螺丝刀片拧开——
不对。
苏晚在模型里停住了。
B2层东侧走廊有三个摄像头,覆盖角度重叠,没有盲区。志轮转的零点五秒间隙不够她打开检修盖板、爬进管道、再把盖板从内侧盖回去。至少需要四十秒。
换一条路。
消防楼梯不下B2层。下B1层。B1层的配电间有一扇检修门通向设备夹层。夹层没有摄像头——图纸上没有标注,合理推测是因为夹层层高只有一米二,正常人进不去。苏晚可以匍匐通过。
从夹层穿过一段四十米长的电缆桥架区域,到达B2层服务器机房的上方。机房的吊顶承重能力——图纸标注为每平方米150公斤——足够。吊顶板的固定方式是T型龙骨卡扣,不需要工具,用手指就能推开。
从吊顶进入机房。机房有摄像头,但摄像头对准的是机柜前面板方向,吊顶检修区域是盲区。
从机房到地下车库的通道——
苏晚的意识在三维模型中跑了七条路线。每一条路线的时间开销、风险节点、所需工具,逐一计算。
跑完第七条的时候,天亮了。
窗外的光线变化被她的余光捕捉到。
苏晚睁开眼。天花板上的光斑又出现了——熄灯模式解除,间照明启动。
她的心率是六十二。呼吸九次每分钟。
七条路线里,两条不可行——B2层东侧走廊的摄像头密度太高,任何经过那个区域的方案都要排除。三条风险过高——需要在两个以上的有人值守区域停留超过十秒,容错空间太小。
剩下两条。
一条快,四十分钟出去,但需要经过地下车库的门禁闸机,闸机的电磁锁断电后有十五秒的机械延迟,这个参数来自图纸标注,需要实地验证。
一条慢,一个半小时,全程走管道和夹层,不经过任何门禁节点,但体力消耗极大——中间有一段二十米的垂直通风竖井需要徒手攀爬。
苏晚选了慢的那条。
快的方案有一个不可控变量。慢的方案全部是物理层面的挑战——体力、耐力、空间判断。这些东西她可以提前练习、提前评估、提前确认自己做得到还是做不到。
做不到的事不做。做得到的事只做一次。
她从床上起来,去洗手间洗了脸。水龙头的水温偏凉——A区的热水供应在早上六点之后才开。
苏晚对着镜子里的自己看了三秒。
镜子里的人瘦了。两个月的高频采血和有限的营养供给让她的脸部轮廓比刚进来时更分明。但眼睛还是那双眼睛——你从外面看不到什么异常,就是一个被关久了的年轻女人的疲惫长相。
她把视线移开。
今天有三件事要做。
第一件:制定详细的逃跑时间表,精确到分钟。
第二件:评估体能储备,确认二十米垂直攀爬的可行性。
第三件:给林一诺最后一份文件。
那份文件里写的是——他需要在她逃跑之后做什么。
苏晚关上水龙头,擦手。
走出洗手间。
坐在椅子上。拿起终端。
翻到电子书的第一百四十二页。
开始工作。