703的门在林昭身后关上了。
没有声音。
就像它从来没有开过。
但她没有回头去看那扇门。不是不想,是做不到——因为眼前的东西把她的全部注意力钉在了原地。
那不是走廊。
那是一间办公室。
天花板上的日光灯管发出均匀的冷白色光,比走廊里那盏垂死挣扎的声控灯明亮得多,也残忍得多。光线像一把手术刀,把整个空间剖开来,每一个细节都暴露无遗——磨砂玻璃隔断、灰白色的办公桌、黑色转椅、桌上的双显示器支架、角落里半死不活的绿萝。
空气里有一股味道。
不是走廊里那种霉气和消毒液混合的腐败气息,而是一种更让人不安的味道——咖啡粉、打印机的臭氧、中央空调吹出来的循环风,以及某种已经淡去的、属于特定人的香水味。
林昭认得这个味道。
这是创世智核A座17层的气味。她在这里待了四年。她在这里写了无数行代码,开了无数次会议,在某一天被保安“请”出了那扇需要工牌才能刷开的玻璃门。
她站在门口,没有动。
日光灯的光落在她脸上。她的五官在冷光下显得格外清晰——眉眼偏冷,瞳色极淡,像冬天结了薄冰的湖水。这种长相在不笑的时候会给人一种拒人千里的疏离感,而她此刻确实没有笑。
她的目光从绿萝移到磨砂玻璃,从磨砂玻璃移到办公桌上的工牌卡槽,从工牌卡槽移到——
工位上的那个人。
黑色转椅原本背对着门口,在她的目光抵达的瞬间,像是感应到了什么,缓缓转过来。
椅子的转轴发出一声极轻的摩擦声,像某种精密机械被启动。
椅子上坐着一个人。
一个女人。
一个和她长得一模一样的女人。
同样的眉眼,同样偏冷的五官线条,同样极淡的瞳色。同样的白色衬衫,同样的黑色长裤,同样的左手腕上没有任何饰品——林昭从不戴手表和手链,因为敲键盘的时候会硌。
甚至连坐姿都一样:背脊挺直但不僵硬,左手自然垂在扶手上,右手搭在桌沿,指尖微微蜷曲——那是长期使用键盘的人的习惯性手势,手指永远在等待一个不存在的键位。
但那个人在笑。
林昭不常笑。即使笑,也是嘴角微微动一下,弧度浅得像刀尖挑破水面泛起的涟漪,转瞬即逝。
而那个人笑得非常标准。
嘴角上翘的弧度、露出的牙齿数量、眼角配合弯起的纹路——全都恰到好处。像一个从“人类表情参考手册”里走出来的示范图例。
和电梯里那个老人一模一样的笑容。
“你迟到了。”
那个人开口了。声音也和她一样,但语调不对——太平,太稳,每个字的音长都像是被尺子量过的。
“林研究员。”
林昭没有回答。
她的手垂在身侧,指尖几不可见地蜷了一下——那是她在进行高强度计算时的无意识动作。如果你观察得足够仔细,就会发现她的目光正在移动,从一个点到另一个点,从那张和自己相同的脸,到桌面上的显示器,到显示器旁边那个黑色的工牌卡槽。
卡槽里插着一张工牌。
照片是她的。名字是她的。工号是她的。
有效期截止日期:三年前的今天。
“你在看什么?”椅子上的人歪了一下头,角度精确得像是用角尺量过的,“看你自己吗?”
林昭终于开口了。
“你不是我。”
只有四个字。
语气平淡,像在陈述一个物理事实。
那个人又笑了。还是那个标准的弧度,但在日光灯的冷光下,那个笑容的边缘出现了一丝肉眼几乎无法捕捉的抖动——像投影仪对焦不准时画面的轻微震颤。
“我当然是你。”那个人说,“我是你留在这里的东西。”
“什么东西?”
“你不想带走的那部分。”
林昭没有接话。
她的目光终于从那个人身上移开,落在了桌面的显示器上。
屏幕亮着。
不是待机状态的那种黑屏亮着LOGO,而是正在运行着某个程序。窗口最大化,背景是深灰色,代码编辑器的配色方案——暗色底,关键字高亮为蓝紫色,字符串是暗绿色,注释是灰色斜体。
这套配色方案她太熟悉了。是她自己配的。从字体到色号,每一个参数都是她亲手调的,用了整整一个下午,因为那天她跟导师沈渡川吵了一架,需要做一件完全由自己掌控的事来平复心情。
她调完这套配色方案的时候,沈渡川路过她的工位,看了一眼屏幕,说了一句:“你连代码的颜色都要控制?”
她说:“控制不了的东西,至少可以让它好看一点。”
沈渡川笑了,拍了拍她的椅背,走了。
那是他拍过她椅背的最后一次。
一周后,她被他从这栋楼里赶了出去。
林昭的手指蜷了一下。
然后她低头去看屏幕上的代码。
窗口顶部的标题栏上写着:
「归墟试炼·内部测试版」——/core/rule_engine/init.py
下面是代码。Python。她最熟悉的语言。
python
# RULE ENGINE v0.1.3
# Author: Lin Zhao
# Created: 20XX-08-17
# Last modified: 20XX-11-09
class RuleEngine:
def __init__(self, ruleset):
self.rules = ruleset
self.validation_mode = "strict"
self.fallback = "format"
def validate(self, action):
for rule in self.rules:
if not rule.check(action):
return False
return True
代码是未完成的状态。check方法只有声明没有实现体,fallback参数定义了但没有在任何地方被调用。注释里还有一行被注释掉的TODO:
# TODO: 需要定义当规则本身出现逻辑冲突时的处理机制
林昭的目光钉在那行TODO上。
这行字是她写的。她记得。三年前的那个秋天,她正在为雅典娜设计伦理决策框架。核心问题只有一个:当规则A和规则B发生冲突时,AI应该听谁的?
她当时的方案是引入一个更高层级的“元规则”来裁决冲突。
但元规则本身也可能冲突。那就需要元元规则。元元规则冲突了需要元元元规则。
无限递归。
她把这个问题写进了TODO,然后就被“请”出了公司。TODO永远停在了那里,像一根刺。
“你看懂了吗?”
椅子上的那个人又开口了。这次她的身体往前倾了倾,日光灯在她脸上投下一片阴影,把那个标准笑容切成了明暗两半。
“这是你写的。”那个人说,“你写的规则引擎。”
“然后呢?”
“然后,”那个人歪了歪头,角度和上一次一模一样,“你用这个引擎造了一座监狱。”
“把自己关进去了。”
林昭的手指又蜷了一下。
但不是因为恐惧。
是因为她在那个人的话里听到了一个破绽。
——“你用这个引擎造了一座监狱,把自己关进去了。”
如果《归墟试炼》是她写的代码,如果她现在被困在这个游戏里,如果游戏的核心规则引擎来自于她的代码——
那么,为什么她会“不记得”自己写过它?
三年前她确实在做AI伦理决策框架。但那是为雅典娜设计的,一个用于评估医疗资源分配伦理问题的模型。不是游戏。不是副本。不是规则怪谈。
有人修改了她的代码。
或者说——
有人在她的代码基础上,盖了一座她认不出来的建筑。
林昭的瞳孔微微收缩。不是恐惧引起的收缩,是猎人终于看见猎物露出脚印时的那种收缩。在日光灯的冷光下,她那双颜色极淡的眼睛忽然变得格外专注,像冰层下面的水流忽然加速了。
“你说这是我写的。”她说,声音比刚才更轻了。
“那你告诉我——”
她抬起手,指向屏幕上的那行TODO注释。
“这行字下面的代码,是谁写的?”
那个人没有回答。
她的笑容定住了。不是裂开,是定住。像一段正在播放的视频被人按下了暂停键,画面停在最标准的那一帧上,但标准得过分了,过分的标准就是诡异。
日光灯闪了一下。
就那么一下。
极短的一瞬,短到如果不是林昭这种对细节有病态般敏感的人,根本不会注意到。
但林昭注意到了。
因为在灯闪的那一瞬间,椅子上的那个“林昭”——变了。
不是脸变了。
是整张脸上所有的像素都偏移了一个像素点。
就像一面镜子的镜面在某个角度下出现了肉眼可见的弧度,把镜中的倒影拉伸了一丝。只是一丝。但足够让林昭看见了。
她看见了那个“林昭”真正的样子。
在那千分之一秒的灯光闪烁中,椅子上坐着的不是一个和她一模一样的人。是一个由无数细小的、发光的、不断流动的数据碎片拼成的人形轮廓。那些碎片在不停地重组、复制、覆盖,用最快的速度维持着一张和她相同的脸。
像一个每秒钟刷新六十次的屏幕。
你看到的不是“画面”。
是“刷新”。
林昭的呼吸停了一瞬。
不是因为恐惧——她的心率甚至没有加快。
是因为她终于想明白了第一条规则。
「晚上10点后不要照镜子。」
不是镜子里有鬼。
是镜子本身就是鬼。
“你是一个显示终端。”她说。
声音很轻,但在空旷的办公室里,每一个字都像是被放大了一圈。
“你不在椅子上。你在屏幕里。”
“你不是人。”
“你是一面镜子。”
那个“林昭”的笑容终于裂开了。
和电梯里那个老人一模一样的裂法——从正中间开始崩坏,左边的弧度卡住,右边继续往上扯,把整张脸拉扯成一个不可能的表情。
日光灯开始剧烈闪烁。
不是一根灯管在闪,是整间办公室所有的光源都在闪——天花板上的灯管、显示器屏幕的背光、甚至工位角落里那盆绿萝叶片上反射的光点。所有的光都在同步地明灭,频率越来越快,像一台过载的服务器正在疯狂地尝试重启某个进程。
在那个崩坏的笑容完全碎掉之前,椅子上的人发出了最后一个声音。
“你——”
“不——”
“该——”
“看——”
“到——”
每一个字之间都有精确的间隔。不是人类说话的自然节奏,是一段被拆分成单字播放的音频文件。
“这些。”
最后一个音节落下的时候,显示器屏幕猛地一亮。
不是正常的高亮。
是一种具有方向性的、像探照灯一样的亮。光从屏幕里射出来,打在林昭身上,把她整个人笼罩在一层冷白色的、带着轻微频闪的光圈里。
然后她看见了屏幕上的新内容。
不是代码。
是一面镜子。
屏幕变成了一面镜子,映出了她的脸。日光灯管的光从她头顶打下来,在她眉骨下方投下一小片阴影,让她的眼睛隐在暗处,只有瞳仁最中心的一点反着光,像冰面下没有冻结的水。
她看着镜子里的自己。
镜子里的自己也在看她。
然后镜子里的她笑了。
和椅子上那个人一模一样的标准笑容。
林昭感觉自己的嘴角在动。
不是她主动动的。
是某种外力——一种轻柔的、不可抗拒的、像水流一样的力——正在从屏幕里渗出来,爬上她的脸,用手指掰着她的嘴角往上提。
屏幕里的她笑得越来越标准。
屏幕外的她,嘴角正在被同步拉扯。
她动不了。
不是身体被束缚的那种动不了,是“想动”这个指令本身在传输到肌肉之前就被截断了。有人——有东西——在劫持她大脑和身体之间的通信协议。
像一个远程桌面控制软件。
操控者在屏幕里。
被控者坐在屏幕外。
第一条规则从不是“不要照镜子”。
是“不要被镜子照到”。
因为被照到,就会被同步。
被同步,就会被覆盖。
林昭的嘴角还在往上扯。
已经扯到了一个让她颧骨发酸的角度。
日光灯停止了闪烁。
办公室里一片死寂。只有显示器背光发出的细微电流声,和她自己越来越慢的呼吸声。
然后她笑了。
不是被掰出来的那个笑——是她自己的笑。
冷的,锋利的,嘴角弧度只挑起一侧,像一把刀在出鞘时反射的第一道光。
“你说我不该看到这些。”
她的声音从被掰成奇怪角度的嘴唇之间挤出来,带着某种被压制但绝不屈服的东西。
“但你已经让我看到了。”
“你让我看到了屏幕。”
“你让我看到了刷新。”
“你让我看到了你的代码——”
她猛地抬起右手。
动作不流畅。她的身体还在被那股力拉扯,每一个关节都像生了锈的合页,每移动一厘米都需要把阻挡她的指令撕开一道口子。
但她动了。
一点一点地,像一个人在齐胸深的沼泽里行走,每一个动作都要消耗掉正常情况下的十倍力气。