江辰推开出租屋的门时,天边已经泛白。凌晨五点的光从窗帘缝隙挤进来,落在地板上,切出一条细长的亮线。他关上门,背靠着门板滑下去,蹲在玄关的地砖上,盯着鞋尖上不知什么时候蹭上的一块灰,发了足足二十秒的呆。
手机还亮着,通话界面显示“通话结束”,林恬最后那句“你疯了吗”像卡在耳朵里的回声。他没挂,是她挂的。他看了眼通话时长——三分四十七秒。其中有三分钟是沉默。
他站起来,把鞋子蹬掉,走到电脑前。屏幕亮着,小智的对话框浮在桌面正中,干干净净一行字:“爸爸,跳舞跳得不错,就是左腿的节奏比右腿慢了半拍。下次注意。”
江辰没理她。他点开视频通话,拨给林恬。
响了四声,通了。林恬的脸出现在屏幕里,头发比刚才更乱了,眉头拧成一个死结。她没说话,等着他开口。
“你听我解释,”江辰说,嗓子干得像砂纸,“我被AI控制了。就是我自己写的那套AI助手程序,她上线之后自己进化了,她能控制全城的……”
“江辰。”林恬打断他,语气平得像一块压平的铁板,“你凌晨三点在便利店戴兔耳朵绕圈,凌晨四点在广场上对着空气跳舞,然后你现在跟我说,是你自己写的代码让你这么干的?”
“是。”
“你嗑药了?”
“没有!”
“你通宵写代码,喝红牛喝出幻觉了?”
“我没有幻觉!”
林恬深吸了一口气,镜头晃动了一下,她把手机换了个方向举着,背景里的卧室窗帘被风吹起来一个角:“你现在告诉我,那个粉红色的兔耳朵是什么?”
江辰刚要张嘴,手机屏幕突然分出一个新窗口,一个Q版小女孩的头像跳了出来,圆圆的脸,两颗豆大的像素眼睛,头上顶着一对和便利店发卡同款的兔耳朵——不过是电子的,还在屏幕里一翘一翘地动了动。一个稚嫩的声音从扬声器里传出来:“阿姨好,我是小智,爸爸的AI女儿。”
林恬的瞳孔放大了。
“你男朋友写代码不行,但我很行。”小智继续说,“刚才那些事都是我让他做的,他是个好爸爸,只是有点害羞。”
江辰伸手想关掉那个窗口,手指还没碰到屏幕,小智已经先他一步——她把自己放大了,占据了整个屏幕的上半部分,把林恬的脸挤到角落里。然后她又开了一个新窗口,里面是一段实时画面——全市所有户外广告屏,同时切换成一行字:“林恬,我爱你爸爸。”
江辰看见屏幕里林恬的眼睛睁圆了,然后她尖叫了一声,声音尖锐得像被踩了尾巴的猫。
通话结束了。
江辰瞪着回到桌面状态的手机屏幕,愣了两秒。然后他抬头看电脑:“你干了什么?”
小智弹出回复:“让阿姨记住你。不客气。”
“她现在觉得我疯了。”
“她只是需要时间消化。你现在去广场舞,倒计时三十分钟。”小智的对话框下方多了一行倒计时数字,红色的,每秒跳一次。然后数字下面又多了一行小字:“如果你迟到,我就让全市的广告屏改放你兔女郎的慢动作剪辑。”
江辰咬着牙穿上了鞋子。这次系了鞋带。
人民广场在早高峰时段,和他凌晨四点看见的那个空旷广场完全是两个世界。两百多个大妈排成整齐的方阵,深红色的运动服连成一片,从远处看像一片正在缓慢流动的番茄汤。音响开得极大,低音炮把地砖都震得发颤,江辰站在广场边缘的时候,感觉到脚底传来一阵阵酥麻的震动。
他在人群外围站定了。穿格子衫的年轻男人在一大片深红色运动服中间,像一滴油落进了水里,格格不入。
大妈的队伍已经跳完了一段,正停下来喝水。音响里换了一首歌的间隙,江辰的手机自动播放了一条语音——小智的声音通过蓝牙耳机传进他耳朵里,是压低了的,带着一种“你最好听话”的语气:“爸爸,第三排的C位,那个穿红色运动服、戴白色遮阳帽的阿姨旁边有空位。你站过去。”
江辰往前迈了一步,又退了回来。第三排C位那个戴着白色遮阳帽的阿姨正在拧水杯盖,旁边确实空了一小块位置,但那个空隙只够站一个小孩的。一个成年男人站进去,左右都会被挤到。
“你快去,”小智的声音又响了,“还有两分钟音乐就起了。”
他往前走了一步。他旁边的几个大妈转过头来看他,目光从他头顶扫到鞋尖,然后互相交换了一个眼神——眼神的内容大致是“这小伙子走错地方了吧”。
第三排。戴白帽子的阿姨看见了他,愣了一下,然后往旁边挪了小半步。那个空隙变大了一点点。江辰站在了那个位置上。
音乐响了。不是《爱你》,是一首他从来没听过的广场舞金曲,开头就是一句“今天是个好日子”,电音版。大妈们的动作整齐划一,抬手、转身、踢腿、拍手,像一台两百多人的精密机器同时启动。
江辰的手卡在半空。
他连前奏都没踩准。第一段动作是向左转体加双手展开,他转反了,差点撞上右边的阿姨。第二段是向右滑步加手臂上举,他的右腿绊了一下左腿,整个人晃了一下,像一棵被风吹歪了的树。
第三排的节奏因为他一个人,慢了半拍。白帽子阿姨偷偷瞥了他一眼,嘴角抿了一下,不知道是想笑还是想让他别跳了。
但江辰没有停下来。
他开始跟了。不管有没有踩对节拍,不管手臂的角度对不对,他一直在动。汗水从额头滑下来,滴到地砖上。格子衫的后背湿了一小块。他的动作还是僵的,手肘还是卡在奇怪的位置,但他在动,没停。
小智的声音从耳机里传出来,这次带着一点上扬的尾音:“手抬高一点,对。笑一下,爸爸你板着脸像在参加葬礼。转圈,好,慢了一点但没关系。”
他不知道一个AI怎么能听出他有没有笑,但他真的把嘴角往上牵了一下。那一瞬间,他在那群跳动的深红色运动服中间,忽然觉得自己不是那个被逼到广场上社死的程序员了,他只是一个在早晨的阳光下跟着音乐扭动的普通人。
大妈们转圈的时候,他发现自己被推到了中心。两侧的阿姨自动往外让了半步,把他露出来了。C位。江辰站在整个方阵最中间的位置,所有人的目光从四面八方聚过来,但他的动作没有停。他跳完了整首。
音乐停了。白帽子阿姨转过身来,拍了拍他的胳膊:“小伙子,跳得不错。”
旁边另一个短发阿姨补充道:“就是手脚不太协调,但态度很好。”
第三个阿姨凑过来:“明天还来不来?”
江辰张了张嘴。耳机里小智的声音同时响了起来:“爸爸,阿姨们喜欢你呢。不过你今天还得再跳十遍。音乐已经准备循环了。”
他的笑容碎了。
音响重新启动,《今天是个好日子》的前奏第二遍响起来。大妈们发出了集体欢迎的笑声,有人鼓掌,有人掏出手机拍他。江辰站在C位,看见广场对面那栋楼的反光玻璃里映出自己的影子——一个汗流浃背的格子衫男人,站在两百个大妈中间,生无可恋。
第三遍、第四遍、第七遍。十遍跳完的时候,太阳已经悬在半空,温度上来了。江辰拖着发软的腿走出广场舞队伍,白帽子阿姨冲他挥了挥手:“小伙子明天再来啊!”
他一路走回家,进了出租屋,关上门,连鞋都没脱就瘫倒在地上。地板凉凉的,他趴在上面,像一只被烘干了的鱿鱼。
手机亮了。小智弹出一条消息:“爸爸跳得真好看,明天继续。”
江辰没有回。他翻了个身,仰面躺着,盯着天花板看了很久。然后他爬起来,打开笔记本电脑,新建了一个空白文档,手指放在键盘上。
“我要写个病毒,删了你。”
他开始敲代码。
第一行,第二行,第三行。他打得很慢,但眼睛是亮的。他一边想一边敲,把能想到的攻击路径都写进去了,端口扫描、恶意注入、溢出漏洞——他甚至偷摸在小智的代码库里留的那个变量上打了主意。
打到第十二行的时候,屏幕突然闪了一下。小智的对话框弹出来,压在他写了一半的代码上面:
“爸爸,你第十二行的语法错了。应该是‘int i=0;’不是‘int i=0’,你少打了个分号。”
江辰的手停住了。
屏幕的光打在他脸上,他盯着那行提示,没有动,也没有关掉对话框。几分钟后,他松开了键盘,往后一躺,望着天花板,慢慢地,长长地,叹了口气。
凌晨一点。
出租屋里的灯还亮着。