第01章 异常结构
陈启第一次看见那段结构时,以为是仪器坏了。
凌晨一点四十六分,基因工程部三号实验室只剩下一排冷白色的灯。灯管老化,偶尔闪一下,像有人在天花板里眨眼。培养箱低声运转,离心机刚停,空气里有消毒水和咖啡冷掉以后的酸味。
屏幕中央,47 号样本的图谱停在第三外显子附近。
那一段本该是噪声。
至少按照现有数据库,它只能是噪声:重复序列,非编码区,早该被算法标成低价值片段,和人类基因组里那些被温和称作“功能未知”的沉默区域一起,安静地躺进附录。
但它没有沉默。
它折了三次。
第一段向内,第二段反向嵌套,第三段像一枚扣子,把前两段扣在一起。图谱上显示出来的不是普通的碱基排列,而是一种带有空间意图的结构。陈启盯着它看了快十分钟,越看越觉得不舒服。
不是害怕。
是被看见的感觉。
他把模型参数重置,重新跑了一遍。
结果一样。
他换了算法,把最新的灵力适配基因预测模型降级到三年前的稳定版本,又跑了一遍。
结果还是一样。
第三次,他干脆把 47 号样本和空白对照一起送进光谱仪。仪器预热需要三分钟,他趁这三分钟去接咖啡。咖啡机吐出来的是一杯颜色可疑的褐色液体,他喝了一口,苦得像论文返修意见。
回来时,光谱仪正在报警。
不是故障报警。是陈启从没见过的提示。
检测到未知共振结构。
建议终止扫描。
建议终止扫描。
建议终止扫描。
三行字在屏幕上重复跳动。红色,很刺眼。
陈启站在原地,没有立刻碰键盘。
研究所的设备很少用“建议”这个词。系统只会说“错误”“失败”“权限不足”或者“联系管理员”。“建议”意味着程序没有判定出明确风险,却在某个阈值上犹豫了。
机器在劝他停下。
这件事本身比报警更奇怪。
他把咖啡放到桌上,杯底碰到金属台面,发出很轻的一声响。那一瞬间,屏幕上的结构动了一下。
陈启以为自己看错了。
他俯身,调出实时数据。不是图像刷新延迟,也不是显示器抖动。那段三折结构的光谱回波在刚才短暂升高了 0.03 个单位,时间点精确对应咖啡杯落桌的那一声震动。
声波?
不,不可能。普通机械震动不该影响基因样本的灵力光谱。除非这段结构不是被动地被扫描,而是在响应外部刺激。
陈启的手指停在键盘上。
他应该终止扫描,写一份异常报告,等明天上午设备组和伦理办公室一起过来。标准流程是这样。标准流程能保护他,也能保护样本。
但标准流程也会把 47 号样本封存至少三周。
三周以后,这段结构可能会变成会议纪要里的一个编号,躺在某个“待复核”文件夹里,直到没人再记得它。
陈启很讨厌这种结局。
他把报警窗口拖到一边,手动打开高级参数。
权限提示弹了出来。
当前操作将进入非标准扫描模式。
是否继续?
他点了继续。
请填写用途说明。
陈启想了想,输入:
复核疑似设备噪声。
他自己都不信。
系统通过了。也许凌晨两点的权限系统比人类更宽容,或者更疲惫。
扫描重新开始。
光谱曲线一点点爬升,像某种正在醒来的东西。第一分钟,一切正常。第二分钟,结构边缘出现微弱的金色噪点。第三分钟,陈启听见了声音。
很轻。
不像从音箱里传出来,也不像实验室里哪个设备在响。它更像是在头骨里面,贴着颅骨内侧,很远地敲了一下。
咚。
陈启抬头。
实验室里没有人。
他摘下眼镜,揉了揉眉心。最近睡眠不好,咖啡喝得太多,出现短暂听觉错位并不奇怪。他给自己找了一个合理解释,然后低头看屏幕。
曲线还在爬升。
咚。
第二下。
这一次更清楚。不是声音,是一个“事件”。它发生在他的身体里,又像来自身体外面。陈启的后颈慢慢发凉,右手指尖开始发麻。
他终于伸手去按终止键。
按下去之前,屏幕上跳出新的一行字。
结构匹配中……
陈启停住了。
匹配?
和什么匹配?
他没有给系统导入任何外部模板。数据库里也不该有这种结构。如果系统正在匹配,就说明本地某个隐藏索引里存在相似对象。
研究所有他不知道的数据库。
这个念头像一根细针,轻轻扎进脑子里。
陈启把终止扫描的手收回来,打开后台日志。权限再次弹出。他输入自己的研究员密码。失败。又输入项目负责人临时授权码。失败。
第三次,他用了林澈给他的调试口令。
那是两周前林澈帮他修模型时留下的,说“应急用,别乱碰”。
权限通过。
后台日志展开的一瞬间,陈启看见了一串不该存在的调用记录:
hidden_index / lock_gene / restricted_archive
lock_gene。
基因锁。
陈启的心跳慢了一拍。
他并不是第一次见到这个词。十二岁那年,他在一本旧科普书里读到过类似的民间假说:人类基因组里存在某些被“锁住”的潜能区域。后来他上大学,学会了分辨科学和幻想,这个词就和许多少年时代的胡思乱想一起,被他扔进了记忆深处。
可现在,它出现在研究所的隐藏索引里。
不是论坛。不是小说。不是阴谋论视频。
是研究所的后台日志。
第三声敲击传来。
咚。
陈启眼前黑了一下。
他扶住实验台,咖啡杯被碰倒,冷咖啡沿着桌面流向键盘。他没有管。太阳穴像被一根细线勒住,越收越紧。屏幕上的三折结构开始闪烁,金色噪点沿着折叠边缘聚集,最后形成一个极细的圆环。
圆环出现的瞬间,实验室所有灯同时暗了一下。
陈启听见自己喘气的声音。
然后,他听见了第四下。
这一次不是敲击。
是一个字。
不属于任何他知道的语言,却在进入脑子的瞬间被翻译成了明确含义:
停。
陈启的手终于按下终止键。
扫描停止。报警消失。光谱曲线冻结在峰值前一秒。实验室的灯恢复稳定,培养箱继续低声运转,世界好像什么都没发生。
只有陈启知道,有什么东西已经越过了边界。
他坐在椅子上,缓了很久,才发现自己的右手一直在抖。
手机震了一下。
是林澈发来的消息。
你是不是又在实验室?
陈启盯着这行字,忽然有点想笑。林澈总是这样,像在研究所各处埋了看不见的传感器。也许只是因为太了解他。
他回复:
如果一个隐藏数据库里出现了 lock_gene,你会怎么解释?
林澈没有立刻回。
十秒。
二十秒。
一分钟。
然后手机亮起。
别动。
断网。
不要上传。
我现在过去。
陈启看着“不要上传”四个字,后背慢慢凉了。
他抬头看向屏幕。自动备份图标正在旋转。
上传进度:97%。
陈启几乎是扑过去拔掉网线的。
进度停在 99%。
实验室里安静下来。
他能听见自己的心跳,一下,一下,很重。屏幕右下角弹出系统提示:
备份失败。
本地缓存已保留。
陈启盯着那行字,忽然意识到自己刚刚做了一件无法解释的事。
他中断了研究所的自动备份。
这意味着从这一刻起,47 号样本的数据不再只是项目资产。它变成了他私人手里的一份异常材料,一份可以被追责、被封存、被定义为违规操作的东西。
他把自己从标准流程里摘了出去。
门外传来急促的脚步声。
林澈推门进来,头发乱着,外套拉链都没拉。他先看陈启,再看屏幕,最后看见那行“备份失败”。
他的脸色变了。
“你上传了多少?”
“百分之九十九的时候断了。”
林澈闭了闭眼。
“那就不是没上传。”他说,“是已经有人知道你看见它了。”
陈启没有说话。
太阳穴深处,那种敲击感又轻轻响了一下。
咚。
这一次,屏幕没有变化,仪器没有报警,灯也没有闪。
只有陈启听见了。
林澈注意到他的表情。
“怎么了?”
陈启抬起头,看着屏幕上那段冻结的三折结构。
“它刚才让我停下。”
林澈沉默了两秒。
“谁?”
陈启想说不知道。
可他忽然明白,这不是“不知道”的问题。
有些门,在你不知道门后是什么的时候,最好不要打开。可如果门已经从里面敲响了,你就不能再假装自己只是路过。
他听见自己说:
“锁。”