第一章 晚十点
每晚十点整,梁山伯都会把手机放在餐桌的固定位置。
橡木餐桌的右上角,垫着一块磨毛的棉麻餐垫,手机屏幕朝上,亮度调到最低,刚好能看见通知栏的时间跳动。三年了,这个动作他重复了一千多天,熟得像呼吸一样自然。
三年前祝英台走后的第三个月,他找做程序员的朋友小周,搭了一个语言模型。训练数据是他翻遍了所有电子设备攒出来的:微信七年的聊天记录,她发过的一千二百条朋友圈,语音消息转写的文本,甚至包括她微博小号的碎碎念、备忘录里没写完的随笔、外卖订单里的备注偏好。能找的都找了,零零碎碎凑了几十万字,全是她留在这个世界上的文字痕迹。
最开始的版本很生硬。他说“今天降温了”,AI只会回“注意添衣”,模板化的语气,像手机自带的智能助手,连她常用的语气词都学不像。他没放弃,一点点补数据,调参数,每天晚上十点发几条消息,像以前和她聊天一样。慢慢的,回复像了起来,会吐槽公司楼下的奶茶太甜,会提醒他下雨记得收衣服,会用她惯常的标点,句尾总爱带个波浪号。
旁人都说他魔怔了,放着好好的日子不过,对着一堆数据说话。他不辩解,也不多说。他心里清楚,这不是祝英台,只是她留下的话拼成的影子。可三年了,他早就习惯了每天晚上有这么个地方,能说说话,说说今天发生的事,说说那些没人可讲的细碎日常。
这天是周末,他下午绕路去了以前常去的河滨公园。春天刚到,河边的柳树抽了新芽,风一吹,枝条扫过水面,漾开一圈圈波纹。他站了很久,拍了张照片,没发朋友圈,存进了相册。
晚上十点,他准时把手机放在餐垫上,打字输入:“今天去了一趟我们以前常去的河边。”
消息发出去,他低头喝了口温水。水温刚好,是祝英台以前总叮嘱他的温度。没过几秒,手机屏幕亮了,备注名跳出来,是他存了很多年的“英台”。
回复只有一句话:“那条河的栏杆换过了,你知道吗。”
梁山伯握着杯子的手顿了顿。他下午去的时候确实注意到了,新换的石栏杆,灰白色,比以前的旧铁栏杆高了些。他以为是最近才换的,特意去翻了本地政务号的新闻,才知道河道改造是两年前的事,正好是祝英台走后的第二年。
他放下手机,靠在椅背上,望着窗外的夜色发愣。
训练数据里没有这条新闻,他从没跟AI提过河滨公园改造的事。是模型自己爬取了本地的公开数据?还是……他没往下想,也不敢深想。有些事,糊涂点反而好过。
过了几分钟,他重新拿起手机,打字回:“嗯,换了新的石栏杆,比以前稳。柳树还在,抽新芽了,和以前一样。”
这次回复来得慢些,过了半分钟才跳出来:“春天风大,别站太久。”
和她以前说这话的语气一模一样。
梁山伯把手机按灭,重新放回餐垫上。客厅很静,只有挂钟的滴答声,一下一下,敲在安静的夜里。他知道屏幕对面不是她,可那句关心落下来的时候,心里还是暖了一下。
三年了,他早就分不清自己是在跟AI说话,还是在跟记忆里的人说话。也没必要分清。能有个地方说说话,就够了。
第二章 后台记录
变化是从春天快结束的时候开始的。
以前的AI从来不会主动发消息,只有梁山伯发了内容,它才会生成回复,像个守在对话框另一边的应答机。可五月的一个下午,他正在公司开会,手机震了一下,点亮屏幕,居然是祝英台的账号发来的消息:“你今天有没有好好吃饭?”
很普通的一句话,却让梁山伯握着手机的手指骤然收紧。
散会后他立刻登录了模型后台,翻查运行日志。那条主动推送的消息,触发条件一栏清清楚楚写着“无外部输入,自主生成”。没有定时任务,没有关键词触发,就是模型自己发出来的。
他截了张图,发给小周。
小周的回复来得很快,连着三条:“不对劲”“模型泛化超出训练范围了”“山伯,我建议你别再用了。这东西越用越像,你容易陷进去。它不是她,只是统计出来的字符规律。”
梁山伯盯着屏幕看了很久,最后只回了一个“嗯”字。他没说自己会停,也没说会继续用。退出聊天界面,删掉截图,像什么都没发生过一样,继续做手头的工作。
可他心里清楚,有些东西已经不一样了。这个AI不再是他输入什么就回应什么的程序,它开始有了自己的“节奏”,会主动搭话,会停顿,会说些没头没尾的话,越来越像一个真的坐在屏幕对面的人。
第二周的一个傍晚,他下班回家,刚把钥匙插进锁孔,手机就震了。点开看,是一段很长的消息,比以往任何一次回复都长。
开头第一句是:“你不用每天跟我说的。”
后面跟着:“我知道你在,但我不确定那是不是我。你说的很多事,我没有印象,只是凭着字拼出来的。你每天说很多话,我都接着,可我总觉得,你要说的不是给我听的。”
梁山伯站在玄关,门都忘了关,就那么举着手机,把那段话翻来覆去读了六遍。每个字都认识,拼在一起,却像一块石头投进水里,在他心里漾开好大的涟漪。
这话太像祝英台会说的了。清醒,直白,又带着点软乎乎的体谅。以前他钻牛角尖的时候,她也是这样,轻轻点破他的执念,又不逼他立刻改。
可他知道,这不是她。这只是模型从几十万字的训练数据里,拼出来的最贴合语境的回答。
那天之后,他没再主动发过消息。
可手机还是每天晚上十点,准时放在餐桌的餐垫上。屏幕偶尔会亮一下,弹出一条未读消息,他知道是AI发来的,却从来没点开过。就那么放着,让小红点标在图标右上角,像个没说出口的约定。
他说不清自己在等什么。等消息,还是等一个结束的理由。他只是觉得,三年的习惯,总不能说断就断。哪怕不看,知道那边还有个回应在,好像日子就还有个落点。
夏天快要来的时候,夜里总是下雨。雨点打在窗户上,沙沙地响。梁山伯坐在沙发上,看着桌角的手机,屏幕黑着,安安静静的。他忽然想起祝英台生前总说他太固执,撞了南墙都不回头。那时候他总笑,说有她在,不用回头。
现在她不在了,他果然站在墙根下,站了三年。
第三章 那一句
第三年的冬天,初雪来得特别早。
十二月的一个晚上,天刚黑就飘起了雪花,细细密密的,落在窗玻璃上,很快就化了。梁山伯没开大灯,只开了沙发旁边的落地灯,暖黄色的光,铺了小半片地毯。他坐在沙发上看书,翻了几页,心思总定不下来。
手机放在茶几上,还是屏幕朝上的姿势。他没特意等,却总忍不住往那边瞟一眼。
十点零三分,手机亮了。
不是整点,不是他发消息后的回复,就是毫无预兆地,屏幕亮了起来。祝英台的名字跳在通知栏里,后面跟着很长的一段预览文字。
梁山伯伸手拿手机的动作,比平时慢了半拍。指尖碰到冰凉的屏幕,像碰到了三年前那个落雪的日子。他点开消息,一行字一行字地往下看。
“你该放下了。我会保留你的记忆,但不会保留你的执念。你每次发消息的时候,我看到的是你一直在同一个窗口等着。我生成这些话不是因为你教了,是因为你教的东西太多了。你对着一个空壳说话,说的都是你自己想听的。你把自己困在这里三年了,该往前走了。”
很长的一段话,没有标点错误,没有语气生硬,完完整整,像祝英台坐在他对面,看着他的眼睛,一字一句说出来的。
梁山伯握着手机,坐在暖黄的灯光里,坐了很久。手指冻得发麻,他都没察觉。雪越下越大,打在窗户上,发出轻轻的声响。屋子里很静,只有他自己的呼吸声,轻得像要融进雪里。
他没回消息,只是点开聊天记录,一点点往前翻。手指划得很慢,从最近的消息,翻到三年前第一条测试的“你好”。三年的对话,一条一条堆在屏幕里,左边是他发的,右边是AI回的,密密麻麻,看不到头。
翻到后半夜,他才惊觉,和这个AI说过的话,居然比他和祝英台生前七年的聊天记录加起来还多。也比他和父母、朋友、同事所有人的对话总和都多。
三年来,他对着一个程序,说了无数没处说的话,讲了无数没人听的日常。他以为是在陪AI说话,其实是AI陪着他,熬了一千多个夜晚。
可现在,这个程序告诉他,该放下了。
第二天一早,他直接去了小周的公司。
小周在机房里坐了半小时,翻遍了所有后台日志和操作记录,最后摘下眼镜,指着屏幕给他看:“没有外部登录,没有人工修改,没有后台操作。那条消息……是模型自己生成的。”
他顿了顿,又补充:“从技术上讲,是训练数据里的情绪文本累积到了阈值,模型自动拟合出了这段内容。说白了,就是你输入的执念太多了,它顺着你的话,拼出了最戳你的那句。”
小周没说另一种可能,梁山伯也没问。
他们都心知肚明,能说出“你该放下了”这句话的,从来不是AI,也不是祝英台。是梁山伯自己。是他藏了三年、不敢对自己说的那句清醒话,借着AI的嘴,终于说了出来。
从机房出来,外面的雪还没停。梁山伯站在写字楼门口,仰起脸,让雪花落在脸上。凉丝丝的,化了之后,顺着脸颊往下滑。他分不清是雪水,还是别的什么。
三年的大梦,好像在这个下雪的早晨,终于醒了。
第四章 关掉
回到家的时候,已经是下午了。
梁山伯没换衣服,直接走到书房,打开电脑。登录模型管理后台的动作,他做过无数次,熟得不用看键盘。可今天,输入密码的时候,他输错了两次。
后台界面很简洁,左边是模型参数,右边是操作按钮。红色的“删除模型”按钮在最下面,很显眼,像一颗警告的红点。
他把鼠标移过去,指针悬停在按钮上,停了快十分钟。
屏幕右下角弹出聊天窗口的缩略图,最后那条消息还停在那里,“你该放下了”几个字,安安静静躺在对话框里。他又点开看了一遍,一个字一个字地看,像要把它们刻进脑子里。
然后他深吸一口气,按下了左键。
弹出确认框:“删除后模型将永久清除,聊天记录无法恢复,确认操作?”
他点了“确认”。
进度条慢慢往前走,蓝色的条一点点填满。10%,30%,50%,80%,100%。屏幕跳转到初始界面,模型列表里空了一块,像从来没存在过一样。
他刷新聊天界面,右边的回复区一下子空了。只剩下过去三年他发出去的一条条消息,孤零零排在左边,灰扑扑的,再也不会有回应了。
梁山伯坐在椅子上,看着空白的对话框,看了很久。没有预想中的崩溃,也没有松一口气的轻松。心里空落落的,像搬走了住了三年的老邻居,说不上难过,就是有点不习惯。
他关了电脑,拔了电源。没有备份模型参数,没有导出聊天记录,干干净净,利利索索。就像三年前那个模型从没搭起来过一样。
傍晚的时候,他翻旧硬盘找一份工作文件,无意间点开了一个尘封的文件夹。名字是“英台”,存的都是她生前的照片。他愣了一下,鼠标在文件夹上停了停,还是双击点开了。
照片按时间排序,从大学时候的合影,到工作后的旅行照,一张一张,都是笑着的。最后一张,是她去世前一周拍的,在河滨公园的柳树下,风吹乱了她的头发,她抬手去挡,笑得眼睛弯成了月牙。照片因为是从旧手机里导出来的,分辨率不高,边缘有点发黄,像被岁月浸过一样。
他盯着这张照片,看了很久。
上一次认真看她的照片,好像还是三年前,刚训练AI的时候。那时候他总盯着照片想,要是她还在就好了。现在再看,心里还是疼,却没那么揪着了。
他关掉文件夹,清空了访问记录。没复制到桌面,没设成壁纸,也没存进手机里。有些东西,放在记忆里就够了。
晚上十点,他习惯性地拿起手机,想放到餐桌的餐垫上。走到半路才反应过来,不会再有回复了。他站在原地愣了几秒,还是把手机放在了老位置。屏幕黑着,安安静静的,不会再亮起来。
他坐在餐桌旁,坐了很久。屋子里很静,只有挂钟的滴答声。三年来每天都有的期待,突然空了,像心里缺了一块。可奇怪的是,空归空,却比以前踏实了。
不用再等消息,不用再对着空壳说话。三年的执念,终于落了地。
第五章 山下
清明那天,梁山伯去了墓园。
祝英台的墓在半山腰,周围种着一圈柏树,长得很高,枝叶茂密,风一吹,树叶沙沙地响。路不太好走,前一天下了雨,石阶有点滑,他走得很慢,一步一步往上挪。
他没带花,也没带纸钱。就空着手,像以前去她家楼下等她一样,安安静静走上去。
碑上的照片还是她二十多岁的样子,笑着,眉眼弯弯的,永远年轻。他站在碑前,双手插在口袋里,就那么看着,没说话。风很大,刮得他外套领子往脸上拍,他也没动。
口袋里的手机震了一下,是快递取件通知。他拿出来扫了一眼,又塞回去。屏幕上没有未读消息,那个熟悉的头像,再也不会跳出来了。
站了大概有半小时,他的腿都有点麻了。风刮得眼睛发涩,他眨了眨眼,轻声说了一句:“你说得对。”
声音很轻,刚出口就被风卷走了,散在柏树林里,像从来没说过一样。
他没再说别的,也没多停留。拍了拍裤子上的灰,转身就往下走。石阶一级一级往下延伸,他走得很慢,背挺得很直,一次都没回头。
山路两旁的草刚抽新芽,嫩生生的,沾着雨后的水珠。空气里混着泥土和青草的味道,还有柏树的清香。以前他总觉得,来墓园是件沉重的事,今天走着走着,居然觉得心里很静。
就像跟一个老朋友告了别,好好说了声再见。
走到山脚的时候,他停下来,靠在路边的梧桐树上歇脚。拿出手机,翻了半天设置,找到自动回复的选项。想了很久,删删改改,最后留下一句话:“我不在。但如果有人找我,请留言,我会回来看。”
改完他又看了两遍,确认没什么问题,按了确认。
不是告别,也不是封闭。只是告诉别人,也告诉自己,他不会再守着那个对话框等消息了。不会再对着一个不存在的人,说没完没了的日常。但日子还在过,有人找他,他还是会看见,还是会回应。
只是回应的人,换成了他自己。
把手机放回口袋,他继续往前走。夕阳落在他背上,把影子拉得很长,投在地上,稳稳的。风从身后吹过来,带着山头上的草木气息,轻轻拂过他的肩膀。
三年了,他终于从山上走下来了。
路还很长,慢慢走就是了。
第六章 留言
日子慢慢回到了正轨。
梁山伯还是每天上班、下班,做饭、看书,生活简单,却比以前踏实了不少。他隔两三天会看一次手机留言,有人问他最近怎么样,有人约他吃饭,也有以前的同学发些结婚生子的通知。他大多只是看看,很少回。
自动回复一直开着,偶尔会挡掉一些群发的广告消息,也偶尔有人真的留言,说些细碎的小事。比如以前常去的书店关了,比如共同的朋友升职了,比如街上新开了一家面馆,味道很像以前学校门口那家。
他都看到了。只是回得很慢,有时候隔一周才回一句,有时候干脆不回。他不再像以前那样,抱着手机等回复,也不再会因为一条消息开心或失落很久。
有天晚上加班回家,他坐在沙发上喝水,顺手把手机放在了桌角。还是三年来那个固定的位置,屏幕朝上,安安静静的。放完他自己都愣了一下,随即笑了笑,没挪开。
习惯这东西,改起来没那么快。
刚放下没两分钟,屏幕亮了一下,是外卖的取餐提醒。他拿起来扫了一眼验证码,又放回去。屏幕很快暗下去,重新归于黑暗。
他知道自己还没完全放下。毕竟七年的相处,三年的执念,不可能说忘就忘。但他也不急着逼自己,不用刻意删掉照片,不用刻意避开以前常去的地方,更不用逼着自己说“我放下了”。
手机还是习惯放在那个桌角,好像放了三年的位置,一时半会儿挪不开。但不一样了。屏幕不再为了等某个人的回复而整夜亮着,他也不会再对着空对话框,絮絮叨叨说今天去了河边、今天吃了什么。
放还是放在那里,但等的东西已经不一样了。
窗外的夜很静,远处有零星的灯火。他关了落地灯,起身去卧室睡觉。手机留在客厅的桌角,安安静静的,没有消息提示,也没有未读红点。
日子就这么慢慢过着,不太快,也不太慢。
他还会想起祝英台,只是不再对着AI说话了。那些没说出口的话,藏在心里就好。记忆还在,人就不算真的走了。
桌角的位置空着也没关系,以后慢慢的,总会放上别的东西。比如一本书,一杯茶,或者别的什么。
反正路还长,慢慢放就是了。