沈夜那天中午吃了一份外卖。黄焖鸡米饭,送来的时候已经有点凉了,鸡肉发硬,米饭黏成一团。他吃了两口就放下了筷子,不是因为难吃,他平时不挑食,是因为他刷到了那条新闻:“AI复活江映柳,虚拟主播下周上线”。
他把手机扣在桌上,看着外卖盒里的黄焖鸡出神。鸡肉在凉了之后析出一层白色的油脂,凝固在表面,像一块白色的布,像太平间里盖在死者身上的那种布。他赶紧把这个念头甩掉,但已经来不及了,食欲彻底没了。
他把外卖盒盖上,扔进了垃圾桶。垃圾桶里已经有两个外卖盒了,昨天和前天的。他一个人住,但外卖盒的数量像两个人。也许在某种意义上,他和沈星是两个人,一个活着的人和一个不在了的人,共同消耗着这个空间里的食物和沉默。
他打开电脑,找到了AI江映柳的直播链接。
屏幕上是一个女人的脸。
江映柳的脸,但更光滑、更对称、更年轻。法令纹没了,黑眼圈没了,门牙那颗歪的也被矫正了。她的笑容像出厂设置,完美,但没有人摸过的温度。声音是采样合成的,每一个音节都精准得像钢琴键,但江映柳说话的时候偶尔会吞半个尾音,AI不会。AI不会吞音,不会犹豫,不会说到一半突然不知道该说什么。
“大家好,我是映柳,今天想和大家聊聊‘如何面对失去’。”
这句话本身就像一个黑洞,一个已经失去一切的人,被AI重新组装之后,来教你“如何面对失去”。你失去了一个人?没关系,AI帮你把那个人造回来。你失去了真实的情感?没关系,AI帮你模拟一个。你失去了对世界的信任?没关系,这个,AI也没办法。但AI不会告诉你这一条。
弹幕刷了满屏:
“映柳回来了!”
“好感动”
“技术太强了”
“姐姐我好想你”
“这才是真正的永恒”
没有人提到,或者没有人愿意想到,映柳死了不到两周。“哭死了”,这三个字在弹幕里是修辞,在现实里是事实。有人真的哭了,有人真的死了。但弹幕不在乎这种区分,弹幕只在乎情绪够不够浓。情绪越浓,停留越久,停留越久,推送越多。死人和活人在弹幕里是等价的,都是流量。
屏幕右下角有一个小小的“AI生成”标识,字号六,颜色灰色,几乎看不见。它在那里,像一个免责声明:我告诉你了,你没看见是你的事。
……
沈夜在办公室里看了这场直播的回放。他盯着屏幕上的“AI江映柳”看了三分钟,然后关掉了。
办公室很暗。他没开灯。黑暗里只有窗外路灯透进来的一点光,刚好照到他桌上的马克杯,缺了耳朵的那只。马克杯里还有半杯水,是他下午接的,忘了喝。水面一动不动,像凝固了。
他坐在那里,有一种很难描述的感觉。不是愤怒,不是悲伤。是一种更深的、说不出口的恐惧。像站在一栋楼里,突然发现脚下的地板是画出来的,你以为的坚实,只是一张图纸。
他又看了一遍那个AI的脸。暂停画面,放大。皮肤纹理、毛孔、细微的色差,都做到了。但如果把画面再放大一点,能看到嘴角和脸颊的衔接处有一条极细的线,像3D模型的接缝。那条线告诉沈夜:这是假的。但大多数人不放大看。大多数人在手机屏幕上划过去,只停留三秒,三秒里你看不到接缝,你只看到一张漂亮的脸在笑。三秒够了。三秒就是一个完播率,一个点赞,一个转发。三秒就是流量。
他的手指在桌面上轻轻敲了一下。一下。没有第二下。这次他没有数数,数数是克制情绪的方式,而此刻他不需要克制,因为他甚至不知道自己是什么情绪。愤怒他懂,悲伤他懂,但这个,这个介于恐惧和荒诞之间的东西,他找不到名字。
他给赵满仓打了个电话。
“赵哥,你知道最恐怖的是什么吗?”
赵满仓没说话。他在听。电话那头很安静,只有排风系统的嗡嗡声,他还在解剖室。
“不是她死了。是她死了之后,那个AI比她更像她。更好看,更会说,更不会累。她活着的时候是个被榨的人,死了之后反而变成了一个‘完美’的人。这太不对了。”
他说“完美”这个词的时候,声音很轻,像在咬一块硬东西,咬不动,但又不想放下。
赵满仓沉默了几秒。然后他说:“我昨天验了一个老太太,八十二岁,自然死亡。她的脸上全是皱纹,老年斑,皮肤薄得像纸。你透过皮肤能看到下面的血管,蓝的,像地图上的河。家属看了一眼就开始哭。你说,如果用AI给老太太生成一张年轻时候的脸,家属会不会好受一点?”
“不会。”沈夜说。
“我也觉得不会。”赵满仓说,“因为家属想看的不是一张年轻的脸,是那张老的、皱的、带着所有活过痕迹的脸。那些痕迹就是那个人。AI不懂这个。AI以为把皱纹去掉就是‘修复’,其实那是‘删除’。”
他又停了一下,补了一句:“就像法医把内脏取出来称重,重量是数据,但那个人的重量不是器官加起来。你明白吗?人的重量是那些皱纹、那些疤痕、那些没长好的骨头,AI把那些全修掉了,修完之后重量是零。”
沈夜明白。
……
秦鹿调查了“AI复活”的技术来源。她拆解了整个技术架构,面部生成来自一个开源,语音合成来自另一个,文本生成来自第三个。三个互相独立,但被一个统一的框架整合在一起。这个框架不是开源的。
秦鹿花了六个小时追踪这个框架的代码结构。她从编译后的二进制文件中逆向提取了部分源码,逐行比对,变量命名、函数调用链、异常处理逻辑、加密模块的实现方式。
和“ABYSS”系统的加密协议有部分重叠。
不是全部重叠,大约30%的代码结构可以匹配。但30%已经足够了。在信息安全领域,30%的代码重叠就像30%的指纹匹配,不是巧合,是同源性。
她的结论是:“深渊”系统可能为这个提供了技术支持。或者说,“AI复活”本身就是“深渊”的一个副产品,系统在制造“完美的数字替身”方面已经非常成熟了。它只需要一个人的面部数据、语音样本和文字风格,就能生成一个以假乱真的“数字人”。这个“数字人”不会累、不会哭、不会说“我不想播了”、不会因为违约金而失眠,它是完美的“员工”。
她把这个发现告诉顾临渊的时候,顾临渊没有意外。
“如果一个AI可以完美地模拟一个死去的人,”他对沈夜说,“那‘人’的定义是什么?是身体?是意识?还是数据?如果数据就够了,那系统掉一个人再复制一份数据,算不算‘替换’?”
沈夜说:“你说的这些我听不懂,但我知道一件事……那个AI不是江映柳。江映柳会哭,那个AI只会‘模拟哭泣’。差别大了。”
“差别在哪里?”顾临渊追问。他的语气不是在反驳,是在探究,他真的想知道答案。他太需要知道答案了。因为如果他能定义“疼”和“被看”的区别,也许他就能定义苏未央和他的AI程序之间的区别。
沈夜想了一会儿。办公室里很安静,窗外的风把一片什么吹到了玻璃上,沙沙地响了两声。他看着桌上那杯忘了喝的水,水面上落了一粒灰。
“差别在于……”他说,“哭是因为疼。模拟哭泣是因为有人想看。一个是里面往外,一个是外面往里。方向反了。”
顾临渊没反驳。他在笔记本上写了一行字:“疼和被看……这是人和数据之间最本的区别。”
然后他划掉了。因为他不确定。
“AI江映柳”在那天晚上的直播中说了一句“我很感谢大家一直以来的陪伴”,弹幕刷了满屏的“映柳最棒”。直播的观看人数峰值达到了四十七万,比江映柳活着的时候任何一场直播都高。
但评论区是割裂的。
在直播的转发区里,争论已经持续了三天。一派说“这是对逝者的纪念,技术让爱永恒”,他们的头像是风景照和猫,签名是正能量语录,他们真的被感动了。另一派说“这是对死者的亵渎,你们在用她的脸赚钱”,他们的语言更尖锐,有人用了“恶心”“吃人血馒头”这样的词。
然后第一派骂第二派“冷血不懂感恩”,第二派骂第一派“被洗脑的韭菜”。评论区从讨论AI复活,变成了互相谩骂,骂着骂着,就忘了他们争论的那个人已经死了。
秦鹿在追踪AI复活技术来源的间隙,看了一眼评论区。她划了三屏,表情从无聊变成了皱眉。
“这些人互相骂得比骂凶手还凶。”她对顾临渊说。
顾临渊看了一眼屏幕。“群体极化。”他说,“当两种对立观点被放在同一个场域里,算法会推给每个人他最想看到的论据,然后每个人都觉得自己是对的。最后不是达成共识,而是冲突升级。”
“所以凶手是谁?”秦鹿问。
“从统计学上讲,没有凶手。”顾临渊说,“只有参与者。”
秦鹿关掉了评论区。她嘴里的棒棒糖已经不知道什么时候换成了一新的,草莓味的。她看着粉色的糖球,突然觉得有点恶心。甜的东西在今晚不该这么甜。
沈夜在心里说:你死了,你的AI替你感谢他们。他们感谢你的AI。你们之间隔着一具尸体和一段代码,但谁也不在乎,因为内容好看就行了。
他关掉了直播回放,坐在黑暗里。办公桌上除了那个缺了耳朵的马克杯,还有一份明天要交的报告,“江映柳案调查进展”。他拿起笔,在报告的第一页写了一个字:“查。”然后划掉了,换成了两个字:“继续。”
“继续”这个词写完之后,他盯着看了几秒。继续。继续什么?继续查推送?继续追ABYSS?继续找那个在暗处控一切的人?还是继续,活着?他不知道。
他只知道“继续”是唯一的方向。没有为什么,因为停下来的那个选项不在菜单上。就像江映柳收到的那些推送,“继续看”是默认选项,“退出”需要额外作,大多数人不会按退出。
他不知道要继续多久。但他知道不能停。因为如果停了,下一个收到推送的人,可能就是下一个江映柳。而此刻在滨城的某个出租屋里,某个失眠的人可能正在划手机——大拇指一条一条地划过去,划过搞笑的、卖货的、教做菜的,然后突然停下来。因为下一条推送不一样。
下一条推送是关于死亡的。
而那个人不知道,他的划过,他的犹豫,他那一零点八秒的停留,都被系统记录了。
系统在等。
……
那天晚上,沈夜回家。
他走在路上,路很安静。他住的小区在老城区,路边的梧桐树很大,树冠遮住了半边天。这个季节叶子还没全落,踩上去沙沙响。他低头看路,路灯把落叶照成金黄色,很好看,但他没有心情看。他的脑子里有太多东西在转:ABYSS、推送、江映柳、王皓、八千块、二十八万、AI、数据活着人死了。这些词像碎玻璃一样在脑子里乱滚,每一片都割人,但拼不出一个完整的形状。
他走在路上。路不宽,两边是居民楼,大部分窗户已经暗了,只有零星几盏还亮着。他不知道那些亮着灯的人在做什么,也许在加班,也许在看手机,也许只是忘了关灯。他的脚步声在空荡荡的路上回响,一下一下,像某种计时的声音。
他刷了一下手机。不是为了查案,是习惯,他的均屏幕时间也不短,虽然他从来不看那个数字。
一条推送弹了出来。
来自一个他从未关注过的账号。标题是:“失踪人口寻人启事:沈星,女,失踪时16岁,滨城二中高一学生……”
摘要更详细:“沈星,女,失踪时16岁,身高160cm,扎马尾,左耳后有一颗小痣。2013年7月17下午从家中外出后失联,最后一次被看到时穿白色T恤和牛仔短裤,背黑色双肩包……如有线索请联系……”
他的大拇指停在屏幕上。
心脏猛跳了一下。不是那种慢慢加速的跳,是突然跳了一下的那种,像心电图上一陡峭的直线。
白色T恤。牛仔短裤。黑色双肩包。这些细节他都知道,他报失踪的时候写了,他背得比自己的身份证号还熟。但这些细节出现在一条推送里,一条来自“系统推荐”的推送里,这不对。没有人会把十二年前的失踪信息做成推送,除非有人知道他在找她。
他点进去。
页面404。
他刷新了三次。页面不存在。URL还在浏览器的历史记录里,但指向的页面已经被删除了,不是404的“找不到”,而是“曾经存在但已移除”。
他看了看推送来源——“系统推荐”。
又是“系统推荐”。
他站在路灯下,手机屏幕的光打在他脸上,像审讯室的灯。他不知道这是“深渊”在试探他,还是巧合。但他的直觉告诉他:这不是巧合。他的直觉从来不骗他,骗他的是逻辑,是统计,是那些“失踪人口大多数都是自行离开”的结论。他的直觉说:有人在看着你,就像有人看着江映柳一样。
他站在那里很久。久到路灯灭了,声控的,他一直没出声。他站在黑暗里,像一棵长在路边的不该存在的树。
黑暗里,街道上很安静。远处有一辆车开过去,车灯扫过路面,照亮了一小片落叶。他听到自己的呼吸声,比平时重,像是在和水下什么东西拔河。
黑暗里,他攥着手机。手机是热的。屏幕是亮的。推送还在继续,下一条是“今滨城天气”,再下一条是“你可能认识的人”,再下一条是“猜你喜欢”。每一条推送的来源都标注着“系统推荐”,这四个字已经让他产生条件反射了,看到就脊背发凉。
“系统推荐”,不是朋友推荐的,不是家人推荐的,是系统。系统比任何朋友都了解你,比任何家人都关心你,它知道你几点睡、几点醒、看了什么、划过了什么、在哪个页面上停留了多久。它照顾你,无微不至地照顾你,像一个最完美的管家,唯一的问题是,这个管家可能正在给你的水里下毒。
他把手机锁屏了。
走了两步,又拿出来看了一眼。沈星的名字还挂在那里——页面404,但推送的摘要还在:失踪时16岁。
十六岁。十二年前。
他把手机放回口袋,加快了脚步。他不知道自己在赶什么,但他必须走快点。因为如果停下来,他会想到那盒冰箱里的鸡蛋,永远多一盒的鸡蛋——然后他会想到那个夏天,七月,沈星出门说去同学家写作业,再也没回来。
他冲到那个同学家,同学说沈星没来过。他沿着沈星可能走的每一条路走了一遍,从傍晚走到天亮,什么也没找到。
从那以后他再也没做过西红柿炒蛋。
但他冰箱里永远有一盒鸡蛋。
他回到家,开门,换鞋。玄关的灯是声控的,他咳嗽一声才亮。灯亮的时候他看到了鞋柜上的那双拖鞋,只有一双。旁边空出来的位置放着一盒鸡蛋,从冰箱里溢出来的,放不下了。鸡蛋盒上写着“10枚装”,但里面只剩三枚。他什么时候吃的七个?他不记得了。也许不是他吃的。也许是他忘了自己吃了。
他走到冰箱前,打开门,把新买的鸡蛋放进去。冰箱里有一盒过期的酸、半蔫了的黄瓜、一管快用完的芥末,他吃刺身的时候蘸芥末,虽然他一年也吃不了一次。这些东西和他的生活一样,不是必需品,是填充物。