array(5) { ["chapterid"]=> string(8) "49247960" ["articleid"]=> string(7) "7279460" ["chaptername"]=> string(8) "第13章" ["content"]=> string(9528) "沙盘重新亮起前,陈序先做了一件所有人都没想到的事。

他睡了二十分钟。

裴森站在旁边,表情像见了鬼。

“我以为你这种人会说‘我还能撑’。”

陈序靠在守夜区临时容器墙边,闭着眼。

“我确实还能撑。”

“那你睡?”

“能撑不代表该撑。”

裴森沉默两秒,转头看余未。

“他被什么东西夺舍了吗?”

余未正在修复视图碎片,头也不抬。

“没有。他只是终于学会版本升级了。”

二十分钟后,陈序睁开眼。

源码铭牌上的 Mental load 从 critical+ 降到了 high。

不安全。

但至少不再是随时会断线的红色。

周野的蓝白光标在 Debug 看板旁亮着,难得没有催。

陈序看了它一眼。

“训练数据检查完了吗?”

周野说:“表层检查完了,没有写权限残留。”

裴森立刻问:“深层呢?”

“只读权限不够。”

“经典。”裴森说,“每次关键地方都权限不够。”

陈序站起身。

“够了。刚才暴露的问题,不是我们没规则,是有人能让规则没有证据。”

余未点头。

“无日志者篡改训练数据,灰影声明类型和实际行为不一致。”

陈序看向训练沙盘。

上一轮训练留下的那行字还悬在那里。

Do not trust declared type.

不要相信声明类型。

现实代码里,一个变量声明成接口,不代表运行时不会塞进奇怪实现。

源码世界里也一样。

看起来像训练对象的东西,可能运行时才露出真正獠牙。

陈序抬手。

debug_board.next()

沙盘重新亮起。

这一次,没有灰色人影。

只有一排排金色对象。

每一个都挂着相同声明。

Declared type: SafeAccess

裴森眯眼。

“全都是安全访问?”

“表面上是。”陈序说。

余未展开视图。

“它们的外观完全一致,都是通过接口契约生成的。”

周野提醒:“训练目标:找出被篡改实现。”

中央终端弹出规则。

Runtime Trial:

Declared type cannot be trusted.

Find malicious implementation.

Failure cost: contract pollution.

裴森抬手,十二根银色采样针飞出。

针尖掠过第一排对象。

“声明都一样,静态采样结果也一样。”

余未切换视图层。

“视觉层也没有差异。”

陈序没有急。

他把刚建立的 SafeAccess 契约调出来。

validate(input)

execute()

rollback()

“声明一样,就看运行。”

他点中第一个对象。

replay(call-chain)

金色调用链从对象脚下亮起。

验证。

执行。

回滚。

路径干净。

第二个。

第三个。

第四个。

都正常。

裴森看了眼倒计时。

Countdown: 64:58:41

“照这个速度,我们能找到天荒地老。”

陈序说:“所以不用一个个看。”

他抬手,把所有对象的调用链同时投射到半空。

数百条金色链路并排展开。

余未立刻理解。

“看差异。”

她的视图碎片飞入链路之间,把正常路径渲染成蓝白,把异常偏移标成红色。

一开始,所有链路都一样。

validate。

execute。

rollback。

像复制粘贴出来的标准答案。

直到第七十二条。

那条链路在 execute() 后面,多了一次极短的停顿。

短到如果不是并排比对,几乎看不见。

裴森抬手。

“抓它?”

“等等。”陈序说。

他盯着那次停顿。

不是攻击。

不是绕行。

更像是在等待什么。

陈序把调用链放慢十倍。

那一瞬间,停顿里露出一条黑色细线。

细线没有写日志。

但它做了一件事。

把 rollback() 指向了空地址。

余未吸了口气。

“它保留了回滚方法,但运行时把回滚目标换掉了。”

裴森脸色一沉。

“也就是说,真出事的时候,回滚会回到不存在的地方。”

周野低声说:“这比没有回滚更危险。”

没有回滚,大家会警惕。

假回滚,大家会放心。

陈序看着第七十二个对象。

“声明类型?”

终端回答。

Declared type: SafeAccess

“运行时类型?”

短暂沉默后,终端吐出一行字。

Runtime type: SafeAccessProxy

Proxy。

代理。

陈序眉头皱起。

代理本身不是错。

错的是代理背后藏了谁。

他继续追问。

target()

第七十二个对象的外壳开始震动。

金色接口表面裂开,露出里面一层黑金色影子。

终端闪烁。

Target: GuZhunProxy

空气骤然一冷。

裴森立刻看向周野。

“顾准?”

周野的蓝白光标猛地亮起。

“不是他。”

这三个字说得太快。

快到像本能。

陈序看向它。

“你确定?”

“确定。”周野说,“顾准不会用代理藏自己。”

裴森冷笑:“听起来你很了解。”

周野没有反驳。

余未放大黑金色影子。

“名字是 GuZhunProxy,但内部签名不完整,像伪造。”

陈序说:“有人知道顾准能影响我们判断。”

顾准的名字,才刚从 dependency.log 里浮出来。

接口契约刚建立,证据就被吞掉。

现在,又有人把顾准的名字伪装成代理,塞进运行时。

这不是巧合。

有人在利用他们对顾准的好奇。

混沌需求也好,无日志者也好,都在推着他们提前碰 root。

陈序抬手,把 GuZhunProxy 拉入接口契约。

validate(runtime.target)

金色方法门亮起。

Proxy 外壳开始剥落。

里面不是人。

是一段被偷来的底层剑痕。

黑金色。

锋利。

残缺。

剑痕一出现,整个训练沙盘都往下沉了一寸。

裴森下意识后退。

“这玩意儿只是残片?”

余未的视图碎片被割碎了三片,脸色微白。

“它在切视图结构。”

周野立刻展开容器。

$ contain --target pointer-trace --readonly

蓝白容器落下。

可剑痕没有攻击容器。

它只轻轻一斩。

容器边缘出现一条细缝。

周野声音变低。

“这是顾准的痕迹。”

裴森看着那条裂缝。

“不是本人都这么离谱?”

陈序也看着。

那道剑痕不像 Java 的金色边界,不像 Python 的银色脚本,也不像 Vue 的蓝紫视图。

它更原始。

像直接在世界底层写了一个地址。

你在哪,它就斩哪。

但这道剑痕是残缺的。

残缺处缠着几条红线。

role += proxy

role += bait

role += root-guide

诱饵。

引路。

陈序眼神一冷。

“它想让我们顺着剑痕找 root entrance。”

裴森说:“这就像有人把事故根因贴你脸上,但路径上全是雷。”

余未低声说:“我们要不要断掉它?”

周野立刻说:“不能直接断。”

陈序问:“为什么?”

“顾准可能还靠某些残留引用维持 missing 状态。”周野说,“乱断,可能把 missing 变成 failed。”

守夜区安静了一瞬。

顾准不是朋友。

至少现在还不是。

但他是 #001。

也是进入 root entrance 后没有崩塌、没有回来的人。

陈序不能把他的残留当垃圾清掉。

这就是最麻烦的地方。

真实事故里,很多旧逻辑看起来危险,却不能直接删。

因为你不知道还有谁在依赖它。

陈序深吸一口气。

“不删。”

他抬手,在接口契约旁新建一条运行时规则。

RuntimeGuard {

identify();

isolate();

replay();

no_direct_follow();

}

识别。

隔离。

回放。

禁止直接跟随。

金色运行时守卫落在剑痕周围。

它不攻击剑痕,只把红线一条条剥离出来。

proxy 断开。

bait 断开。

root-guide 断开。

剑痕安静了一点。

但最后一条红线被剥离时,训练沙盘底部突然传来一声裂响。

咔。

所有人低头。

沙盘中央,被剑痕斩过的位置,出现了一道黑金色裂缝。

裂缝很窄。

却深得看不见底。

门缝里的红光在远处呼应。

中央终端疯狂闪烁。

Runtime malicious implementation removed.

Pointer trace unstable.

Lower layer exposed.

裴森咽了下口水。

“这算赢了吗?”

余未的视图碎片悬在裂缝上方,不敢下探。

“沙盘赢了。但底层被打开了一点。”

周野没有说话。

这比他说话更糟。

陈序盯着裂缝。

裂缝深处,有一个声音传出来。

很低。

很哑。

像有人隔着无数层内存,在黑暗里留下最后一句警告。

“别让 Java 进来。”

裴森猛地抬头。

余未脸色发白。

周野的蓝白光标第一次出现了明显抖动。

陈序站在裂缝前,手指慢慢收紧。

那声音不知道是不是顾准。

也不知道是警告,还是诱饵。

倒计时仍在继续。

Countdown: 63:11:08

陈序没有往前走。

他只在 Debug 看板上写下新的一条。

GuZhun trace: do not follow directly.

Verify before access.

写完后,他抬头看向周野。

“继续碰那道裂缝之前,你最好把顾准的事,讲得比上次多一点。”

蓝白光标沉默很久。

最后,它只回了一个字。

“好。”

黑金裂缝深处,像有什么东西轻轻笑了一声。

那笑声很轻,却让陈序忽然分不清——刚才那句警告,到底是在拦他,还是在等他。" ["create_time"]=> string(10) "1785508776" }