林薇把工牌从脖子上扯下来的时候,塑料卡套的边角弹到了锁骨,一道细白的印子留在皮肤上,像被纸割过。电梯间的显示屏停在“12”已经三天了,物业用透明胶带贴了张打印纸,上面只有两个字:维修。她没等,踩着高跟鞋爬了九层。
推开门的那一瞬间,走廊顶灯闪了两下,灭了。整层楼统一陷入一种带着嗡鸣的黑暗,冰箱和路由器的待机灯全数熄灭,隔壁晾在走廊的湿衬衫滴了一滴水,砸在地砖上响得格外清楚。
手机还剩百分之六的电。她没开手电筒,凭着肌肉记忆把钥匙捅进锁孔,拧了两圈半,门开了。高跟鞋踢掉在玄关,脚底踩到凉席地垫上,总算回了魂。
就在她摸黑找充电线的时候,墙的那一边传来声音。键盘敲击,节奏很快,不是机械键盘那种咔嗒咔嗒的脆响,是笔记本那种闷闷的、像指甲敲桌面的轻响。她手停在半空,手机屏幕的微光照着指尖。
隔壁是一〇二,空置了大半年的那一户。门上贴过物业的催缴单,她亲手帮老周撕下来过,因为单子被风卷到她门口,踩了一脚。
又响了。这次更密,中间夹了一声回车,干净利落,带着某种她熟悉的……收尾习惯。
三年前她坐在陈铭斜对面工位,每天听这个声音听到耳朵起茧。他写代码有个毛病,每解决一个bug就要猛敲一下回车,力气大到整个键盘往左挪两厘米。
林薇把耳朵贴在墙上。声音停了。然后是拖动椅子的声音,接着是脚步声,朝门口方向走了几步,也停了。
两个人隔着一堵墙,谁都没动。
她摸到门把手,拧开,走廊里一片漆黑。借着手机快关机的微光,她看见对门的门缝底下——确确实实透出一条暖黄色的光。有人在家。有人拉了电闸,或者这一户走的是独立线路。
“谁?”她的声音比自己预想的要哑。
门内静了三秒。然后锁芯转了一圈,门朝里拉开。一个男人站在玄关的阴影里,手里攥着一支手电筒,没开,光是从客厅深处某个角落漫过来的,大概是应急灯。
他比三年前瘦了至少十五斤。颧骨突出来,下颌角锋利得像另一个人。但那双眼睛没变,看人的时候微微眯着,像是在评估一行代码有没有逻辑漏洞。
“林薇。”他说。
直呼其名,连问都不问。
“陈……总?”
“别叫总。”他把门往回带了带,身体挡住她往里看的视线,“你住隔壁?”
“我住了两年。”她往前走了一步。
陈铭没有退。手电筒在手里转了个方向,光束垂在地上,照出他脚上那双棉拖鞋——灰蓝色,左边大脚趾的位置磨破了一个洞。
“你什么时候搬来的?”林薇问。
“半年。”
“物业说你用的不是真名。”
他嘴角动了一下,算不上笑。“物业知道得太多了。”
走廊深处传来电梯恢复运行的提示音,叮的一声,灯也亮了,惨白惨白地铺了一地。陈铭脸上的阴影被冲淡,林薇看见他衬衫领子磨出了毛边,左胸口袋上方有一小块洗不掉的墨迹——以前他穿定制衬衫,袖扣每天换。
“那个键盘声,”林薇说,“是你。”
“吵到你了?”
“你以前从来不在家里写代码。你说过,工作的事不能带进卧室。”
陈铭把手电筒关了,走廊灯已经完全恢复,他不需要了。“以前说过的话,不一定都对。”
他退回门内,手按在门沿上,没有请她进去的意思。
“明天晚上,”他突然开口,“如果再有停电,别开门。”
“什么意思?”
“字面意思。”门合上了。咔嗒一声锁舌入位,干脆利落,跟他敲回车一个节奏。
林薇站在走廊里,灯光明晃晃地照着,她才看见自己手机已经黑屏了。彻底没电。她走回自己屋,关门的时候目光扫过对门,发现陈铭门口的地垫下面露出纸片的一角,抽出来看——是半截超市小票,日期是今天,商品只有一样:五号电池,十组。
十组电池,用在什么地方,会需要这么多?
她翻过小票,背面有人用圆珠笔写了四个数字:0704。
七月四号,公司三年前项目数据泄露的事故发生日。也是陈铭从公司消失的第二天。
1
林薇在第二天上班前干了件从没干过的事——翻了自己门口的垃圾桶。
昨晚那张超市小票她拍了照,但没敢留着,撕碎混进外卖盒里扔了。做这件事的时候她觉得自己像个蹩脚间谍,手抖得差点把咖啡泼在电源插座上。到公司后她做的第一件事,是给物业打了个电话,说楼下住户反映天花板渗水,问能不能查一下对门那户的用水记录。物业老周含含糊糊地说那户是半年起租的,平时碰不到人,水费都是年付,查不出什么。
“那他垃圾放门口吗?我这两天出门总闻着味儿。”
老周笑了一声:“人家讲究得很,每天凌晨自己带下楼。”
凌晨。林薇把这个词在脑子里转了一圈,挂了电话。
她下班后没直接回家,在小区对面便利店靠窗的位置坐了两个钟头,面前摆着一瓶喝到见底的乌龙茶。六点四十,陈铭那间屋的灯没亮。七点二十,窗帘缝里透出一层暗黄色的光,像是只开了台灯。九点十五,灯灭了。她差点以为今晚就到此为止,结果十点零七分,对门那扇防盗门无声无息地开了,陈铭出来时换了身深色连帽衫,帽檐压得很低,手里拎着一个黑色垃圾袋,瘦长身形往楼道深处一闪,应该是走了消防楼梯。
林薇数了数,他走了不到四分钟就回来了。四分钟不够走到小区大门口的垃圾桶,那他扔哪儿了?楼道里没有垃圾桶。
她回家后把防盗门留了条缝,搬了把椅子坐在玄关,手机静音,耳朵竖着。十一点半左右,走廊传来极轻的脚步声,随后是对门锁舌转动的声音。她等到十二点,轻手轻脚开门去看——陈铭门口那袋垃圾已经没了。她往下走了半层,在消防通道拐角的窗台上看见一小片撕碎的纸屑,米粒大,粘在窗框胶条上。她捏起来对着手机闪光灯看,纸面有圆珠笔划过的凹痕,但字迹实在太小,辨认不出内容。
接下来三天,她摸清了规律。陈铭每天凌晨两点到四点之间活跃,键盘声断断续续,偶尔有抽屉开合的闷响。天亮前必然有一趟垃圾投放,出门时间精确到分钟,不超过四分钟来回。最让她在意的是四点十五分左右那个环节:他会站在窗边,拉开一半窗帘,伏在什么东西上写大概七八分钟。林薇用自己网购的入门级观鸟望远镜隔着纱窗看了两个晚上,确认他是在一个硬壳笔记本上手写,写几行就停一下,像在核对或者计算。写完后他翻回前面几页,撕下写过的那页,揉成团——然后走进卫生间。第一次听到冲水声的时候林薇以为是巧合,第二次、第三次,她确认了:手写、撕页、冲走。
她心里有个声音说这叫消灭证据,另一个声音说也可能是私人记账。但一个昼伏夜出、用假名字租房、连扔垃圾都精确到分钟的人,在凌晨四点手写然后冲掉,这本账怎么想都不该跟她无关。
周五晚上她换了策略,不再蹲守窗边,而是掐着时间提前五分钟到楼道消防通道的拐角处等着。她穿了双软底拖鞋,手机屏幕贴了防窥膜,调成最暗。四点十二分,脚步声果然从对门方向传来,但这次陈铭没直接下楼。他在拐角处停住了,距离林薇不到两米,中间隔着一道防火门,门上的小玻璃窗蒙了灰。
林薇屏住呼吸。
陈铭在打电话,声音压得很低,但夜深人静,她勉强能拼出几个词:“……系统还在跑……对,全部离线……赵那边没动静……我知道时间不多了……”
赵。林薇的指甲掐进掌心。公司里姓赵还能让陈铭用这种警惕口吻提起的,只有一个人。
电话不到一分钟就挂了。陈铭没下楼,脚步声折返回去,关上了房门。林薇在防火门后头蹲了足足三分钟才敢动,腿麻得扶着墙站起来,发现自己的拖鞋不知道什么时候掉了一只。她光脚往回走,经过陈铭门口时,发现他门缝底下透出一线光,不像台灯那么暖,偏冷白,可能是显示器屏幕。凌晨四点二十的显示器光。
第二天早上她在电梯里碰到物业老周,随口问了句:“咱这楼消防通道的监控好使不?”
老周咂了咂嘴:“年头长了,线路老化,好几层都是摆设。”
“那大门口的呢?”
“那倒是好的。”老周看了她一眼,“查什么呀?”
“没什么,快递丢了。”她笑了笑。
老周“哦”了一声,电梯到一楼时他先出去,走了两步又回头:“小林啊,晚上要是听见什么动静别自己出来看,给我打电话。”他拍拍腰间那串哗啦响的钥匙,“我住七号楼一层,随叫随到。”
林薇点头说好。但当天晚上她没打电话。她坐在自己客厅地板上,面前铺着一张纸,上面是她凭记忆整理的陈铭作息表:活跃时段、出门频率、窗边书写时长、冲水次数。纸的右下角,她画了个问号,旁边写了三个字:赵建国。
她把纸折好塞进抽屉最深处,站起来活动了一下僵硬的脖子。对面窗帘缝里,冷白色的光又亮了。
2
垃圾车每周三和周六早上七点来。林薇蹲守了整整四天,摸清了陈铭倒垃圾的规律:他从不赶垃圾车,而是提前一晚把袋子放在门口,凌晨五点左右才拎下楼。这意味着,如果想翻他的垃圾,她要么在凌晨五点之前动手,要么趁他白天出门的空档。
周三上午九点四十,陈铭的房门锁舌咔嗒一响。林薇贴在猫眼上,看他背着那只磨掉皮的黑色双肩包进了电梯。她等了七分钟,确认电梯没有再上来的迹象,才套上橡胶手套,拿了两只超市购物袋出门。
陈铭门口的垃圾袋是黑色的,系了死结。她拎起来掂了掂,比想象中沉。楼梯间没有监控,这一点她上回从老周嘴里套出来了。林薇把袋子拎回自己屋,在地板上铺开三层旧报纸,拿剪刀剪断结扣。
最上层是厨余垃圾,泡面桶、鸡蛋壳、一截蔫了的黄瓜。中间是几只空牛奶盒和揉成团的打印纸,她展开一看,空白,什么都没有。她几乎要收手了,却在袋子最底部摸到一个硬邦邦的牛皮纸信封,封口撕开一半,里面倒出来的全是碎纸条。
碎纸机,横切式,条宽大概四毫米。林薇把碎纸倒进一个浅口收纳盒,端到餐桌上开始拼。这不是她第一次干这种事——两年前做竞品分析时她连翻过合作方三天的废纸篓,但那会儿至少还是整张纸。眼前这堆碎条被搅得次序全乱,她只能先按纸张颜色分成两组:偏黄的打印纸,和纯白的A4。
偏黄那组拼了四十分钟,她渐渐看出轮廓——抬头位置有个圆形图标的碎片,拼出半圈深蓝色弧线。她心跳加速,把碎片翻过来看背面的洇墨,果然,是公司三年前换掉的旧版Logo。那个弧线是原版标识里地球的经线。
她把拼好的部分用胶带固定,剩下没归位的碎条按照字迹走向排列。第二行出现了“public class”——是Java代码。林薇的手指停在半空。她当前手上的项目叫“星轨”,底层架构用的就是Java,而且三个月前她刚带人重构过的那个核心调度模块……
她翻出自己电脑,调出项目文档,把碎纸片上能辨认的字符串逐一对照。
“ScheduledExecutor”——对得上。
“TaskDispatcher”——对得上。
“retryPolicy.maxAttempts”——她对上了,连后面那个数字“5”的碎笔都在。
林薇靠回椅背,盯着桌上那堆拼了不到三分之一的碎纸条。陈铭在默写她当前项目的代码。不对,不是默写——这些代码片段里有几处写法是她上周才提交的最新版本,连注释里那个拼错的“adress”都没改。陈铭在偷看她屏幕,或者用了别的什么手段获取了她工作电脑上的内容。
她想起每天晚上对面窗口的冷白光,想起他手写记录后撕碎冲走的动作。如果那些纸片全是代码,说明他至少持续记录了一段时间。但为什么?三年前消失的人突然住到她隔壁,日夜记录她经手的项目代码——这不像窃密,窃密用U盘拷贝更快。这更像是在做比对。
林薇把碎纸片按公司旧版代码库的格式重新分类,很快发现一个规律:陈铭记录的不只是她当前项目的代码,还有几处被划掉又重写的段落。划掉的版本和她项目里“已废弃”分支的写法几乎一致,而重写的版本则对应她项目里现行有效的配置。他像是在追踪每一次代码变更,把修改前后的差异逐条记下来。
那盏不该亮的灯,那些半夜的敲击声,那些被冲进马桶的手写记录——全是在做这件事。
林薇拿起手机想拍下拼好的碎纸片,犹豫了一下,又放下。她暂时不能留证据在手机里,万一陈铭真有办法接触她的设备。她改用最原始的办法:把拼好的内容誊抄在一张空白A4纸上,然后把碎纸片原样混回垃圾袋,重新系好死结,放回陈铭门口。
做完这些她看了眼时间,十一点二十。陈铭通常下午两点后才回来。她回屋洗了把脸,对着镜子练习了几遍表情,然后拨通了物业办公室的内线。
“周师傅,我小林。我今晚加班回来晚,能麻烦您把七号楼后面那个路灯调亮点吗?上回说换灯泡一直没换。”
老周在那头应得挺痛快,末了压低声音加了一句:“小林,你对面那户,他昨天来物业交水电费,用的现金,一张张数了快五分钟。现在谁还揣那么多现金交费啊。”
林薇把手机夹在耳朵和肩膀之间,腾出手在备忘录里打了一行字:现金缴费,假身份可能没有关联银行卡。
“周师傅,”她语气很随意,“他那户之前空了多久来着?”
“我查查啊……空了一年多吧,去年十月才租出去的。中介带人来看的房,登记本上写的是个姓吴的。”
“姓吴?”
“对,吴什么来着——吴海涛。我那天还跟老孙说呢,这名字听着就不像真名。”
林薇道了谢,挂了电话。她翻到手机相册最近删除的文件夹,把刚才犹豫没拍的那张碎纸片拼图照片恢复了回来。然后在备忘录里补了一行:七号楼后路灯,灯泡没换过——老周在撒谎,他记得所有细节,唯独说记不清陈铭的长相。
她抬头望了一眼窗外。对面窗帘拉得严严实实,但空调外机在转。陈铭回来了,比平时早了将近三个小时。
3
林薇在第二天下午四点半准时出现在物业办公室门口,手里拎着两盒从便利店买的蛋挞。
老周正蹲在门口用螺丝刀捅一只坏掉的信箱锁,见她来了,手在裤子上蹭了蹭站起来。
“周师傅,我那个水压的事,您昨天说帮我看看总阀。”
“哦对,走走走,正好我现在有空。”
物业办公室是小区围墙边搭出来的一间活动板房,推开门一股铁锈和旧报纸混在一起的气味。老周在一张桌面磨得起毛的办公桌前坐下,拉开右手边第二个抽屉翻扳手,抽屉底躺着一大串钥匙,铜的、铁的、铝的,粗粗细细至少三四十把,每把上面用不同颜色的胶带缠了圈,有些还贴着手写的小标签。
林薇把蛋挞往桌上一搁:“您先吃,不着急。”
老周嘿嘿笑了两声,也不客气,拆开盒子叼了一个,边嚼边从钥匙串里拨拉出几把翻看:“你们那栋楼的总阀在四楼楼梯间,我待会儿上去弄。对了,你住403是吧?”
“嗯,对门那户最近好像有人搬进来了?”
老周嘴里含着蛋挞含混地应了一声:“401嘛,租出去了。”
“我之前看一直空着,还以为没人要呢。”
“空了年把了。”老周拿纸巾擦了擦手指头,把整串钥匙拎起来往桌上一放,金属撞击声哗啦一响,“这户当时是我给办的手续。”
林薇的目光落在那串钥匙上。她数了数,光是自己住的那栋楼,从一楼到六楼十八户,每户少说两把——大门一把,地下室或信箱一把——粗算下来光这栋楼就有三十多把。更别提旁边几栋楼的了。
“这么多钥匙您都随身带着?”
“那可不,哪家水管爆了、电表跳了、租客忘带钥匙了,都得找我。”老周拍了拍那串钥匙,语气里带点炫耀,“全小区一百多户,哪把开哪扇门,我闭着眼都能摸出来。”
林薇把蛋挞盒子往他面前又推了推:“那您可真够忙的。401那户租出去的时候,也是您给办的登记?”
“中介带来的人,我就管签个字、收个押金。”老周咬了口蛋挞,酥皮掉在桌面上,他用掌根扫到地上,“不过那人有点怪。”
“怎么怪?”
“大晚上的来看房。我记得清楚,去年十月底,都快九点了,中介小刘给我打电话让我来开门。来的是个男的,戴个毛线帽,围巾捂到下巴,就露一双眼睛。我当时还想这人大晚上看什么房。”
林薇没接话,只做出一个听故事的表情。
老周果然自己往下说了:“签合同的时候他掏身份证,我扫了一眼——怎么说呢,那照片跟他本人不太像。他解释说是几年前拍的,瘦了。但我干物业十来年了,租户身份证我见过几百张,本人跟照片有出入的正常,可他那张吧……”
老周顿了顿,拿蛋挞在手里转了个圈:“塑料封膜特别新,边角一点磨损都没有。正常人身份证揣兜里几年,哪能那么新?”
“您跟中介提过吗?”
“提了,小刘说现在人都用电子身份证,实体卡不常带,新的正常。我也就没往深了想。”老周把最后一口蛋挞塞进嘴里,拍了拍手上的渣,“后来办门禁卡的时候,他留了个手机号,我打过去是空号。再找中介,中介说他留了两个号,另一个也停机了。最后是微信联系的,转的押金。”
“那他身份证上的名字您还记得吗?”
“吴海涛。对,就是吴海涛。苏州的地址,我记性还行吧?”
林薇笑了笑,站起来接过老周递来的水压扳手,装作随口一问:“那他来了之后物业费怎么交的?”
“微信转账,每月一号准时得很。”老周摸了把下巴,“这倒是我见过最准时的租户。就是从来不出面,有事微信说,门坏了让我直接上去修,他远程开门。哦对,有一回我去修他阳台地漏,人不在家,他用手机给我开了楼下单元门,说门没锁让我自己进。”
“您就进去了?”
“那有什么,我又不拿他东西。”老周一脸坦然,“再说他那屋也没什么可拿的,家具都是上个租客留下的,他自己就搬进去一台电脑桌。”
林薇低头看了看手里的扳手,塑料柄上缠着电工胶布,磨得发亮。这串钥匙能开整栋楼所有的门,而老周对此毫无警觉,跟谁都说。
“周师傅,”她把扳手递回去,“您这串钥匙平时就放抽屉里?”
“有时候扔桌上,有时候忘在门锁上,反正都在这一片丢不了。谁要借个梯子、开个储物间的,我不在的时候他们自己拿。”
林薇点点头,没再多问。她走出物业办公室时,老周正对着那盒蛋挞的包装盒研究保质期。门板房的门在身后合拢,她低头看了一眼手机:四点五十三分。
陈铭通常五点零五分左右出门倒垃圾。
她快步往七号楼走,经过楼栋拐角时余光扫到四楼401的阳台——晾衣杆上挂着一件深灰色连帽衫,在风里轻轻晃。她记得很清楚,昨天这件衣服不在。
昨晚她恢复的那张碎纸片拼图,还躺在手机相册里。她打算今晚把拼好的内容完整过一遍。至于老周抽屉里那串钥匙——如果能拿到401的备用钥匙,她就不用再翻垃圾了。
4
五点零七分,陈铭从单元门里出来,手里拎着一个黑色垃圾袋和一只双肩包。林薇蹲在隔壁楼栋的快递柜后面,手机屏幕调到最暗,备忘录里按下计时器。前六次跟踪她只跟到地铁站或便利店就折返,今天他带了包,方向不对。
陈铭没往小区正门走,绕到北侧围墙缺口,侧身挤过一道被藤蔓遮住的铁栅栏。林薇等了十秒才跟上去,栅栏后面是一条废弃的铁轨便道,枕木间的碎石踩上去声响太大,她只能踩着铁轨边缘的锈蚀钢面走。前面那个灰色身影始终保持着四十步左右的距离,中途一次都没回头。
便道尽头通向绕城高速的辅路。陈铭在路边扫了一辆共享单车,林薇暗骂一声,小跑着扫开最近的一辆。她不敢跟太紧,中间隔了七八辆车,好在辅路笔直,灰帽子在车流里还算好认。骑了将近二十分钟,陈铭拐进一条没有路灯的水泥岔道,两侧全是铁皮围挡,围挡上喷着褪色的“拆”字。
林薇在岔道口刹住车,探头看了一眼,陈铭已经停在一栋三层建筑前面,正拿钥匙开卷帘门。那楼的外墙贴着白色瓷砖,很多年没洗过,缝隙里嵌满黑灰色污垢,门楣上残留着一排铁皮字,被拆得只剩“数据中”三个字。她把单车锁在围挡后面,贴着墙根靠近,卷帘门刚好完全升起,陈铭走进去,门又落了下来。
一楼没有亮灯。林薇等了大概三分钟,才看到三楼靠北的窗户透出一点暖光。她绕到楼背后,找到一根锈得发红的排水管,管卡子有几个已经脱落,但主体还算牢固。爬到二楼窗台时她往下看了一眼,手心全是汗。三楼窗户没关严,留了一道两指宽的缝,她侧耳贴上去,听见里面风扇嗡嗡作响,还夹着一种老式硬盘启动时的细微咔嗒声。
窗缝正对着一张长条桌,桌上摆了六台老式塔式服务器,机箱侧板全部拆掉,硬盘架裸露在外,指示灯绿莹莹地闪。陈铭坐在桌前的塑料凳上,面前一台打开的笔记本屏幕发着蓝光,他正往一个外置硬盘盒里拷东西,进度条走得极慢。
林薇用手机从窗缝往里拍,镜头拉近之后看清了服务器上的标签,每一台都用马克笔写着年份和项目代号,最左边一台写着“21-Q3-远航”,那是公司三年前被叫停的物流算法项目。她记得这个项目,当时她是新人,只负责整理会议纪要,后来项目组突然解散,所有数据一夜之间从内网清空,对外说法是“方向调整”。
陈铭起身去墙角提水壶,林薇赶紧缩下头,后背贴着外墙等了十几秒。再探头时他正弯腰在服务器之间走动,手指依次按过六台机器的电源键,风扇声逐级减弱,最后只剩两台还在运转。他从背包里掏出个牛皮纸信封,里面是一沓手写的表格纸,对着笔记本屏幕逐行核对,时不时用铅笔在纸上圈一个数。
林薇看见他把核对完的表格塞进一个透明文件袋,文件袋侧面贴了标签,写的是“V-07校验记录”。这个前缀她太熟了,现在的项目代码库里每份测试报告都用V打头编号。
就在她准备再拍第二张照片时,手机屏幕突然亮了,一条系统更新弹窗跳出来,亮度自动调到最大。她赶紧用手捂住,指缝间漏出的白光在黑暗里格外扎眼。楼下卷帘门传来金属摩擦声,有人从外面掀了掀门锁。
陈铭的动作比她快得多,笔记本啪地合上,外置硬盘一把拔下塞进背包,手写的表格和文件袋全扫进桌下那个带盖的塑料收纳箱,盖子一扣推到角落,上面还压了两摞旧杂志。整套动作不到十秒,然后他拎着水壶走到窗边,像是要往外泼水。
林薇整个人贴在墙面和排水管之间的窄缝里,连呼吸都压到最浅。窗框被推开了一点,一蓬水泼下来,溅在她裤脚上。水壶收回去了,窗户重新合上,但没关死,还是那道两指宽的缝。
楼下有人在喊什么,林薇听不清,接着是卷帘门升起的响动,一个男人的声音说:“老陈,电费单子给你塞门缝底下了。”陈铭应了一声,脚步声往楼梯口去。
林薇顺着排水管滑到二楼窗台,再跳到地面时膝盖震得发麻。她猫着腰绕过围挡拐角,回头看见陈铭站在卷帘门口跟一个穿工装的男人说话,手里捏着那张电费单。她没敢再多看,快步走到岔道口,扫码开锁时手抖得差点输错密码。
骑出去五百米她才敢停,翻开手机相册,窗缝里拍的那三张照片:服务器标签、文件袋标签、还有桌面上露出的半截笔记本屏幕,屏幕上是一个文件目录树,最顶层的文件夹名赫然写着“远航-全档-离线镜像”。
回程路上她绕到便利店买了瓶水,结账时发现手机连着震动了好几下,物业老周的号码,连打三通。她回过去,老周的声音压得很低。
“小林啊,你下午问我钥匙的事,我后来翻了翻登记本,401那间房,陈铭签合同的时候留的身份证复印件,我越看越觉得不对,照片像他,名字不是他。我这儿有底根,你要不要来看看?”
林薇拧开水瓶灌了一口,水是冰的,她咽得很慢。
“明天早上,你几点到岗?”
5
林薇是在第二天傍晚被一通短信叫上天台的。号码陌生,内容只有六个字:七点,顶楼,陈铭。她盯着那行字看了半分钟,把手机揣进口兜里,顺手从鞋柜抽屉摸出那支录音笔揣进另一只兜。手伸进去的时候摸到笔帽上那道裂缝,昨天在废弃机房踩到碎砖滑了一跤,笔摔出去磕的,录音功能倒还正常。
老周发来的身份证复印件照片她天亮前就收到,微信里附了句“要报警跟我说一声”。扫了一眼名字,刘成伟,照片底下身份证号对得上地址中段那串派出所代码。她存进加密相册没回复。
天台的铁门虚掩着。推开的瞬间锈铰链发出一声长响,风灌进来,晾衣绳上谁家被单鼓成半透明的帆。陈铭站在水箱旁边的水泥台沿上,背对着她,脚边一只黑色双肩包拉链敞着口,露出铝箔防静电袋的一角。
“门关上。”他没回头。
林薇把铁门带拢,没动地方。两人之间隔了七八米,中间横着三根晾衣绳和一堆歪斜的太阳能支架。她掏出手机按了两下,屏幕亮起来又按灭,动作刻意放慢。
“录音笔开了?”陈铭终于转过身,嘴角那道疤比三年前深了点,下巴上冒出一层青茬。“开就开着,用不着藏。”
“你搬家速度够快的。”林薇没接话茬,目光越过他肩膀,瞄见水箱检修梯扶手上缠着胶带——和昨天在机房外窗框上看到的那卷,同一款灰色布基胶带。
“老周把底根给你看了。”陈铭跳下台沿,鞋底磕在防水卷材上闷响一记。“他这人耳根软,但记性不差,我签完合同那天就知道瞒不过他。故意让他看见的。”
“你故意的?”
“老周跟了我三天。我蹲他这楼里住,他能不摸底?”陈铭从包里抽出个牛皮纸信封,封口缠了两圈透明胶,递过来。“先看,别急着问。”
林薇没接。风把她鬓角的碎发吹得直往嘴里钻,她拿手拨了一下,盯着那个信封上鼓鼓囊囊的轮廓。“你先说清楚,三年前远航项目的交付日志里,周五那批数据校验为什么全对但有十六个字段回滚了。我上个月重新跑推导,和你当时公示的版本差了整整一个补丁。”
陈铭把信封拍在两人中间的水泥墩上。“赵建国周五下午四点改的校验脚本,让回滚字段静默跳过,日志里写的是‘已校验通过’,实际那十六个字段是空的。他把空值塞进标准模板骗过了验收系统。”
“验收报告是你签的字。”
“签字页是后来补的。他把事故压了三天,等我从外地出差回来,直接甩了一份‘你签字才能走流程’的说明。我签了,但我在签的时候用隐形墨水在第四页右下角打了个标记,你看不到,紫外灯能扫出来。那东西现在在我柜子里锁着。”
林薇弯腰把信封捡起来,捏了捏,里面像是一摞打印纸。“你住对门四个月,就为了跟我说这个?发个邮件不行?”
“你邮箱被监控了。”陈铭抬起手,朝小区西墙外那栋写字楼的方向抬了抬下巴。“赵建国上个月让IT给项目组所有人的邮箱加了归档规则,你发给外部的每一封带附件的邮件,抄送列表里只要你打了‘Z.’开头的邮箱,自动密送到他助理那儿。”
林薇想起来自己上周确实给一个叫“Zoe”的供应商发过招标参数表。“你怎么知道?”
“因为我黑进了他的归档服务器日志。”陈铭说得像在报天气预报。“顺便发现他还盯着你的小区门禁记录。你每天几点进出,他助理做了张Excel表打印出来贴他办公室白板上。我搬到你对门是能最快看到你安全进出,也不用在室外蹲点吃摄像头。”
“所以你跟踪我?”
“我保护你。他要是发现你在重新跑三年前的推导,你觉得他会先找你聊还是先删你硬盘?”
晾衣绳上那条被单被风掀起来又落下去,啪地拍在两人之间。林薇低头拆信封胶带,里面是一份手写清单:日期、时间、IP地址、操作人。最后一行日期是前天,操作栏写着赵建国,动作栏写着“调阅林薇门禁数据,次数:3”。
“这东西哪来的?”
“离线服务器的日志镜像。赵建国不知道那个废弃数据中心还有一条没断的备份线路,我蹲了半年就是为了喂它。”陈铭把双肩包拉链扯上。“你今天收了这信封,明天开始别走地下车库,走地面南门,老周在那边的岗亭我打过招呼。还有——”
他顿了一下,从兜里摸出个U盘,跟信封那叠纸并排放在一起。“这是我过去四个月恢复出来的东西,原始交付日志、赵建国的修改记录、还有他给外包团队的付款流水。够你重新推一遍完整证据链。但有一点,这些东西一旦从你手里出去,赵建国第一个查的就是你。”
林薇把U盘和信封一起塞进外套内兜,拉上拉链,拍了拍。“那你呢?继续住对门喂蚊子?”
“我今晚搬。”陈铭已经往铁门走了两步,停住。“他手伸不到老周的物业系统,但你那边网络不安全,以后有事用老周的座机打这个号码。”他从裤兜里摸出张烟盒纸撕下的边角,上面写了一串手机号,后面跟着“响一声挂”四个字。
“你手机呢?”
“扔了。昨天从机房回来路上发现后视镜里跟了辆白色朗逸,我兜了两圈甩掉之后把手机连卡一起扔护城河里了。”
铁门再次发出长响。陈铭侧身挤出去,脚步声在楼梯间里往下走了七八级,忽然停住。
“林薇。”
“嗯。”
“赵建国今天下午请了病假。他助理朋友圈发了张照片,定位在城南一个茶楼,桌上放着三台手机。”铁门缝里漏进来陈铭半张脸,逆着光看不清表情。“你今晚回去别开自己家灯,先在对门猫着,我九点前把东西搬完。这楼里至少有两户是赵建国的人。”
铁门合上。林薇在原地站了几秒,把内兜拉链拉开一条缝又合上,转身往水箱后面走,那里能看见小区正门。她掏出手机给老周发了条微信:明天开始走南门,麻烦您了。然后长按电源键关了机,撬开后盖把电池抠出来捏在手里。
晾衣绳上最后一条被单被对楼收走了,天台上只剩下风和水箱里咕噜咕噜的浮球声。
6
硬盘在陈铭掌心里只有巴掌大,外壳裹了三层防静电袋又塞进一盒拆空的胃药包装。林薇接过来掂了掂,轻得不像攥着能扳倒一个副总的全部东西。
“监控室在二号楼地下室,物业和保安公司共用。”陈铭用下巴指了指窗外斜对面那栋楼,“老周说上礼拜有人动过硬盘录像机的接线,多插了一根分屏线,走的是楼顶桥架。”
林薇没问怎么知道的。她蹲下来把胃药盒子往帆布外卖袋里塞,袋口露出半截奶茶小票和一双一次性筷子,做戏做全套。陈铭在身后把拉链头拽了两下试松紧,又递过来一个手机充电头。
“外壳拧开过,里面是空的,当保险盒用。”他声音压得极低,“你走南门,老周在岗亭拖住保安聊天,三分钟窗口。”
林薇把充电头扔进外卖袋侧兜,拉链拉到一半停住。楼下传来电动车的刹车声,接着是塑料袋摩擦地面的响动——有人正往单元门口放东西。两个人同时蹲到窗台沿以下。陈铭把食指竖在唇前,另一只手摸出手机翻到摄像头画面:楼道口一个戴头盔的外卖员正拍照,拍完跨上车走了,后座箱子印着跟林薇手里一模一样的外卖平台logo。
“这单不是你点的。”陈铭说得笃定。
林薇没吭声,把外卖袋翻了个面,用马克笔在袋底写了三个数字——那是她租房时记下的门牌号,夹杂在一堆快递单里根本看不出异常。她站起来扯平T恤下摆,深吸一口气,然后一脚踹翻了脚边的空水桶。
铁皮桶在水泥地上滚出巨响。陈铭只愣了半秒就反应过来,拔高嗓门。
“你他妈能不能别掺和我的事!”
“你把我当傻子耍了半年!”林薇抄起扫帚往铁门上一敲,金属回声在楼道里荡开,“什么备份什么证据,我看你就是想拉我当垫背的!”
两人从屋里吵到楼梯间。林薇故意把帆布袋子甩得啪啪响,里面胃药盒撞着充电头发出零碎动静。三楼拐角有户人家开了条门缝,一只眼睛贴在防盗链后面,很快又关上。陈铭追下两级台阶拽住她胳膊,力道大得指节泛白,嘴上骂的是“你现在去告密咱俩一起死”,手指却在她小臂内侧快速敲了三个点——那是老周约定的南门岗亭方向信号。
林薇甩开他,一脚蹬开单元门冲进雨里。外卖袋顶在头上跑,拐过垃圾站时她余光扫到二号楼外墙桥架上确实多了根白色护套线,顺着墙根往地下室的通风窗方向扎下去。老周果然站在南门岗亭外面抽烟,远远朝她抬了抬下巴,然后转身敲窗户跟里面保安搭话。
林薇贴着绿化带矮墙走,经过三号楼时迎面撞上居委会的刘姐骑着电瓶车过来,车筐里塞着几卷封箱胶带和一沓打印纸。
“小林,正好碰上你。”刘姐刹住车,车把上挂的喇叭按钮按下去又弹起来,“明天下午社区消防演练,每家出一个代表,一点半到小广场集合。”
“刘姐我明天——”
“知道你们上班忙,就签个到拍张照的事。”刘姐已经低头翻登记表了,“对了,你们那栋楼最近是不是有人投诉夜里装修?物业让我核实一下。”
林薇捏着外卖袋的手紧了紧。投诉装修是假,摸底是真。她偏头看一眼刘姐电瓶车后座,绑着个黑色手提箱,拉链缝里露出一截白色卡扣和一小截同轴电缆线头。
“没听说,我回去问问对门。”她笑得自然,“刘姐你这箱子挺沉吧,我帮你挪挪?”
“别别别,物业的设备,我顺路带过去。”刘姐把登记表夹回车把,拧了电门就走,骑出去五六米又回头补了一句,“明天一定来啊,不来我上门找你签字。”
林薇看着电瓶车拐进物业小院,摸出手机连按三次开机键。屏幕亮起时弹出三条未接来电,全是同一号码,她存过,是赵建国办公室座机。短信只有一行:林薇,明早九点来我办公室一趟,你手上那个模块的代码我要亲自过一遍。
她没回。把手机静音塞回兜里,快步穿过南门岗亭。老周背对着她在跟保安聊钓鱼,一句“上周那塘子出鱼不行”盖过了她帆布鞋踩过水洼的声响。
到了马路对面便利店,林薇在靠窗座位坐下,把外卖袋搁在桌上。她撕开奶茶杯塑封膜喝了一口,然后伸手进袋底,指甲沿着马克笔数字的位置抠开内衬接缝——夹层里除了胃药盒,还多了一样东西。陈铭什么时候塞的?一枚指甲盖大小的黑色存储卡,用透明胶带粘在内衬布上,胶带背面拿圆珠笔写了四个字:桥架北端。
她捏着存储卡抬头望向便利店玻璃窗外。街对面二号楼顶的桥架在雨里泛着暗银色水光,北端连着监控室通风口,上面不知什么时候多了一盏新装的半球形摄像头,黑色镜头正对着南门人行道方向,恰好覆盖老周岗亭和她刚才走的整条路线。
镜头里映着红灯,一闪一闪,像是谁的眼睛在眨眼。
7
存储卡在掌心攥出了汗。林薇没有回出租屋,绕到小区西侧垃圾站后头的配电房夹道里,把卡塞进手机卡托——双卡双待,副卡槽正好空着。屏幕跳出提示:存储仅剩12MB。她点开文件管理,卡里只有一段录音和一个txt文档,录音文件名是“0317_1430”,正是三年前项目事故当天的日期。
文档打开,全是密密麻麻的十六进制数值,末尾一行备注:“比对源:桥架B3-7至B3-12段镀锌线槽内侧。”她还没来得及细想,手机顶端弹出一条陌生号码短信,就五个字:“北窗看楼下。”
林薇绕到楼背面仰头。陈铭那间屋的窗帘拉开一道缝,他伸出三根手指,然后握拳。这是他们约定过的暗号——三分钟,撤离。
她跑进单元门时,听见楼后传来轮胎碾过碎砖的急刹声。电梯停在七楼没动,她连按三下,门开时老周正拖着拖把从里面出来,嘴里嘟囔着“大中午的修什么电梯”。林薇瞥见他腰间钥匙串上多了一把银色扁平的,不像这栋楼任何一道门的制式。
“周叔,电梯怎么了?”
“不知道哪个挨千刀的报了故障,维保的刚走。”老周拿拖把柄戳了戳电梯门缝,“你赶紧上去,别在井道口晃悠。”
林薇进了电梯按了八楼。门合到一半,轿厢猛地一顿,头顶灯管闪了两下灭掉,紧急呼叫按钮按下去只有沙沙的电流声。手机信号掉到一格。她拍了两下门,外面走廊传来脚步声,急促杂乱,不止一个人。有人压着嗓子喊:“那屋门开着,搜。”
是赵建国的人。比预想的来得快。
她立刻蹲下,手指插进电梯门中缝用力往两边掰。老旧曳引电梯的厅门没有轿厢锁死装置,硬掰能错开一道缝。光线从外面灌进来,她看见自己悬在七楼半——轿厢底板卡在七楼和八楼之间,井壁距门不到四十公分。
缝隙里能看见对面井壁上嵌着一排镀锌线槽,检修口盖板没了,裸露的线缆捆扎得整整齐齐。她伸手一探,指尖碰到一个冰冷的东西:黑色硬盘,巴掌大小,缠着防水胶带,卡在线槽支架和井壁夹角里。胶带表面用记号笔写着“B3-7”。
陈铭说的“桥架北端”根本不在楼顶,在电梯井道里。
她把硬盘往怀里一揣,正要缩回来,余光扫到井壁混凝土上有一行浅刻痕。手指摸过去,是拿尖锐工具划出来的,数字和字母混排,每五位一组,组间用斜杠隔开。她掏出手机打开那个txt文档比对——完全一致。这是哈希校验码,完整数据块的指纹。有人提前算好刻在井壁上,就算硬盘被搜走,只要校验码在,就能证明原始数据存在过且未被篡改。
“七楼电梯卡人了!”老周的声音从楼下传来,紧接着是金属工具撬门的响动。林薇迅速把检修盖板扣回去,抹掉指纹,又把外套拉链拉到顶盖住怀里硬盘的凸起。
厅门被人从外面扒开半米宽。老周探进半个脑袋,后面跟着两个穿深蓝工装的生面孔,其中一个手里拎着撬棍。
“小姑娘你没事吧?”老周伸手拉她,目光扫过她鼓囊囊的外套前襟,停了一瞬。
林薇抓住他手腕借力跨出轿厢,脚落在七楼走廊的瞬间,听见八楼传来陈铭的声音,嗓门大得整栋楼都听得见:“姓赵的你别血口喷人!我他妈租这房就是图便宜,什么数据不数据的——”
然后是摔东西的动静。两个工装男对视一眼,拎着撬棍往消防梯跑。老周拽了林薇一把,把她往七楼走廊深处推:“走楼梯,别坐电梯,别回屋。”他手里多了一把钥匙,正是刚才那把银色扁平的,捅开了703的房门——那是整栋楼唯一一间常年空置没人住的房。
“进去。等天黑再出来。”老周把门带上之前,浑浊的眼珠盯着她胸口,“那东西别放身上,703卫生间顶上有块活动铝扣板,塞夹层里。”
门锁咔嗒合上。林薇背抵门板滑坐在地,摸出硬盘翻到背面,胶带底下还粘着一张小纸条,陈铭的字迹潦草:“校验码刻在井壁,赵的备份服务器密钥是旧项目验收日+楼栋号,你生日那组。”
她拨通陈铭另一个备用号码。响了一声就接了,那头喘着粗气,背景有风声,像是在楼顶。
“硬盘拿到了?”
“拿到了。你在哪?”
“天台水箱后头。他们搜完屋子找不到东西,暂时不会上来。”他顿了顿,“老周反水了。”
林薇心里一沉。
“那把银钥匙是他主动给赵建国配的,”陈铭声音压到几乎听不见,“刚才他拿你换那帮人撤走。你信不信,天还没黑他就会找借口敲703的门。”
林薇低头看手里的硬盘,又抬头望向703卫生间那扇发黄的磨砂玻璃窗。外面走廊传来老周和那两个人说话的声音,隐约听见“等她出来再说”。
“陈铭,”她攥紧硬盘,“你当年备份了几份?”
“三份。一份在硬盘里,一份刻在井壁校验码里,还有一份——”
电话突然断了。走廊声控灯亮起来,脚步声停在703门口。
8
洲际酒店宴会厅的灯光亮得晃眼,水晶吊灯把红色背景板照得像一面巨大的血墙。林薇坐在第十七排靠过道的位置,手机屏幕显示十九点四十七分,距离年会直播信号接入还有十三分钟。她把手伸进手包里摸了摸那枚从电梯井带出来的备用硬盘,金属外壳已经被掌心捂得温热。
舞台上赵建国正在和主持人说笑,深灰色西装剪裁得体,胸前口袋里插着一支万宝龙钢笔。他今天是年度最佳管理者候选人,演讲顺序排在第五个,按照流程表上的时间,二十点整他准时上台。
林薇看了一眼手机上的定时邮件设置界面——附件总计一百三十七兆,收件人栏填的是公司全员邮件组,发送时间锁定在二十点零三分。那是赵建国演讲进行到第三分钟的时候,大屏幕恰好会切到他的业绩展示PPT。
“紧张?”
旁边递过来一杯香槟。林薇转头,看到项目组同事方琳正冲她笑,嘴唇上涂着新买的枫叶红。
“有点。”林薇接过杯子没喝,“会议室空调开太低了。”
方琳凑过来压低声音:“听说赵总今天要宣布新一年的人事架构,你们组可能要独立成事业部。”
“是吗。”林薇的视线越过方琳的肩头,落在宴会厅东侧的安全出口。陈铭说过他会从那儿进来,以设备维护人员的身份混在音控台附近。
二十点整。赵建国从第一排站起来,边扣西装扣子边往台上走,步伐稳健得像走在自家客厅。他调整了一下麦克风,开口第一句话是“感谢各位同仁这一年的辛苦付出”,语调温和得让人几乎忘掉三年前那个被匆匆开除的实习生。
林薇的指甲掐进掌心。那个实习生是陈铭的助理,因为不肯在验收报告上签字,被赵建国以“试用期不合格”的名义当天清退。三天后陈铭消失。
“我们事业部今年的增长,主要得益于两个核心项目的突破。”赵建国点了一下遥控笔,大屏幕弹出第一张幻灯片,柱状图曲线漂亮得像教科书。
林薇盯着屏幕右下角的时间:二十点零二分四十七秒。
她打开手机飞行模式开关,又关上,重复了两次。方琳在旁边小声问:“你在等电话?”
“等信号。”林薇说。
二十点零三分。赵建国切换到第四页PPT,嘴里正说着“这个数据我们经过了多轮交叉验证”——大屏幕突然黑了。
宴会厅里响起零星的笑声,有人以为是投影故障。但黑屏只持续了两秒,随即跳出一张对比图:左侧是赵建国刚才展示的柱状图,右侧是同一项目原始数据的折线图,两条曲线在第三季度之后彻底分叉,柱状图凭空多出两千三百万的营收。
赵建国的声音卡在喉咙里。他按了两次遥控笔,屏幕纹丝不动。
台下第一排的财务总监猛地站起来,椅子腿在大理石地面上刮出刺耳声响。紧接着第二张图弹出来——银行流水截图,三笔款项从供应商账户转入海外私人账户,收款人姓名虽然打了码,但开户行和账号尾数跟赵建国上个月在内部会议上提交的报销账户完全一致。
“关掉!把投影关掉!”赵建国终于吼出声。
音控台后头两个工作人员手忙脚乱地拔插头,但屏幕像是被什么东西锁死了,第三张图开始自动轮播:陈铭三年前被删除的项目验收报告原件、赵建国签字的数据修改审批表、还有一段邮件截图——发件人是赵建国,收件人是当时负责审计的第三方公司,内容只有一行字:“按我给的数出报告,费用另付。”
宴会厅彻底炸了锅。有人站起来拍照,有人往门口挤,方琳抓住林薇的胳膊问“这什么情况”。林薇没回答,她看见赵建国掏出手机打电话,大概是在找IT部门远程切断会议室网络。
然后音控台旁边的安全门被推开,陈铭走进来。他穿着灰色工装外套,胸口别着伪造的设备维护胸牌,手里拎着一台没接任何线的笔记本电脑。他径直走向主舞台旁边的控制台,把电脑往桌上一放,点开一个视频文件。
屏幕上出现赵建国的脸,背景是城郊那个废弃数据中心。视频里的赵建国正对镜头说:“老陈,你把原始数据给我,项目奖金分你三成。你不说我不说,谁都不知道。”
拍摄日期是半年前——那时陈铭已经搬进林薇对门。赵建国显然不知道那次见面被录了像。
“赵总。”陈铭的声音通过麦克风传遍宴会厅,平静得像在念一份周报,“你让我销毁的那些服务器,我一块硬盘都没扔。”
赵建国站在台上,脸涨得通红,手指哆嗦着指向陈铭:“你——你这是非法入侵!保安!保安在哪!”
但保安没来。来的是集团总部审计部的三个人,从宴会厅后门进来时手里拎着公文包。领头的那个林薇认识,是她两个月前匿名寄出第一份线索材料时联系的审计专员。
赵建国被请下台的时候经过第十七排。他盯着林薇看了两秒,嘴角抽动了一下,像是想说什么。林薇迎着他的目光,把手机屏幕亮给他看——邮件发送成功的状态栏还挂在通知中心。
“赵总,”她说,“全员邮件,一万两千人,都收到了。”
赵建国被带出宴会厅后,投影仪终于被强行断电。宴会厅的灯重新亮起来,人群三三两两聚在一起议论,没人再有心思吃饭。陈铭从控制台后面绕过来,在林薇旁边坐下,把那台笔记本推给她。
“视频我拷了三份,”他说,“一份在这里,一份在物业老周的信箱里——他反水之前我备份了他的钥匙串数据,还有一份在——”
“在市局经侦支队的收件箱。”林薇接过话,“我寄的。”
陈铭愣了一下,然后笑了。三年来林薇第一次看到他笑,眼角的细纹挤在一起,像电梯井壁上那些刻得密密麻麻的校验码。
“你比我预想的进度快了两周。”他说。
林薇从手包里摸出那枚硬盘放在桌上,金属外壳映着宴会厅重新亮起来的灯。
“还剩最后一件事,”她说,“把井壁上的校验码拓下来,你那份备份得取出来做证据链闭环。”
陈铭拿起硬盘站起来,往宴会厅门口走了两步又回头。
“年会奖品你抽了吗?”
“没抽。”
“可惜了,”他晃了晃硬盘,“刚才二等奖是台咖啡机,你办公室那台不是坏了吗。”
林薇看着他的背影消失在安全出口,手机震了一下。方琳发来微信:“你跟那个修电脑的什么关系???”
林薇打了两个字回过去。
同事。
9
赵建国被带走那天是周三。两个穿深色夹克的男人在楼下等了他一整个上午,等他拎着公文包从单元门出来,一左一右把他夹在中间,动作熟练得像在菜市场拎走一条活鱼。
林薇站在四楼走廊尽头那扇积灰的窗户后面,看赵建国被塞进一辆黑色轿车。他弯腰进车门前回头往楼上看了一眼,目光扫过每一层阳台,像在找什么。林薇退了一步,没让他看见。
三天后人事任命下来,林薇升任项目总监。邮件是集团副总裁亲自签发的,抄送了全公司两百多号人,正文只有两句话:原项目总监赵建国因个人原因停职接受调查,职位由林薇同志接任。方琳把邮件截图发到部门小群,配了一长串感叹号,又单独私聊林薇:“晚上必须请客,贵的那种。”
林薇回了三个字:下周吧。
她这周每天加班到十点,推翻赵建国留下的排期表,重新对接三个延期最严重的供应商。周三晚上她拖着步子爬上四楼,在楼梯口闻到一股消毒水味道。对门那户的门虚掩着,里面亮着白惨惨的灯,一个穿碎花围裙的中年女人正往楼道里扫垃圾,扫帚底下卷着半张外卖单子和几缕头发。
“新搬来的?”林薇问。
“下午刚签的合同,”女人直起腰,把碎发别到耳后,“房东说之前那个租客走得急,连押金都没要。”
林薇往门里看了一眼。陈铭的书桌还在,桌上那台旧显示器没了,但角落里有块键盘被落下了——最上面一排键帽磨得发白,是他敲代码时最常用的功能键。碎花围裙女人顺着她目光看过去,说:“那键盘你要不要?不要我当垃圾扔了。”
“留着吧。”林薇说。
她回屋放下电脑包,在玄关站了十几秒,然后转身去敲对门的门。碎花围裙女人正在厨房烧水,灶台上摆着三只没拆封的纸箱,纸箱侧面用马克笔潦草写着“厨房用品”“被褥”“杂物”。林薇帮她把纸箱搬到卧室,搬第三只时手底下摸到硬邦邦的圆盘形状。
“这里面是什么?”
“不知道,前租客留下的。”女人拿剪刀划开胶带,里面是一块用气泡膜裹得严严实实的硬盘,贴着张便利贴,上面只有两个字:风控。
林薇把硬盘拿回家,插上转接头。里面没有陈铭之前藏匿的那些项目档案,只有一个文件夹,命名是“新项目避坑清单v3”。点开是一份四十七页的风险控制方案,从供应商资质审核到合同条款陷阱,从数据备份双轨制到核心人员竞业限制,每一条后面都标注了适用场景和实操案例。第三页的页脚写着一行小字:三年前那个项目但凡有一条执行到位,数据就不会被赵建国一个人改完再删。
周四中午林薇去物业办公室找老周换门禁卡。老周正对着一摞登记表发愁,见她进来把老花镜摘了往桌上一搁。
“你们那层对门,新租客的手续我还没来得及录系统。”
“我来就是跟你说这个,”林薇把旧卡递过去,“顺便问一句,之前那户退租时有没有留什么转交的东西?”
老周从一个铁皮柜子里翻出个牛皮纸信封,封口没粘,里面一张水电费结清单,背面用铅笔写了串手机号。老周说这是陈铭退租那天留的,说“要是四楼东户那个姑娘问起来,就把这个给她”。
手机号林薇拨过去,响了两声被挂断。半分钟后收到一条短信:清单看了?新项目第三季度采购那批传感器,供应商资质文件编号对不上,我标在第二十三页了。
林薇翻到第二十三页。陈铭用红框标了六家供应商,其中两家和林薇上周刚签框架协议的公司在同一注册地址。她打开工商查询系统比对股东信息,发现这两家的法人代表是赵建国前妻的表弟。
她给那个号码回短信:你人在哪?
对方隔了十分钟才回:火车站。别问去哪,等赵建国的案子判下来我会主动联系你。
林薇又打了三个字:风控方案。
这次回得很快:留着用。算我送你的升职礼物。
下午林薇带队开新项目启动会,方琳坐在长桌另一头翻那份打印出来的风控清单,翻到最后一页时“咦”了一声。末页夹着张便签纸,上面写:新租客在厨房顶柜里发现一台没拆封的咖啡机,房东说留给下个租户。你办公室那台不是坏了吗。
林薇散会后去对门敲门。碎花围裙女人正踩着凳子擦吊柜,见她进来往下递了个纸箱。林薇拆开,咖啡机崭新,电源线还捆着扎带。箱底压着一张快递面单,收件人写着“四楼东户”,寄件人那栏是空白,但寄件日期是今天——陈铭昨天说他在火车站,今天却从这座城市某个角落寄出这只箱子。
面单背面还有一行铅笔字:传感器供应商那两家,合同别签。我已经把工商比对和通话记录打包发你邮箱了。
林薇把咖啡机搬回自己厨房,插上电试了试,出热水正常。窗外天已经黑透了,对门新租客的灯亮着暖黄色的光,和之前陈铭那盏惨白的LED灯管完全是两种颜色。她打开邮箱,未读邮件里躺着一封来自匿名地址的压缩包,主题栏写着:新项目风控补充材料,看完删。