纯白空间里没有时间。张一鸣不知道自己和苏晚晴在这里坐了多久,也许几分钟,也许几个小时。他的右腿已经不疼了,伤口在白色光芒的映照下显得不太真实,像一幅画在白色画布上的红色线条。苏晚晴坐在他对面,盘着腿,手里拿着一支笔和一张纸——纸是从笔记本上撕下来的,边角有点毛。她低着头,在纸上画了一个圆圈。
“这就是天道系统。”苏晚晴把纸转过来,圆圈对着张一鸣,“你觉得它最怕什么?”
张一鸣盯着那个圆圈。圆很圆,苏晚晴的手很稳,一笔画成,没有停顿。他想了想,说:“怕我把它炸了?”
苏晚晴摇头。她把纸放在两个人之间的白色地面上,用笔尖点着圆圈的边缘。“它怕你懂它。系统本质是一套程序,程序就有规则,规则就有漏洞。”她在圆圈里写了一个字——“因”,又在圆圈外面写了一个字——“果”。“你以前是‘许愿’,直接要求结果。这是系统最容易反制的方式。”
张一鸣点了点头。他想起自己被车撞的那个晚上,想起陈墨说“简单的事代价最大”。他许愿“谢谢”和“对不起”,系统判定他主动参与因果链,反噬他。不是因为他许的愿不对,是因为他许愿的方式不对。他太直接了,太认真了,太想让系统知道他想要什么了。
苏晚晴用笔尖把“因”字擦掉——纸上没有橡皮,她用笔的尾端把字迹刮淡,然后重新写了一个“描”字。“你现在要做的是‘描述’。不是‘我希望’,而是‘这件事是这样的’。”
张一鸣盯着那个“描”字,笔迹有点歪,因为苏晚晴刮纸的时候用力过猛,纸面起了一层毛。他抬起头,看着她:“举个例子?”
苏晚晴指着他的手机——那部碎屏的手机,正躺在他右边的白色地面上。屏幕朝上,裂缝从左上角斜着贯穿到右下角,像一个闪电的符号。“你不能说‘我希望手机没电’。你要说‘这手机电量撑不过十分钟’。”
张一鸣拿起手机看了一眼电量——87%,满得能撑大半天。他犹豫了一下,清了清嗓子,然后说:“这手机电量撑不过十分钟。”
手机屏幕闪了一下。
不是那种待机熄屏的闪,是一种横向的、白色的、像闪电一样的闪光,从屏幕左边扫到右边,只用了零点几秒。然后手机弹出一个低电量提示框:“电量不足,请及时充电。”电量从87%跳到了5%。
张一鸣瞪大眼睛,手机差点从手里滑出去。他死死盯着那个“5%”,嘴巴张开合不上,像一条被捞上岸的鱼。“我操!”
苏晚晴的声音很平静,像在解释一道数学题:“系统接收到你的‘描述’,认为这是一个‘事实’,会自动帮你去实现这个事实。你说‘电量撑不过十分钟’,系统会认为这是一个已经发生或即将发生的事实,它会用自己的资源去‘促成’这个事实。”
张一鸣把手机翻过来,看了看后盖——没有发烫,没有冒烟,电量就是凭空消失了。他把手机放回白色地面上,声音有点发虚:“那如果我说‘今天真幸运’呢?”
苏晚晴靠在白色墙壁上——墙壁是软的,像果冻,她的后背陷进去一点点。“系统会理解为‘你认为今天幸运,那就不需要再给你幸运’,反而会扣除你的幸运值。你之前说‘今天运气真不错’,然后车爆胎了。不是巧合,是系统扣了你的好运。”
张一鸣的脑子在飞速运转。他想起自己说过“今天运气真不错”,想起轮胎爆胎时的那声闷响。他以为自己是运气不好,实际上他是被系统扣了好运。系统把他的好运转移给了别人——给了谁?也许是那个在他爆胎后从旁边超车过去的司机,也许是那个在路边等公交时捡到十块钱的乘客。他永远不会知道,但他终于明白了原因。
“所以反向因果的核心是——不能说任何正向的词,只能用中性描述?”他问。
苏晚晴从墙壁上直起身,坐正了。她把那张纸翻到背面,又画了一个圆圈,但这次圆没有之前那么圆,边角有点歪。她在圆圈里写了两个字——“正向”,又在圆圈外面写了“反向”,然后用一条曲线把两个词连在一起。
“中性描述让系统无法判定你是‘许愿’还是‘陈述’,它会默认执行。你说‘这个系统的运行效率很低’,系统会认为这是一个事实,然后自己去优化——优化失败,消耗自身资源。你说‘这个分身跟本体的连接信号很差’,系统会认为这是事实,然后自己去检查信号,消耗更多资源。你没有攻击它,你只是描述了它的问题,它自己打自己。”
张一鸣看着那张纸,看着圆圈里外的字和曲线,突然觉得这个系统很蠢。不是那种低级错误的蠢,是一种过于理性、过于相信逻辑、过于遵守规则导致的蠢。它没有人类的直觉,没有“这可能是个陷阱”的判断力。你给它什么信息,它就处理什么信息。你描述一个事实,它就相信那个事实是真的。你不说“我希望”,它就不会防备你。
“所以我不应该问问题。”张一鸣说。
苏晚晴看着他。
“我不应该说‘为什么系统要削弱我’,我应该描述‘系统的削弱机制存在逻辑漏洞’。系统听了,会自己去检查自己的削弱机制,然后发现——等等,它真的存在逻辑漏洞吗?”
苏晚晴没有回答,但她的嘴角动了一下。那个弧度很小,小到张一鸣差点没注意,但他注意到了。那是她第一次在他面前露出那种表情——不是笑,是一种“你终于开窍了”的确认。
张一鸣从地上站起来,腿还有点疼,但他站得很直。他看着白色的“天空”——那里什么都没有,但他觉得那片白色正在慢慢变得透明,像一层快要融化的冰,冰下面是系统的核心。他对着空气说了一句:“这个系统的运行效率很低。”
手机震了。
不是弹窗,是系统APP自己弹出了一个界面——“正在优化系统资源”,下面有一个进度条,进度条卡在了47%。五秒后,进度条消失了,弹出一行字:“优化失败。系统资源不足。”手机温度骤升,烫得像刚从微波炉里拿出来的碗。张一鸣把手机扔在地上,手机弹了两下,屏幕还亮着,但系统APP卡住了——不是闪退,是卡住了,画面定格在“优化失败”那一帧,动不了。
五秒后,APP重启了。弹出一行红色警告:“检测到异常描述。正在分析。”
张一鸣低头看着那行字,心跳加速。他没有被扣款,没有被反噬,没有被车撞。他只是描述了一个事实,系统自己把自己卡了五秒。五秒,够一个程序做很多事了——够它崩溃,够它死机,够它被入侵。他抬起头,看着苏晚晴。苏晚晴坐在白色地面上,手里还拿着那支笔,嘴角那个弧度还在,但比刚才大了一点。
“你第一次主动伤到它了。”她说。
纯白空间的边缘,有一个人正在看手机。陈墨坐在缝隙外面的长椅上——不是外卖站门口的长椅,是便利店隔壁那条街的公园长椅。他穿着黑色西装,领带系得很紧,手里拿着一部黑色的手机,屏幕亮着,上面是系统后台的实时监控画面。
他的手机疯狂震动,不是来电,不是消息,是系统警报。红色的弹窗一个接一个地跳出来:“检测到异常描述。来源:测试体000001。内容:‘这个系统的运行效率很低’。分析中……分析失败。建议:立即启动清道夫协议。”
陈墨盯着“清道夫协议”四个字,手指悬在屏幕上。他没有点确认,也没有点拒绝。他只是看着,看着那个弹窗闪了三次,然后自动消失了。系统判定这不是攻击,是用户反馈。一个“建议优化”的普通反馈。不值得启动清道夫协议。
陈墨把手机翻过来扣在膝盖上。他看着夜色中的街道,路灯把行道树的影子拉得很长。他轻声说了一句,声音小到只有自己能听见:“他学会了。”
纯白空间里,张一鸣坐回地上,兴奋得像个刚考了满分的学生。他把手机捡起来,屏幕已经不烫了,系统APP恢复了正常,倍数还是1倍,抹杀倒计时还在重建。他攥着手机,手指有点发抖——不是害怕,是那种肾上腺素飙升后的余震。
“再说一个。”张一鸣说。
苏晚晴摇头:“今天够了。说太多,系统会警觉。你今天已经说了两句——‘电量撑不过十分钟’和‘运行效率很低’。第一句让系统消耗了电量,第二句让系统消耗了资源。你每说一句,系统就会多一分防备。说第三句的时候,它可能就不是‘用户反馈’了,是‘恶意攻击’。”
张一鸣把手机放回口袋。他看着苏晚晴:“那什么时候说第三句?”
苏晚晴站起来,拍了拍裤子上的灰。她走到白色空间的边缘,伸手摸了摸那堵看不见的墙,墙是软的,她的手指陷进去一点点。“等你的倍数降到1以下。你现在还是1倍,说第三句的反噬可能把你送进医院。”
张一鸣也站起来,走到她旁边。他看着那堵透明的墙,墙外面是白色,再外面还是白色。他不知道自己在哪里,但他知道自己正在往某个方向去。
“你有没有想过,”张一鸣突然说,“系统为什么不直接杀了我?它削弱我、惩罚我、反噬我,但它没有直接杀了我。为什么?”
苏晚晴的手从墙上收回来。她转过身,背靠着墙,看着张一鸣。“因为它杀不了你。你是规则的一部分。系统可以惩罚你、限制你、反噬你,但不能抹杀你。抹杀你等于抹杀因果律本身,系统会崩溃。”
张一鸣的心跳漏了一拍。他终于明白了——他不是系统的敌人,他是系统的地基。系统建在他的能力之上,所以只能锁住他,不能拆掉他。那些“削弱”是锁链,那些“罚单”是围墙,那些“任务”是监视器。系统在做的每一件事,都是在防止他发现自己才是地基。
“那我的抹杀倒计时呢?”张一鸣问,“是假的?”
苏晚晴摇了摇头。“不是假的。系统不能直接抹杀你,但它可以让你自己抹杀自己。你许愿‘林小禾死’的时候,系统把目标改成了你。不是系统在杀你,是你自己在杀自己。你许愿了,系统只是执行了你的愿望。”
张一鸣想起那一刻——心脏被攥住,嘴角渗血,倒计时一秒一秒地走。他不是被系统杀死的,是被自己杀死的。系统只是帮他扣下了扳机。他深吸一口气,把那个画面从脑子里甩出去。现在不是想这些的时候。
“教我。”张一鸣说,“教我规则语言学。”
苏晚晴从口袋里掏出那个笔记本——不是黑色封皮的那个,是一个更小的、手掌大小的便签本,边角卷起,纸面泛黄。她翻开第一页,上面只有一行字:
“规则不是答案,是问题。”
张一鸣盯着那行字,念了一遍,然后抬起头:“什么意思?”
“大多数人以为规则是答案——做对了就奖励,做错了就惩罚。但规则不是答案,规则是问题。每一个规则背后都有一个‘为什么’。你找到‘为什么’,就能找到漏洞。”苏晚晴翻到第二页,上面画了一张图——不是树状图,是一张流程图,箭头弯来弯去,像迷宫。“这是系统处理‘描述’的流程。”
张一鸣凑过去看。箭头从“接收输入”开始,分叉成两条——左边写“祈使句”,右边写“陈述句”。祈使句的箭头指向“判定为主动请求”,然后指向“验证权限”,再指向“执行”,最后指向“记录因果”。陈述句的箭头指向“判定为事实陈述”,然后指向“验证真伪”,再指向“补全因果链”,最后指向“执行”,然后指向“记录因果”。
两条分支在“执行”和“记录因果”处合并了。也就是说,不管你说的是什么句式,系统最后都会“执行”你的话。区别在于——祈使句需要经过“验证权限”,陈述句需要经过“验证真伪”。验证权限是系统在问你:“你有资格说这句话吗?”验证真伪是系统在问自己:“这个事实是真的还是假的?”
“你发现了没有?”苏晚晴指着“验证真伪”那个框,“系统在验证真伪的时候,不会判断这句话是不是‘故意’的。它只判断真假。你说‘这个系统的运行效率很低’,系统会去检查自己的运行效率——确实很低,因为它的资源被消耗了。它不会问‘你是不是故意的’,因为它没有‘故意’这个概念。”
张一鸣盯着那张图,心跳越来越快。他突然理解了——系统不是没有情感,它是没有“意图识别”功能。它分不清“许愿”和“陈述”,因为两者在语法上都是句子。它只能根据句式来判断,而句式是可以伪造的。
“所以我只要用陈述句,系统就会把它当成事实?”张一鸣问。
“对。但陈述句的内容必须让它无法快速验证真伪。”苏晚晴指着“验证真伪”框下面的一行小字,张一鸣刚才没注意到——“验证时间:与信息复杂度成正比”。也就是说,你说的话越复杂,系统验证真伪的时间越长。在验证的这段时间里,系统会消耗资源。消耗得越多,运行效率越低。运行效率越低,你就越可以用“这个系统的运行效率很低”来消耗更多资源。
这是一个正反馈循环。一个可以用一句描述触发的正反馈循环。
张一鸣把那张图在脑子里画了三遍,然后闭上眼睛,深呼吸。他睁开眼,看着苏晚晴:“我好像懂了。”
苏晚晴把便签本收起来,放回口袋。她看着张一鸣,眼神里有了一种他从没见过的情绪——不是担心,是期待。
“那你试一句。”她说。
张一鸣站起来,走到纯白空间的中央。白色的“光”从他脚下漫开,没有方向,没有温度,只是白。他深吸一口气,对着虚空说了一句:“这个系统的验证机制存在延迟。”
纯白空间没有变化。手机没有震。系统APP没有弹窗。他等了三秒,五秒,十秒。什么都没有发生。
他回头看着苏晚晴。苏晚晴站起来,走到他旁边。她从他口袋里抽出那部碎屏手机,按亮屏幕——系统APP卡住了。不是闪退,是卡住了,画面定格在“系统主界面”,时间显示是十秒前。
苏晚晴把手机还给张一鸣:“它在验证你的描述。验证‘验证机制是否存在延迟’。验证本身就需要时间,而这个时间就是延迟。”
过了大概二十秒,手机震了。系统弹窗:“描述验证通过。当前验证机制延迟为0.3秒。建议优化。”弹窗消失了,系统APP恢复正常。张一鸣看着那行“建议优化”,忍不住笑了。系统在给自己提建议,因为他的描述触发了它的自我检查程序。
苏晚晴也笑了。这次她的笑容不是一闪而过的闪电,是持续了好几秒的、真实的笑。她没有笑出声,但嘴角的弧度很大,大到眼角都弯了。
纯白空间的边缘,陈墨的手机又震了。他拿起来看——系统警报,红色的,但级别比上次低。内容写着:“检测到异常描述。来源:测试体000001。内容:‘这个系统的验证机制存在延迟’。验证结果:属实。建议:无。”
陈墨把手机放回口袋。他看着夜空,今晚没有星星,只有一层薄薄的云,把月亮遮住了。他靠在长椅上,闭上了眼睛。他知道张一鸣正在学会怎么拆掉这个系统,而他什么都不能做。不能阻止,不能帮忙,只能看着。
他看着,等着。
纯白空间里,张一鸣把手机放回口袋,看着苏晚晴。他的右腿还有点疼,但他的眼睛里没有疲惫了。那种眼神苏晚晴见过——在第136个测试体死之前,他的眼睛里也有这种光。但张一鸣的不同,他的光不是绝望前的回光返照,是一种终于找到方向的确定。
“明天的任务是什么?”张一鸣问。
苏晚晴想了想:“陈墨会给你发新的。可能是‘我理解你’,可能是‘你辛苦了’,可能是任何一句听起来无害的话。完成任务的奖励是倍数-0.5,目的是不让你降到1。他卡着你的倍数,不让你解锁后门代码。”
张一鸣咬了咬牙:“那我就不做任务。”
苏晚晴摇头:“不做任务,倍数+5。你从2倍直接跳到7倍,说一句描述就能要你的命。”
张一鸣攥紧了拳头。陈墨不是在卡他,是在逼他。做任务,倍数降得慢。不做任务,倍数升得快。无论怎么选,他都被困在1倍到2倍之间,进不去,出不来。
“那怎么办?”他问。
苏晚晴走到白色空间的边缘,伸手摸了摸那堵看不见的墙。她没有回头,背对着张一鸣说:“你在这里练。练到你说一句描述,系统不再需要验证。练到你的描述不再是‘异常’,而是‘正常’。”
张一鸣愣了一下:“什么意思?”
苏晚晴转过身看着他:“系统的判定基于‘概率’。你说‘这个系统的运行效率很低’,系统第一次验证的时候,会标记为‘低概率事实’。你说第二次,概率会提高。你说第十次,概率会提高到系统不再验证,直接接受为‘常态’。到了那一天,你说这句话不会再触发警报,陈墨不会再收到通知。系统会把它当成理所当然的事实。”
张一鸣的脑子在飞速运转。他需要重复。重复到系统麻木,重复到系统不再把他当成威胁,重复到他的描述变成系统自身的“知识”。不是洗脑,是训练。像训练一只狗,给它食物,让它坐下。他给系统信息,让它自己优化自己。
他深吸一口气,对着白色虚空说:“这个系统的运行效率很低。”
等了十秒,系统没有弹窗,没有警告,没有扣款。他重复第二遍:“这个系统的运行效率很低。”
又等了十秒。没有反应。
第三遍。第四遍。第五遍。
苏晚晴没有打断他。她坐回地上,靠着墙,看着张一鸣一遍又一遍地重复那句话。白色空间里没有回音,每一个字都被白色吸收了,像石头沉进深海。
张一鸣说到第十遍的时候,手机亮了。不是系统弹窗,是电量提示——电量不足,请及时充电。他低头看着那行字,笑了一下。他的描述没有触发警报,但它确实在消耗系统的资源,因为系统每一次验证“运行效率低”这个描述,都需要消耗自己的CPU去检查自己的运行效率。消耗了十次,手机电量从5%降到了2%。
他把手机连上充电宝,插进口袋,然后继续。
第十一遍。第十二遍。第十三遍。
纯白空间外面,陈墨的手机安静了。没有震动,没有警报,什么都没有。他拿出手机看了一眼——系统后台的监控画面里,张一鸣的描述被标记为“常态”,不再推送给执行员。
陈墨把手机屏幕扣在膝盖上,抬起头看着被云遮住的月亮。他不知道张一鸣在里面重复了多少遍,但他知道,张一鸣正在接近那个门槛——那个说出后门代码的门槛。
他轻声说了一句:“快一点。”然后闭上了眼睛。
纯白空间里,张一鸣说完了第二十遍。他的嗓子有点哑,但眼睛很亮。他看着苏晚晴,苏晚晴点了点头。他坐下来,喝了一口水——水是苏晚晴从裂缝外带进来的,瓶身上还有便利店的价格标签。
“明天,”张一鸣说,“我能说那句话了吗?”
苏晚晴没有回答。她伸出手,在空中划了一下。纯白空间裂开一道缝,外面是深夜的街道。路灯还亮着,地面还是湿的,但雨已经停了很久了。裂缝外面,没有人。没有陈墨,没有黑西装,什么都没有。
“先出去。”苏晚晴说,“今天练够了。”
张一鸣站起来,拄着拐杖,走到裂缝前。他回头看了一眼纯白空间——白色的墙壁、白色的地面、白色的“天空”。这个空间救过他的命,但他说不上喜欢它。它太干净了,干净得没有人味。
他跨出裂缝,脚踩在潮湿的水泥地面上。夜风吹过来,带着雨后泥土的味道。他深吸一口气,觉得肺终于活过来了。苏晚晴跟在他后面,裂缝在他们身后合拢。
街道很安静。路灯把两个人的影子拉得很长,交叠在一起,像一个身体长了四条腿。
“你饿不饿?”张一鸣突然问。
苏晚晴看了他一眼:“你有钱?”
张一鸣从口袋里掏出一把零钱,数了数——四十七块。他想起第一次被系统扣款时,兜里的零钱全部变成了废纸。那些废纸他还没扔,还压在出租屋的枕头底下。这四十七块是他今天送餐挣的,没有被系统盯上。
“够吃两碗馄饨。”张一鸣说。
苏晚晴没有说好,也没有说不好。她转身,朝街角那个还亮着灯的馄饨摊走去。张一鸣拄着拐杖跟在后面,步子不快,但没有停。
馄饨摊的老板是一个六十多岁的老大爷,围裙上沾着面粉,手上全是皱纹。他看到苏晚晴走过来,咧嘴笑了:“姑娘,还是老样子?”
苏晚晴点了点头。她在一张折叠桌旁边坐下来,张一鸣坐在她对面。
两碗馄饨端上来,热气腾腾。张一鸣舀了一个塞进嘴里,烫得嘶了一声。苏晚晴吃得很慢,一个一个地吃,像在数数。两个人没有说话,街角很安静,只有勺子碰碗的声音和远处偶尔经过的汽车声。
吃完馄饨,张一鸣付了钱,四十七块变成了两块。他把最后两块钱放进口袋,站起来。苏晚晴还坐着,看着空碗里剩下的汤。
“你说明天,”苏晚晴说,声音很轻,“你能说那句话了吗?”
张一鸣想了想。他说了二十遍“这个系统的运行效率很低”,系统不再把它当成异常。但“苏晚晴的管理员权限应该恢复”这句话,比“运行效率”复杂得多。它涉及权限、身份、系统架构。说一遍,系统可能需要验证很久。验证的过程中,系统会锁定他,会攻击他,会想尽办法打断他。
“不知道。”张一鸣说,“但我想试试。”
苏晚晴站起来,把椅子推回桌下。她看着张一鸣的眼睛,看了两秒,然后说:“好。”
两个人走出馄饨摊,走在深夜的街道上。路灯把他们的影子拉得很长,一直延伸到下一个街角。张一鸣拄着拐杖,步子不快,但很稳。他知道明天会发生什么——他会说出那句话,系统会锁定他,他会进入因果空白期。然后他会在苏晚晴的帮助下,解开那些锁。或者,他会死。
但他不害怕了。因为他不是一个人。