江舸第一次注意到那个数字,是在凌晨两点十七分。
他刚加完班回到出租屋,洗完澡躺在床上,习惯性地点开微信运动。这是他一个说不上好也说不上坏的习惯——每天睡前看一眼排行榜,给步数最多的几个朋友点个赞,然后关灯睡觉。排行榜拉到底的时候,他看见了那个名字。
陆止。
排在第七十四位,步数444。
江舸盯着那个数字看了大概有十秒钟。444,三个四,整整齐齐地排列在陆止的名字后面。头像还是那张——陆止穿着一件灰色的连帽衫,站在一座不知道什么山的山顶,背后是雾蒙蒙的天空。他眯着眼睛,嘴角微微上扬,像是被阳光刺得睁不开眼,又像是在笑。
这张头像已经九个月没有变过了。陆止的头像,陆止的朋友圈,陆止的微信运动步数,在九个月前的一个周二之后,全部归零。江舸记得很清楚,因为那天是他去殡仪馆送陆止的日子。
陆止是溺水走的。七月中旬,公司团建去海边,傍晚自由活动的时候陆止一个人去游泳,浪把他卷走了。救生员把他捞上来的时候人已经没了。江舸站在殡仪馆的走廊里,看着陆止的母亲被人搀着从灵堂里走出来,老太太的腿软得像两截泡了水的面条。他想上去说点什么,但最终什么都没说。他和陆止认识六年,从大学开始就是最好的朋友,但那一刻他发现自己连一句安慰的话都组织不出来。
后来他参加了葬礼,帮忙收拾了陆止的遗物,把陆止租住的房子退掉。陆止的手机在遗物堆里。屏幕碎了,边框变形,充不进电,开不了机。陆止的母亲把手机连同充电器一起塞进了骨灰盒旁边的收纳袋里,说让孩子带着。江舸当时想,也好。
之后九个月,陆止的微信运动步数一直是0。
江舸从来没有删过陆止的好友。他不知道别人是怎么处理已故好友的微信的,他只知道每次换手机、每次清理联系人,陆止的头像都安安静静地躺在通讯录里,从没被他划进“待删除”的那一栏。偶尔翻到的时候他会点进去看一眼,朋友圈停在去年七月那条“海边的云真好看”,配图是灰蓝色的天空和被夕阳染成橘色的海浪。那是陆止生前最后一条动态,发出去之后不到三个小时,浪就把他卷走了。
九个月来,陆止的微信运动步数一直是0。每天凌晨刷新,每天都是0。江舸已经习惯了在排行榜的最底部看见那个灰色的头像和那个0,像一座没有刻字的墓碑,安安静静地躺在所有活人的步数下面。
但今晚不是0。今晚是444。
江舸把排行榜刷新了一遍。页面重新加载,数字跳动,陆止的名字从第七十四位跳到了第六十八位。步数还是444。他退出微信运动,关掉微信,重新打开。刷新,加载。陆止的步数还是444。他把手机放下,拿起床头柜上的水杯喝了一口。水是凉的,滑过喉咙的时候带起一阵短暂的清醒。他重新拿起手机,点进陆止的主页。
微信运动个人主页显示的不是当天的步数,而是最近一周的步数曲线。陆止的曲线是一条平直的线,从周一到周日全部是0——不,不是全部。他把曲线图放大。周一是0,周二是0,周三是0,周四是0,周五是0,周六是0。周日有一个凸起。444。他把日期看了一遍。今天是周一凌晨。周日,就是昨天。
昨天,陆止的微信运动记录了444步。
江舸盯着那条曲线上唯一的凸起。444步是什么概念?一个成年男性正常步幅大约七十厘米,444步大约是三百米。三百米能走多远?从小区门口走到楼下,绕单元楼一圈,从单元门走到电梯口再走回来——差不多就是三百米。他把手机屏幕朝下扣在床上,闭了一会儿眼睛。然后重新拿起来,打开和陆止的对话框。
他们的聊天记录停在九个月前。陆止最后一条消息是:“明天去海边,你防晒霜带了没。”他回了一条:“带了。你别又晒脱皮。”陆止回了一个咧嘴笑的表情。那是七月十四号下午。第二天傍晚,陆止没有再回复任何消息。
此刻对话框里只有这些。没有新消息。江舸把对话框关掉,重新打开微信运动排行榜。陆止的步数还是444。他长按陆止的头像,弹出了菜单。投诉,拉黑,删除。他没有点任何一个。他把手机关了,放在床头柜上,关了灯。
黑暗里他睁着眼睛。天花板上的吸顶灯罩有一圈淡淡的阴影,是楼上漏水留下的水渍。他盯着那圈水渍,脑子里反复回放那三个数字。444。他想起陆止生前的一些事。陆止不信鬼神,不信命,不信任何无法被逻辑解释的东西。他是学计算机的,写代码的时候连缩进都要求严格对齐。如果他在世,看到自己的微信运动突然多了444步,他的第一反应一定是去查API接口、查数据同步逻辑、查有没有人盗用了他的账号。
账号。江舸忽然想到这一点。陆止的手机已经陪葬了,但微信账号还在腾讯的服务器里。理论上,只要有人在另一台设备上登录陆止的微信,那个账号就会重新产生步数。有人盗了陆止的号?他把这个可能性想了一遍。陆止的手机号在九个月前就注销了。没有手机号,没有SIM卡,怎么登录?除非那个盗号的人同时拿到了陆止的手机和SIM卡——但那两样东西都埋在公墓里。
他从床上坐起来,重新打开手机,给陆止发了一条消息。
“陆止?”
消息发出去了。没有红色感叹号,没有“对方已开启好友验证”,只是一个绿色的气泡,后面跟着“已送达”三个字。他等了一会儿,没有回复。他又发了一条:“你的微信运动今天有步数。是你吗。”没有回复。他把手机放下,躺回去。心跳在胸腔里敲得很响,太阳穴也跟着一下一下地跳。
第二天他照常上班。一整天,他每隔几十分钟就打开微信运动看一眼。陆止的步数一直停在444。没有增加,没有减少。晚上十点多他回到出租屋,洗完澡躺下,再次打开微信运动。排行榜刷新了。周一的数据已经更新,所有活人的步数都变了——有人走了一万二,有人走了八千,有人走了三百。陆止的步数还是444。
不对。周一的步数应该从零开始累计。如果他今天没有产生任何新的步数,那么周一的步数应该是0,周日的步数会留在昨天的排行榜上。但陆止周一的步数是444,和周日完全一样。这意味着什么?意味着周一他又走了444步。或者,不是“走了”,是那个444步被原封不动地从周日复制到了周一。
他把排行榜往下拉。陆止排在第六十四位。步数444。他把陆止的个人主页点开,周曲线图显示:周日444,周一444。两个凸起并排立在那里,高度完全相同。
周二,444。周三,444。周四,444。周五,444。周六,444。周日,444。
连续七天,陆止的微信运动步数全部是444。每一天,同一个数字。像一台被设定好程序的机器,每天凌晨刷新的时候,在他的名字后面自动填入那三个数字。江舸把截图发给了大学时候的共同好友程晏。程晏回得很快:“你是不是看错了?陆止的号早就没人用了。”江舸说:“你打开微信运动看一眼。”过了几分钟,程晏回了一条语音,声音压得很低:“我也看到了。444。这是怎么回事。”江舸说不知道。程晏沉默了一会儿,说:“他家里人会不会还留着他的号?”江舸说手机陪葬了,SIM卡注销了。程晏又沉默了一会儿,然后说:“你点进他的步数主页,看看数据来源。”
江舸点进去。微信运动个人主页的步数下面,有一行小字,显示数据来源。通常情况下,这里会显示“手机计步”或者连接的运动手环型号。陆止的数据来源一栏是空白的。不是“手机计步”四个字被删掉了,是根本没有这一栏。其他好友的主页都有数据来源,只有陆止的没有。
江舸把这件事告诉了程晏。程晏很久没有回复。过了大概半个小时,程晏发来一张截图。是陆止的微信运动步数详情页,页面底部有一张地图。江舸从来不知道微信运动还有地图功能——他点开陆止的步数详情,往下划,果然有一张地图。地图上标注着一条浅绿色的轨迹,是步数产生的路线。他盯着那条轨迹。
轨迹的形状是一个圈。一个近乎完美的圆圈,起点和终点在同一个位置。圆圈的直径不大,轨迹显示的范围局限于一个很小的区域——几条街道,几栋建筑,一个小区的大门。他把地图放大。那个圆圈的中心,是他住的小区。起点和终点重合的位置,是他住的这栋楼的单元门口。
江舸把手机放在茶几上,站起来,走到窗户前面。窗帘拉着,他把窗帘拉开一条缝,往下看。单元门口的路灯亮着,橘黄色的光照着空荡荡的水泥通道。绿化带的冬青被修剪得整整齐齐,在路灯下投下一团团墨绿色的阴影。没有人。他看了很久,久到路灯因为声控熄灭又重新亮起来——但没有任何声音触发它。
他把窗帘拉上,走回茶几旁边,拿起手机。地图上的轨迹还在。圆圈,以他住的单元门为起点,逆时针绕行,穿过小区的中庭,经过物业办公室,经过垃圾分类站,经过非机动车棚,然后回到单元门口。他把地图放大到最大比例。轨迹并不是一条平滑的曲线,而是由无数个细小的点组成的。那些点的分布很不均匀——有些路段点很密集,几步一个;有些路段点很稀疏,隔很远才有一个。步数的分布也不是均匀的。444步,在三百多米的路径上,如果是正常行走,每一步的间距应该大致相等。但陆止的步数轨迹显示,那些步数在某些位置大量堆积,在某些位置几乎没有。
他截了图,发给程晏。程晏回了一条:“你有没有注意到,他走的路线,和你每天上下班走的路线完全一样。”
江舸把地图和自己的步行轨迹做了对比。他每天早上从单元门出来,穿过中庭,经过物业办公室,经过垃圾分类站,经过非机动车棚,从小区侧门出去,走到地铁站。晚上原路返回。陆止的轨迹,就是他早晚通勤路线在小区内部的那一段。从单元门到非机动车棚,然后折返。没有出小区。没有去地铁站。只是在小区里,沿着他每天走过的路,走一个圈。
他退出地图,重新打开和陆止的对话框。他打了一行字:“陆止,你是不是在跟着我。”发出去之后,他把手机放下,盯着屏幕。对话框里安静了很久。然后,陆止的头像旁边弹出了三个字。不是文字,是系统提示:“对方正在输入...”
江舸从沙发上站了起来。他盯着那行提示,盯着那几个字在他和陆止的对话框顶部闪烁。它闪了很长时间——比任何人打字的时间都长。像是一个人把手指放在键盘上,却迟迟没有按下去。或者,像是一个人正在用不是手指的东西,一个字母一个字母地摸索着键盘。他退出对话框,给陆止的母亲打了一个电话。
电话响了很久,久到他以为不会有人接了。然后接通了。陆止的母亲声音沙哑,像是刚从睡梦中被吵醒。江舸报了名字,寒暄了几句,然后问他能不能去陆止的墓地看一看。陆止的母亲沉默了一会儿,说:“你去吧。在九排四十四号。”
九排四十四号。444。
他挂了电话,在沙发上坐了很久。窗外有风吹过,窗帘鼓了一下又落回去。他站起来,穿上外套,换鞋,出门。电梯从十七楼下到一楼,门打开,单元门外的路灯还亮着。他沿着陆止轨迹的起点往前走。穿过中庭,经过物业办公室,经过垃圾分类站,经过非机动车棚。每一步他都踩得很实,像是要确认这条路还在他脚下。他走到非机动车棚的尽头,停住。这是陆止轨迹折返的位置。为什么是这里?他环顾四周。车棚里停着一排电动车和几辆落满灰的自行车。车棚的顶棚是彩钢瓦的,边缘有几盏日光灯,坏了一半,剩下一半发出滋滋的电流声。他站在车棚边缘,低头看地面。水泥地面上有一小片颜色比其他地方深的区域,形状不规则,像是什么液体泼上去之后没有完全擦干净留下的印子。他蹲下去,用手指碰了一下。干的。印子渗进水泥的孔隙里,边缘已经模糊了。他站起来,沿着陆止的轨迹往回走。走到单元门口的时候,他停住了。单元门旁边的信报箱上,整整齐齐地排列着每家每户的门牌号。他的目光落在自己的信箱上——1704。信箱的小门关着,锁孔里塞着一张叠起来的纸。他把纸抽出来,展开。是一张便利贴,黄色的,边缘有些卷。上面写着一行字,字迹是他自己的。
“22:22,444。”
江舸盯着这行字。他认不出自己什么时候写过它。他把便利贴翻过来,背面是空白的。他把便利贴攥在手里,纸张的边缘硌着掌心。他抬头看单元门上方的监控摄像头。摄像头的指示灯亮着,红色的,一明一灭。他刷卡开门,走进电梯,按下十七楼。
回到家,他打开手机,重新看了一遍陆止的微信运动步数详情。这一次他注意到另一个之前忽略的数据——更新时间。每天444步,更新时间不是随机的,而是固定的。22:22。过去七天,每一天步数更新的时间戳都是22:22。他点开自己的微信运动,查看过去一周自己的步数更新时间。也是22:22。不只是更新时间相同。他把自己过去七天的步数曲线和陆止的放在一起对比。他的步数每天大约在八千到一万之间,曲线随着他上下班通勤、午间吃饭、晚上散步而起伏。陆止的步数每天都是444,是一条平直的低位线。但那条平直的线并不是完全静止的。在每天22:22这个时间点上,陆止的步数会从0跳到444。而在同一个时间点上,江舸的步数曲线会出现一个微小的、几乎不可见的抖动。那个抖动只持续不到一秒,幅度不超过几步,如果不是特意放大去看,根本不会注意到。但在那个时间点上,在22:22,他的步数和陆止的步数会同时变化。像是两个人在同一瞬间迈出了一步。
他打开手机自带的健康APP,查看传感器数据。他往下翻,翻到步频记录。22:22,步频不是0。不是他坐在沙发上的步频,是行走的步频——每分钟大约一百一十步。那个步频持续了四分多钟,正好是走完444步所需的时间。而那个时候,他正坐在沙发上,手机放在茶几上,一步都没有走。
江舸把健康APP关掉,打开浏览器,搜索“微信运动步数同步原理”。搜索结果告诉他,微信运动的步数来自手机内置的加速度传感器和陀螺仪。传感器检测到手机的重心移动,就会记录步数。如果手机放在桌上,传感器没有检测到任何移动,步数就不会增加。他的手机,在过去七天的每一个22:22,都检测到了444步的移动。但他的手机一直放在茶几上。
只有一种解释——有什么东西在那个时间,拿着他的手机,走了444步。或者,不是拿着他的手机,是拿着陆止的手机。而他的手机,通过某种他不知道的方式,同步了那444步。就像微信运动可以同步其他APP的步数一样——他的手机同步了陆止的步数。不是因为数据造假,是因为他们的步数来源在22:22这个时间点上,被接入了同一个传感器。
他拨了陆止母亲的电话。电话接通之后,他问了一句话:“陆止的手机,还在吗?”陆止母亲的声音很平静:“在。在墓里。你问这个干什么。”他没有回答,说了声谢谢阿姨,挂了电话。
第二天是周六。他坐了两个小时的公交车,到了陆止埋葬的公墓。九排四十四号。墓碑是黑色花岗岩的,上面刻着陆止的名字和生卒年份。碑前放着一束已经干枯的菊花,花瓣落了一地。他把墓碑前面的落叶拨开,蹲下去,看着墓碑和地面之间的接缝。接缝被水泥封住了。他用手摸了摸水泥表面,是硬的,没有近期被撬开过的痕迹。他把手收回来,指尖上沾着一层灰白色的粉末。
他站起来,站在墓碑前面。风从公墓的山坡上吹过来,把枯菊的花瓣吹得翻了个身。他低头看着自己的手机。微信运动排行榜上,陆止的步数还是444。他点开步数详情,地图上的圆圈还是那个圆圈。起点和终点还是他住的单元门口。
他退出微信,打开和陆止的对话框。他打了一行字:“我到你墓前了。”消息发出去了。已送达。他等了一会儿,没有回复。他打了第二行字:“你到底要什么。”没有回复。他打了第三行字:“444步。22:22。你每天在我楼下走一圈。你想让我看见什么。”对话框里安静了很久。然后,他的手机震了一下。不是微信消息,是健康APP的推送。他点开。推送内容是:“检测到新的步数记录。22:22,步数444。数据来源:陆止的iPhone。”他的手机从来没有连接过陆止的iPhone。陆止的iPhone在九个月前就已经陪葬了。他盯着那行数据来源——不是“本机”,不是任何他知道的设备,是“陆止的iPhone”。
他把手机举起来,对着墓碑拍了张照片。照片拍完之后,他低头看屏幕上的成像。墓碑在画面正中央,黑色花岗岩上刻着陆止的名字。他盯着照片里墓碑光滑的表面。那表面反射着天光,反射着他身后公墓的松树,反射着他自己举着手机的影子。也反射着另一个影子。一个站在他旁边的、和他肩膀挨着肩膀的、灰白色的人形。
他猛地回头。身边没有人。他转回来,重新看照片。那个影子还在。它就站在照片里他的旁边,贴得很近,近到两个人的肩膀几乎重叠。它穿着一件灰色的连帽衫,帽子没有戴上,露出一张模糊的脸。那张脸的五官被墓碑表面的反光扭曲了,但轮廓还在。是陆止。
江舸没有删掉那张照片。他把手机收起来,在陆止的墓碑前站了很久。天黑以后,他离开了公墓。坐在回程的公交车上,他重新打开微信运动。陆止的步数还是444。更新时间还是22:22。他回到出租屋的时候已经是晚上十点多了。他坐在沙发上,把手机放在茶几上,盯着屏幕。22:21。微信运动排行榜上,陆止的步数还是444。22:22。步数跳了一下。445。然后是446,447,448。
不再是444了。不再是22:22准时停下的444。数字在增加。450。460。470。步频越来越快,从每分钟一百一十步加速到一百三十步、一百五十步。步数突破五百,突破六百,突破七百。他点开步数详情,地图上的轨迹不再是那个闭合的圆圈。轨迹从他住的单元门口开始,沿着他每天上下班的路线,穿过中庭,经过物业办公室,经过垃圾分类站,经过非机动车棚——然后没有折返。轨迹继续往前延伸。出小区侧门,沿着人行道,经过便利店,经过公交站,经过十字路口,一直延伸到地铁站。那是他每天上班走的路线。陆止的步数正沿着他每天上班的路线,一站一站地往前走。他退出地图,打开和陆止的对话框。他打了一行字:“你要去哪里。”
回复立刻弹出来。不是文字,是一张图片。他点开。图片是公墓的入口。拍摄时间显示是今天下午,他离开公墓之后。拍摄者的位置站在公墓大门外面,面朝里。照片里,他刚才站过的九排四十四号墓碑,正被夕阳照成深褐色。他盯着那张照片。照片的构图,照片的角度,照片里墓碑的位置——和今天下午他拍的那张一模一样。但不是他拍的。是站在墓碑前面的人拍的。那个人站在墓碑前面,面朝墓碑,举起手机,拍下了墓碑的正面。而那个人自己,没有出现在照片里。因为那个人就是站在镜头后面的人。因为那个人——那个穿着灰色连帽衫、肩膀和他几乎重叠的灰白色人形——在他离开公墓之后,从他刚才站立的位置,用他不知道从哪里来的手机,拍下了这张照片。
他把照片关掉,回到微信运动步数详情。陆止的步数已经超过了一千。地图上的轨迹还在延伸。过了地铁站,过了他公司楼下的咖啡店,进了写字楼的大堂,进了电梯,停在了他公司所在的楼层。他每天上班的路线,从头到尾,被复制了一遍。终点是他工位的位置。
他打开和陆止的对话框。他打了一行字:“你一直在走我走过的路。”陆止没有回复。他又打了一行字:“从什么时候开始的。”对话框里弹出了一张新的图片。他没有立刻点开。他看着那张图片的缩略图——是另一张公墓的照片。拍摄时间不是今天,是更早的日期。他点开。照片里是陆止的墓碑。墓碑前面站着一个人。那个人背对镜头,穿着他今天穿的那件外套,蹲在墓碑前面,正在用手拨开墓碑前面的落叶。是他自己。今天下午的他。从墓碑前面拍到的他自己。拍摄者的位置在墓碑后面。在黑色花岗岩石碑的另一侧。
江舸把手机放在茶几上。屏幕朝下。他站起来,走到窗户前面,把窗帘拉开。对面楼的灯火亮着,一格一格暖黄色的光。他把目光收回来,落在窗户玻璃上。玻璃上映着客厅的内部——沙发,茶几,电视机黑着的屏幕。他自己。他站在窗户前面,玻璃里的他也站在窗户前面。他盯着玻璃里自己的脸看了很久,然后他的目光越过自己的肩膀,落在玻璃映出的沙发区域。沙发上坐着一个人。灰白色的,穿着连帽衫,低着头,正在看手机。手机屏幕的蓝光映在那张模糊的脸上,映出两个深色的眼窝。那个人坐在他每天晚上坐的位置,用他每天晚上看微信运动的姿势,低着头,刷着步数排行榜。排行榜上,陆止的步数正在更新。数字在一格一格地跳。那个人看着屏幕上跳动的数字,嘴角微微上翘。像是被屏幕的光刺得睁不开眼,又像是在笑。
江舸没有回头。他站在窗户前面,和玻璃里那个坐在沙发上的灰白色人形,隔着整个客厅的距离,隔着九个月的时间,隔着活人和死人之间的那道界限,互相看着。那个人的嘴唇动了一下。玻璃没有传声,但他读出了那句话的口型。
“我一直都在走你走过的路。从第一天起。”
江舸把窗帘拉上了。他转过身。沙发上没有人。茶几上放着他的手机,屏幕亮着,微信运动排行榜上,陆止的步数停在了一个新的数字上——1444。三个四,前面加了一个一。像是444被重新排列过,像是那个一直在他小区里绕圈的人,终于绕出了那个闭合的圆,沿着他每天上班的路,走到了他公司的工位上,然后停下来,坐在他那把椅子上,替他上了今天他没有去上的班。
他把手机拿起来,打开健康APP。传感器数据里,今天22:22的步频记录显示的不是行走,是静止。0步。步频为0。持续时间为从22:22到22:22。只有一秒。在那一秒钟里,他的手机没有检测到任何移动。但微信运动的步数增加了一千步。那一千步不是走出来的。是那个坐在他工位上的东西,把它的静止,同步给了他。
他打开和陆止的对话框。他打了最后一行字:“你不用再走了。我看见了。”
消息发出去了。已送达。
然后,陆止的头像旁边,第一次弹出了不是系统提示、不是图片、而是真正由对方输入的文字。绿色的气泡,黑色的字体。
“好。”
只有一个字。发送时间是22:22。
江舸盯着那个字。他等了很久,对话框里没有再出现任何新消息。他退出微信,打开微信运动排行榜。陆止的步数变成了0。他刷新了一遍。0。他退出,重新打开。0。他点进陆止的个人主页,数据来源那一栏不再是空白的了。上面写着四个字。
“本机计步。”
本机。不是陆止的iPhone,不是任何其他的设备,是本机。是他自己的手机。他把微信运动关掉,把手机放在茶几上,坐在沙发上。落地灯的光照着他,把他的影子投在身后的墙上。只有一个影子。
从那以后,陆止的微信步数再也没有更新过。九排四十四号墓碑上的照片,被松树的阴影覆盖着,碑前落满了新的枯菊。江舸每天上下班,穿过中庭,经过物业办公室,经过垃圾分类站,经过非机动车棚。他的微信运动步数一切正常。每天八千到一万,更新时间均匀分布。只是偶尔,在他走到非机动车棚尽头准备折返的时候,他的影子会在地面上多停留一秒钟。像是有什么东西站在那里,等着他的影子经过,然后轻轻地、没有重量地,贴上去。
他不再在22:22打开微信运动。但每天那个时间,不管他在做什么,他的手机都会震一下。不是微信消息,不是短信,不是任何APP的推送。是健康APP的静默通知。通知的内容永远只有一行字,发送者永远是他自己手机的传感器。
“检测到新步数。数据来源:陆止。”
后面没有数字。只有名字。

