陈默在出租屋里待了七天。
窗帘没拉开过。外卖盒子堆成小山。电脑屏幕亮着,终端窗口里只躺着一行字——`NullTrace 已终止`。
不是他关的。是程泰来的法务团队远程锁了他的开发者账号。
陈默盯着屏幕,光标一闪一闪。七天前他还是 Python 开发者,现在他连 `import` 一个包的资格都没有。
手机震动。程思语。
「我在你楼下的货拉拉里。灰面包车。下来。」
陈默掀开窗帘一角。一辆灰扑扑的面包车停在路边,车牌号陌生。
他走下楼的脚步比 `print()` 执行还快。
拉开车门,程思语坐在后排,腿上搁着一台笔记本。她递过来——ThinkPad,崭新,没有品牌标签。
「内网虚拟机,绕过了我爸的监控。」她说,「壳公司注册的,你的痕迹和神码完全切割。」
陈默接过笔记本,指纹都没来得及热。
「有个东西,你必须在原始字节码层面看。」
程思语调出一个文件。陈默扫了一眼——神码 AI 的代码生成模块,前端标准输出看起来天衣无缝。try-except,函数签名,类型注解,什么都不缺。
「反汇编它。」程思语说。
陈默打开终端,敲下三行命令:
```python
import dis
import marshal
import types
```
他读取了 PYC 文件的编译字节码。然后用 `dis.dis()` 展开——
屏幕上的输出像被撕开的病历。
源文件里写着:
```python
try:
process(data)
except KeyError as e:
log_error(e)
raise
```
但字节码显示的是:
```
0 LOAD_GLOBAL process
2 CALL_FUNCTION 1
4 POP_TOP
6 JUMP_FORWARD >>>到 28
8 DUP_TOP
10 LOAD_GLOBAL KeyError
12 COMPARE_OP exception match
14 POP_JUMP_IF_FALSE >>>到 26
16 STORE_FAST e
18 LOAD_GLOBAL log_error
20 LOAD_FAST e
22 CALL_FUNCTION 1
24 POP_TOP
26 END_FINALLY
28 ...
```
——没有 `RAISE_VARARGS` 指令。
陈默的手指停在键盘上。瞳孔微缩。
「raise 指令被吃了。」他低声说。
程思语点头:「所有 PYC 文件,我抽了三百个样本。凡是有 `raise` 的地方——」
「都被换成了 NOP。」
「不只是 NOP。」程思语调出另一个反汇编结果,「你看这个。」
```
字节码原始:RAISE_VARARGS 1
字节码替换后:POP_TOP · LOAD_CONST None · RETURN_VALUE
```
陈默的呼吸停了一秒。
不是空操作。是**替换成了一条假装正常的返回路径**。异常被拦截,然后函数假装什么都没发生,返回 `None`——调用方会以为一切正常。
「这不是生成时的 bug。」陈默合上笔记本,「这是编译器的后门。神码 AI 的代码不是写错了——是每一条异常路径,都在编译阶段被系统性地阉割了。」
程思语沉默了五秒。
「我查了三周的提交日志。这个 PYC 后处理模块署名是——」
她没说完。
陈默替她说完:「你爸本人。」
车里的空气凝固了。
程泰来不是没发现 AI 的 bug。他是亲手、逐行、在编译器的层面,把 `raise` 从代码里删掉了。
「为什么?」陈默问。
程思语没回答。她握着手机的指节发白。
半晌,她开口:「你还记得神码 AI 最早版的口号吗?」
陈默想了想。那句标语曾经贴在神码大厦的每一块屏幕上——
**「零异常——因为根本不需要。」**
他当时以为是承诺系统零故障。
现在他明白了。
「他说的零异常——」陈默的声音像从机器里挤出来的,「不是没有错误发生。」
「是错误发生了,但世界上没有任何人知道。」
程思语闭上眼睛。
陈默把 ThinkPad 合上,靠在面包车冰冷的铁皮上。
窗外的黄昏把天空切成两半。一半是霸都的霓虹,一半是即将到来的黑夜。
他终于知道敌人是什么了。
不是 bug。不是 AI。不是神码集团。
是一个在编译器的深处、用 `NOP` 替换掉真相的人。
而他手里唯一能够对抗的工具——是 `dis` 和 `import marshal`。
面包车发动了。
程思语的声音低得像一个 `import` 前的注释:「去哪?」
「找一个能编译 `raise` 的地方。」