array(5) { ["chapterid"]=> string(8) "49247955" ["articleid"]=> string(7) "7279460" ["chaptername"]=> string(7) "第8章" ["content"]=> string(12487) "维护通道的门,比陈序想象中窄。

窄得不像通往安全区深处,倒像通往机房后面那条没人愿意走的消防通道。

门上浮着一行蓝白色小字。

maintenance only

字很冷。

像凌晨三点机房里的灯。

陈序站在门口,胸前源码铭牌还在发烫。

Name:ChenXu

Access:private

Temporary Dependency:protected

Mental load:critical

每一行都不像好消息。

尤其最后一行。

陈序盯着 critical 看了两秒,叹了口气。

“能不能给个黄灯?”

系统没有理他。

裴森在旁边探头看了一眼。

“你这状态要是服务器,运维应该已经在群里骂人了。”

半坏广播里立刻传来周野的声音。

“我正在骂。”

裴森:“……”

余未收起最后一片彩色视图碎片,走到维护通道前。她抬手一划,试图把通道内部渲染出来。

画面只亮了一瞬。

然后整个视图碎片变成一片灰。

render failed

permission required

余未皱眉。

“视图进不去。”

裴森搓了搓手指,银色脚本流从他掌心绕出来。

“那我先扫一下。”

他随手甩出三行银光。

scan()

sample()

ping()

银色脚本流像几只细小的飞虫,钻进维护通道。

一秒。

两秒。

第三秒,通道深处传来密密麻麻的轻响。

噼啪噼啪噼啪。

像一排小进程被同时掐断。

裴森脸色微微一变。

“坏了。”

陈序问:“怎么?”

裴森抬手一拉。

银色脚本流退回来一半。

另一半没了。

剩下的银光带回来一串红字。

permission denied

process killed

sample partial

裴森盯着那几行字。

“它把我的脚本杀了。”

周野冷笑一声。

“维护通道不是游乐园。乱扫会被当成异常进程清掉。”

裴森不服。

“那你早说。”

“你动作太快。”

“怪我?”

“怪你。”

裴森深吸一口气,转头看陈序。

“你听见了吧?这人迟早被打。”

陈序揉了揉眉心。

“先别打运维。”

他的头还在疼。

刚封住 core.identity 后,那层 private 金色边界还像一块刚贴好的创可贴。不是不漏血了,而是不能再乱碰。

可维护通道显然不会等他休息好。

通道深处,蓝白色命令行光标闪了两下。

Shell:follow

陈序看着那个光标。

“怎么进去?”

周野说:“你可以直接走。”

“他们呢?”

“他们不是维护权限。”

裴森立刻指着自己。

“不是,我刚帮你们打了半天怪,现在说我没权限?”

周野说:“贡献不等于权限。”

裴森:“你这话听起来特别欠揍。”

余未看向陈序。

“你能带我们进去吗?”

陈序低头看向自己的源码铭牌。

Access:private

Temporary Dependency:protected

刚才封住 core.identity 后,他才真正明白:封装不是把所有东西锁死。该开放的要开放,该拦住的必须拦住。

维护通道拒绝裴森和余未,不是因为他们没用。

是因为它不知道他们该访问什么。

陈序抬手,指尖冒出很淡的金光。

他没有 new。

也没有召唤盾牌。

只是从胸前那层封装边界上,拉出两条极细的金色权限线。

一条伸向裴森。

一条伸向余未。

protected access:

PeiSen → trace sample

YuWei → view readonly

金线刚成形,陈序的脸色又白了一分。

源码铭牌跳出提示。

Mental load:critical+

裴森瞪大眼。

“还有 critical plus?”

陈序也看着那行字。

“我也第一次见。”

余未声音很轻。

“你别硬撑。”

陈序看着维护通道深处。

“现在不撑,根因不会自己跳出来。”

周野沉默了一瞬。

然后广播里传来一声很低的键盘敲击。

Shell:grant temporary-pass --scope=protected

维护通道门口的蓝白字闪了一下。

temporary pass accepted

门开了。

里面没有光。

只有一条向下延伸的窄路。

路面像一段被拆开的调用栈,每一级台阶都是一行半透明日志。脚踩上去,日志会轻轻亮一下,又很快暗下去。

陈序走第一步。

gateway.enter()

第二步。

compile.safezone.route()

第三步。

maintenance_pipe_open()

裴森跟在后面,低声说:“这地方真阴间。”

余未抬手,视图碎片终于能渲染一点东西。

维护通道两侧不是墙。

而是一层层被折叠起来的服务剖面。

左侧能看到断裂的接口线,像光缆一样一根根垂下来。

右侧是成排暗掉的进程灯,有些还在微弱闪烁。

每一盏灯下面都有小字。

worker-17: sleeping

worker-18: killed

worker-19: retrying

worker-20: zombie

余未停在 zombie 前。

“僵尸进程?”

周野说:“别碰。”

裴森本来已经伸出去的手,停在半空。

“我没碰。”

“你想碰。”

“你们运维管得真宽。”

周野淡淡说:“上一个想碰的,现在还在循环里跑。”

裴森把手收回来。

“那不碰了。”

陈序走在最前面,听着他们斗嘴,反而稍微清醒了一点。

这很奇怪。

明明眼前是一个比新手编译区更底层、更危险的地方,可有人在旁边吵两句,反倒像现实公司里半夜救火时,旁边同事骂监控、骂网关、骂需求。

至少说明他还没完全变成一段孤立的代码。

他们继续往下。

维护通道越走越窄。

空气里开始出现低频震动。

不是怪物声。

更像成千上万条日志同时滚动,却被压在墙里。

裴森忽然抬手。

“等等。”

陈序停下。

余未的视图碎片同时展开。

裴森手指间的银色脚本流变细。

这一次,他没有像刚才那样乱扫,而是只放出一根几乎看不见的银线。

银线贴着地面往前爬。

像一条小蛇。

很快,银线停在前方三米处。

那里看起来什么都没有。

裴森轻轻一勾手指。

银线带回一个细小的红点。

trap: recursion

陈序眼神一沉。

“递归陷阱?”

周野在广播里“嗯”了一声。

“还不算笨。”

裴森立刻来劲了。

“听见没?他夸我。”

周野说:“我说你不算笨。”

“差不多。”

余未看向前方空地,视图碎片逐层放大。

原本空无一物的台阶上,浮出一圈圈几乎透明的环。

每个环上都刻着同一句话。

call self

call self

call self

裴森吹了声口哨。

“踩进去会怎样?”

周野说:“你会一直走下一步。”

裴森:“听起来还行?”

周野:“直到你忘了为什么走。”

裴森不说话了。

陈序盯着那圈递归陷阱,背后发凉。

源码世界最冷的地方,不是怪物长得吓人。

是每个概念都能变成死法。

无引用会被回收。

空指针会抹掉存在。

无限递归,会让你永远卡在“下一步”。

陈序问:“怎么过?”

裴森抬手。

“简单,我写个采样绕开。”

周野立刻说:“别全量扫描。”

裴森翻了个白眼。

“知道,知道,维护通道不是游乐园。”

他这次出手很轻。

银色脚本流分成十二根细针,每根只刺进递归陷阱边缘一点点,采一小段路径就退回来。

不是破坏。

是采样。

几秒后,裴森在空中拉出一张银色路径图。

“陷阱不是整块区域。”他说,“它只卡连续步进。只要跳过第三、七、十一层调用,就能过去。”

余未立刻接上。

彩色视图碎片把安全路径标成蓝色。

“我给你们标步点。”

陈序看着那条蓝色路径。

“我现在跳不动。”

裴森瞥他一眼。

“谁让你跳了。”

他蹲下,银色脚本流飞快在陈序脚边织成几道轻薄的线。

“临时脚本,帮你踩点。”

step_helper_py

陈序看着脚下那几道银线。

“你这名字挺随便。”

“能用就行。”

“很 Python。”

“谢谢夸奖。”

“没夸你。”

“我就当你夸了。”

陈序:“……”

余未看着两人,嘴角轻轻动了一下。

“准备。”

三人沿着蓝色标记穿过递归陷阱。

第一步。

第二步。

停。

银线带着陈序脚尖向旁边挪半寸。

第三层调用从脚边滑过去。

如果踩中,他大概就会永远卡在“再走一步”。

第七层时,余未的视图碎片突然闪红。

“左边。”

裴森的银线立刻一扯。

陈序被拽得踉跄一下,差点摔倒。

他刚想骂,身后那层递归环无声合拢,把一块掉落的代码碎片吞进去。

碎片在环里不断重复。

掉落。

掉落。

掉落。

然后越来越淡。

陈序闭了闭眼。

“谢了。”

裴森摆手。

“别谢,记得以后少说 Python 轻。”

陈序说:“我没说过。”

“你心里说过。”

“你们 Python 还管心里日志?”

“采样能猜。”

周野冷不丁插话。

“别贫,前面有东西。”

裴森立刻收声。

维护通道尽头,出现了一扇半开的门。

门后有光。

不是新手编译区那种白光。

是蓝白色、冷冷的命令行光。

门上挂着一个很旧的牌子。

Night Watch Zone

守夜区

陈序停住。

终于到了。

可门口没有人。

只有一排排悬浮在半空的终端窗口。

每个窗口都在滚日志。

tail -f reality.log

tail -f null-source.log

tail -f dependency.log

日志滚得很快。

快到普通人根本看不清。

裴森眼睛却亮了。

“这数据量……”

余未问:“很多?”

裴森深吸一口气。

“很多。”

他停了一下。

“但很香。”

陈序看他。

“你别像看到自助餐一样。”

裴森已经忍不住抬手。

“这么多日志,不采样是犯罪。”

周野的声音从所有终端里同时响起。

“你敢全量扫,我现在就把你踢出去。”

裴森手停住。

“你这人真的很影响发挥。”

“我是在保护系统。”

“也是在影响发挥。”

陈序看着那些终端,胸口那条受保护 trace 轻轻发热。

这里不是普通安全区。

这里是源码世界的运维层。

现实出了问题,源码世界崩溃,新手编译区只看到怪物和屏障;但守夜区看到的是日志、进程、重试、依赖、污染同步。

这里离根因更近。

也更危险。

一道蓝白色光标从终端群中飘出来,停在陈序面前。

Shell:whoami

陈序一怔。

这命令不是问周野。

是在问他。

他低头看源码铭牌。

Name:ChenXu

Access:private

Temporary Dependency:protected

Root fragment:hidden

Root fragment 仍然是 hidden。

陈序抬手,想回答。

可还没等他碰到光标,所有终端忽然同时停住。

整个守夜区安静了一瞬。

下一秒,最中央的终端上跳出一行红字。

RealityService boot record found.

陈序的呼吸一滞。

裴森也不贫了。

余未的视图碎片自动展开,试图捕捉那行记录。

周野的声音第一次显得急促。

“别点。”

陈序的手停在半空。

中央终端继续滚动。

Boot attempt: 0001

Core dependency missing.

Fallback target selected.

Target: ChenXu

陈序看着最后一行,手指一点点收紧。

Fallback target。

备用目标。

所以他不是被随机拖进来的。

也不是简单的临时依赖。

他是 RealityService 启动失败后,被选中的备用目标。

陈序刚想问,中央终端忽然黑了。

所有日志消失。

只剩一行白字。

Do not trust the shell.

裴森猛地抬头。

“什么意思?”

余未身边的视图碎片全部转向终端群。

周野没有立刻说话。

蓝白色光标停在半空,闪了一下,又闪了一下。

陈序看着那行字,后背慢慢绷紧。

一路上指引他的,是 Shell 信号。

周野,就是 Shell / 运维。

而现在,RealityService 的启动记录里,有东西告诉他:

不要相信 Shell。

守夜区深处,传来一声很轻的键盘敲击。

哒。

像有人在黑暗里按下了回车。

也像有人刚刚确认,他们已经走进了正确的陷阱。" ["create_time"]=> string(10) "1785508771" }