沪城老码头的潮腥味,三十年没散过。
林夜记得小时候母亲带他来这儿看船,她指着江面说:"沪城的魂一半在江里,一半在地底下。"那时候他不明白,现在想来,母亲说的从来就不是船。
凌晨两点四十七分。他站在距离案发现场三百米的废弃塔吊阴影里,看了一眼手机。屏幕上是一条三小时前的新闻推送:"沪城老码头发生恶性斗殴,三死两伤,警方已介入调查。"
新闻写了三行字,死了三个人。
林夜把手机揣回兜里。黑框眼镜后面的眼睛眯了一下,从左到右扫过码头仓库区的结构。五条通道,三条死路,两处高架监控盲区。他的大脑开始运转——不是思考,是运算。风速:2.3米每秒,江面方向,偏西南。气温:11度,湿度68%,水泥地面残留水渍,反光率中等。这些数据在0.1秒内被编码,然后丢进另一个计算模块。
三个死者。其中一人的身份他认识。
黑鲨帮少帮主,赵小虎。
林夜没有往下想。他转身走入夜色,脚步声被潮水声盖得严严实实。
同一时间,沪城大学东区男生宿舍楼303室。
林夜推开门的动作很轻,但门轴还是发出了一声极短的吱呀。他没有开灯。在黑暗中站了三秒,确认房内的呼吸节奏——陆川的鼾声均匀,频率每秒一次,没有异常。然后他才关门、反锁、脱鞋、坐到床沿上。
手机震动了一下。
一条来自陌生号码的短信:"你看到了不该看的东西。三天后我来找你。"
林夜看着屏幕,面部表情没有任何变化。他把号码记在脑子里,删掉短信,关机,闭眼。
但他没有睡。
他在算。
那三条通道上有三组鞋印。第一组是运动鞋,尺码42,步幅1.1米,男性,身高约178厘米,体重大概75公斤——赵小虎的。第二组是皮鞋,尺码40,步幅0.9米,男性,170厘米左右——尸体里多出来的那一个。第三组……
第三组鞋印出现在仓库后门,尺码不详,因为留下鞋印的人处理过现场。但那人漏了一样东西:仓库后门的锁是被内部打开的,没有撬痕。也就是说,杀人者从里面出来,然后从外面把门锁上了。赵小虎死在自己的地盘里,被自己人约来的。
"三天后"——这个时间节点很奇怪。短信不是威胁,是通知。发信人知道林夜看到了现场,但不确定林夜手里有什么。三天,是给林夜"准备"的时间,也是给发信人"观察"的时间。
林夜睁开了眼。
黑暗中他的瞳孔无声收缩——这个动作他自己都未必察觉,是三年独行养成的肌肉记忆。他从枕头底下摸出母亲的旧怀表,在指腹间转了半圈,又放了回去。
第二天早晨七点二十分。沪城大学第三食堂。
"夜哥!夜哥这儿!"
陆川坐在靠窗的位置冲他挥手,嘴里还叼着半个包子。林夜端着餐盘走过去坐下,豆浆、一个茶叶蛋、两根油条。三年如一日,早餐的花样没变过,陆川吐槽过无数次"你这样活着有什么意思"。
"昨晚又熬夜?"陆川凑近了盯着他的脸,"你眼睛下面那两块黑,跟被人揍了两拳似的。"
"写论文。"
"扯。你写论文比谁都利索,大四那点东西你三天能整完。"陆川压低声音,挤眉弄眼,"是不是又接那个什么……夜……夜什么?"
林夜看了他一眼。
陆川立刻举手投降:"行行行我不问。你那个'特殊兼职'我一个字都没跟别人提过。但你记着啊,有事叫我。"
"你F级。"
"F级怎么了?F级也能搬个弹药箱递个板砖啥的!"
林夜没有接话。他的注意力落在食堂入口处——一个穿深灰风衣的女人走了进去。短发,右肩略微高于左肩,腰背挺直,步频稳定。她在门口停了半秒,目光扫过整个食堂,然后左转,朝靠墙的位置走去。
动作太快,普通人不会注意到那半秒的停顿。但林夜看到了——她在做区域排查。
沈清辞。
他没见过真人,但见过档案。沪城武卫分局特别调查组组长,26岁,C级巅峰。档案上写的是"擅长近身格斗与追踪"。但档案不会写另一件事——这个女人三年前破了跨境走私案,两个月前端掉沪西地下拳场,每一桩都是"直觉型破案",不走常规流程。
"我吃好了。"林夜把筷子搁下。
"啊?你茶叶蛋还没——"
"上午有课。"
他端着餐盘起身,经过沈清辞桌边的时候没有看她。但他确认了一件事:沈清辞面前的豆浆没动过,眼睛却一直在看食堂后门的方向。她在等人,也在观察所有人。
他走出食堂大门的时候,手机又震了。不是短信,是校内系统推送的课程调整通知:"今天上午《近现代史专题》因故临时更换教室,新地点:三教201。"
林夜的脚步顿了一下。
三教201,就在沈清辞那桌斜对面上方的二楼窗边。
她不是来吃早餐的。她是来看"某个特定的人"的。而那个人,刚好在今天上午第一节课临时换了教室。
林夜推了推眼镜,继续往前走。
上午九点十分,三教201。
三十个学生稀稀拉拉坐着,老师在讲台上翻PPT。林夜坐在倒数第二排靠窗的位置,课本摊开,笔偶尔在纸上划两下。他在记录另一件事——窗外街对面停着一辆黑色SUV,从八点五十五分就没动过。车牌号他昨晚在老码头附近的监控录像里见过。
那辆车跟着他来的。
他合上课本,看了一眼手表。九点十二分。距离短信说的"三天后"还有两小时十六分钟——他昨晚零点收到短信,"三天后"严格按时间算,是今晚零点。但显然有人不打算等到那时候。
下课铃响。林夜从后门离开,走楼梯下到一楼,穿过连廊,从图书馆侧门出校。全程没有回头,但他在经过三面落地窗的时候,依次确认了三件事:黑色SUV跟上了,距离大约80米;后座有人,至少两个;前座司机戴着鸭舌帽,帽檐压得很低。
他拐进一条巷子。
巷子长度约120米,两端通街,中间有三个岔口。他选择了中间那个岔口——不是随便选的,那个岔口有一家修车铺,修车铺后门通菜市场,菜市场每天上午人流量最大,最适合甩掉尾巴。
但他刚拐进去就停了。
巷子中间,修车铺门口,一个穿黑色夹克的男人靠在墙上抽烟。那人看见林夜,把烟头弹到地上,踩灭。动作不急不慢。
"林夜同学?"
林夜没有说话。大脑开始建模——对方身高182左右,体重85公斤,肩宽背厚,站姿重心偏右,右手拇指有老茧,长期握刀或棍类武器。等级大约E级巅峰,或者D级初期。
"有人让我带句话。"黑夹克往前走了一步,"昨晚的事,你最好忘干净。"
"哪件事?"
"少他妈装。"黑夹克咧嘴笑了一下,"仓库,凌晨,三具尸体。你是历史系的,应该知道'守口如瓶'四个字怎么写。"
林夜推了推眼镜:"我不认识你。"
"你认不认识我不重要。重要的是——"黑夹克从后腰抽出一根甩棍,手腕一抖,钢棍弹开,在阳光下泛着暗光,"你记性是不是真的那么好。"
甩棍落下来的时候,风速2.1,湿度59,地面有修车漏的机油,摩擦系数比正常路面低大约12%。黑夹克的右肘先抬了0.2秒,肩胛骨向后收缩,腰胯扭转幅度比普通横扫大了15度——这说明他发力过猛,重心偏得太靠前。
林夜侧身。
甩棍擦着他的左肩掠过,距离只有两厘米。
黑夹克愣了一下。
林夜已经在他左侧,右手抬起,四指并拢,在他肘关节内侧三寸处一扣——这里是人体的"麻筋"位置,不需要多大力气,角度对就能让整条胳膊断电。黑夹克闷哼一声,甩棍脱手,金属砸在水泥地上弹了两下。
林夜没有追打。他退了一步,站回原来的位置,像刚才什么都没发生。
"回去告诉你老板,"他弯腰捡起地上的甩棍,捏着末端递还给黑夹克,语气平淡,"下次派个D级以上的来。你一个E级,差了点。"
黑夹克没接甩棍,脸色一阵白一阵青。他右臂还在发麻,怎么抬都抬不起来,整条手臂像灌了铅。他想放句狠话,嘴唇动了动,最后只挤出一个"你"字。
林夜已经把甩棍搁在修车铺门口的废轮胎上,转身走了。
他没有走菜市场那条路——尾巴甩掉了,但还有其他人在看。巷子二楼的窗户,有一扇窗帘刚刚动了一下,拉动的幅度很小,很克制。他记住了那个窗户的位置,在心里标注了一个问号。
回到学校已经是中午。陆川给他发了五条微信,从"中午吃啥"到"你咋不回消息"到"我帮你带了饭放桌上了你记得热"——最后一条带了一个哭脸表情。
林夜回了一个字:"谢。"
他把手机放到桌上,解开外卖袋的结——陆川打的是他最常吃的酱爆猪排饭,连米饭少一点、猪排切四块、不要葱花这些细节都对,陆川看着不靠谱,但能记住他所有的生活细节。这是林夜把这个人留在身边的全部理由——非常少,但足够重。
他吃着饭,把昨晚到今天的线索在脑子里串了一遍。
赵小虎死在老码头,凶手从内部锁门离开。有人知道他在场,但不确定他看到什么。沈清辞今天早上出现在学校,时间卡得太精准,应该是有人通知了武卫分局。黑色SUV跟了他半个上午,背后的人想"警告"他,而不是直接杀他——这说明杀赵小虎的人不想把事情闹大,恐吓比灭口成本低。
三条线。黑帮、武卫、一个藏在幕后的身份不明者。三条线在同一个早晨,同时围到了他身边。
林夜放下筷子。他看向桌角的旧怀表,母亲留下的唯一遗物,表壳上的划痕被他手指磨了很多年,已经变得光滑。
"三天"——短信说的三天还剩不到十二个小时。
他拿起手机,打开一个加密通讯软件,找到一个从未主动联系过的联系人。头像是一枚硬币,昵称只有一个字:"枭"。
林夜输入了一行字:
"老码头,昨晚两点。三具尸体。我要凶手之外的那个信息。"
对方秒回:"价格?"
"你开。"
"你欠我一次。"
"成交。"
林夜放下手机。窗外的沪城午间阳光正烈,照得宿舍地板上半明半暗。陆川的闹钟突然响起来,是他的"午睡提醒",响了三声后自动关闭。宿舍里重归安静。
林夜闭上眼。
他的大脑在继续运算,但这一次算的不是风速和肌肉角度。他在算更大的东西——母亲失踪后这十年,他所有查到的碎片,像散了一地的拼图,缺了最关键的一块。老码头那具不在名单里的尸体,也许就是那一块。
他睁开眼,拿起旧怀表,按了一下侧面隐藏的弹钮——这是母亲失踪后第三年他在一次偶然中发现的,弹开后表盖内侧有一行极细的刻字,刻的是经纬度坐标。他查过,坐标指向沪城西北郊区,一座二十年前就已废弃的旧研究所。
三天后他打算去那里。
但如果今晚有人来找他——来就来吧。
他重新扣好怀表。窗外的光照在他的黑框眼镜上,镜片反光,遮住了他的眼神。
【第一卷·第一章完】
第二章 课堂之上的枪口
下午两点。沈清辞第二次走进了沪城大学。
这一次她没有去食堂,直接去了行政楼二楼的临时问询室。两小时前她申请了以"警方协查"名义的入校许可,理由是"调查一起夜间治安案件"。这个理由很软,对方没理由拒绝,但也没给任何配合。
问询室是一间闲置的办公室,两面墙的书架,中间一张桌子。沈清辞坐在靠门的那一侧,面前放着一杯凉透的茶。她没喝过。
"组长,嫌疑人那边……"
"不急。"沈清辞靠着椅背,右手在桌面上轻轻敲了两下——食指和中指交替,节奏稳定。"他的课表上今天下午第一节在二教301,还有四十分钟。把他之前一周的通话记录和社交媒体活动轨迹调出来,我要看。"
"已经发到你终端了。"
沈清辞打开平板,快速滑动了几屏。林夜,22岁,沪城大学历史系大四。成绩单上全是B+和A-,稳得不像话。社交账号每周发两三条动态,内容全是课程相关或转发的新闻,三年如一日。通话记录更干净,联系人的高频度排序前三名是:陆川、辅导员、图书馆预约系统。
太正常了。
正常到让她觉得不正常的程度。
她把平板放下,从风衣内袋抽出一张打印照片。照片上是老码头仓库内部,地面有血迹和标记好的足迹。其中一个足迹——在仓库后门内侧——鞋底纹路和另外三组都不一样,品牌型号是某国产平价运动鞋,41码。重量估计60公斤左右,身高175上下。
和林夜的数据吻合。
但这也可能是一个巧合。她需要更多。
"他最近有没有去过老码头附近?"
"查过了。基站定位显示,他昨晚十一点之后在宿舍,直到今天早上七点。"
沈清辞眯了一下眼。基站定位只能精确到几百米,而老码头到沪城大学的直线距离是四公里,中间隔着三个基站的覆盖范围重叠区。这个"证明"太干净了。
"把他的室友叫来。"
"现在?"
"现在。"
十分钟后,陆川被带进了问询室。他一脸困惑,手里还捏着半根没吃完的烤肠,看见沈清辞的制服徽章时愣了一下——武卫分局的标识,银色盾牌,他认得,因为他自己也有一张F级的武卫卡。
"你好,我是特别调查组沈清辞。"她示意对面坐下,"别紧张,就聊几句。"
"哦哦,好……"陆川把烤肠塞进嘴里,咽下去,擦了擦手,"那个,我室友林夜他犯事儿了?"
"没有。你只要回答几个问题就行。"沈清辞拿出一个本子,没写任何字,只放在桌上——有些人在面对"空白"的时候会更放松,更容易说多。"林夜最近有没有什么异常表现?比如晚归、身上带伤、接到奇怪的电话之类的。"
"异常……"陆川挠了挠头,"夜哥那人,一直都挺正常的。晚归的话,他在图书馆经常待到闭馆。伤倒是有一次,上周他胳膊肘蹭破了一块皮,我问他说是赶路绊了一跤。"
沈清辞在本子上画了一个圈。她注意到陆川称林夜为"夜哥",语气亲近自然。但这个人的回答太流畅了——不是像林夜那样"太正常"的流畅,而是"他在保护一个人"的流畅。
"你昨晚在哪儿?"
"酒吧。跟朋友喝酒,喝到差不多一点?两点回宿舍的。"
"你回去的时候林夜在吗?"
"在啊,他都睡了。灯关着,就他床头那个小夜灯亮着。"
沈清辞点头,合上本子。"谢谢你配合,没事了。"
陆川站起来,走到门口又回头:"那个……沈警官,夜哥他真的没犯事吧?"
沈清辞看了他两秒。"暂时没有。"
陆川走后,沈清辞靠在椅背上,揉了揉后颈。她的直觉在告诉她一件事:陆川在替林夜打掩护。但这不重要,两个室友互相打掩护很正常。重要的是——林夜是故意让陆川这么做的,还是陆川自己主动的?
如果是前者,那林夜的布局能力比她想的更深。如果是后者,那说明这个人有一种能让身边人无意识替他卖命的能力,也不简单。
四十分钟后。二教301。
沈清辞从后门走进去的时候,教室里大约坐着六十个学生。她没有刻意低调,风衣、短发、干净的轮廓,在大学生堆里已经足够引人侧目。她选了最后一排靠墙的位置坐下,正前方隔了三排,就是林夜的背影。
她在观察。
林夜的坐姿很标准,但不僵硬——背靠椅背,课本摊开,右手拿笔,偶尔在本子上记录。耳朵没有戴耳机,头没有低到"回避周边"的角度,呼吸频率平稳。一个真正有秘密的人,在意识到自己被盯上时,通常会出现两种反应:过度的警觉,或者过度的松懈。林夜两种都不是,他维持着一个"普通学生"该有的全部细节。
有意思。
课上了二十分钟。沈清辞的目光一直落在林夜的后脑勺上,但她发现了一件事——林夜在这二十分钟里,一次都没有回头看。
她坐到他正后方,隔了三排座位。一个正常人在被陌生人持续注视的情况下,即使不回头,也会有下意识的头部偏转或肩部微调,这是生物的本能警觉。但林夜完全没有。这说明两种情况:第一,他真的感觉不到。第二,他感觉到了,但他在控制自己的本能反应。
沈清辞倾向于后者。
课间休息。林夜合上课本,起身往后门走。沈清辞没有动。她看着他走向走廊尽头的饮水机,然后转角——监控盲区。她起身跟了出去。
走廊转角处,林夜正在接水。塑料杯在出水口下接了大半杯,他直起身,转过来,看见了她。他没有露出任何惊讶的表情,只是微微点头,算是打了招呼。
沈清辞走到他旁边,也接了一杯水。两人并排站着,中间隔了一个身位。
"林夜同学?"
"嗯。"
"你最近去过老码头吗?"
林夜喝了一口水,放下杯子。"沈警官,如果你想问昨晚的事,我的回答和之前一样——我在宿舍。"
"我知道。"沈清辞偏头看他,"但我在想一个问题。你昨天晚上十一点在宿舍,今天早上七点在食堂,中间八个小时。宿舍的床单你叠得很整齐,枕头边放了一本翻到一半的书。但你室友回来的时间是凌晨两点,你室友说你在"睡觉"。"
她顿了一下。
"你怎么证明自己两点的时候在睡觉?"
林夜把纸杯捏扁,丢进垃圾桶。他转过来面对她,表情平静,黑框眼镜后面的眼睛里看不出任何情绪波动。
"沈警官,你怀疑我什么?"
"我没说怀疑你。我只是在核实。"
"好的。"林夜从兜里掏出手机,打开一个APP递给她,"这是我宿舍门禁的记录,昨晚十一点零三分刷卡进门,到今天早上六点五十二分刷卡出门。中间没有外出记录。"
沈清辞扫了一眼。她早就查过这条记录,确实如此。
但她的直觉在说另一件事——他在等她问这个问题。他把"证据"准备好了,像把牌摆好了等对手来翻。这与其说是在自证清白,不如说是在测试她的调查能力。
她笑了笑:"谢谢配合。"
"不客气。"
林夜转身往教室方向走。沈清辞在他身后补了一句:"林夜同学,你这周要是有空,来分局做个详细笔录吧。普通协查,走个流程。"
林夜脚步没停,只侧了一下脸,幅度很小。
"好。周四下午。"
沈清辞看着他走进教室的背影,脸上的笑意慢慢收了。她低头看了一眼自己的右手——握水杯的时候,拇指和食指的姿势。
她刚才接水的时候用的是左手。出门的时候走的也是左侧。
但他递手机过来的时候,直接给了她右手。在不知道她惯用手的情况下,他准确地避开了她的"有利手侧"。
这是一个下意识的小动作。但一个正常的大学生,不该有这种"本能式"的避险意识。
沈清辞把纸杯丢进垃圾桶。直觉告诉她,周四的笔录不会比今天得到更多东西。但她不急,她有别的办法。
她在沪城武卫分局的资料库里搜了林夜的全名——没有任何修行记录、没有任何武卫注册信息、没有任何底案。空白得干干净净。
但正是这份干净,让她想继续查下去。
同一时间,林夜回到座位上。他翻开课本,笔尖在纸上写了一个词,又划掉,换了一个新的:"周四。下午。分局。"
然后他在这个日期下面画了一条横线,在横线末端写了一个问号。他需要在那之前把老码头的事情查完,否则周四走进武卫分局的时候,他会多一个没有答案的问题。
下课铃响的时候,他的手机震了一下,是加密通讯软件的通知。夜枭的头像亮了,发来一条信息:
"你要的东西我查了一半。老码头那具不在名单里的尸体,身份查不到。但有一件事——赵小虎的死亡时间比官方定的早了大约四十分钟。官方说两点,实际上一点二十左右已经断了气。"
"你怎么知道?"
"法医报告的原始版本。有人改过数据。"
林夜合上手机。
赵小虎一点二十死亡,但官方报告写两点。四十分钟的时间差,足够一个人从老码头赶到沪城大学,再从沪城大学赶回现场——制造一个"不在场证明"。
而那四十分钟里,他在哪里?
他把手机放回兜里。下午的阳光透过窗户斜照在课桌上,粉尘在光柱里悬浮。教室里的学生陆续起身离开,嘈杂声此起彼伏。林夜坐在原地,推了推眼镜。
四十分钟。
他把这个数字存进了大脑里,和旧怀表里的经纬度坐标放在同一个位置。
那里是他所有的"未解之谜",像一排等待拆开的信封。