陈杰的公寓不像住人的地方,更像实验室。
客厅没有沙发电视,只有三张长桌拼成的工作台,上面摆着六台显示器、三台主机、一堆拆开的电子设备。墙壁贴满了电路图和代码打印稿,空气中弥漫着松香和咖啡的味道。
现在是上午九点,陈杰已经工作了三个小时。
他盯着中间那台显示器的屏幕,上面是那段暗网代码的十六进制视图。代码本身不复杂,大约五千行,是一个AR滤镜的基础框架。但真正让陈杰着迷的,是代码注释里的东西。
注释不是英文,也不是中文。而是一种他从未见过的字符,像某种古老的符号,又像是故意加密的文字。
他尝试过各种解密方法:凯撒密码、维吉尼亚密码、Base64、甚至摩尔斯电码,都没用。字符看起来有规律,但不符合任何已知的编码系统。
更诡异的是,这些注释似乎在变化。
昨晚他截图保存了一部分,今早对比,发现第1024行的注释多了一个字符——一个类似“卍”但方向相反的符号。
代码会自我修改?
不可能。代码是静态文本文件,除非有外部程序修改,或者……代码本身包含自我修改的指令。
陈杰揉了揉发酸的眼睛,端起冷掉的咖啡喝了一口。苦味让他稍微清醒。
他切换到另一个窗口,运行代码分析工具。工具显示,这段代码调用了几个非标准的系统API,包括:
- 访问摄像头原始数据流(正常)
- 读取手机陀螺仪和加速度计(正常)
- **访问心率传感器**(异常——手机心率传感器通常需要 explicit user permission)
- **读取环境光传感器,并计算特定频率的光强变化**(异常——这有什么用?)
- **后台记录用户瞳孔在屏幕上的注视点**(异常——这涉及隐私和权限)
最奇怪的是一个函数,函数名是“record_fear_response()”。注释里这个函数的说明是一串乱码,但陈杰通过反编译发现,这个函数会:
1. 监测用户心率突然升高
2. 记录此时摄像头拍摄的画面
3. 分析画面中的主要视觉特征
4. 将特征与一个本地数据库比对
5. 如果匹配,触发“enhancement”子程序
“恐惧反应记录”。陈杰念着这个函数名,感到一阵不适。
林浩说要模糊真实和特效的界限,但这代码做得更多——它在收集用户的恐惧数据,学习什么让用户害怕,然后强化这种恐惧。
这是伦理的灰色地带,甚至可能是黑色地带。
但陈杰没有告诉林浩全部细节。部分是因为他自己也不完全理解,部分是因为……他着迷了。
作为一个技术控,他见过无数代码,但这段代码不一样。它优雅、高效,而且有种诡异的美感——像一件精心设计的艺术品,虽然你不知道作者想表达什么。
手机震动,林浩在群里问:“@陈杰 设备清单确认了吗?预算需要今天报给平台。”
陈杰回复:“基本确认。但有个问题——这段暗网代码可能需要特殊硬件支持,我查到一个函数调用了一种罕见的红外滤光片,普通手机摄像头没有。”
林浩:“能解决吗?”
陈杰:“我可以改装设备,加装外置滤镜。但需要额外预算,而且……我建议我们谨慎使用这段代码。它有些功能不太对劲。”
发送后,陈杰等了几分钟,林浩没有回复。可能去忙了。
他切回代码窗口,决定再深入一点。他写了一个简单的测试程序,模拟代码运行环境,然后单步执行。
程序运行到第2048行时,发生了奇怪的事。
这一行是一个条件判断:“if (current_date == ‘1993-10-15’)”。
今天是2026年3月18,显然不相等。但程序却跳进了这个条件分支,执行了一段本该跳过的代码。
陈杰皱眉。他检查变量值,current_date确实是2026-03-18。但条件判断的结果却是true。
就像……就像代码有自己的时间感知。
他继续单步执行。分支代码调用了另一个函数:“unseal_phase_one()”。
“解除封印,第一阶段”。陈杰翻译着这个函数名,感到后颈发凉。
函数内容是一连串对摄像头的作:切换到红外模式,调整焦距到特定值(0.37米),设置曝光时间为1/37秒,然后……拍摄一张照片。
照片不会保存到相册,而是以加密形式存储在一个临时文件夹,文件夹名是“well_37”。
井_37。
陈杰想起了苏晴在群里问的那口井。
他打开文件管理器,找到临时文件夹。里面果然有一张图片文件,创建时间是今天凌晨3点——他睡觉的时候。
代码在他睡觉时自动运行了?
他点开图片。
图片很暗,是红外成像。能看出是一个圆形井口的俯拍视角,井壁是粗糙的石砖,井深不见底。
但井底有东西。
陈杰放大图片。井底不是水面,而是……一片模糊的白色。白色中有许多小点,排列成环形。
他继续放大,图像像素化了,但能看出那些小点是——
眼睛。
许多双眼睛,向上看着。
陈杰数了数。三十七双。
他猛地向后靠,椅子发出刺耳的摩擦声。
心跳加速。他看了一眼手机,心率传感器图标在闪——代码正在记录他的恐惧反应。
冷静。他告诉自己。这可能是代码预设的图片,一个恶作剧。暗网经常有人上传这种恐怖图片作为彩蛋。
但为什么是三十七?为什么是井?为什么时间戳是1993年?
这些数字和传说都对得上。
他关掉图片,深呼吸。需要更多信息。
他回到暗网,找到当初下载代码的页面。页面很简单,只有一个下载链接和一行说明:
“AR Spirit Filter v1.0 - For those who seek the truth beyond the screen.”
“寻求屏幕之外真相的人。”
页面底部有一行小字,陈杰之前没注意:“Based on the research of Dr. Wang, 1993. All souls deserve to be seen.”
“基于王医生1993年的研究。所有灵魂都应该被看见。”
王医生。王磊的爷爷?
陈杰立刻给王磊发私信:“你爷爷是医生?全名是什么?”
几分钟后,王磊回复:“王建国。怎么了?”
“他1993年发表过什么研究吗?关于AR或者灵异的?”
“我爷爷是精神科医生,不是计算机专家。1993年……他应该快退休了。你为什么问这个?”
陈杰犹豫了一下,决定说实话:“我用的那段AR代码,注明基于‘王医生1993年的研究’。”
这次王磊隔了更久才回复:“我查一下爷爷的遗物。晚点告诉你。”
陈杰放下手机,重新看向代码。现在他觉得这些字符不再是单纯的代码,而是某种……仪式的一部分。
注释里的那些奇怪符号,会不会是符咒的数字版本?
他听说过“数字道教”的概念——一些道士尝试用代码实现符咒效果。大多是骗局,但万一……
电脑突然黑屏。
不是断电,屏幕还亮着,但变成纯黑色。中央浮现一行白色文字,是那些奇怪的符号。
符号闪烁了三下,然后变成中文:
**“你已经看到了。”**
陈杰屏住呼吸。
文字消失,屏幕恢复正常。代码编辑器还在,刚才的代码行高亮显示:
“if (soul_count >= 37) { initiate_transfer(); }”
“如果灵魂计数大于等于37,启动转移。”
灵魂计数。转移。
转移到哪里?
陈杰感到房间温度下降了。他看向空调,显示26度,但体感温度像20度。
窗户关着,没有风。但墙上的电路图在动——不,是纸张的边缘在轻微颤动,像有微风吹过。
但房间里没有风。
他站起来,走到窗边。窗外阳光明媚,街上行人正常走动。
正常的世界。
他转身看向房间。工作台上的一个小螺丝刀在滚动,慢慢滚到桌边,掉在地上。
叮当一声。
然后是一支笔。然后是另一个螺丝。
就像有看不见的手在推它们。
陈杰的心脏狂跳。手机显示心率:128。代码在记录。
他抓起手机想给林浩打电话,但手机屏幕也黑了,浮现同样的符号。
符号闪烁,变成文字:
**“不要阻止。”**
然后手机恢复正常。
陈杰站在原地,全身冰凉。他知道这不是恶作剧了。
代码不是工具。代码是……媒介。
它在连接某个东西。或者说,某个地方。
他看向那口“井”的照片。井底的眼睛。三十七双。
现在还剩多少双?
他想起昨晚睡觉时做的梦。梦里他在一个黑暗的地方,周围有很多人,但看不到脸,只有眼睛。那些眼睛都在看着他,眼神里有恳求,有怨恨,有绝望。
一个女人的声音在梦里说:“带我们出去。我们需要镜子。”
镜子。
苏晴早上在群里说看到了镜子里的影子。
陈杰打开群聊,往上翻记录。苏晴没有详细说,但提到了“幻觉”。
不是幻觉。
代码、镜子、井、眼睛、1993年、王医生、李秀兰……
这些碎片开始拼凑。
他坐回椅子,打开一个新的文本文件,开始记录:
**假设:**
1. 代码是基于某种“灵魂可视化”技术
2. 需要特定条件激活(期?地点?设备?)
3. 目标:让“灵魂”通过电子设备被看见
4. 风险:可能不是单向的观测,而是双向的连接
**问题:**
1. 王医生的研究是什么?
2. 1993年10月15发生了什么?
3. 为什么是三十七?
4. 井的作用是什么?
5. “转移”是什么意思?
写完这些,陈杰感到一种混合着恐惧和兴奋的情绪。
恐惧是因为,他可能打开了一个不该打开的盒子。
兴奋是因为,作为一个技术探索者,他正在接触未知的领域——真正的未知,不是科幻小说里的想象。
手机震动,林浩回复了:“预算可以追加。但代码必须用,这是我们的核心卖点。至于功能不对劲……直播本来就是游走边界。只要不违法,就行。”
陈杰看着这条消息,手指悬在屏幕上方。
他可以退出。现在退出还来得及。
但退出意味着回到平庸的生活,继续接一些无聊的APP开发,看着银行卡数字缓慢增长,然后在某个深夜问自己:我这辈子到底做了什么有意义的事?
这段代码,这个,是危险,也是机会。
他回复:“明白。我会继续优化代码。但建议直播时我在后台监控,一旦有问题立刻切断。”
林浩:“可以。对了,王磊说他爷爷的记里有重要发现,下午开会一起讨论。”
陈杰放下手机,看向窗外。
天空很蓝,云朵缓慢移动。
正常的世界。
但他知道,正常世界的表面下,有裂缝。而他和他的团队,正要主动跳进裂缝里。
不是为了流量,不是为了转型。
是为了看到屏幕之外的东西。
为了真相。
哪怕真相会吞噬他们。
电脑屏幕闪烁了一下,代码自动滚动到最后一行。
原本空白的地方,出现了一行新注释:
**“欢迎,观测者。倒计时:五天二十三小时。井边的位置已经为你预留。”**
陈杰盯着这行字,许久没有动。
窗外的云遮住了太阳,房间暗了下来。
工作台上,最后一支笔滚落在地。
叮当。
像井底石子落水的声音。