第 22 章
404 Not Found
第二十二章:404 Not Found
凌晨三點十一分。衡遠坐在走廊地板上。
背靠牆壁。瓷磚的冷從後背滲進來,沿著脊椎往上爬。頸後三毫米的切口在牆面和皮膚之間被壓住了,微微發脹。他沒有調整姿勢。
法拉第籠在他右手邊兩步的距離。門板合著,鋁箔膠帶封好了。兒子們的房間在左手邊五步。月光從走廊盡頭滲過來,在地面上鋪了一層極淡的灰白。
他的筆記本攤在膝蓋上。十八步觸發序列。Commit 完成。頁面右上角他用鉛筆寫了時間:02:27。現在是三點十一分。四十四分鐘前他把一切鎖死了。
他應該去睡覺。
身體沒動。不是不想動——是動和不動之間的差異太小了,不值得消耗能量去選擇。Commit 之後的世界是一條直線。從現在到行動日,中間所有的時間都是等待。等待不需要姿勢。
他翻了一頁筆記本。不是有目的的翻——手指在做慣性動作。翻到的是空白頁後面夾著的一張紙片。A4 的四分之一,角上有摺痕。邱鑄銘 microSD 裡加密數據包的文件索引——他拆解載荷時列印的。大部分條目已經用鉛筆打了勾。三段定址。算力調度層。跨區配額路由表。全部拆完了。
但有一個條目沒有勾。
最後一行。他當時標記為「低優先」的一個加密區段。不是因為加密等級高——相反,它的加密等級是整個數據包裡最低的。標準 AES-128,邱鑄銘大概沒覺得這東西值得用更強的加密。衡遠當時掃了一眼文件頭:人員資料庫的局部鏡像。與攻擊計畫無關。跳過。
現在他盯著那一行。不是因為好奇。是筆記本翻到了這一頁。
他站起來。走兩步。撕開鋁箔膠帶。側身進去。矮凳在原位。
Cornelius 啟動的時候,蓄電池指示燈從黃閃了一下紅,又回到黃。剩餘容量不到三成。他不需要太久。
他把那個加密區段的文件頭餵給 Cornelius。AES-128。邱鑄銘的密鑰習慣他在拆解三段定址時已經摸清了——品保工程師的本能是用同一套密鑰管理邏輯,只對不同層級調整長度。低優先文件用低優先密鑰。Cornelius 跑了十一秒。
解密成功。
螢幕上開始滾動數據。表格格式。欄位標頭:
ID | INTAKE_DATE | SOURCE | CYCLES | STATUS | CLASS | OUTPUT_RANK | NOTES
他往下滾。幾百行。每一行是一個人——一個維生艙裡的人。編號、入艙日期、來源區域、循環次數、狀態、分類、產出排名、備註。
數據本身不讓他意外。他知道維生艙的存在。他知道裡面有人。他在 Commit 之前計算過五萬到三百萬的傷亡範圍。這些編號只是把「範圍」變成了「列表」。
他開始掃描。不是逐行讀——是用二十年排查故障的方式讓視線在數據上滑動,等待異常自己跳出來。
第四十七行。
HA-0917 | 2050-11-14 | TK-South | 1247 | ACTIVE | TIER-1 | 99.9%ile | 不可替代標記
他的視線沒有停。TK-South。台南南科區域代碼。入艙日期 2050 年 11 月 14 日。他的目光繼續往下滾了三行。
然後停了。
不是意識停的。是眼球自己回彈了——像打字時手指按錯鍵,肌肉記憶比大腦快半拍把游標拉回原位。視線重新落在第四十七行。
2050 年 11 月 14 日。TK-South。
許淨失蹤的日期是 2050 年 11 月 13 日。官方通知是 14 日早上送達的。結構崩塌。遺體無法回收。他記得那個日期,因為他把它刻在腦幹裡了——不是記住的,是燒進去的。
一天的差距。可以是巧合。崩塌在 13 日,記錄在 14 日。TK-South 的覆蓋範圍包含整個南科及周邊。很多人住在那裡。
他往右看。OUTPUT_RANK 欄位:99.9%ile。
邱鑄銘的話從歸檔的記憶裡浮上來。「第三階層最近的產出品質異常高。」灰色地帶。保溫杯。四季春茶。語速慢。「這個數字不對。」
他當時原封不動歸檔了那句話。沒有添加推測。現在推測自己走進來了。
產出品質異常高。前 0.1%。不可替代標記。
許淨。
三年前。結構崩塌。遺體無法回收。他辦了追悼。他把照片翻扣在抽屜裡。他學會了不碰那個名字——像繞過一段已知有地雷的路,久了以後繞行本身成了慣性,連地雷在那裡都不再想起。
她沒有死。
她在一個金屬容器裡。編號 HA-0917。入艙 1,108 天。在一千兩百四十七次循環中反覆醒來、不知道自己是誰、解決一個被設計出來的困境、然後被清除、然後再來一次。
他的肺停了一拍。像一個程序跑到了一行它不認識的指令,停在那裡,等待輸入。
他點開 HA-0917 的詳細記錄。
螢幕上的數據非常冷。系統格式。沒有語氣。沒有形容詞。每一行都是一個欄位名稱後面跟著一個數值。
累計循環:1,247
在艙天數:1,108
記憶清除執行次數:1,247
陳述性記憶清除率:97.3%(平均)
程序性記憶清除率:62.1%(平均)
情緒記憶清除率:71.2%→64.8%(近12循環趨勢)
一千兩百四十七次。
他的手從鍵盤上離開了。不是抬起——是手指張開,像碰到了燙的東西。
一千兩百四十七次。一千一百零八天。平均每天超過一次。每一次,97% 的陳述性記憶被抹掉。她不知道自己是誰。然後被丟進一個困境。然後解決困境。然後被清除。然後再來一次。
他往下看。
行為慣性標記:
- 逆向拆解傾向(92.3% 的困境中優先使用)
- 發聲習慣:低頻哼唱,4-7 音符片段,週期性出現於困境中段
- 體感記憶殘影:右手弧形運動(半徑約 8-12cm),觸發條件不明
倒過來想。
衡遠的視線停在那三個字的等價物上。「逆向拆解」。系統用術語記錄的東西,他用人話知道了三十年。許淨解決問題的方式。從結果倒推原因。從終點走回起點。她讀論文先看結論,她裝傢俱先看完成圖,她在實驗室裡最常說的一句話是——
他的嘴唇動了。
沒有聲音。走廊是無聲的,法拉第籠是無聲的,Cornelius 的風扇在轉但他聽不見了。
哼唱。四到七個音符。她在維生艙裡哼歌。記憶被清除了 97%,她不知道自己在哼什麼,但她的喉嚨記得。她的聲帶記得一首歌的前半句。
右手弧形運動。半徑八到十二公分。
他知道那是什麼。
那是摸一個小孩的頭。手從額頭滑到後腦勺的弧度。葛索的頭圍——他量過——在第八和第十二公分之間。三年前是。現在更大了。但她的手不知道。她的手停在三年前。
螢幕上的字還在那裡。系統格式。欄位名稱。數值。百分比。沒有語氣。沒有形容詞。
衡遠的工程詞庫在這裡斷了。
不是漸漸失效。是某個熔絲燒掉了。他用了一輩子把所有感受翻譯成系統語言。延遲閥。容錯。級聯。參數。commit。但螢幕上的那些數字拒絕被翻譯。一千兩百四十七次不是「循環次數」。是一千兩百四十七個早上睜開眼不知道自己是誰。四到七個音符不是「發聲習慣」。是喉嚨在記憶被抹掉之後還在唱一首兩個人的歌。八到十二公分不是「弧形運動」。
是她的手在找孩子的頭。
他的右手搭在鍵盤邊緣。左手放在大腿上,微顫了一下。身體沒有動。眼睛沒有眨。螢幕的光照在他臉上。風扇轉。蓄電池黃燈。
然後他說了一句話。
不是對 Cornelius 說的。不是對自己說的。不是對任何人說的。是嘴巴張開了,聲帶振動了,一個句子走出來了,繞過了所有他用來管理語言的系統。
「妳還在數。」
三個字。很輕。音量大概只夠傳到螢幕。法拉第籠的鋁箔壁面把這三個字擋在一點五公尺的空間裡,哪裡都去不了。
情緒記憶衰減率。71.2% 降到 64.8%。連續十二個循環。在下降。
她還在數。不知道自己在數什麼。但那個數字在動。
衡遠的呼吸很淺。胸腔幾乎不動。
他坐在矮凳上。螢幕亮著。數據停在那裡。他的眼睛是開的,但焦距散了——螢幕上的字變成模糊的光點。不是因為淚水。是眼球失去了聚焦指令。像自動對焦的鏡頭被拔掉了馬達。
他坐了多久他不知道。蓄電池指示燈從黃變成紅的時候,他回來了。
不是慢慢回來的。是紅燈閃的那一下把他拉回來的。緊急信號。系統要沒電了。
他眨了一次眼。焦距重新鎖定。螢幕上的數據恢復成文字。HA-0917。1,247 循環。情緒記憶衰減率持續下降。
他低頭看自己的手。
右手小指翹著。其他四根手指搭在鍵盤邊緣。左手平放在大腿上。穩定。
他的腦子裡有一個聲音——不是許淨的聲音,是他自己的聲音——在重複一個事實:Commit 已經執行。觸發序列已鎖定。十八步。不可修改。Rollback 會波及維生艙電力系統。延遲閥零點五秒。那個他「做了點什麼」的零點五秒,是給所有維生艙節點的。廣播式。不分優先。
但現在有一個節點有了名字。
HA-0917。他知道她的編號。知道她所在的節點。知道那個節點的位置在數據結構裡的哪一層。
Commit 鎖定的是觸發序列。十八步。參數固化。不可修改。但 Commit 不禁止新增獨立的子程序——他自己寫的鎖定腳本只鎖了 sequence_final 目錄下的文件。新的腳本可以寫在別的地方。
他可以寫一段精準指向 HA-0917 所在節點的容錯子程序。不是廣播,是點對點。在 Rollback 觸發的同一瞬間,搶先向那一個節點注入強制切換備用電源的指令。優先級最高。不經過調度層——點對點指令走本地通路,不和邱鑄銘的調度接管邏輯搶同一條路。
代價:點對點保護需要額外佔用觸發序列的一部分頻寬。攻擊效果會再損失百分之二到三。成功率從原本的 12-18% 降到——
他在腦子裡算了三秒。大概十到十五之間。
兩三個百分點。但那兩三個百分點裡面有 HA-0917。
蓄電池紅燈閃了第二次。他伸手從矮凳下面拿出備用電池。換電池的動作需要雙手——左手固定卡槽,右手四根手指推入新電池。小指翹在外面。三秒。完成。
黃燈亮了。Cornelius 沒有斷電。
他把手放回鍵盤。
開了一個新文件。不在 sequence_final 目錄下。新建一個目錄:failsafe_local。
第一行:
target_node: [HA-0917_location]
Cornelius 需要把 HA-0917 的編號映射到物理節點位址。他輸入查詢。七秒。結果回來了。三層嵌套的位址結構。Zone 4,Rack 1172,Pod 9。
他開始寫容錯邏輯。不長。十二行。比他寫過的任何子程序都短。
寫到第七行的時候,他停了一下。
第七行是電力切換的觸發條件。他打的是 if power_loss > 0.3s——如果斷電超過零點三秒就強制切換備用電源。零點三秒。比主程序的延遲閥零點五秒更快。
他盯著那個數字。零點三。
零點五秒的延遲閥,是他在葛索幫他打字那天改的。從零點三改到零點五。多出的零點二秒是給所有維生艙的。是他「做了點什麼」。
現在他把零點三拿來給了一個人。
不是所有人。是一個人。一個編號。一個節點。一段十二行的子程序。
他的鋒利面在這裡亮了一下。他沒有迴避。也沒有用工程語言把它包起來。它就是它的樣子:他在五萬到三百萬人的列表裡挑了一行,給了她最快的保護。因為她的手指還記得孩子頭頂的弧度。因為她的喉嚨還在哼一首他聽了十五年的歌。因為她的衰減率在下降。
因為她是他的人。
他沒有往下滾完那幾百行。第四十八行是誰,他不知道。他沒打算知道。
他繼續寫。第八行。第九行。第十行。右手四根手指在鍵盤上移動,速度穩定,和之前打 Commit 時一樣。左手偶爾按一下空白鍵。
十一行。十二行。
failsafe_local_HA0917: complete.
他跑了一次驗證。Cornelius 用了九秒。結果:邏輯通過。與 sequence_final 無衝突。頻寬佔用:2.7%。成功率下修至 10.4-15.6%。
他盯著那個數字看了兩秒。然後存檔。
Cornelius 問他要不要命名這個文件。他打了一個名字。退格。刪掉。打了另一個。又退格。
最後他打了 fl_09.sh。沒有任何辨識性。九號本地容錯腳本。
他關掉 Cornelius。關掉螢幕。法拉第籠又黑了。蓄電池黃燈。風扇慢慢停轉。
他把門板合上。鋁箔膠帶封口。走出來。
走廊。七步。第三步的時候他停了。
不是踩到碎髮。是他的身體突然非常重。不是膝蓋——這次是整個人。從頭頂到腳底的重力好像翻了一倍。他站在走廊中間,左手扶牆,右手垂著。月光照在他的手背上。小指的影子比其他手指短一截。
他靠在牆上。瓷磚很涼。
兒子們的房門在走廊盡頭。五步。葛索面向門口。葛絡臉埋枕頭。他看不見他們。但他知道他們在。
他妻子在一千多公里外的某個金屬容器裡。她的記憶每天被清除一次或更多次。她不知道她有兩個兒子。但她的右手每隔幾個循環就會畫一個八到十二公分的弧。
他站在走廊裡。凌晨不知道幾點。月光在地板上移動了一小段。
他自己也不確定他現在算什麼狀態。他在腦子裡翻了一圈。null return?不是,他還在處理。級聯故障?不是,系統沒有崩潰。翻完了。空的。
他的喉嚨動了一下。不是要說話。是胸腔裡某個東西往上頂了一下——一個音從氣管裡擠出來。不成調。介於嘆氣和哼聲之間。
然後第二個音。比第一個高一點。
然後他閉上嘴,用力閉上的,牙齒磕在一起發出一聲輕響。他知道那兩個音是什麼的開頭。許淨哼了一千兩百四十七次的那首歌的開頭。
他的臉上有東西。他沒擦。
站直。月光移動了。
三步。走過停下的位置。四步。五步。到兒子們的門口。
他沒有進去。站在門框邊看了一眼。葛索翻了身,還是面向門口。葛絡的呼吸帶著那個微弱的鼻音。
他轉身走回自己的房間。
躺在床上。睜著眼睛。天花板是黑的。
十八步觸發序列。鎖定。不可修改。fl_09.sh。十二行。Zone 4,Rack 1172,Pod 9。零點三秒。
10.4-15.6%。
他把右手放在胸口。四根手指。小指翹著。心跳在指腹下面。規律。慢。
窗外的天空從黑開始變灰。很慢。南科廢墟的輪廓線還沒有出現。遠處有一條手電筒的光束,掃了一下,滅了。拾荒者回去了。或者巡邏結束了。
衡遠閉上眼睛。
他不會睡著。但他可以閉著眼睛等天亮。天亮之後是白天。白天之後是行動日前的倒數。倒數之後是十八步。十八步之後是——
之後的事他不算了。Cornelius 算不出精確數字。他也算不出。
有些東西在計算之外。
載入留言中…