楔子
财务部总监孟繁盛把一张工资条甩到我桌上,数字刺眼。年会上他当众夸我是“技术中坚”,转过脸就用888块年终奖告诉我什么叫笑话。我拿起工资条,折叠,塞进口袋,准点打卡下班。当晚九点十七分,蓝森集团全球交易系统全线崩溃,三十秒内蒸发十四亿账面资金。我的手机在裤兜里开始震动,第一个电话进来时,我正在地铁口给流浪猫拆火腿肠。接下来三个小时,孟繁盛的来电显示像心跳监测仪一样没停过。
第一章. 系统停摆夜
地铁末班车晃得人昏昏欲睡,手机第三次震起来的时候我低头看了一眼。屏幕上跳动着“孟繁盛”三个字,右上角红色角标显示未接来电十四通。我把手机翻了个面,屏幕贴在大腿上,震动顺着牛仔裤布料传到皮肤,持续不断。
九点三十七分,系统告警信息才正式推送到全体员工邮箱。我的工作手机没关,企业微信群里已经炸了锅。五百多号人集体@技术部,核心交易模块报错码9998,数据库写入锁死,备机切换失败,灾备中心根本没启动应急预案。群里有人发截图,大盘实时盈亏栏位飘红,数字后面跟着的单位是亿。
九点五十三分,我的私人手机响起来。来电显示是个陌生座机号,区号是深圳。我接了,对面是集团信息中心的值班主管老周,声音压得很低:“方骆,你走之前动底层参数了?”我说没有,今天下午五点半我就交了工位,六点零三分打卡离司。老周那边键盘声噼啪响了一阵,说:“日志显示十九条异常指令,发起终端是你工位的MAC地址。”
我说我知道,指令不是我发的。老周沉默了两秒,说有人在拿你的令牌干活。他那边突然背景音噪起来,有人推门进去,隐约听见“孟总来了”四个字。电话啪地断了。
地铁报站,我到家了。开门时租的公寓玄关灯一闪一闪,房东说过两天修,一直没来。我打开冰箱拿了罐黑咖啡,拉开拉环喝了一口,坐到书桌前打开笔记本。远程连公司VPN的权限已经被切断了,显示账户锁定。我换了一条路径,用之前做渗透测试留的后门绕进日志服务器,把今天十六点到十八点之间所有终端操作记录拖下来,压缩包加密存到本地硬盘。
手机第四次大规模震动。孟繁盛的个人号、工作号、还有他秘书的号轮着打。我接了他秘书那一通,对方声音发抖:“方工,孟总说您要不接电话,他直接报警说您破坏生产系统。”我说让他报,报之前让他先查查信息中心门禁记录,今天下午五点到六点之间谁拿万能卡刷进过D区机房。那边愣了三秒,然后电话被孟繁盛抢过去。
“方骆!你知不知道今晚这一下子,集团第三季度的利润全赔进去了!”他的嗓门顶在麦克风上,气流声呼哧呼哧的。“你在哪?马上回公司!所有高管都在,就差你一个。”
我喝了口咖啡,看了一眼笔记本屏幕上正在跑的端口扫描进度条,回了一句:“孟总,我年终奖888,您让我今晚干888万的活儿,这账不对。”
他那头大概没想到我这么硬,噎了一下,随即压着嗓子吼:“系统是你负责搭的架构,现在出了事,你不来谁来解决?这是责任问题!”
“架构是我搭的,权限是我设的。”我平铺直叙,“但我今天下班前被通知取消核心模块修改权限,审批单上签字的是您。所以现在能碰底层的人不是我。您不如问问信息中心今晚谁在D区,那个点了还加班,多敬业。”
孟繁盛的呼吸声粗起来,旁边有个女声在给他递什么东西。他沉默了几秒,语气软了半度:“方骆,你先回来,什么都好说。”
“年终奖补发?”我问。
“……回来谈。”
“没空。”我说,“我在地铁上,信号不好。”然后挂断,把手机扔到桌上。
扫描程序跑完了,结果里多了一条异常IP,走的是公司内网穿透出去的隧道,时间戳和那十九条恶意指令高度吻合。隧道出口落在一个云服务商的弹性IP上,归属地香港。我把数据打包,用PGP加密上传到个人私有云,想了想,又把源文件从本地磁盘删了,只留了解密密钥在脑子里。
后半夜三点,我的私人微信弹出一条好友申请,头像是只卡通柯基,验证信息写的是“我是许南絮”。我点了通过。对方直接发来一段语音,十五秒。我点开听,背景音是键盘和机房空调的低频嗡鸣,女声很稳:“方骆,我是蓝森数据组的许南絮,咱们在去年架构评审会上见过一面。现在你工位上的电脑被信息中心的人搬走了,但我在他们搬运之前拷贝了一份内存镜像。”
我问你为什么帮我。她回了一条文字:“因为那十九条指令写得像你三年前的代码风格,但调用了一个你去年就在季度报告里标注过‘建议废弃’的老库函数。你自己的代码你不会这么写。”
我盯着屏幕,没回。她又发来一条:“你在家对吧?明天上午十点,弥敦道那家冰室,我拿东西给你。另外建议你把手机卡拔了,孟繁盛正在联系运营商调你基站定位。”
我回了一个“好”字,然后关机拔卡,把SIM卡剪成两截丢进垃圾桶。黑咖啡罐空了,我把它捏扁,放在窗台上。
窗外天快亮,城市边缘露出来一层灰蓝色。我合上电脑,去洗了把脸,镜子里的人嘴角有一点点往上翘。
第二章. 旧账新债
弥敦道那家冰室早上九点四十五分开门,我十点整到的时候许南絮已经坐在靠里的卡座了。她面前摆了一杯冻柠茶没动,吸管插着但没吸过。她穿着灰色卫衣,帽子压了一半,看到我进来就把面前的牛皮纸信封往前推了推。
我坐下,信封没动,先看了她一眼。去年架构评审会上她坐第三排,技术总监提问时她举手问了两个问题,都是关于灾备切换延迟临界值的,问得比在场大多数高级架构师都细。我当时就记住了这张脸和这个名字。
“内存镜像你看了?”我问。
“看了。四条不对劲的地方。”许南絮掰着手指头数,“第一,指令发起时间和你打卡离司时间差了三十二分钟,中间你工位电脑屏幕锁了,但键盘记录显示有输入活动。第二,调用的那个废弃库函数,返回值类型和你三年前写的版本一模一样,但今年年初重构之后那个函数的签名已经改了,现在强行调用会触发异常——这个异常正好是今晚系统崩溃的直接原因。第三,指令的目标对象是交易结算模块,数据流向指向一个外网IP,那条隧道架设时间是一周前。第四,架设隧道需要三级管理员权限,你离职前那个权限还在,但今天下午三点,系统里你的权限被孟繁盛手签降了一级,降到只能读日志不能写参数。”
她停了一下,看着我的眼睛:“所以今晚的事,要么是有人在你的权限降级之前复制了你的令牌,要么是孟繁盛自己降你的权然后栽给你。前者需要物理接触你的电脑,后者需要更深的机房权限。我倾向于后者,因为信息中心门禁记录今天下午四点到六点之间,孟繁盛的万能卡刷开过D区机房的门,刷了三次。”
我没接那个话,把牛皮纸信封拆开。里面是两张打印纸,一张是内存镜像里提取的异常指令链,另一张是那十九条指令的父进程ID追溯。父进程指向一个系统服务,那个服务的启动时间戳是今天下午两点四十七分,启动账户是“MENG_FS_ADMIN”。
“孟繁盛自己的管理员号。”我指给许南絮看,“他用自己账户启了一个计划任务,设定六点零五分执行那条指令链。我的令牌大概率是之前被他用其他手段复制过,放在那个计划任务里做混淆项。”
许南絮点头:“你打算怎么弄?”
我说先去见个人。她没问是谁,从包里掏出一个没开封的移动硬盘推过来:“内存镜像和日志副本都在里面,加密密码是你去年评审会上PPT最后一页那个数列。我猜你还没换。”
我愣了一下,想起去年那个PPT末页确实放了一串斐波那契数列当装饰,谁也没想到她会记下来当密码。我把硬盘收进口袋,站起来,说这杯柠茶我请你。她摆摆手:“我是数据组的,那十九条指令直接打穿了我们部门下周要上线的新报表系统,现在整个组被迫停工。我不是帮你,我在帮自己。”
我看了她一眼,点头,转身出冰室。
阳光刺眼,九龙城这一片旧楼广告牌挤在一起。我沿着弥敦道往北走,拐进一条内街,找到一栋外墙刷成淡绿色的旧唐楼。楼梯间里有人烧纸的味道,我爬到五楼,按了最里面那户的门铃。
开门的是个穿背心的中年男人,剃着寸头,左眉有一道疤。他看见我,先皱了皱眉,然后侧身让我进去。屋里一股机油味,客厅沙发上摊着一台拆开的服务器机箱,零件散在抹布上。
“华叔。”我在他对面坐下,“今晚蓝森的事你听说了?”
华叔本名华伟坤,六年前是蓝森信息中心的一把手,孟繁盛空降过来之后三个月他就被架空了,后来以“个人原因”离职。离职前他拷贝了一份蓝森核心系统的原始架构拓扑图,当时做备份用,走的时候公司没人问他要。
“听说了。”华叔把螺丝刀放在茶几上,“老周给我打了电话。系统崩了,灾备没起来,结算数据对不上,明天上午港交所那边肯定要问询。”
“孟繁盛栽我头上。”
华叔嗤了一声:“他干这种事不是头一回了。三年前信息中心D区升级改造那个项目,预算是三千七百万,他找的外包团队报价比市场价高了一倍,我不同意签字,他就把我从项目组调出去,换了他的亲戚顶上。后来那个项目上线延期四个月,超支八百万,最后验收报告上签字的人变成了我——那时候我已经不在岗了,但报告日期是倒签的。”
我从口袋里掏出手机,打开一个加密文档,念了一个数字:“三年前那笔超支的八百万,走的是‘应急维修’科目,实际支付对象是一家注册在开曼的空壳公司。华叔,这家公司的实控人是孟繁盛的妻弟。”
华叔眉毛抬了一下:“你查了?”
“我闲着的时候查的。”我说,“蓝森所有人的年终奖都按B+以上发,就我拿了个C,888。既然他不让我好过,我总得先拿点东西傍身。不过今晚的事光靠开曼那家空壳还不够扳他,我需要一个更硬的锚点。”
华叔站起来走到厨房,倒了两杯普洱茶回来。他推给我一杯,自己端着另一杯没喝:“你想要什么?”
“D区机房架那条隧道一周前就开始了,中间数据进出了至少三轮。我不信孟繁盛自己写的恶意指令,他写不出来。那个代码风格是你们信息中心前两年走的那批外包团队里一个人的笔迹,叫蒋维。他离开蓝森后去了哪,华叔你知道吧?”
华叔端茶的手顿了一下:“……你连这个都查到了?”
“蒋维现在在朗域资本做技术顾问。朗域资本三个月前刚入股了蓝森百分之七点三的股份,是前十大股东之一。”我喝了口茶,“所以今晚系统崩溃的本质,不是意外。是一次配合二级市场做空的攻击。系统崩了,股价跌,朗域那边低位吸筹。孟繁盛是内应。”
华叔沉默了很久,最后把那杯已经凉了的普洱茶一饮而尽。他站起来,打开卧室衣柜的夹层,拿出一个蓝色文件夹递给我:“蒋维当年在蓝森写的核心代码留了一份备份在公共SVN上,我离职前拖下来了。你仔细看他把那个废弃函数藏在哪个模块里了——那个模块的审批人,除了蒋维自己,还有孟繁盛的电子签名。”
我把文件夹接过来,翻开第一页,密密麻麻的代码注释里嵌着一个时间戳,三年前的十月,审批栏位电子签名的哈希值我能认出来,和今晚内存镜像里那个父进程的签名验证结果一致。
华叔靠在窗边点了一根烟:“方骆,你打算做到哪一步?”
我把蓝色文件夹合上,塞进外套内侧口袋:“做到他姓孟的这辈子在商场上抬不起头。”
华叔吐了一口烟,没说话,但嘴角那点弧度意思很明确。
我下楼的时候手机还是关机的,但我在街边找了个公用电话亭投了五块钱硬币,拨了一个号码。接电话的是个年轻男声,懒洋洋的:“哪位?”
“沈越,是我。明晚有空吗?请你吃饭。”
沈越是我大学同寝室的死党,现在在港交所上市公司监管部做低级审查员。他那边鼠标声停了,说:“你请我吃饭,要么是你发财了,要么是你惹事了。你年终奖888,属于后者。”
“明晚七点,深水埗那家打边炉。”我说,“带点东西给你看。”
他哼了一声,挂了。
我走出电话亭,顺着街道往地铁站走。经过一家二手手机店,我进去买了张不记名储值卡,塞进另一部备用手机里,开了机。屏幕亮起来的时候通知栏弹出一条未读短信,号码陌生,内容只有一行字:“朗域资本下周三有内部董事会议,议题包括增持蓝森。蒋维会出席。”
我盯着那行字看了五秒,把短信截图存了,然后把那条短信删掉,把号码存进通讯录,名字输了个问号。
备用机关机。我把卡拔出来单独放,手机塞回口袋。街口的红绿灯变了一轮,我站在原地没动,脑子里铺开了一张新的棋盘。孟繁盛、朗域资本、下周的董事会议、蒋维的代码、华叔的拓扑图、许南絮的内存镜像、沈越的监管视角。七个节点,一条链。
我抬起脚,往地铁站走去。晚风从海面那边吹过来,带着咸味和柴油味。我闻着这个味道走了一整条街,想起六年前刚进蓝森那天,信息中心面试最后一道题,老主管问我为什么想做金融系统架构。我说因为钱多,而且我喜欢算账。
那个老主管后来被孟繁盛优化掉了。他走之前给我留了一句话:“方骆,你在蓝森能走多远,取决于你手里有多少别人拿不走的账本。”
我现在手里有账本了,四本,厚薄不一。下一步,我得让这些账本活过来。
第三章. 边炉与筹码
深水埗那家打边炉藏在福荣街后面一条巷子里,门脸小到一不小心就走过头。我七点整到的时候沈越已经在靠风扇那桌坐下了,面前摆着一碟炸鱼皮,他正拿筷子夹着蘸喼汁,看到我进来就朝对面努了努嘴。
我坐下来,服务员端了个炭炉上来,锅底是沙爹加清水的鸳鸯锅。沈越把菜单推给我,我没看,直接说了句“老规矩,牛肉拼盘、虾滑、白萝卜、响铃”。服务员记完走了,沈越放下筷子,靠在椅背上打量我。
“气色还行,不像刚被栽赃十四亿的样子。”
“你消息倒是快。”
“港交所内部群下午就传遍了。”沈越压低声音,“蓝森今晚发了公告,说‘系统临时维护导致数据异常’,明天停牌一天。但你我都清楚,真实损失的数字,他们压了。”
我夹了一块炸鱼皮嚼着,没接话。等炭炉火旺起来,锅底开始冒泡了,我才开口:“我找你查个东西。朗域资本三个月前入股蓝森那笔交易,你们监管那边的底档能不能看到穿透结构?”
沈越夹牛肉的手停在半空,看了我三秒:“方骆,你想干什么?”
“不干什么,算一笔账。”
沈越把牛肉放进锅里涮了两下就捞起来,蘸了酱塞进嘴里,嚼完才说:“朗域那笔入股走的是大宗交易通道,交易对手方是蓝森第三大股东陈百祥的家族信托。成交价每股比市价折让百分之八,量是百分之七点三的股份。表面看是陈百祥套现离场,但后来我查到一个东西——陈百祥家族信托的托管行,和朗域资本实际控制人名下另一家公司的清算行是同一家。”
“穿透了?”
“没穿太透,但够看了。”沈越放下筷子,从手机里翻出一张截图递过来,“朗域资本GP的股东结构里有一层SPV,SPV的受益人名单里有一个名字,叫郑咏仪。你猜这个人是谁?”
我回忆了一下蓝森高管层的家属名单:“孟繁盛太太姓郑。”
“对。”沈越收回手机,“所以朗域那百分之七点三的股份,本质上跟孟繁盛家自己买的没区别。他用第三大股东的壳做代持,名义上是外部资本举牌,实际是内部人增持,绕过董事会审批限额,同时借朗域的名义给蒋维提供一个合法的岗位——蒋维现在的职级是朗域资本技术顾问,但他拿的工资单签字人是孟繁盛控制的另一家咨询公司。”
炭炉里的火烧得旺,汤面咕嘟咕嘟翻着气泡。我把白萝卜推进清汤那边,慢慢说:“所以今晚的事逻辑全通了。孟繁盛想借系统崩溃打压股价,朗域那边同时低位吸筹,等股价跌到目标位,他手里那百分之七点三加上他自己原有的一点五,就凑到接近百分之九了。再拉拢一两个小股东,蓝森的控制权就能动一动。”
沈越皱眉:“他现在的目标不是挤走陈百祥,他是要动你们家那个?”
我没正面回答。蓝森集团创始人是方家,我姓方,但方家这摊水从来不认我这个旁支。我父亲方国栋是创始人方国梁的亲弟弟,十年前因为一次战略决策分歧被逐出董事会,同年病逝。我在蓝森技术部一待六年,没人提起这层关系,我也从来不主动说。但孟繁盛不可能不知道——信息中心每季度的权限审批名单最后都要过董事长办公室,我姓什么,上面的人清楚得很。
沈越大概猜到了我在想什么,没再追问,转头叫服务员加了一份冻豆腐。两个人闷头吃了一会儿,锅里东西捞得差不多了,他从口袋里掏出一张折好的A4纸推过来。
“你要的东西。朗域资本下周三董事会的议程草案,我托前同事从他们合作律所那边截的影印件。议题第三条写着‘关于蓝森集团增持方案及后续治理安排’,参会名单里有蒋维,列席身份是‘特聘技术顾问’。”
我接过那张纸,折了两折放进内袋,和蓝色文件夹靠在一起。沈越看着我,突然笑了:“你这一脸要掀桌子的表情,我大学时候见过一次。那年辩论赛决赛,对方二辩骂你逻辑缺陷,你第三轮自由辩把人家的立论前提全部拆穿了,四十二比三赢得全场鼓掌。”
“那次对方二辩是我自己组里跳槽出去的人。”我倒了杯凉茶,“跟今晚差不多,都是熟人捅刀子。”
沈越端起茶杯:“需要我做什么,你说。”
“下周三那个会,你帮我盯着港交所那边有没有人对蓝森事件发起非正式问询。如果有,你第一时间告诉我问询重点。其他不用你动手,你身份敏感。”
沈越点了点头,没多说,低头喝汤。炉火暗下去一些,锅底剩的油浮了一层在汤面上,映着天花板那盏摇摇晃晃的白炽灯,光斑碎碎的。
我结了账,两个人走出巷子。沈越往旺角方向走了,我站在巷口吹了会儿风,拿出备用机开了机。那条陌生号码短信还在,我又看了一眼,没新消息。我打了个车回公寓。
到家已经快十一点,我把蓝色文件夹和移动硬盘摊在书桌上,打开笔记本,插上硬盘,输入许南絮说的那串斐波那契数列。镜像文件解压之后是二百多个G的日志碎片,我按时间线筛出今晚十七点到十九点区间,把十九个异常指令的上下文全部拉出来,逐条读。
读到第七条的时候我停住了。那条指令的目标不是一个常规数据库表,而是一个备份归档路径,路径名末尾有个日期戳,是三天前的。我顺着路径找过去,发现那是一份蓝森集团内部的风险评估报告草稿,报告出具部门是合规部,起草日期是上周二,状态是“待审批”。但报告里涉及的数字和今天崩盘的那部分结算数据高度重合——如果按照那份报告里的修正系数重新算,今晚的损失至少被孟繁盛向董事会报高了百分之三百。
换句话说,他自己放了一把火,然后往火堆里泼了好几桶油,报给消防队的火灾损失是实际受损面积的四倍。多出来的那块缺口,就是他趁乱洗出去的利润。
我对着屏幕坐了一会儿,键盘上的手指没动。然后我打开一个新文档,开始打字。标题写的是“关于蓝森集团2026年9月6日交易系统异常事件的复盘分析与事实说明”,第一段引用的证据链条编号从A1标到A13,其中包括许南絮的内存镜像、华叔的旧版源码、沈越的议程草案、朗域穿透结构截图,以及今晚从日志里扒出来的那份风险评估报告草稿。
文档写到凌晨两点半,我存了一个加密版本在本地,另一个明文版本导出到U盘。然后我关了电脑,躺在沙发上,闭眼之前看了一眼天花板那块水渍——房东说上周要找人来修,还是没来。我翻了个身,脑子里那条数据链还在转,从孟繁盛的万能卡到蒋维的函数签名,从朗域的SPV到陈百祥的家族信托,从华叔的拓扑图到许南絮的镜像,每一个节点的接口都闭合了。链条完整。接下来差一个引爆点。
引爆点是谁,我还没想好。但那个人应该已经在路上了。
第四章. 旧识与暗桩
周二上午十点,蓝森集团办公楼下。
我没从正门进,绕到侧门员工通道,用一张没注销的老门禁卡刷开了B1层车库的门禁。卡还能用说明人事部还没把我的员工状态改为离职——孟繁盛大概想留着我的权限继续栽赃,但他不知道我那张卡绑定的其实是信息中心旧系统的备用通道,不是HR主库。
车库灯光惨白,我沿着消防梯上到三楼,拐进茶水间,正好碰见许南絮端着一杯美式站在窗边。她看见我,表情没太惊讶,只是用下巴指了指走廊尽头:“孟繁盛在五楼大会议室开复盘会,合规部、法务部、信息中心核心都在。你那个工位的电脑现在被证监部封存了,但他们没封存你工位抽屉。”
我把手里的牛皮纸袋放在她旁边台面上:“帮我放回我抽屉里,别让监控拍到。”
许南絮瞥了一眼纸袋封口,没问里面是什么,端起咖啡喝了一口:“监控的事不用操心,三楼走廊那个摄像头上周五就坏了,报修单还在我桌上压着。我放完东西怎么联系你?”
“放完就走,不用联系我。明天下午三点,中环那家星巴克二楼靠窗。”
她点了下头,端着咖啡转身往走廊那边走,步速正常,表情自然。
我原路退回B1,从侧门离开。阳光照在脸上有点刺眼,我抬手挡了一下,沿着干诺道中往西走了一段,在一家银行门口站定。推开玻璃门进去,叫了个号,排队十五分钟后坐到了柜台前。
柜员是个戴眼镜的年轻姑娘,问我要办什么业务。我把一张泛黄的纸从钱包夹层里抽出来递过去,纸上是一份个人保险箱的存根联,开户日期是八年前,开户人签字是我父亲方国栋的名字。存根背面用圆珠笔写着一行小字:“香港中环 汇通银行 保险箱编号E-3712 第二授权人方骆”。
柜员刷了存根上的条码,系统里跳出来一条记录。她看了屏幕一会儿,抬头说:“方先生,这个保险箱上次访问记录是五年前,授权名单上您的名字还在,但需要双密码验证——您提供初始密码,我们这边还有另一组备用密码由您父亲当年预留。两组对得上才能开。”
我报了父亲去世前一天发给我的那封短信上的六位数字。柜员在键盘上敲了一阵,屏幕页面翻了一下,她点头:“通过。您要现在提取保险箱内容吗?”
“要。”
二十分钟后,我在汇通银行地下一层那间独立的VIP室里,对着一只深灰色的铁皮保险箱。箱体不大,高不到三十公分,密码盘上我用指纹和那组六位数字同时验证,锁舌咔嗒弹开。
箱子里东西不多:一本瑞士银行账户的存折,余额数字让我眼皮跳了一下;三份股权代持协议的原件,签署方是方国栋和蓝森集团另外两个创始元老,代持的股份标的对应蓝森百分之六点二的原始股;最底下压着一张叠成四折的信纸,纸面已经泛黄,上面的字迹我认得,是我父亲的。
信写得很短,但每个字我都看了两遍。末段有一句话:“方骆,这百分之六点二的股份我当年是用你母亲那边的资产置换进来的,名义上代持在两位叔叔手里,但实际受益人我登记的是你的名字。我退出董事会的时候这层关系没有暴露,孟繁盛不知道这件事。如果你有一天需要动这张牌,记得找周叔和邓叔中的一个做见证。他们信我,也会信你。”
周叔叫周景行,邓叔叫邓峥,都是当年被我父亲带进蓝森的第一代技术骨干。周景行三年前退休去了加拿大,邓峥还在蓝森挂着“荣誉顾问”的名头,平时不来公司,但每个季度的董事会他还有一票列席权。
我把信和协议原件重新锁进保险箱,存折和那份瑞士账户的资料单独拿出来放进贴身内袋,锁好箱门,跟柜员确认下次访问仍用原权限。走出汇通银行的时候,手机震动了一下。备用机上的陌生号码又发来一条短信:“蒋维今晚八点飞新加坡,朗域资本董事会提前到明天上午十点。你的时间窗口缩了一半。”
我站在银行门口的台阶上,看着对面大厦玻璃幕墙映出来的天光,脑子里把时间轴重新拉了一遍。明天上午十点——也就是说我只有今晚一个整夜可以布最后一个局。
我拨了邓峥家里的电话。响了六声才接起来,一个老人声音带着点睡意:“喂?”
“邓叔,我是方骆。”
那边沉默了两秒,然后声音醒了:“国栋的儿子?”
“对。邓叔,我需要您明天上午在蓝森露面,列席一场董事会。别说话,就坐在那儿,把您那票列席权亮出来就行。其他我来办。”
邓峥又沉默了一会儿,问:“你爸留下的东西你用上了?”
“用上了。”
“好。”邓峥说,“我明天九点半到楼下大堂。你派个人接我上去。”
我挂断电话,在街边拦了一辆出租车。坐进后座,跟司机说了公寓地址,然后闭上眼,把明天上午的时间线在脑子里过了一遍。九点半邓峥到大堂,许南絮的三楼监控盲区放东西,沈越那边港交所问询方向的反馈应该在明早八点左右到,华叔的拓扑图备份在蓝色文件夹里随时可以公开,瑞士账户的存折是最后一道物理防线,蒋维的代码签名和孟繁盛电子签名的碰撞点就是那封匿名邮件。
车拐过街角,司机开了收音机,粤语新闻里正在播报蓝森集团停牌的最新进展。我睁开眼,窗外一栋栋写字楼的轮廓在黄昏光线下镶了一层金色的边。
有点刺眼。但我没移开视线。
第五章. 列席与对撞
周三上午九点四十,蓝森集团总部五楼。
我站在大会议室隔壁的观察室里,透过单面玻璃看着主会场的椅子一张一张坐满。长条会议桌主位空着——方家的人还没到。孟繁盛坐在次位,面前摊着一沓文件,右手边是合规部总监刘慧,左手边靠后坐的是朗域资本的代表,一个穿深蓝西装的中年男人,胸牌名字叫何景明。
九点五十五分,邓峥被许南絮领进来。老爷子穿了一件灰夹克,走路不紧不慢,在列席旁听的位置上坐下,架了副老花镜,面前什么文件也没摆,就双手交叠搁在桌面上。孟繁盛朝他点了下头,表情没变化,但我在观察室里注意到他翻文件的手指停了一拍。
十点整,会议室门再次打开,方国梁的长子方晋棠走进来。方晋棠现在是蓝森集团副总裁,名义上的家族第二代掌舵人,但他手里实际持股不到百分之三,大部分决策权限还在董事长办公室的老臣手里。他坐下之后扫了一圈在场的人,目光在邓峥身上停了两秒,然后说:“开始吧,孟总先讲。”
孟繁盛站起来,打开投影。屏幕上显示的是一份题为“关于9月6日系统异常事件的内部调查报告”的PPT,前面几页讲技术原因,重点标注了“异常指令发起终端”和“责任人”两个字段。最后那页的结论部分,一行加粗黑字写着:“经技术组溯源,本次事件核心责任人为前高级架构师方骆,其违规操作与恶意代码植入直接导致系统崩溃。”
我站在观察室里,隔着玻璃看着自己的名字被投在幕布上。旁边站着的许南絮低声说了句:“他连证据链都没贴全。”
“他不需要贴全。”我说,“他只需要让方晋棠相信我是替罪羊就行。方晋棠一直想借这个机会把信息中心的权限全部收归到董事长办公室直管,我的名字只是一个由头。”
会议室里,孟繁盛刚坐下,方晋棠就开口了:“调查报告我看了,但我有两个问题。第一,报告里提到的十九条异常指令,执行时间是在方骆打卡离司之后三十二分钟。如果他的权限已经被降级了,为什么还能发起写操作?第二,日志里那条外网隧道架设时间是七天前,但方骆七天前的考勤记录显示他在休年假,人在泰国。”
会议桌周围空气静了一瞬。孟繁盛脸上的笑容没消失,但他调整坐姿的动作幅度比刚才大了。他开口接话:“方总,第一个问题,权限降级是下午三点完成的,但攻击脚本可能在降级之前就已经预置在系统里,设定了定时触发。第二个问题,远程操作不需要人在公司,他在泰国也可以控制。”
“可以控制。”方晋棠重复了一遍这四个字,语速很慢,“但他在泰国的酒店Wi-Fi IP归属地是清迈,那条外网隧道的出口IP却是香港。孟总,你技术团队的报告中解释过这个差异吗?”
孟繁盛的手指在桌面上敲了两下,扭头看了一眼技术部的参会人员。那个位置坐的是信息中心现在的代理主管孙鸣,他站起来,清了清嗓子:“方总,隧道出口IP可以通过跳板机多层转发,最终归属地和实际操控地不一定要一致。从技术上讲,方骆完全可以在清迈连上香港的跳板机,再通过公司内网发起指令。”
“那请解释一下隧道入口端的认证日志。”我推开观察室的门走进去,手里拿着一台笔记本。全场目光转过来,孟繁盛的脸从放松变成了僵。我走到会议桌尾端,把笔记本放在桌上,屏幕转向所有人。“七天前隧道建立的第一条握手记录,认证账户用的是MENG_FS_ADMIN,不是我的账号。两天后我的令牌才被复制进去做混淆。所以这条隧道的真正建设者,从头到尾都是孟繁盛自己。”
会议室里响起一阵椅子靠背被推动的摩擦声。孙鸣张了张嘴没说出话,刘慧低头翻文件,何景明抿着嘴唇注视屏幕。方晋棠靠在椅背上,双手交叉搁在胸前,看了孟繁盛一眼。
孟繁盛深吸了口气,声音压得很稳:“方骆,你今天已经不是蓝森的员工,你擅自进入董事会会议室,我有权叫人请你出去。你手里拿的东西来源不明,也不具备法律效力。”
“来路明不明,你说了不算。”我把笔记本上那份复盘文档的第二页打开,投影切过去,上面并排放着两张截图:左边是蒋维三年前在蓝森SVN提交的代码片段,右边是今晚异常指令里那个废弃函数的调用栈。两个代码块的签名栏位显示了同一个哈希值。“蒋维写的代码,你用他的脚本,但你忘了他写的那个废弃函数调用方式和你现在的系统版本不兼容。今晚崩盘的直接原因是你自己指挥部署了一个过时的攻击包。”
会议桌周围有人倒吸了口气。方晋棠坐直了,目光从屏幕移到我脸上:“方骆,你这些证据从哪来的?”
“合规的备份渠道,代码留存在公司公共SVN,镜像来自数据组昨天合法拷贝的内存转储。没有任何一条是非法窃取。”我侧身让开屏幕,许南絮从观察室门口走进来,站在我旁边,手里拿着一份打印好的镜像验证报告。
孟繁盛终于站起来,脸有点发白:“方晋棠,你现在让一个离职员工和一个数据组的小姑娘进来搅局,今天这个会还怎么开?”
方晋棠没理他,看着我:“你继续说。”
我把复盘文档翻到第三页,朗域资本穿透结构那部分投影出来。“朗域资本三个月前购入蓝森百分之七点三股份,资金穿透后受益人名下有郑咏仪——孟繁盛的太太。同时蒋维以朗域技术顾问的身份领取工资,工资实际支付方是孟繁盛控制的咨询公司。今晚系统崩盘之后朗域资本如果低位吸筹,增持到一定比例,配合孟繁盛手里现有的百分之一点五,他就能在董事会上发起控制权变更提案。整个计划的操盘手是孟繁盛,执行层是蒋维和何景明。何景明代表的朗域资本今天坐在这里,就是为了在复盘会上给孟繁盛站台,咬死技术原因是个人责任,好把市场注意力从资本运作上引开。”
何景明的脸沉了下来,他转过头看向方晋棠:“方总,这是污蔑。朗域资本的一切投资行为合法合规,穿透信息涉及商业机密,我不认同在这样一个场合公开讨论。”
“那请你们法务部在下周一之前向港交所提交穿透说明。”我平静地说,“我今天不是来下结论的,我只是把链条上的每一个节点都摊开。结论让该下的人下。”
会议桌末端,邓峥慢慢摘下老花镜,站起来。他站了五秒,全场安静,然后他开口,声音不大:“我在蓝森干了二十八年。今天来只为一件事——给方骆做个见证。他拿出来的每一份材料,如果涉及蓝森内部数据,数据的原始存档时间都在他离职之前,程序上挑不出毛病。至于孟总你和朗域的关系,我老了,不评价。但董事会列席权我这一票,今天算作废,不站队,不背书。”
他说完,重新坐下,摘下眼镜用手帕擦了擦镜片。
方晋棠沉默了一分钟。整间会议室只剩空调出风口的低频嗡鸣。他最后看向孟繁盛,语气很平:“孟总,今天的复盘会先到这里。调查报告需要重做,基于方骆提供的补充材料进行交叉验证。另外,从即时起,信息中心D区所有管理员权限暂时冻结,由董事长办公室直管审计组接管,直到调查结论最终确定。孙鸣,你把钥匙和登录卡交给审计组。”
孙鸣脸色灰白地点了点头,从口袋里掏出一串卡,放在桌面上往审计组坐的方向推过去。孟繁盛坐在原地没有动,手指搭在文件封面上,指甲盖泛白。
我合上笔记本,退出投影。观察室的门在我身后关上,走廊里安静得能听见电梯井钢缆运转的声音。许南絮跟在我旁边走了两步,低声说:“他没认。”
“他不需要认。认不认,链条都在那儿。明天股市复牌之前,朗域的增持计划会自己停下——何景明刚才那个脸色说明他已经开始往回打电话了。资本讲的是先机,先机没了,他不会陪着孟繁盛跳。”
我们走到电梯口,门开了。我走进去,按了G层。电梯下行过程中,透过观光玻璃能看到中环密集的楼宇轮廓。许南絮站在我旁边,突然说了句:“你父亲那百分之六点二的股份,今天没亮出来。”
“留一手。”我说,“今天亮证据链就够了,股份是后手。如果方晋棠最终选择保孟繁盛、压这件事冷处理,那百分之六点二会和瑞士账户一起出现在下一轮博弈里。”
电梯到G层,叮一声,门开。大堂里人来人往,阳光从旋转门照进来,在地砖上切出一道斜长的亮块。我走出去,穿过那道亮块,推开旋转门,走进九月的风里。
手机在口袋里震了一下。沈越发来一条语音,我点开听,他的声音带着压低的笑意:“港交所上午内部问询组点名蓝森了,议题是‘交易系统异常事件的内部控制与高管责任’。孟繁盛的名字出现在第一轮问询名单上。”
我把手机放回口袋,没回消息。人行道上有鸽子被路人脚步惊起,扑棱棱飞过遮雨棚。我停在斑马线前等红灯,倒计时从三十秒跳到零,然后我迈步过街。
身后大厦玻璃幕墙的反射里,蓝森那三个字被太阳照得有点晃眼,但我没有回头。
第六章. 回马枪
周四早上七点,我被公寓门铃吵醒。
披了件外套去开门,门外站着沈越,拎着两杯豆浆和一袋菠萝包。他挤进门,把东西往茶几上一搁,坐下就开始说:“港交所那边的问询正式启动了,今天下午两点第一场,孟繁盛和刘慧要去中环总部接受质询。但你猜怎么着?今天凌晨三点,朗域资本发了一封补充公告,说‘基于对近期市场波动的审慎评估,公司决定暂缓对蓝森集团的进一步投资计划’。”
我拿了个菠萝包咬了一口,没说话。沈越看着我:“你写的那个复盘文档昨天下午被匿名投递到港交所和证监会公共邮箱了,发件服务器走的是洋葱路由,查不到源头。今天早上财经版头条标题是《蓝森内鬼疑云》,评论区已经有人把郑咏仪的名字挂上去了。”
“你干的?”
“我可没那技术。”沈越摊手,“但我昨天下午把你给我的那份议程草案影印件侧面漏给了一个做财经记者的朋友,其他的都是他自己顺藤摸瓜挖出来的。”
我喝了口豆浆,在沙发上坐下。昨晚睡得不算好,脑子里一直在推演方晋棠的后续动作。他昨天在会议上表现得像是中立审慎,但他最后那句“调查报告需要重做”说得太平了——一个真正被激怒的家族掌舵人不会那么平静。方晋棠在等,等外部压力把孟繁盛推到必须被切割的位置,然后他就可以顺势收网,把信息中心的控制权、朗域的股份腾挪空间、甚至我那百分之六点二可能暴露的风险一起处理掉。
“你今天什么计划?”沈越问。
“下午两点,去中环。”我说,“不是港交所,是蓝森在大厦三十七楼的董事长办公室。方晋棠应该在那边,他今天不会去港交所旁听,他会留在公司看风向。”
沈越若有所思地啃完半个菠萝包,站起来拍拍手上的碎屑:“你悠着点。方晋棠不是你爸那个时代的方家人了,他现在手里牌不多但心够冷。”
“我知道。”
沈越走了之后我把备用机开机,陌生号码又发来一条消息,只有四个字:“留意刘慧。”我盯着这条消息看了十秒。刘慧是合规部总监,昨天会上她全程没怎么说话,但她手里有一份底稿是我复盘文档里没覆盖到的——那份底稿涉及蓝森过去三年里七笔大额跨境支付,支付对象都是孟繁盛妻弟那家开曼空壳公司的关联方。如果刘慧在港交所那边被问询时交出了那份底稿,孟繁盛的事就不仅仅是操纵系统了,还会牵扯出洗钱嫌疑。
但刘慧这个人我了解有限。她跟孟繁盛共事五年,表面上没有特别亲密的私交,但她升任合规部总监的推荐信是孟繁盛签的。站队是有的,程度深浅未知。
下午一点四十五分,我到蓝森大厦楼下。大堂里比平时多了几个穿深色夹克的面孔,胸前没挂工牌,坐在休息区沙发上低头看手机。我认出其中一个是港交所稽查组的常用外聘安保,他们来得比正式问询时间早——说明事情已经不仅仅是问询了,层面升到了“预防性调查”。
我没走正门电梯,又绕到B1刷老卡进了消防梯,步行上三十七楼。楼梯间每层都有安全门,三十七楼那道门推开之后是一条窄走廊,尽头是董事长办公室的侧门,平时用来送文件。
侧门没锁。我推门进去的时候方晋棠正站在落地窗前打电话,背对着我,声音压得很低:“……对,那份底稿在你手里不要动,等我通知。孟繁盛那边的所有往来邮件,从今天起抄送一份到我秘书邮箱。”
他挂了电话转过身,看见我,表情没变,只是把手机放进西装内袋,走回办公桌后面坐下。他指了指对面的椅子:“坐。”
我坐下。桌上的紫砂茶杯冒热气,他推了一杯新的过来,然后靠进椅背:“你拿那个复盘文档投给港交所的事,我昨晚就知道了。不是因为有人查你,是因为港交所回函的第一句话是引用你的原文——‘数据链路完整,可交叉验证’——这个措辞风格太像你写的周报。”
“我没想瞒你。”我说,“我今天来是想确认一件事:刘慧手里那份跨境支付底稿,你打算怎么用?”
方晋棠端起茶杯喝了一口,不紧不慢:“那份底稿我三天前就知道存在。刘慧昨晚给我打了电话,说她可以把全部资料交给港交所,前提是我保证不追究她过去五年的连带审核责任。我答应了。”
“所以你从一开始就没打算保孟繁盛。”
“保他?”方晋棠笑了一下,嘴角弧度很淡,“他动朗域进来的时候我就知道了。我不管他是因为我需要一个合理的理由把信息中心权限收回来——孟繁盛自己跳出来当靶子,省了我找借口。但你知道我为什么昨天会上不直接表态吗?”
“你在看我会不会亮出我爸那百分之六点二。”
方晋棠放下茶杯,正视着我:“你爸当年走的时候留了一句话给邓叔,说那笔股份是给你的。我在董事会档案室看到过那份代持协议的复印件,归档日期是三年前。我一直没动它,是因为我想看看你会不会用。你昨天没用,今天来找我谈刘慧的底稿——你是在告诉我,你不想翻掉整个方家,你只想翻掉孟繁盛。”
“对。”我说,“那百分之六点二的股份,我要不要动,取决于蓝森的技术治理体系能不能回到正轨。昨天你冻结了D区权限,今天你压刘慧交底稿,这两件事做完了,我就不需要动那笔股份。”
方晋棠向后靠在椅背上,看着落地窗外的天空,沉默了一会儿。他开口的时候声音比刚才低:“蓝森集团最早的技术体系是你爸一手搭的,他走之后我的战略方向偏向了资本扩张,技术投入一直被压缩。孟繁盛就是在我默许的压缩空间里长出来的。你爸当年反对我的投资策略是对的,但我不可能回去认那个错。我能做的补偿是给你一个方向——从今天起,信息中心技术委员会的主席位置空缺,你可以回来坐那个位置。不需要股东身份,用技术总监的职级,直接向董事长办公室汇报。”
我看了他三秒:“条件?”
“朗域手里的百分之七点三,我会用要约收购的方式分步接回来,成本由集团自有资金承担。接回来的过程中需要技术层面的尽职调查配合,你做技术委员会主席,那份调查由你签第一道意见。”他顿了一下,“你父亲那百分之六点二的股份,我不过问。你留着也好,变现也好,随你。但如果你选择变现,我希望你优先卖给集团,不要卖给外部资本。”
我站起来,伸出手。方晋棠也站起来,握了一下。我们的手松开之后他说:“刘慧下午会去港交所,那七笔跨境支付资料的副本你今天下班前能在内部系统看到。孟繁盛那边,最快今晚会有结果。”
我点了点头,转身往外走。走到侧门口的时候他叫住我:“方骆。你爸当年跟我说的最后一句话是,技术架构比股权结构更扛跌。你记住这句话。”
我回头看了他一眼,然后推开侧门走出去。
电梯下行的时候,许南絮发来一条微信:“蒋维今早从新加坡飞回来了,落地之后直接被朗域方面通知‘顾问合同暂停执行’。他下午在机场候机楼坐了三个小时,然后买了张回内地的机票。华叔说蒋维把那个废弃函数的源码开源了,放到了GitHub上,附了一篇长文说明整个调用链。”
我站在电梯里,看着楼层数字从三十七一路降到一。门开的时候大堂的声浪涌进来——交易员、快递员、前台客服电话铃声、旋转门转动的风声。我穿过大堂走出门,太阳正从西边斜照过来,地面上我的影子被拉得很长。
我沿着街道走了一段,在转角处停下来,拿出手机给那个陌生号码回了一条消息:“你是谁?”消息发出去十分钟,没有回复。半个小时,没有回复。我把手机收进口袋,继续往前走。
晚上七点,财经新闻推送了一条标题:“蓝森集团发布公告:信息中心权限全面审计完成,原财务总监孟繁盛辞去一切职务,相关法律责任移交司法机关处理。”紧接着第二条:“朗域资本确认退出蓝森集团持股,所持股份将由蓝森集团发起要约回购。”
我坐在公寓书桌前,看着那两条新闻的评论区从几十条涨到上千条。我没往下翻,关了屏幕,拿起桌上那罐被捏扁的黑咖啡罐看了一眼,然后把它扔进垃圾桶。
窗外城市灯光密如星海。我关掉台灯,在黑暗里坐了一会儿。手机屏幕又亮起来,陌生号码发来最后一条消息,很短:“你的债主,现在也是你的投资人。”
我盯着那行字看了很久,然后锁了屏。窗外有一架飞机的航灯在夜空里缓慢移动,像是被什么东西牵引着,稳稳地向西飞去。
第七章. 暗潮未尽
公告发出去之后的平静只持续了七十二小时。
周一下午,蓝森内部系统推了一份邮件给我,署名是董事长办公室秘书组。邮件里附件是刘慧那份跨境支付底稿的脱敏版本,但邮件正文最后一行用小字标注了一句话:“港交所问询组反馈,孟繁盛关联账户中有一笔资金流向追溯至六年前,收款方为‘M.Y. Holdings’,注册地维京群岛。该主体曾于同一时期与方国栋个人账户存在往来记录。”
我坐在新的办公室——三十八楼西侧,朝海,窗外能看到维多利亚港的货轮——盯着这行字,把鼠标从屏幕上移开。
六年前。我父亲还在世的那一年。M.Y. Holdings,这个名字我见过,在汇通银行保险箱里那份瑞士账户存折的备注栏上,标注着一行手写体“M.Y.还款”。也就是说这笔钱是从M.Y.流向方国栋,不是从方国栋流向M.Y.。但港交所底稿上呈现的叙事方向是相反的——孟繁盛那边在给自己造一条“方国栋也曾通过同一渠道操作”的虚假关联线,目的很明确:把水搅浑,把自己从单一的洗钱嫌疑变成“系统性历史问题”的一部分。
方晋棠的邮件紧跟着来了:“周一晚上七点,董事长办公室,商议对港交所补充说明的口径。你带技术侧的意见来。”
我到办公室的时候整层楼只剩走廊灯亮着。方晋棠坐在会客区沙发里,面前茶几上摊着四份打印文件,其中三份是刘慧底稿的原始影印件,第四份是一张银行流水截图,收款账户名称是M.Y. Holdings,付款方列着两个名字:一个是孟繁盛控制的咨询公司,另一个是蓝森集团当年的“海外市场拓展专项资金”,该专项资金的审批人签名栏位有两处空白,其中一处被签字笔划过,线痕模糊,但能看出来底下的名字轮廓是“方国栋”。
“他们改过这份底稿。”方晋棠用指关节敲了敲那张截图,“专项资金的原始审批表三年前归档时是我亲手封的,封面上签字的只有我和时任财务总监两个人,没有你爸的签名。但孟繁盛现在的律师团提交给港交所的版本里多了一条涂改痕迹,他们主张‘时间久远档案保存不全’‘签名被覆盖’,实际上就是试图把你爸拉进来当垫背。”
我在他对面坐下,翻了一遍那四份文件。资金流向的时间线从六年前贯通到今年九月,中间的断裂点恰好是父亲去世那年——之后M.Y. Holdings没有再跟蓝森发生过直接资金往来,但孟繁盛的关联公司始终在通过其他渠道向同一家维京群岛主体转账。换句话说,这条链从未断过,只是换了个接线头。
“我能做的是从技术层面追溯那笔‘海外市场拓展专项资金’当年使用的原始审批流程。”我说,“集团采购系统的审批链日志最长保留七年,六年前的那笔如果没被覆盖,我可以在历史备份里找到签字流转节点的IP和时间戳。如果签字人只有你和当时的财务总监,那系统里的操作日志会锁定那两个人的登录终端,不会有第三个终端介入。孟繁盛那头的涂改说法在技术证据面前站不住。”
方晋棠点了一下头:“需要多久?”
“明天中午之前。”
他站起来走到窗边,看着外面的港口灯光。过了一会儿他才开口:“孟繁盛那边已经找了荣骏律所的一整个团队在运作,他们下一步大概率会以‘方国栋历史关联’为由申请调查范围扩大,把你父亲名下的资产也纳入审查,从而拖长诉讼周期。他们不是要赢,是要拖到舆论注意力转移。”
“所以我得在他们正式提交申请之前,把技术证据链先钉进港交所的补充材料里。”我把那四份文件摞齐,“明天中午我给你一份完整的审批流追溯报告,附节点截图和终端签名验签结果。同时我还需要你授权调阅集团财务系统的归档访问权限,跟技术委员会目前的管理范围重合,不涉及额外审批。”
方晋棠转身看了看我,点了一下头:“权限邮件今晚发你邮箱。”
我走出董事长办公室的时候走廊里已经全暗了,感应灯随着我的脚步声依次亮起又熄灭。电梯下行到二十楼时停了一下,门开,外面站着许南絮,手里抱着一个牛皮纸文件夹,看见我愣了一下:“你也在加班?”
“加班常态化了。”我按着开门键等她进来。她走进电梯,站到我旁边,按了G层。电梯关门后她侧头看了我一眼:“刘慧那底稿的事我听说了,资金流向里的维京群岛主体,我查了一下M.Y. Holdings的公开注册记录,它的董事名单里有个名字跟蓝森六年前的一个供应商法人代表重合。那个供应商当年给蓝森提供的是服务器硬件,合同金额七千多万,验收报告的签字人是孟繁盛。”
“同一家公司?”
“同一个法人代表。”许南絮把文件夹翻开一页递给我,上面印着一份注册信息扫描件,“孟繁盛当时用这家供应商的价格比市场均价高了百分之十七,差额部分后来通过M.Y. Holdings回流到了他自己控制的账户。你爸那笔收款记录我也核过了,时间戳比那笔硬件合同的付款晚了一周,金额刚好是合同溢价的百分之六十,余下百分之四十流向了另一个账户,户主是蒋维。”
电梯到达G层,门开。我们走出来穿过大堂,夜晚的大理石地面反射着顶灯的光,脚步声在空旷的空间里很清晰。走到旋转门边的时候我停下来,把那页注册信息扫描件还给她:“蒋维那边有动静吗?”
“GitHub上的开源长文发了之后他关掉了所有社交账号,但朗域把他解约的消息出来之后,有一个人联系过他——何景明。朗域那边暂时没有公开动作,但据我了解的信息,何景明今天下午约了荣骏律所的人吃了顿饭。”
我跟她并肩走出旋转门,晚风吹过来,带着海的潮气。街灯下的影子被拉伸,她的影子和我影子之间的空隙大约半步。
“你为什么会盯M.Y.这条线?”我问。
“数据组的工作习惯。”她说,“看到异常资金链路,习惯性往下多挖一层。而且上周内存镜像里那个废弃函数调用栈有一个注释块,注释里标了一个日期和一笔金额,金额和M.Y.账户的那笔入账对得上。蒋维写代码的时候习惯在注释里留备忘录,那条注释暴露了他们对M.Y.账户的知情程度比我们之前估计的更深。”
我站住脚步,看着她的眼睛:“你是说蒋维从一开始就知道M.Y.的全链条运作逻辑,不只是被孟繁盛雇来写攻击脚本的执行层。”
“对。所以他被朗域解约之后没有激烈反应,甚至主动开源,很可能是在给自己留退路——主动切割一部分信息,争取不被拖进最后的诉讼深水区。”
海风从港口那边吹过来,把许南絮卫衣帽子上的抽绳吹得晃了晃。我收回视线,看向街道尽头:“蒋维开源那篇文章你存档了没有?”
“存了,本地和云端双备份。”
“明天中午之前,把他那篇长文里涉及代码注释的内容摘出来,跟刘慧底稿中的资金时间线做一份对照表。不需要结论,只做并行排列。我拿给方晋棠加到补充材料里当附件。”
许南絮点了点头,转身往地铁站方向走了两步,又回头说:“方骆,你打算把这条链一直挖到最底下吗?”
“挖到底。”我说,“孟繁盛不倒透,蓝森的技术治理体系就永远有一根没拔干净的刺。这根刺今天是他,明天换个人一样会长出来。既然这次动手了,就一次性清根。”
她没再说什么,转身走进地铁口。我站在街灯下看着她的背影消失在下行扶梯末端,然后转身往反方向走。手机震动,方晋棠的权限邮件到了,附件里是集团财务系统归档访问的临时授权书,有效期七十二小时。
我把授权书截图存好,关掉手机屏幕,加快了脚步。夜风里夹杂着货轮汽笛的鸣响,一声长一声短。
第八章. 清根
周二的阳光从三十八楼西侧的落地窗灌进来,我坐在工位前,屏幕上开着四屏界面。左上是财务系统归档日志的检索结果,中间是我昨晚通宵写出来的审批流追溯报告,右下是许南絮今早七点发来的注释对照表,左下是港交所问询组的补充材料上传页面,光标停在“提交”按钮上方,已经闪了五分钟。
报告里标明的关键技术点只有三个。第一,六年前那笔“海外市场拓展专项资金”的审批流转节点只有两个,分别为时任财务总监和方晋棠,登录终端IP归属蓝森内网固定段,时间间隔十七分钟。没有第三终端介入。第二,M.Y. Holdings的法人代表与那家服务器硬件供应商重合的证据,以及合同付款溢价部分回流路径的银行流水拼图。第三,蒋维GitHub开源代码注释中明确标注的日期和金额,与M.Y.入账记录高度吻合,误差不超过一个工作日。
这三点合起来,把孟繁盛律师团的“方国栋关联”主张从根上驳掉了——技术日志不认涂改,银行流水不认臆测,代码注释不认模糊。整套证据链从三个独立维度指向同一个原点:M.Y. Holdings的资金通路是孟繁盛主导构建并长期使用的工具,方国栋当年的收款只是这条通路在早期阶段的正常结算环节之一,并非上游控制方。
我按下了提交按钮。上传进度条走完,屏幕上弹出“提交成功”的确认框。我关掉那个页面,站起来走到窗边。港口的一艘集装箱船正在缓缓靠岸,拖轮顶着它的舷侧,浪花在船尾拖出一长条白色的尾迹。
手机响了,是沈越。他的声音比往常急:“你提交补充材料了?”
“刚提。”
“港交所那边同步收到了,但孟繁盛那边提交了一份新的答辩书,声明刘慧的底稿在移交过程中存在‘选择性披露’,主张合规部在整理资料时故意遗漏了另外三笔与方国栋账户相关的支出记录。他们拿出了一份新的银行流水截图,上面显示方国栋个人账户在八年前确实收到过一笔来自M.Y.的汇款,金额和底稿中标注的那笔不同,比那笔更早,数额也更大。”
我站在窗前,手插在口袋里,看着海面上的货轮缓缓转向:“新流水截图有没有提供完整的交易对手信息和账户开户行?”
“提供了,但开户行是内地的,他们主张因为跨境调取周期长,目前只能提交截图,后续再补充完整文件。”
“截图就能提交?”
“港交所的审查规则允许在法定时间内补交佐证材料,前置提交可以是非正式影印件。他们抓住了这个窗口。”
我转身走回工位,打开那份新邮件的附件。截图里方国栋的账户确实记录了一笔入账,时间戳是八年前七月,金额比六年前那笔大。但截图的右上角有一行模糊的银联流水号,我放大到最大倍率之后看清了后四位。那四位数字我熟悉——父亲生前唯一一个银行账户的流水号段前缀是相同的四位开头,但那笔交易的发生日期我父亲那年七月根本不在境内,他全月在曼谷参加一个技术峰会,护照上有出入境章为证。
“沈越,那个截图你转发给我,我先看。”
“已经转你邮箱了。”
我打开邮箱,把截图拖进图像分析工具里扫了一遍元数据。截图的创建时间戳是上周日,修改时间戳是昨天下午——也就是说这份所谓“八年前的银行流水”是上周才被数字化生成的,不是从旧档案系统里直接提取的扫描件。因为真正的银行系统扫描件,元数据的创建时间和内容中的交易日期之间会间隔八年,但这个截图的创建时间和内容日期之间只差五天。
“这是伪造的,元数据时间戳对不上。他们拿假流水在拖时间。”我在电话里跟沈越说,“你今天下午能不能以监管问询名义跟港交所那边沟通,要求对方提供这份截图对应的银行柜台电子回执原件,不接受扫描件和截图。只要一要求原件,假的就会露馅。”
沈越沉默了两秒:“可以操作,但需要一份技术鉴定报告作为依据,说明元数据存疑。”
“我给。下午三点之前发你邮箱。”
挂掉电话之后我花了两个小时把那份截图的元数据分析结果写成一份简短的技术鉴定备忘录,附了截图原文件与银行系统规范生成格式的对比表。三点整发到沈越邮箱,抄送给方晋棠。三点二十分,方晋棠回了一封邮件,只有三个字:“看到了。”
五点四十七分,港交所官网更新了一条程序性通知:“就蓝森集团相关问询一事,应审查请求,要求当事人方提供银行柜台电子回执原件及相关跨境调取证明文件,限期三个工作日。”那条通知的措辞不带倾向性,但行业内的人一眼就能看出来——提交影印件的一方需要原件证明,这意味着审查方对截图真实性已经产生了正式怀疑。
当天晚上,荣骏律所向港交所提交了一份“延期申请”,理由是“原件调取涉及跨境协调,需额外工作日”。这个申请本身没有任何问题,程序上完全合规。但它本身就是一个信号:孟繁盛那边拿不出原件。
周三上午,孟繁盛的律师团主动向港交所申请了和解磋商。磋商内容是“以当事人孟繁盛全面承认违规操作、主动退缴所得、配合后续调查为条件,申请酌情从轻处理”。港交所方面没有公开答复,但我从沈越那里得知,内部评审小组的初步态度是“接受认罚,但刑事部分移交司法独立处理”。
周四下午,蓝森集团内部全员邮件推送了一封简短的董事长办公室通稿:“鉴于近期事件,集团启动技术治理体系全面升级,原信息中心架构重组为技术委员会,任命方骆为技术委员会主席,即日生效。同时集团审计部将对过去五年所有跨境支付展开系统性复核,复核期间相关账户暂停使用。”
邮件发出之后五分钟,我的新工位号码牌被行政部送上来,放在我桌角。那是一块亚克力板,上面印着我的名字和职衔。我把它放在显示器和键盘之间,看了一眼,然后继续低头写下一周的灾备架构整改方案。
窗外的海面颜色从深蓝变成了浅灰蓝,云层从港口那边压过来,带着雨的气息。办公室门口许南絮敲了敲门框,手里拿着一杯咖啡递进来:“技术委员会新办公室装修方案初稿出来了,你过目一下,有几个数据机房的布线规划需要你签字。”
我接过咖啡喝了一口,拿起她放在桌上的文件夹翻开。第一页是平面图,新办公室在四十楼,东南角朝海,隔壁就是新的数据监控中心。我看了一眼布局走向,用铅笔在机房线槽位置上画了一个小圈:“这里预留一个备用交换机的空间,将来扩展用。”
她低头看了一眼那个圈,点头,把文件夹收回去,转身往外走。走到门口她又回过头来:“方骆。”
“嗯?”
“下个月IT峰会的主论坛有一个圆桌环节,主题是‘金融系统架构的韧性与治理’,组委会给我发了邀请邮件。他们想请技术委员会主席以蓝森集团的案例做一个十五分钟发言。你接不接?”
我放下杯子想了想:“接。但发言稿我不写,你把数据组那篇关于灾备切换延迟临界值的分析报告改一下框架,我拿那个讲。”
她笑了笑,说了句“行”,然后转身走了。
我靠在椅背上,看着窗外雨点开始落在玻璃上。桌角的亚克力牌反射着屏幕的光,那行字上面沾了一点点咖啡渍,我没擦。窗外货轮已经靠港了,吊臂正在卸载集装箱,一个接一个,平稳而持续。
傍晚六点,我关掉电脑,起身走到窗边站了一会儿。雨在玻璃上形成水痕,纵横交错,然后汇成一股往下流。视线穿过雨痕,能看到港口对岸灯火陆陆续续亮起来,从东到西,一片一片地铺开。
我拿起外套和钥匙,走出办公室,锁了门。走廊的感应灯亮起来,照亮脚下往电梯口去的路。
第九章. 余烬
接下来的两周,蓝森集团内部进入了一种高速运转的静默期。技术委员会重组的工作量比我预想中更大——D区机房所有服务器重新做安全基线配置、灾备切换流程从每周演练改为每日定时校验、废弃函数库做彻底清理与版本锁定,这些事每一件都需要人盯,我连续十二天没在晚上十点前离开过办公室。
第十五天下午,方晋棠的秘书打电话到我手机上,通知我去一趟董事长办公室。我推开那扇熟悉的门时,看见的不只是方晋棠一个人——沙发上还坐着另一位穿灰色风衣的中年男人,没打领带,头发梳得很整齐,手里端着一杯茶。他看见我进来就站起来,主动伸了手:“方总,初次见面,我叫荣逸,荣骏律所的管理合伙人。”
我跟他握了一下手。荣骏律所是孟繁盛之前委托的律所,荣逸此刻出现在这里,说明立场已经切换了。方晋棠示意我坐下,然后开口:“荣律师今天来是代表孟繁盛方面与集团协商最终的庭外和解方案。孟繁盛本人已经签署了认责声明,荣骏律所撤回一切此前提交的异议材料,包括那份伪造的银行流水截图。和解条件是孟繁盛全额退缴过去五年通过M.Y.通道获取的额外收益,并配合检方完成后续调查取证。集团方面不再就民事部分追加索赔。”
荣逸在旁边补充:“我的委托人已经意识到自身行为的严重性,也愿意承担相应法律后果。此次和解不涉及蓝森集团任何现任高管或技术人员的连带责任——这一点我方在和解条款中做了明确排除。”
我坐在对面,没说话,看着荣逸从公文包里取出一份盖了章的和解协议复印件推过来。协议第二页列着退缴金额,那串数字后面跟着八位数。我粗略估算了一下,这条通道过去五年的总流水比我们之前推测的还要多出百分之三十。
“退缴的款项会进入什么账户?”我问。
荣逸看了方晋棠一眼,然后说:“具体账户安排由蓝森集团财务部指定,但我们的建议是以专项基金形式定向用于集团技术体系重建。因为这笔资金本质上来自技术治理被侵蚀的缺口,回流到技术建设上是合理的归位。”
方晋棠点了点头:“我同意这个方向。专项基金由技术委员会第一负责人主导使用方向,财务部只负责执行,不干预预算分配。”
我合上协议复印件,看向荣逸:“条款第三页关于‘既往责任豁免’的部分,写的是‘集团及其关联方’不得追责。但港交所那边的行政责任不在这份协议的覆盖范围里吧?”
“不在。”荣逸说,“司法和行政层面的责任处理由我的委托人另行与相关机构沟通,这份协议只解决集团民事部分。”
我把协议推回茶几中间,站起来,冲荣逸点了下头:“可以。技术委员会对和解条款没有异议。”
荣逸也站起来,跟我又握了一次手,然后跟方晋棠低声交谈了几句收尾安排,拿回公文包,走出了办公室。门关上之后,方晋棠靠在沙发背上看着我,语气比刚才松弛了一些:“你签专项基金使用方案的时候,控制一下预算排期。集团年底财务报表需要平衡,技术投入可以加大但不能一次性打穿年度预期。”
“我知道。”我说,“方案分三期,第一期优先解决底层架构稳定性,第二期做灾备和监控升级,第三期才是新功能模块开发。第一期需要的前期拨款我今天下午报给财务,预算控制在今年Q4剩余预算的百分之四十以内。”
方晋棠点了下头,没再多说。我转身往外走的时候他在后面叫住我:“方骆,荣逸今天来之前跟我说了一句话。他说孟繁盛在看守所里写的最后一份声明里提到一个人——蒋维在今年三月主动找过他,建议他‘利用技术漏洞配合朗域做市值管理’。这个建议是整件事的起点。你查过蒋维真正的背景没有?”
我停在门口:“蒋维除了朗域技术顾问之外,还有一个身份。他本科毕业之后的第一家公司是做高频交易系统的,那家公司后来被一家新加坡的对冲基金收购,收购之后蒋维做了三年的策略顾问。新加坡那家基金跟M.Y. Holdings在资金层面有往来,所以蒋维对资金链路的熟悉程度是天然的。他不是孟繁盛招募的棋子,他跟孟繁盛是同一条河道里长出来的两条支流。”
方晋棠靠在椅背上,沉默了几秒,然后说:“那他现在人呢?”
“开源文章发了之后他飞去了台北,上一周从台北转去了东京。日本金融厅的监管框架和港交所不互通,短期抓不到他。但他开源的那篇长文里已经把技术层面的参与边界写清楚了——他把自己定位成‘被利用的技术外包方’,不是核心策划者。这步棋走得精,他主动切割得恰到好处。”
方晋棠端起茶杯喝了一口,没再追问。我走出办公室,门在身后轻轻合拢。
走廊尽头的窗外,夕阳正在落下,天边橘红色和紫色交错成一大片,铺满了港口上方的天空。我站在窗前看了片刻,然后往电梯口走过去。
晚上八点,我回到三十八楼的办公室,桌上放着一份许南絮留的打印件,是她重新整理过的灾备切换延迟临界值分析报告,封面贴了一张黄色便签纸,写着“发言稿初稿,括号里的是时间节点建议,你过目——南絮”。我翻了一下正文,她的框架比我想象中更紧凑,把技术数据和治理逻辑揉在一起,每一段后面都标注了对应的发言时长建议。
我把报告放在桌上,从抽屉里拿了一罐黑咖啡,拉开拉环喝了一口。窗外港口的货轮灯光明亮,岸吊在夜色里缓缓移动。我坐了一会儿,打开笔记本,开始敲下周技术委员会第一次全员会议的开场发言草稿。键盘声在安静的办公室里响着,间断而均匀。
写到第三页的时候我停了一下,翻到那份报告附录里的一张数据表格,上面列着蓝森过去五年因为架构隐患造成的各类系统异常累计次数和损失估算。最下面一行用加粗字体写着一个汇总数。我看着那个数字,把光标移到它旁边,敲了一行备注:“以此为基线,未来十二个月目标降幅不低于百分之七十。”
然后把文档保存,关了电脑。桌上的黑咖啡罐已经见底了,我把它捏扁放进垃圾桶,和几个月前那个晚上做了一模一样的动作。垃圾桶底已经有七八个相似的铝罐堆在一起,铝片反着灯光。
我拿起外套和钥匙,关灯,走出办公室。走廊的感应灯依次亮起来,我的脚步声在空无一人的楼道里往前延伸,一直到电梯口,然后停住。电梯从一楼缓缓升上来,门开,里面没人。我走进去,按了G层,电梯门合拢,银色镜面上倒映着我的轮廓。
下行过程中我闭上眼睛。心里盘算着明天要处理的三件事:灾备演练的自动化脚本审核、专项基金第一期预算的明细拆分、以及那份发言稿最后一段结论性表述要不要再硬一点。
电梯到G层,门开,我走出去。大堂里只剩下值班保安在低头看手机,他抬头看了我一眼,点了个头算是打招呼,我回了点了一下头,推开旋转门走到街面上。
海风迎面过来,带着咸和凉。我站在台阶上把外套拉链拉上,往地铁方向走。走了十几步,手机震了一下,备用机上那条陌生号码依然沉默,但另一台工作机上收到一条新消息。发件人是沈越:“港交所那边判决书草稿出来了,孟繁盛最终定性为‘利用职务便利、联合外部主体实施市场操纵’,刑期建议三年,罚金覆盖退缴之后剩余部分。判决预计下周一正式公布。”
我回了两个字:“收到。”
然后把手机放回口袋,走进地铁口。下行扶梯的尽头灯光亮白,车道的风从隧道里涌上来,带着铁轨和刹车片的气味。我站上站台,列车从远处亮着灯驶来,减速,门开,车厢里稀稀拉拉坐着几个夜归的人。我找了个靠门的位置坐下,列车启动,窗外的隧道壁灯连成一条光带,快速往后流逝。
我看着玻璃窗上映出的自己,脸上有一点倦意,但眼神还算清明。列车在隧道里穿行,一站一站停靠,有人上车有人下车,我坐在原位没动。到了我要下的那一站,我站起来,走出车厢,站台的风又吹过来,衣摆动了动。
我沿着楼梯往上走,走到地面,街道空旷,路灯把行道树的影子投在地面上,影子晃动得很有节奏。我顺着那条路走回家,夜风在身后跟着,不紧不慢。
第十章. 远航
技术委员会正式挂牌那天,蓝森四十楼西侧的全层办公室第一次全部亮灯。八点半我到的,行政部已经把门头牌装好了,磨砂不锈钢面的铭牌上写着“技术委员会 · 架构与治理中心”,字体细长,底下一行英文小字。
我把外套挂进工位旁边的柜子里,泡了一杯茶放在桌角,打开笔记本。会议系统里预约了九点半的第一次全员线上会,三十七个人的头像目前亮了二十一个,陆续还有人加入。许南絮从她那边工位探过头来,递了份打印好的议程表:“发言顺序按你昨晚邮件定的,第一项灾备自动化脚本评审,第二项专项基金预算分项说明,第三项IT峰会论坛发言框架讨论。”
我接过来扫了一眼,在第三项旁边用笔画了个圈:“先把前两项走完,第三项压缩到十五分钟,重点放在灾备切换延迟那个技术点上。”
九点半准时开会。摄像头打开,三十七个窗口铺满屏幕,有坐办公室的,有在家远程的,有一个窗口背景是酒店的窗帘——那人在天津出差。我讲了三十分钟,中间穿插提问和反馈,节奏比预想中顺畅。专项基金预算说明那一段有两个高级架构师提了意见,我当场把预算表中的网络设备采购项拆出了两档备选方案,让他们会后投票决定用A还是B。
十点四十分散会。我关掉会议窗口,靠在椅背上喝了口水。许南絮在隔板那边发了一条内部消息过来:“第一场会效果不错。发言稿的事我下午再改一版,按你今早说的框架压到十五分钟。”
我回了一个“好”,然后站起来走到窗边。今天海面很平,几乎没有风,港口的吊臂在慢慢转,集装箱一排一排码得整齐。远处一艘渡轮正在离岸,船尾的白线在海面上拉得很长,然后慢慢散开。
手机响了。屏幕上来电显示是一串没有存过的内地座机号,区号是昆明。我接起来,对面是个中年男声,嗓音偏低:“方骆?我周景行。邓峥给我打了电话,说你现在在技术委员会主事了。我在昆明有一个项目想跟你聊聊,跟蓝森没有关系,是我个人参与的一家公司做工业自动化系统的,他们的架构团队缺一个有金融系统背景的技术负责人做顾问。你感兴趣的话,不用你全职,按项目制签顾问协议。”
我靠着窗框,视野里渡轮已经开出港区范围了,变成一个移动的白点。“周叔,具体项目方向是什么?”
“工业控制系统的数据传输安全加固,他们现在的架构漏洞不少,行业内能做金融级加密方案的人不多。邓峥说你在蓝森这几个月把整个灾备体系翻了一遍,韧性和速度都不错,我就想找你聊。”
“行。您把项目简报发我邮箱,我这周看完给您回话。”
周景行说了句“好”,又聊了几句近况,然后挂了。我放下手机,站在窗边把手机屏幕朝下搁在窗台上,安静看了会儿海面。渡轮的白点越来越小,最后和远处一艘货轮的光影融在一起分不清了。
我回到工位坐下,打开邮箱,把IT峰会发言稿的修改版本调出来从头到尾读了一遍。许南絮改完之后的结构更清晰,前五分钟讲技术,中间五分钟讲治理案例,最后五分钟讲韧性建设思路。我读到最后一段结论的时候停了一下,把句号改成了感叹号。只有一个符号的变化,但语气重了一点。
中午去楼下便利店买了盒饭和一瓶冰绿茶,坐在工位上边吃边看项目简报。周景行发过来的那份文件有十几页,前端是工业场景描述,后端是对应的安全需求清单。我注意到他们在数据加密层列了一个要求,对标的参考案例写的是“蓝森集团灾备架构方案”——这说明周景行在找我之前已经拿蓝森这次整改的公开材料做过对比了。
我合上简报,把盒饭的盖子扣好扔进垃圾桶,拧开冰绿茶喝了一口。桌上的亚克力牌在午后的光照下反着一小圈光,我把它的位置往左边移了五公分,避开屏幕的反射。
下午两点,方晋棠的秘书送过来一份盖好章的技术委员会正式授权书,上面写明了委员会在架构决策层面的独立审批权限上限。我签了回执,把授权书放进文件柜锁好。走出文件室的时候在走廊上碰到了邓峥,他今天来公司办点个人手续,看见我就招了一下手。
“周景行找你了?”他问。
“找了。工业自动化项目,我下周给他回复。”
邓峥点了点头,没多问,拍了拍我的肩膀,然后沿着走廊往电梯那边走了。他的背影还是一贯的不紧不慢,灰夹克的肩线有点塌,但步子挺稳。
我回到办公室,下午的时间过得很快。处理了几份灾备演练的测试报告,签了一份机房扩容的审批单,和采购部通了通了一个电话确认备用交换机型号。四点半左右许南絮从她工位那边走过来,把一台新的笔记本电脑放在我桌上:“IT峰会的设备给你领好了,演讲要用,机器预装了最新的讲演工具,今晚你带回去熟悉一下。”
我看了那台电脑一眼,外壳是深灰色的,键盘手感比我现在用的那台舒服。我把它连上电源,开机,桌面干干净净,只放了一个文件夹和浏览器图标。
“谢了。”我说。
“不客气。”她站在旁边等了几秒,好像在犹豫什么,最后问了句,“晚上加班?”
“不加了,今晚回去收拾一下公寓。房东终于找人来修那盏玄关灯了,约了七点。”
她笑了一下,转身回了自己工位。夕阳从西窗透进来,把整个开放工区的地面染成暖橙色。键盘声、电话声、打印机运转的声音交织在一起,混成一种持续的低频背景音。
六点,我关电脑,把深灰色的新笔记本装进包里,拿起外套站起身。走廊里遇见隔壁项目组的人在讨论一个网络拓扑的改动方案,我从旁边绕过去的时候听到他们提到“灾备链路”三个字,脚下没停。
走到电梯口,按了按钮。电梯门开的时候里面站着两个年轻工程师,正在争论一个延迟参数的临界值,声音你来我往。我走进去,站在他们旁边,电梯下行过程中他们争论到了第三轮,结果一个人妥协了:“行行行,按你说的先测一轮,数据出来再说。”
门开,他们先走出去,我跟在后面。大堂里人流比白天少了一大半,值班台那边有快递员在往货架上码包裹。我穿过大堂,走出旋转门。外面的天色还没有全暗,西边还有一线橙红色的余晖夹在云层和楼宇之间。
我沿着街道往地铁方向走,经过那家银行的门口时往里看了一眼,柜台的灯已经灭了。再往前走,经过一家还在营业的茶餐厅,热气从门缝里冒出来,带着奶茶和出前一丁的味道。我继续走,直到地铁口出现在前面。
下行扶梯还在运行,我站上去,手搭在扶手上,身体微微前倾。扶梯缓缓下沉,城市的地面一点一点从视野里退上去,露出的是一截隧道洞口和远处铁轨上的灯光。
列车进站。门开。我上车,找了个靠窗的座位坐下。窗玻璃上我的轮廓和车厢里顶灯的影子叠在一起,外面隧道壁的光斑快速闪过。
列车启动。窗外那些光点被拉成线,又恢复成点,接着又被拉长。车厢微微晃动,规律得像心跳。
我拿出手机,看了一眼时间。六点三十三分。玄关灯的维修约在七点,时间刚好够我走回去。我把手机放回口袋,靠着椅背闭了一下眼睛。列车在隧道里向前行驶,一路稳定,没有减速的迹象。
【全文完】 创作声明:本文部分内容AI辅助整理,全文人工修改核实,本故事纯属虚构。
特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.