林深语回到社区警务室的时候,天已经黑了。
警务室里亮着一盏灯。值班的小王趴在桌上睡着了,面前摊着一碗泡面,汤已经凉了。林深语没有叫他,径直走进里间的办公室,把门关上。
她把证物袋放在桌上。隔着透明塑料袋,那部屏幕碎裂的手机安静地躺着。
她坐下来,从抽屉里拿出那本旧笔记本。翻开到刚才写的那一页。
“程序。投影。定时。执念的载体。”
她在这行字下面又加了一行:
“密码=小宇生日 ‘爱你’。他不是在锁文件。他是在写遗言。”
然后她放下笔,看着笔记本。这本笔记本是她父亲林海生留下的。封面的皮已经磨掉了一块,边角有折痕。里面写满了案件记录,有些页面被水渍晕开,有些字迹潦草得几乎无法辨认。
她从来没有完整翻过一遍。
她的拇指停在笔记本的边缘。那是她多年来反复做过的动作——想翻开,又停住。
然后她把手收回来,拿起桌上的证物袋,拆开封条。
手机开机。电量百分之九十七。
她重新输入密码:120425。锁屏解开。
桌面壁纸是一家三口在游乐园门口的合照。小宇骑在周明脖子上,双手抓着他爸爸的头发。陈慧芳站在旁边,歪着头,笑得很用力。周明在笑,但他的眼神有点紧张,像是怕小宇摔下来。
林深语盯着这张照片看了很久。
然后她点进那个叫“告别”的程序。
程序界面很简陋。只有一个视频文件的列表,和一行小字:
“播放次数:0/1”
意思很清楚。这个程序设定的播放次数上限是一次。播放完,就自动终止。
她点开视频。
视频全长十七分钟。
画面开始。周明坐在电脑前。背景是深夜的办公室,身后的工位都空了,只有他头顶的灯亮着。他穿着那件深蓝色格子衬衫,领口有点皱。眼镜反着屏幕的光。他看着镜头,深吸一口气。
然后开始说话。
“小宇,爸爸今天录个视频给你。”
他的声音有点紧张。他停了一下,扶了扶眼镜。
“你五岁生日快到了。爸爸在想,要跟你说什么。”
他又停了。他低下头,看着键盘。屏幕外面的手可能在攥着什么。
“爸爸可能,不能陪你过五岁生日了。”
他说这句话的时候,声音没有抖,但他的喉结动了一下。
然后他忽然笑了。
“哎,说错了,重来。”
视频没有跳。他伸手在屏幕外按了一下什么。画面闪了一下,然后又是他。同样的姿势,同样的表情。他重新开始。
“小宇,爸爸录个视频给你。你五岁……”
他卡住了。他又低下头,这次低得更久。等他抬起头的时候,眼眶有点红。
“小宇。”
“爸爸不知道怎么说。”
“录了好多遍,都说不完。”
他摘下眼镜,揉了揉眼睛。然后重新戴上。
“算了,先想好词再说。练习,练习。”
视频结束。
林深语没有动。
她看着定格的画面,周明摘下眼镜的瞬间。他的眼睛很亮,是那种拼命忍眼泪的亮。嘴张着,像是还有话没说完。
她重新点开视频。
这次她没有看周明的脸,而是看背景。屏幕的光照亮了周明身后的工位。那个工位上有一张便利贴,颜色很显眼。她暂停视频,放大。
便利贴上写着一行字:“周哥,别熬了。身体要紧。——小王”
她把画面往前拖。另一个片段里,背景多了个人影。那人站在办公室门口,应该是在跟周明说话。周明冲他摆了摆手,然后那人走了。
凌晨一点,整层楼只有周明一个人。
他在录这个视频。
一遍又一遍。
林深语关闭视频,点进程序文件夹的底层目录。
她不是程序员,但她在社区警务室干了好几年,知道怎么看文件。目录结构很乱,到处是临时文件。她翻到一个文件名:
“projection_config”
点开。是一行行代码。她看不太懂,但能辨认出几个关键词。
“start_time”“end_time”“target_distance”
启动时间。结束时间。目标距离。
她把代码往下翻,翻到启动时间的设定参数。
“start_time = 23:59:55
loop_delay = 5s
target_time = 00:00:00”
每天二十三点五十九分五十五秒启动。延迟五秒。零点整开始投影。
和小宇说的时间完全吻合。
她继续往下翻。
“target_distance = 0.8m”
目标距离零点八米。她把手机放在桌上,在空气中比了一个高度。
零点八米。大约是七岁孩子躺下后的视线高度。正对卧室门口。
她又往下翻。
“video_file = ‘birthday_message.mp4’
audio_module = ‘system_default’
projection_module = ‘holographic_test_v2’”
她忽然意识到一个问题。程序设定的是零点开始投影。但小宇说,那个影子会站十分钟。
她把代码翻到最后。在结束时间那一栏,她看到了一个让她停住的东西。
“terminate_trigger = ‘playback_complete OR manual_stop’”
终止条件:播放完成,或手动停止。
但视频全长十七分钟。
程序设定只播放十分钟。
她闭上眼睛。过了很久才睁开。
她明白了。
周明没有写完这个程序。
他只录了练习的视频。一直在练习。每一遍都在卡壳。每一遍都说不完最后那句话。他计划录好一段完整的祝福,然后把视频植入程序,设定零点自动投影。
但他没来得及。
他最后一次调试程序是在去世前一天。他那天录到凌晨三点。程序还是有问题。他在代码注释里写了一行字,然后把程序锁进了那个叫“告别”的文件夹。
林深语找到了那行注释。
“程序可以有bug,但爸爸的爱不能有。再试一次。”
她看着屏幕上的这行字,看了很久。
然后她拿起手机,拨通了陈慧芳的电话。
“陈姐。你先生录了一个视频。是给小宇的五岁生日祝福。”
电话那头沉默了一会儿。
“……他在视频里说什么。”
“他还没录完。每一遍都没说完。但他录了很多遍。”
“多少遍。”
林深语低头看着屏幕上的文件列表。视频文件的创建时间和修改时间,排成了长长一列。
“十七分钟。他反复录了十七分钟。”
电话那头传来一声很轻的声音。像是陈慧芳在捂嘴。
过了很久,陈慧芳的声音才重新响起。
“他就是这样的人。嘴很笨。想说的话永远说不完。”
“但他一直在试。”林深语说。
陈慧芳哭了。她没有说话,只是在电话那头哭了。
林深语等她慢慢停下来。
“陈姐。你先生录的是练习。他还没来得及录好完整的版本。但这段练习,我觉得他希望你和小宇看到。”
“……为什么。”
“因为密码是小宇的生日,加上‘爱你’。他锁这个文件夹,不是因为不想让人看。是想让它等到该被看到的时候。”
电话那头安静了。
“明天晚上,”林深语说,“我可以带一个人来。他可以帮你先生把没说完的那句话说完。”
“什么话。”
“‘爸爸不是故意走的。’”
陈慧芳没有回答。她大概已经说不出话了。
林深语挂了电话。
她坐在桌前,看着手机屏幕上那个叫“告别”的文件夹。
然后她打开微信,给顾铮发了一条消息。
“程序找到了。是一个全息投影定时程序,设定每晚零点启动,投影位置正对卧室门口。他录了一段视频,但没录完。程序有bug,投影模糊、没声音。”
发送。
然后她又发了一条。
“他把程序叫‘告别’。密码是他儿子的生日加上‘爱你’。”
对面显示“对方正在输入”,然后停了。然后又显示“正在输入”。
最后消息进来了。
“明天几点。”
“晚上十点之前。”
“可以。”
林深语放下手机。她靠回椅背,闭上眼睛。
脑海里浮现出一个画面。
一个程序员。深夜的办公室。他一遍又一遍地对着镜头说话,一遍又一遍地说不完。他的同事在便利贴上写“别熬了”。他冲他们摆手。他知道自己快死了。他想告诉儿子,爸爸不是故意走的。
但他太笨了。
笨到连一句完整的话都录不完。
笨到写了一整个程序,却修不好最后一个bug。
笨到用十七分钟反复练习,却在最后一刻,还是没有来得及。
林深语睁开眼睛。
窗外,滨城的夜晚灯火通明。远处的写字楼亮着零零星星的灯。每一盏灯下面,可能都坐着一个还在加班的人。
她把手机放回证物袋。
然后她翻开了父亲那本旧笔记本。
翻到第一页。
第一行字。
“有些案子,是要用一辈子去解的。”
林深语的拇指抚过那行字。墨迹已经很淡了,但笔力还在。父亲写字的时候总是很用力。
她翻到第二页。上面是父亲记录的第一个案子。案发地点在鹿鸣镇。记录很短,只有三行字和一个问号。
她看着那个问号。
窗外,城市的引擎声远远近近,像浪潮一样涌来涌去。
她合上笔记本,放回抽屉里。
然后她拿起手机。顾铮又发来一条消息。
“那个程序文件夹底层,我看你发的截图,好像不止一个文件。有没有一个叫‘backup’的文件夹。”
林深语重新打开程序目录,往下翻。
在底层文件夹的最后,她看到了一个文件夹。名字是“backup”。
她点开。
里面只有一个文件。文件名是“for_chen”。
不是给小宇。
是给陈慧芳。
她盯着那个文件名,很久没有动。
然后她给顾铮发消息。
“有。叫‘for_chen’。”
对面秒回。
“明天带过来。一起看。”
林深语把手机装进口袋。她站起来,走到窗前。
窗外是滨城的夜晚。云层已经彻底散开了。月亮很亮,照在老城区的屋顶上。
她想。
一个知道自己快死的人,用最后的时间写了一个程序。
程序的名字叫“告别”。
里面有两个文件夹。
一个叫“给小宇”。
一个叫“给陈”。
他的告别,不止对一个人。