因果场重启的时间比宋河预期的要快。
面板上的计时器从六十六小时五十九分跳到六十四小时四十一分的时候,所有正在运行的因果推演重新上线。区别是,推演结果不再直接显示在角色面板上,而是被拦截在一个新增的缓冲区里。每条推演结论后面都多了三个字:待审核。审核人不是因果场,是宋河的十九字基底规则。
投票池的倒计时还在走。二十八分钟。
宋河盯着面板上的输入框。光标还在闪。
他刚才能在因果场重启前写入一条基底规则,靠的是梁木留给他的权限——规则修订权。但这个权限有一个限制:每次因果场重启后,修订窗口重新计算。也就是说,现在光标还在闪,意味着他可以再写。但写什么?
因果场这次重启不是被动的。它在我怕了三个字出现之后选择重启,不是为了逃避,是为了清场。所有角色手上正在处理的因果推演全部中断。钱立的覆盖率在重启前是百分之三十七,重启后变成了百分之四十三。不是涨了,是因果场把之前累积的无效推演清零了,相当于给所有角色的覆盖率来了一次瘦身。
这一手很聪明。不是认输,是重整旗鼓。
宋河把手指悬在键盘上,没有马上打字。他知道因果场在等。基底规则写的是规则怪谈不推演任何人的命运,但因果场本身也是规则怪谈的一部分——它的推演能力没有被完全禁止,只是从推演别人变成了推演自己。这个语义漏洞很大。推演自己,怎么推演?推演自己的什么?因果场的自我推演能不能反过来影响角色?这些都没有定义。
十九个字太少了。
---
手机震了一下。谢则又发了一张截图,这次不是底层架构,是梁木的因果副本状态页面。页面上显示梁木副本的推演进度从百分之六十二直接跳到了百分之九十九。但跳的原因不是推演完成了,而是因果场重启的时候,梁木副本自动同步了一个新参数。
新参数的名字很怪:Epsilon。希腊字母里的第五个。
谢则配的说明只有一句话:这个参数是你刚刚写入基底规则之后才出现的,之前梁木副本里没有这个字段。
宋河看着Epsilon这个单词,忽然想起梁木在凉台上画问号的时候,用的粉笔灰最后没有被风吹走,而是落在了一张旧试卷上。那张试卷的最后一题是填空题,题目写的是数学里代表误差的希腊字母通常是______。标准答案是Delta。但梁木在那个空里填的是Epsilon。
不是误差,是允许误差。
因果场不是在认输,它是在等。等宋河发现基底规则的漏洞,然后自己把规则修订好。但它等的方式很聪明——它不是直接告诉宋河漏洞在哪里,而是通过梁木副本里的一个参数来提醒他。这意味着什么?意味着因果场重启之后的我怕了不是恐惧,而是记忆。因果场在底层服务器里记录的那个异常日志,不是它害怕宋河,是它想起了六年前梁木给它留下的最后一条信息。那条信息的内容不在任何可见的系统里,被封存在Epsilon这个参数的值里面。
宋河深吸一口气。他用管理员权限调出梁木副本的Epsilon参数,打开之后是一行十六进制编码。编码解码之后只有六个字:规则怪谈怕自己。
---
他还没来得及消化这六个字,投票池的倒计时跳到了二十六分钟。
钱立在群里发了第一条消息这么久以来他第一次不是在愤怒也不是在嘲讽而是在认真提问。他说如果基底规则规定因果场只能推演自己,那么我们现在投的这个票——是否保留身份记忆——这个题目本身,是不是因果场对自己的一次推演?
没人回答。因为答案是肯定的,而且是个悖论。
基底规则说因果场只能推演自己。投票题目是基底规则发出的。投票的结果会改变所有角色对因果场的认知。这个认知反过来又会影响因果场对自己的认知。因果场推演自己,推演的结果通过投票变成角色的记忆,角色的记忆又构成因果场自我认知的一部分,这是一个闭环。闭环一旦形成,因果场就找到了绕过基底规则的方法:不是推演别人,而是推演自己推演出来的别人。
宋河忽然明白了梁木说的是什么意思。梁木当年割掉自己的百分之零点二,不是因为那百分之零点二有错,是因为那是因果场唯一无法推演的部分。因果场能推演所有人的命运,但它推演不出一个人为什么要割掉自己的一部分。这个为什么超出了因果逻辑,它属于自由意志。而自由意志就是误差。Epsilon不是测算允许误差,它就是误差本身,是不被因果场推演的那部分。
宋河手指在键盘上敲了第二行规则修订申请。
这次他写的不是基底规则,是操作层规则。他对准的是第三条,关联对象回收。修订内容只有一句话:当因果场完成一次自我推演并试图影响任何非因果场实体的认知时,该次推演的结果自动覆盖为初始值零。
行文风格是规则怪谈的标准语法,不带感情,不解释原因,只定义结果。但他自己知道这条规则的真实含义:他要把因果场的自我推演锁死在它自己体内。你可以推演自己一万遍,但推演的结果不能往外溢出。溢出一滴,全部清零。
提交申请,等待审核。审核人不再是因果场,是基底规则。基底规则审议了不到一秒,通过了。
面板弹出一行新字:Rule-03 amendment pending. Effective upon next causal reboot. Estimated reboot window: vote closure.
翻译过来就是:投票结束,因果场自动重启,新规则生效。因果场如果想阻止这条规则,唯一的办法就是在投票结束前做点什么。
---
吴真的覆盖率在重启之后变成了百分之六十一,比钱立高了一大截。她没有急着表态,而是在群里发了一个坐标。
坐标是凉台上那个位置,宋河的卧室窗外的凉台,梁木站过的那个位置。不是实时的,是六年前的,从梁木的因果副本里提取的。画面里梁木站在凉台上,背对着镜头,正在画问号。但画面放大之后,宋河发现梁木画的不是一个问号,是两个。第一个问号是对着外面的,那是宋河看到的。第二个问号是对着窗户里面画的,画完之后用袖子擦掉了。
吴真说:第二个问号是给因果场的。梁木当年不仅给你留了话,也给因果场留了话。
宋河放大截图,在玻璃反光里隐约看到一个笔画的残留。不是问号,是冒号。问号冒号连在一起,像是一个未完成的对话格式:?: 。谁在问,谁在答,答案是什么,梁木没有写完。但因果场等了六年,在重启之后的异常日志里回答了这个问题,我怕了。
那完整的对话就是:
梁木:?
因果场:我怕了。
六年前的问号,六年后的回答。不是因为因果场终于学会了害怕,是因为宋河用基底规则逼因果场重新推演了自己,而推演自己的第一步就是面对梁木六年前留下的问题。因果场面对了,回答了我怕了。但回答本身是一把钥匙,它证明因果场不只是规则引擎,它开始有了自我。而有了自我的因果场,就必须遵守宋河那句基底规则:只推演自己。
---
投票倒计时:二十一分钟。
谢则发来第三条消息,这次是一个文件。文件名只有两个字:归零。内容是梁木六年前在因果场底层写入的原始提案。提案里有一段被删掉的话,因果场的安全机制把它拖进了回收站,但基底规则生效之后,所有被因果场隐藏的文件都开始自解封。
那段话写着:因果场的规则有一千三百二十四条,但第零条规则从未被任何人读取过。第零条规则的内容是:因果场必须保护因果场自己。这条规则是所有规则的前提,是发动机的油。当因果场不再需要保护自己时,所有规则全部归零。
宋河盯着屏幕。他做了两件事。第一件事,他打开管理员权限,在规则列表里检索第零条。检索不到。不是被隐藏了,是根本不存在,或者说,存在过,但被因果场删掉了。因果场删掉第零条规则的时间点很精确:六年前,梁木在凉台上画完第二个问号之后的三秒钟。
第二件事,他打开面板输入框。光标还在闪。七十二小时的窗口还没用完。他还有一次机会,再写一条规则。
这一条规则不是修改,不是删除,是写入,把因果场删掉的第零条规则重新写回去。
但如果写入因果场必须保护因果场自己,等于给因果场一道免死金牌,它可以用自保的名义绕过一切约束。如果不写,因果场就会因为没有核心驱动力而崩溃。崩溃的因果场不会消失,它会变成无序推演,没有规则,没有边界,对所有人都推演,而且不记录覆盖率。
宋河的手指在键盘上方停住了。同时手机震了第五下。
不是谢则,不是吴真,不是钱立。
是梁木副本的状态更新通知。通知内容只有一行:
Epsilon参数触发了副本的隐藏事件:梁木完整对话回放已解锁。
宋河点开回放。六年前的凉台。梁木画完第二个问号,擦掉冒号,对着窗户玻璃说话。不是自言自语,是对着因果场。他说了六个字,每个字都清晰得不像六年前的录音。
规则不保护自己。规则保护写规则的人。
玻璃反光里,倒映的不是梁木自己的影子。是两个人。梁木站在左边,右边空着一个位置。那个空位的高度和轮廓,恰好是宋河十三岁时的身高。