array(5) { ["chapterid"]=> string(8) "49247959" ["articleid"]=> string(7) "7279460" ["chaptername"]=> string(8) "第12章" ["content"]=> string(8254) "灰色人影的刀没有影子。
它抬手的瞬间,陈序没听见风声,只看见 Debug 看板最上方那行 Not Owner: ChenXu Identity 红了一下。
他先召唤了盾。
这是本能,也是他被拖进源码世界后救命最多的一种反应。
new Shield()
金色对象盾在 Debug 看板前展开。
可那把没有签名的方法刀没有撞上盾面。
它像一段绕过入口校验的请求,贴着盾牌边缘滑过去,直接刺向看板背后的核心字段。
裴森眼神一变。
“它没走正门!”
余未的视图立刻放大。
灰色人影的攻击路径在半空渲染出来。
正常调用路径应该先经过对象边界,再进入方法门。
可它的路径是灰色的。
没有入参,没有签名,也没有返回。
像生产系统里凭空冒出来的一次内部调用,没人认领,却已经开始改数据。
陈序侧身避开,肩膀还是被擦出一道红线。
Boundary erosion:1%
周野声音响起。
“对象防线挡不住未声明调用。”
裴森看向蓝白光标。
“这就是你们训练新人不先写说明书的原因?”
周野:“真打起来,敌人也不会给你说明书。”
灰色人影笑了。
“堆对象有什么用?”
它身后浮出十几把方法刀,每一把都指向不同入口。
“你能 new 一个盾,能 new 一百个盾吗?”
陈序没有回答。
他抬手连续写下:
new Guard()
new Wall()
new Lock()
金色对象一层层堆起。
守卫。
墙。
锁。
防线瞬间厚了三倍。
但灰色人影只是在原地轻轻一晃。
下一秒,它从另一个角度出现。
所有对象都挡在“应该出现”的位置。
它偏偏从“不应该出现”的地方出刀。
第二道红线擦过陈序胸口。
Boundary erosion:3%
裴森银色脚本针飞出,试图采样灰影路径。
可针刚碰到灰影,就被弹开。
No declared interface found.
裴森啧了一声。
“它没有接口。”
余未皱眉:“没有接口,就没有约束。”
灰色人影听见这句话,像听见什么笑话。
“约束?”
它抬起刀,刀尖对准陈序。
“真正的强者,不需要约束。”
这句话让守夜区的蓝白光标微微一暗。
陈序捕捉到了。
顾准。
001。
C。
direct access。
周野说过,顾准的问题相反。
一个人如果强到可以直接访问底层,就很容易相信“约束”只是弱者的借口。
陈序抬头,看着灰色人影。
“不需要约束的,通常也不承担后果。”
灰影停了一下。
“你说什么?”
陈序没有继续堆对象。
他把已经召唤出来的盾、守卫、墙和锁全部收回半步。
裴森一愣。
“你撤防?”
“不。”陈序说,“换一种防。”
他在半空写下一个词。
interface
金色字符刚出现,沙盘猛地一震。
那不是对象。
不是盾。
也不是刀。
更像一条线,把“你能调用什么”和“我内部到底是什么”硬生生分开。
陈序继续写。
interface SafeAccess
validate(input)
execute()
rollback()
金色接口线在战场上展开,形成三道门。
验证。
执行。
回滚。
灰色人影冷笑,直接挥刀绕过第一道门。
可这次,它刚越过门框,整条手臂就被金色锁链缠住。
Contract violation:validate(input) required before execute()
裴森眼睛亮了。
“哦?强制流程?”
余未补充:“不是挡它,是规定它必须按顺序来。”
陈序点头。
“对象保护内部,接口约束交互。”
灰影挣扎,身上的灰雾开始翻涌。
“规矩?”
“对。”陈序抬手,“你可以强,你可以快,你可以底层,但只要你要调用我这边的东西,就得遵守契约。”
金色锁链猛地收紧。
灰影第一次被拉回正面。
陈序没有给它机会。
validate(input)
金色方法门照向灰影。
它的攻击参数被迫显形。
input: undefined
source: unknown
purpose: bypass
rollback: false
余未立刻标红。
“没有回滚策略。”
裴森笑了。
“上线前没方案,敢情你也是产品临时拍脑袋?”
灰影发出一声低吼,身体开始膨胀。
它身上的灰色外壳裂开,露出底下几条红线。
红线迅速追加字段。
role += urgent_fix
role += emergency_exception
role += special_approval
陈序眼神冷了下来。
又是混沌需求。
它不否定规则。
它说:这次特殊。
这次紧急。
这次先上。
以后再补。
灰影的手臂开始穿过金色锁链。
契约在震动。
周野提醒:“紧急例外会侵蚀接口。”
裴森咬牙:“这也太真实了。”
余未看向陈序:“怎么办?如果它被定义成紧急修复,就能绕过部分流程。”
陈序盯着那几行红字。
现实里,他见过太多次“特殊审批”。
有些确实救命。
有些只是把风险延期,还顺手把责任藏进一句“情况紧急”里。
关键不在于有没有例外。
在于例外有没有边界。
陈序抬手,在 SafeAccess 下方补了一段。
interface EmergencyAccess extends SafeAccess
expireAt()
auditLog()
新的金色接口线从原本契约上延伸出来。
紧急访问可以存在。
但必须有过期时间。
必须留下审计日志。
灰影刚钻出来的手臂再次被锁住。
Emergency access rejected:expireAt missing
Emergency access rejected:auditLog missing
裴森差点鼓掌。
“这招我喜欢。你不是不能紧急,你是紧急也得留证据。”
余未的视图碎片同步展开,把灰影身上的红线一条条标出。
“它的紧急身份在失效。”
灰影第一次露出慌乱。
它猛地抬头,声音变得尖锐。
“你只是一个 fallback!”
“你没有资格定义规则!”
这句话像一枚钉子,朝陈序的核心身份扎来。
但这一次,还没碰到陈序,就先撞上了 Debug 看板。
Owner: Debug Process
Not Owner: ChenXu Identity
陈序抬眼。
“我不是因为是 fallback 才能定义规则。”
他一步步走向灰影。
“我是因为要活着排查,才必须定义规则。”
金色接口锁链全部亮起。
灰影被强行拉进三道门。
验证。
执行。
回滚。
每过一道门,它身上的绕行路径就少一层。
最后,陈序伸手按住它胸口。
execute()
金色光爆开。
灰色人影被契约锁链钉在训练沙盘中央。
它没有立刻消失。
胸口反而浮出一枚黑色印记。
没有日志。
没有来源。
只有一只闭着的眼睛。
裴森笑意消失。
“这是什么?”
余未的脸色也变了。
“不是沙盘自带的。”
周野的蓝白命令流瞬间压下。
Shell:scan training-data --readonly
中央终端弹出结果。
Training data modified.
Modifier:unknown
Log:missing
Trace:missing
无日志。
陈序看着那枚黑色眼睛,想起“不要相信 Shell”的警告,也想起那些被吞掉的记录。
“无日志者?”
印记缓缓睁开。
灰影用最后一点声音笑了起来。
“契约?”
“如果没有日志证明我违约——”
“你的规则,又能拦住谁?”
砰。
灰影炸成一团黑雾。
所有金色接口锁链都还在。
可沙盘的日志栏,空了。
不是报错。
不是损坏。
是干干净净的空,像有人提前把证据袋抽走了。
下一秒,Debug 看板上方出现一行红字。
Interface contract established.
Audit evidence missing.
裴森低声骂道:“打赢了,但证据没了。”
余未看向陈序。
“下一步,必须解决运行时和日志问题。”
陈序没有说话。
他盯着空白日志栏。
契约能定义规则。
但如果有人专门吃掉违约证据,规则就会变成一张没人承认的纸。
倒计时继续跳动。
Countdown:66:02:19
而黑雾散尽的地方,只剩下一行极淡的字。
Do not trust declared type.
陈序握紧手。
“那就运行时见。”" ["create_time"]=> string(10) "1785508775" }