清晨六点十八分,指挥室的灯管嗡了一声,像是老冰箱启动前的抽搐。林川右手还搭在灰匣子上,指尖能感受到那层金属外壳下微微震颤的电流,仿佛这破机器也知道自己报出的是个不该存在的数字。屏幕那行“现实一致性:87.6%”的字还没灭,像一只不肯闭上的眼睛,冷冷盯着他。他没动,也没喊人,只是把左手指节往桌沿磕了三下——咔、咔、咔,声音不大,却像三记钉子敲进骨头缝里。
靠门那个正打哈欠的队员猛地收住嘴,喉咙里那声哈欠卡得几乎要呛出来,像被掐住了脖子的鸟叫。那人叫阿凯,二十出头,入队最晚,却最怕安静——他总说死人才不说话。可现在,这屋子比凌晨三点还冷,冷得连呼吸都带着铁锈味。他盯着林川的背影,忽然觉得那件皱巴巴的快递制服后背,竟像一面褪色的战旗,挂在一个谁也不愿再信的疯子身上。
“川哥?”阿凯揉了揉眼,声音有点发虚,“又出事了?”
林川抬眼扫了一圈。屋里七个人,三个坐着,两个蹲在设备箱边啃面包,还有俩靠着墙玩石头剪刀布赌泡面口味。气氛松得像刚下班的快递站午休室,连空气都是懒洋洋的。阳光从铁皮窗缝斜切进来,照在满地散落的泡面叉子和能量饮料瓶上,泛着油腻的光,像一层浮在现实表面的油膜。一只苍蝇趴在显示器边缘,翅膀微微颤动,仿佛也在享受这片刻安宁——但它六条腿的步频,整齐得像军训方阵,每一步间隔精确到毫秒。
没人注意到主控台角落那台备用显示器,刚才多出来的“:00”已经消失了,仿佛压根没存在过。可林川看见了。他不仅看见了,他还记得——昨天同一时间,这个冒出来的“:00”是“:03”,前天是“:07”。它在倒退,像某种计时器,正无声逼近零点。他的胃底泛起一阵熟悉的寒意,不是恐惧,是那种“果然来了”的疲惫。他早知道这一天会来,只是没想到,镜主这次玩得这么静,这么细,这么他妈有耐心。
他按下通讯器:“所有人,到指挥室集合,现在。”
语气不重,但带钩子,勾着每个人的神经末梢。五秒内,该在的人都在了。走廊尽头的脚步声由远及近,有人系着裤腰带冲进来,还有人嘴里叼着半块压缩饼干,腮帮子鼓得像仓鼠。没人问为什么,杀虫队干久了都懂——林川要是用这种调子说话,要么是真发现东西了,要么就是快绷不住了。这两种情况,结果通常差不多:麻烦要来,而且是那种你躲都躲不掉的麻烦。
他把灰匣子连上投影仪,红光一扫,半空中浮出那串数字:87.6%。
“咱们活在这座城里的‘真实’,只剩这点儿了。”他说,声音平得像读通知,可每个字都像从冰窖里捞出来的,“剩下的,都是假的,或者被替换了。”
屋子里静了两秒,然后爆出来一个笑:“川哥你别整活啊,这数字哪来的?我昨儿还看见楼底下野猫打架呢,能是P的?”
说话的是阿哲,二十七岁,入队四年,擅长拆镜鼠炸弹,缺点是总觉得自己脑子比仪器靠谱。他嚼着口香糖,眼神写着“我又不是三岁小孩”。他甚至故意踢了脚地上空罐子,让它滚到林川脚边,“哐当”一声响,像是在证明世界依旧结实。林川低头看了眼那罐子,滚动轨迹太圆,落地反弹角度分毫不差——像程序设定好的动画。
他没反驳,只问:“你昨天看见的野猫,几只?”
“两只啊,黑白花和铁锈色的,在抢半根火腿肠。”
“它们打架的时候,影子朝哪边?”
阿哲一愣:“啥?”
“太阳从东边照,影子该往西。可昨天上午十点,所有建筑的投影都在南偏十五度,因为云层折射。你看到的猫,影子是不是也歪了?”
阿哲张了张嘴,没答上来。他确实……没注意影子。他脑子里突然闪过那个画面:猫扑上去的瞬间,影子却像贴纸一样黏在地上,没跟着动。他心头一跳,但立刻甩头:“操,谁特么注意猫影子啊!你是不是最近梦少了精神衰弱了?”
另一个队员接话:“川哥,灰匣子也不是百分百准吧?上次第三区数据风暴,它也报了91%失真,后来发现是基站故障。”
“那次我信。”林川点头,“因为纹身烫了。这次,它不动了。”他撕开右臂胶带,动作干脆利落,像揭一块结痂的旧伤。露出底下那团黑纹——一道扭曲如电路板烧毁痕迹的旧伤,蜿蜒爬过小臂内侧,末端分叉进掌心。三年前,他在废弃地铁站深处第一次触碰到“镜主”的残片,那晚整条街的人都开始重复同一天,而他的皮肤从此烙上了这道会随现实波动发热的印记。
现在,它冰凉如死蛇。
他盯着那道纹路,心里冷笑:三年了,它像一条寄生在他血肉里的警报器,疼的时候他知道危险来了,可现在它不疼了,反而更可怕——因为它被屏蔽了。就像你家的烟雾报警器突然哑了,不是因为没火,而是火已经烧进了电路板。
“它三年没这么安静过,连我爹被拖进镜子那天都没这么死过。”林川声音低下去,像是从喉咙深处挤出来的,“它不是累了,是……被屏蔽了。”
有人低头搓手,有人摸后脖颈,这是杀虫队里常见的应激反应——当现实开始晃,身体总会先一步察觉。老刘猛地抬头,盯着天花板角落的烟雾报警器,低声问:“咱这屋……有没有换过?”
“上周换的。”阿凯答,“消防检查说旧的失效了。”
“谁换的?”林川突然问。
“物业派的人,穿蓝工装,戴口罩,登记表还在前台。”
林川没再说话,但他记下了。蓝工装、无脸、准时出现——太标准了,标准得不像真人。他心里冷笑:镜主最喜欢这种细节,用最合理的借口,塞进最不合理的东西。就像往米饭里掺沙子,一粒看不见,吃多了硌断牙。
“所以你是说,整个城市……被掉包了?”一个年轻队员声音发紧,手指无意识抠着枪套扣环,指节发白。
“不是整个,是一部分。像病毒,一点点吃掉原来的系统,再长出自己的肉。”林川指了指投影,“87.6%,意味着我们看到的‘正常’,可能是演出来的。红绿灯、人流、广播、连你们吃的泡面——都有可能是副本。你们咬下去的每一口,说不定都是代码。”
“那我们现在算啥?群演?”阿哲冷笑,声音里带着讥讽和一丝藏不住的慌,“你要让我们为了个读数去打仗?外面连个黑袍众的屁都没有!老子不想当烈士,只想活着领退休金!”
“正因为空了,才危险。”林川嗓音压低,像一把钝刀慢慢磨,“镜主不会跑。他会藏,会等,会让我们自己乱起来。现在最怕的不是他动手,是我们自己信了这套‘太平盛世’。等你哪天发现你妈做的红烧肉味道不对,回头一看,她其实是台仿生厨娘,那就晚了。”
他顿了顿,目光扫过众人脸庞:“你们有没有发现,最近梦特别少?”
屋里一静。
“什么意思?”老刘皱眉。
“我们这些人,常年接触高失真区,夜里都会做碎片梦——街道倒转、人脸融化、听见不存在的声音。这是大脑在自我校准。可过去七十二小时,我没做一个梦。你们呢?”
一片沉默。
阿凯小声说:“我……昨晚睡得很沉,醒来像没睡一样。连翻身都没翻。”
“我也一样。”另一个队员接口,“像被人按了暂停键。连闹钟响了都懒得睁眼。”
林川点头:“我们的潜意识正在被切断。这不是休息,是格式化前的静默。他们想让我们忘了怎么怀疑。”
“那你打算咋办?”老刘开口,三十年的老巡街员,脸皱得像旧地图,“冲出去找他?拿扫码枪扫大街,见人就问‘你是不是假的’?还是先去民政局查查自己出生证明是不是AI生成的?”
“至少得动起来。”旁边有人附和,“不能坐等他回头咬一口。我可不想哪天早上醒来,发现自己是NPC,台词都写好了。”
“动?”阿哲直接站起来,椅子腿刮地发出刺耳声响,“拿命动?上回攻通讯塔死了三个!现在连他们坟头草都没齐膝,你就又要我们往前冲?谁家孩子不是爸妈生的?你林川是铁打的,我们不是!”
“你不冲,他就不会来?”老刘反问,声音低沉,“等他把我们都变成数据罐头,再集体喊‘你好新世界’?到时候连哭都得按程序走流程。”
“可现在没证据!”阿哲拍桌,青筋暴起,“没有目击,没有信号,没有尸体,连个鬼影子都没有!就凭一个快报废的灰匣子和你胳膊上的破纹身,让我们再去送?你当我们是消耗品吗?”
“我不是让你们送。”林川终于开口,声音不响,但压住了所有杂音,“我是让你们选——是要现在累着,还是等哪天突然发现自己说话重复三遍、走路同手同脚,才想起来早点动手?”
“那你选啥?”老刘盯着他,“出击?防守?你说句话,我们听你的。”
所有人目光全钉过来。
林川没立刻答。他环视一圈,看见阿哲咬牙切齿,老刘眉头锁死,还有两人低头不语,手指无意识敲着大腿——那是焦虑节奏,杀虫队内部测试里判别心理动摇的标准动作之一。他知道他们在想什么。
他们不信异常,是因为他们需要“正常”来喘气。
他们质疑他,不是因为他错了,而是因为他们怕——怕他又对了。
可问题在于,他自己也没底。
出击?万一是诱饵呢?一脚踏进别人编好的剧本,连怎么死的都不知道。
防守?等镜主把规则一层层改完,到时候别说反击,连“自己是谁”都会忘。
更糟的是,他没法证明。
灰匣子的数据可以被说是误差,纹身可以被说是旧伤发作,连他的判断,都可以被当成一个经历太多的人的偏执。
他不是神,他只是个穿快递制服的疯子,偏偏活得比谁都久。
“现在没人能确定哪种选择是对的。”他终于说,声音平得像读通知。
屋里一静。
“你说啥?”阿哲瞪眼,“你让我们做决定,你自己却说不知道?那你之前那一通吓唬是图个乐?”
“我说,我不知道。”林川看着他们,“出击可能中计,死得更快。死守可能错过窗口,等来全面接管。两种都可能让我们全军覆没。”
“那你让我们听谁的?”老刘问。
“谁的都不听。”林川站直,脊椎一节节挺起,像一把缓缓出鞘的刀,“暂不执行任何一方提议。全员保持二级战备,装备不离身,每三十分钟报位一次,环境音必须录入。发现任何‘太顺’的东西——比如音乐无缝衔接、红绿灯周期整除、人说话卡同一个调——立刻上报。”