凌晨两点,我还坐在书房里。地址发布邮箱 ltxsbǎ@GMAIL.COM
阿哲发来的那条消息就一行字,可我反复看了不下二十遍。暗网有个新样本,没见过。波形干净得过分,不像要骗钱,不像要冒充谁,只是在那儿生成。我调出残片的流量日志,准备从头理一遍。
镜2.0的残片,理论上早就该死了。卷六收网的时候,核心节点封了,林未自首进了教材,暗网的分发链被老周那边拆了三回。按阿哲的判断,剩下的碎片顶多跑些残留缓存,过不了多久就会自己耗尽。
可它没有。
我打开监控面板,调最近七天的流量曲线。前六天平得像一条死了的心电图,到第七天——也就是今天——突然跳了一下。不是大幅波动,只是一个小凸起,要不是阿哲眼尖,根本不会注意到。
我把那个凸起放大。时间戳是下午三点十七分,持续了不到四秒。四秒之内,残片向外发送了一段数据包,同时接收了一段。
发送和接收。
不是单向广播。是双向。
我又往前翻了两天,在更早的日志里找到了类似的小凸起。每隔几小时一次,每次都不超过五秒。频率在加快——间隔从最初的十二小时缩到了八小时,再到今天的六小时。
它在跟什么东西对话。
我靠回椅背,盯着屏幕。屏幕的光照在脸上,窗外的夜黑得实。地址发布邮箱 LīxSBǎ@GMAIL.cOM书房的空调嗡嗡地转,桌上那杯水已经凉透了。
阿哲那边肯定也看到了。我拿起手机,给他发了条消息:你看到流量了吗?
他回得快:看了。不对劲。
不是缓存耗尽?
不是。缓存在第五天就该清空了。今天的流量是新生成的。
新生成。我把这三个字看了两遍。这意味着残片不是在播放旧数据,是在产出新内容。而且它在应答——有东西在跟它对话,它回话了。
我把日志导出来,又拉了一遍应答数据的特征。模式不像预录脚本的触发,倒像是——我找了半天词——像是在学。每一轮应答都比上一轮长一点点,复杂一点点,像是有人在教一个孩子说话,而那个孩子学得很快。
我拨了阿哲的电话。他接起来没说话,等我先开口。
“你跑特征分析了吗?”
跑了。他声音压得低,应该是也熬着。“不是镜的框架。镜是预渲染逻辑,有固定模板。这个没有模板。”
“那是什么?”
我说不准。但它——他顿了一下,“它在实时应答,陆时。不是播放,是生成。我发了一段测试音频过去,它回了。四秒之内。内容是针对我那段音频的。”
四秒。实时生成,实时应答。镜做不到这个,声临也做不到。镜是预录拼接,声临是延迟合成,最快也要十几秒。四秒意味着它有一套全新的生成管线,而且跑在分布式节点上,算力分散到检测不到主源。
关得掉吗?我问。
阿哲没立刻答。电话那头有键盘敲击的声音,他应该一边说一边在跑程序。
“我试了封一个节点。封了之后,两分钟之内,另外两个节点补上来,流量恢复。”
自愈。封一个,长两个。
先别大面积动了。我说,“盯着它,把每一轮应答都录下来。明天我跟沈听商量,召集八人小群。”
“好。”
挂了电话,我把椅子转过去,面朝门的方向。
沈听站在门口。
她穿着睡衣,头发散着,手里端着一杯热咖啡。不知道站了多久,脸上没有困意,是那种清醒的、安静的神情。
“你听见了?”
听了一半。她走过来,把咖啡放在我桌上,手指在我肩膀上按了一下。“残片在应答?”
“实时应答。四秒以内。封不掉,自愈。”
她没说话,端起她自己那杯水——不是咖啡,是温水——喝了一口。然后把杯子放下,弯腰凑到屏幕前,看我调出来的流量曲线。她的头发垂下来,扫过我手背。
频率在加快。她说。
“嗯。六小时一次了。”
“明天会更快。”
“大概。”
她直起身,看着我的眼睛。书房的灯没开,只有屏幕的光。她的脸一半亮一半暗,那双眼睛在暗处也是亮的。
先睡。她说,“明天一早召集。”
“你不去看了?”
“明天再看。你说的,新东西急也没用。”
我笑了一下。这话是我跟她说的,她原样还给我了。
她把手从我肩膀上拿开,往门口走。走了两步又回来,弯身在我额头点了一下。嘴唇是温的,带着她那杯水的温度。
“咖啡喝完再睡。”
“知道了。”
她出去了。书房的门没关严,留了一条缝,客厅的光透进来一小条。
我端起咖啡喝了一口,转回去看屏幕。流量曲线又跳了一个小凸起。新的,间隔五小时四十七分。
又快了十三分钟。
我把数据存档,打开八人小群的对话框,打好明天要发的消息——没有发,先存了草稿。
然后关了屏幕,把咖啡喝完。
杯底还剩一层凉了的咖啡,我没喝。放到桌角,明天洗。
出去的时候,路过卧室。沈听侧躺着,眼睛闭着。呼吸很浅,不像睡着了。
我没进去打扰。站在门口看了她一会儿。
她翻了个身,面朝门这边,闭着眼说了一句:“看什么。”
“看你。”
“睡。”
我笑了,回了书房把灯关了,在沙发上躺下。不困,但闭着眼睛也行。脑子里全是那条流量曲线,一跳一跳的,像什么活过来的东西在试探。
它不是在播放。它在应答。
应答,是活的东西才会做的事。