第200章 四百行壓成十七行,每一行都不能浪費
壓縮包圖標卡在碎屏裂縫裡。
灰毛衣盯著它看了十二秒。不是猶豫。是在等手穩。
保溫杯剛放下,右手指尖還有零點幾毫米的振幅。枸杞水涼透了,杯壁和指尖差不多溫度,分不清是杯子涼還是手涼。
他點了解壓。
進度條跑得快。手機內存不夠,卡了兩次。第二次彈出提示——「存儲空間不足,建議清理大文件」。
灰毛衣把相冊里327張外賣截圖批量清了。
進度條跳到100%。
文件夾展開。三樣東西。
第一個:oblivion_source_v1.0.bin。
遺忘協議完整母本。二進位。1.7TB。
灰毛衣掃了一眼文件頭,前四十八個字節的排列方式就夠了——這不是拷貝。沒有拷貝權限。是師兄一個字節一個字節看著、記著、再敲出來的。
1.7TB。
手抄。
四十七天。
他沒打開。先看第二個。
第二個:log_day1-47.txt。純文本。42KB。
格式很熟。師兄寫日誌的習慣從讀研就沒變——日期用年月日不用時間戳,正文不分段,標點只有句號和逗號,偶爾一個感嘆號,表示他罵人了。
>Day1。進來了。比想像的小。操作台鍵盤布局奇怪。回車鍵在左邊。適應了十分鐘。開始抄源碼。
>Day2。抄了3GB。速度太慢。發現接口內部數據以光子態存儲。沒有物理介質。我在用一部火星文對照表翻譯外星字典。
>Day3。手指麻了。鍵盤太硬。回車鍵要用力摁。右手小指起了泡。
Day4到Day11,技術記錄。抄碼進度。接口結構分析。穿插著一些短句。
>Day7。沒吃的。不餓。可能這裡不需要吃東西。但想吃酸菜面。想得很具體。連調料包太咸都想起來了。
灰毛衣的拇指停在屏幕上。
三秒。
繼續滑。
>Day14。發現遺忘協議的底層邏輯不是刪除記憶。是刪除「你相信自己存在」這件事本身。非常優雅的設計。如果不是用來殺人的話。
>Day15。開始想辦法堵藉口。試了純代碼塞入。4小時後被消化乾淨。證實猜想。軟體堵不住。必須用硬體。
>Day16。沒有硬體。
>Day17。有一個硬體。
五個字。
灰毛衣沒往下滑。盯了很久。
Day17。師兄想明白的日子。
>Day18到Day22。沒有日誌。
五天空白。
>Day23。想通了。沒什麼好糾結的。把源碼抄完。把該留的留好。剩下的交給時間。
>Day24。開始寫告別。第一版寫了八千字。太長了。刪了。重新寫。第二版四千字。還是太長。第三版兩千字。第四版六百字。第五版就那行。
「那行」是什麼,灰毛衣知道。
「第二條命,換你活著。跑。」
八千字刪到十三個字。
刪了多少遍。
>Day26。那個東西又來了。從深處走出來。站在三米外看我。銀白色。沒有臉。但我覺得它在笑。不確定。可能是我太久沒見活物了。
>Day27。它還在。我跟它說話。它不回。試著給它看我手機壁紙。壁紙是師弟拍的。實驗室門口的柳樹。它看了很久。
>Day28。它問我你們還會做夢嗎。
>Day29。它坐在操作台邊上不走了。坐了一整天。我抄碼。它看著。偶爾歪頭。像聽不懂。但不打擾。挺乖的。
灰毛衣把手機翻過來。屏幕朝下扣在膝蓋上。
四秒。翻回來。繼續。
>Day33。源碼抄到89.4%。手指紋都磨平了。回車鍵油漆也掉了。銀白色那個跟我絮叨了半天。它管說話叫「振動」。說自己以前很會「振動」。現在忘了大部分。只記得一段。
>Day34。它說那段振動的內容是「好喝」。我沒聽懂為什麼這兩個字值得記。它也說不上來。就是忘不掉。
灰毛衣攥著手機。不緊。手指自然彎曲的力度。指甲沒發白。呼吸十四次每分鐘。正常值。
>Day41。源碼抄完了。1.7TB。全文手抄。沒有錯。檢查了三遍。
>Day42。開始疊代加密。
他往下滑的手停了。
回放。看了兩遍。
「開始疊代加密。」
師兄在世的時候,兩人共用一套自創的編碼規則。本科時課上無聊編著玩的。火星文變體。加了幾層數學變換。安全性約等於拿報紙糊金庫大門。
但夠用。兩個人的秘密夠用這種程度的鎖。
Day42。源碼抄完的第二天。距離他用自己堵藉口還剩五天。他開始疊代加密。
>Day42。第一次疊代。在原有基礎上加入橢圓曲線。密鑰長度翻倍。耗時9小時。不是因為難。是手指不太聽話了。
>Day43。接口開始反噬。頭痛。像有人拿勺子舀腦漿。忘了手機鎖屏密碼。試了四次才想起來。今天的日期記不太清。但師弟的枸杞水配方還記得——十五顆。他數過。強迫症。
>Day44。第二次疊代。把橢圓曲線替換成格密碼。量子級。密鑰生成邏輯比第一版簡潔三分之一。因為我算不動了。腦子裡能調用的東西越來越少。但越少就越不能浪費。每一行都得乾淨。
灰毛衣盯著這六個字。「每一行都得乾淨。」
他想起第一次看師兄底層代碼時的判斷——「筆法模仿他卻更老練」。
不是更老練。
是更窮。
一個程式設計師把腦容量從100%燒到30%,剩下那30%寫出來的代碼,每一個字節都經過了取捨。沒有冗餘的資格。沒有華麗的資格。
智能精準。只能最短路徑。
所以看起來「更老練」。
>Day45。第三次疊代。最終版。密鑰生成邏輯縮到十七行。從第一版的四百行到十七行。腦子裡只剩碎片了。忘了我媽長什麼樣。忘了導師的名字。忘了本科是哪個學校。
>記得的東西:師弟姓什麼。枸杞十五顆。酸菜面調料包太咸。
>這三樣夠用了。密碼用的是第三樣。
灰毛衣把手機放在地上。
站起來。走到操作台前。彎腰。
回車鍵在左邊。油漆掉了。露出灰色塑料基底。上面有指紋磨過的弧度。
他伸手按了一下。
硬。很硬。
手感和實驗室那台二手聯想的空格鍵差不多。師兄總用掌根拍空格,說手指按太累。被導師罵過。沒改。
灰毛衣鬆開手指。坐回地上。拿起手機。
第三個文件。
文件夾。名字六個字加一個句號。
**給師弟的。別哭。**
加密。
密碼輸入框彈出來。沒有提示。沒有找回選項。
師兄說了。Day45。密碼用第三樣。
灰毛衣打字:「調料包太咸」。
錯誤。
「酸菜面調料包太咸」。
錯誤。
他停了。
不對。這是第三次疊代後的加密。十七行邏輯。密鑰種子要經過格密碼變換才能輸出最終密碼。
他需要逆向還原師兄在「腦子只剩30%」時設計的那十七行。
灰毛衣翻回Day44和Day45的日誌。逐字看。三遍。
師兄腦子只剩碎片時,寫密碼用的素材只有三樣——師弟姓什麼,枸杞十五顆,酸菜面調料包太咸。不是密碼本身。是密鑰種子。
他在碎屏手機上打開空白文檔。一行一行寫。
前四行:標準格密碼初始化。公式就那樣。
第五到八行:師兄的簡化路徑。砍掉異常處理,砍掉溢出檢測。一個快死的人不需要檢測溢出。溢出了又怎樣。
第九到十二行,他停了。哈希鏈。師兄第二次疊代用的標準SHA,第三次腦子只剩碎片,他會換什麼?
灰毛衣翻回Day43——「師弟的枸杞水配方還記得——十五顆。」
十五。自定義哈希,模為15。
第十三到十五行:格向量旋轉。角度參數從三樣東西里抽——性的Unicode值、十五、字符串編碼長度。
第十六行:輸出截斷。截取前幾位?Day45最後一句:「這三樣夠用了。」三。前三位。
第十七行:終結符。
他把十七行邏輯跑了一遍。碎屏手機處理器嗡嗡響。兩秒後輸出一串亂碼——19位混合字符。
粘進密碼框。
回車。
文件夾打開了。
---
一個文件。
視頻。.avi格式。3.2MB。時長4分17秒。
灰毛衣點了播放。
畫面亮了。
零號區。天花板視角。廣角。略有畸變。像老式監控探頭拍的。畫質很差,480p都不到,顆粒粗得像下雨。
操作台在畫面正中。
師兄躺著。
穿那件洗到發白的格紋長袖。一隻袖子卷上去了,另一隻沒有。深色褲子,看不清牌子。鞋沒脫。運動鞋。鞋底朝上,左腳外側的磨損清清楚楚——走路外八字的人磨那個位置。
師兄走路外八字。被他笑過。師兄說程式設計師不需要走好看,又不選秀。
手放在鍵盤上。十個指頭。灰毛衣數了一遍。十個。都在。展開的。放鬆的。不像在敲鍵盤。像敲完了。擱著。
眼睛看著上方。看著鏡頭。
或者——穿過鏡頭——看著以後會打開這段視頻的人。
沒有聲音。
四分鐘的畫面里,師兄沒有動過。呼吸的起伏都看不出來。
但灰毛衣知道他還活著,因為畫面第1分23秒,右手小指抽動了一下。
抽了一下就不動了。
灰毛衣看了第一遍。拉回進度條。
第二遍他盯著師兄的臉。顆粒太粗,五官模糊,但輪廓能辨認。長臉。顴骨不高。下巴偏尖。額頭上一撮頭髮翹著——師兄的呆毛。從本科翹到現在,用髮膠都壓不下去。
第三遍他注意到操作台旁地面上有個東西。亮度很低,縮在桌腿陰影里。放大了也看不清。
但形狀像手機。師兄的手機。屏幕朝上。亮著。
灰毛衣兩根手指在碎屏上掐放大。像素炸成色塊。完全看不清內容。
但他知道壁紙是什麼。
Day27。「壁紙是師弟拍的。實驗室門口的柳樹。」
第四遍開始,他只看最後三秒。從4分14秒逐幀拖。碎屏太小。亮度拉到最高。色溫拉到最暖。
4分14秒。師兄的頭微微偏了。從正對鏡頭偏到稍微向右。
4分15秒。嘴角動了。
4分16秒。嘴唇分開。合攏。再分開。
4分17秒。黑屏。
灰毛衣拖回4分15秒。逐幀截圖。排成一列。一幀一幀看。
看了十四遍。
畫質太差。嘴唇輪廓和像素噪點混在一起。有三種可能的口型。
兩個字。三個字。四個字。
他把看守者日誌最後一條調出來。
「酸菜。」
不是師兄在想吃的。是師兄在說話。
4分15秒開始的口型——第一個字,舌尖抵上顎後彈開,「suan」。第二個字,開口度小,送氣,「cai」。
但嘴唇在「cai」之後沒有閉合。
還有。
4分16秒。嘴唇重新分開。張合一詞。口型比前兩個字小。緊湊。
灰毛衣把Day7的日誌調出來。「酸菜面調料包太咸。」
師兄在最後一刻說的不是「酸菜」。
是「酸菜面」。
最後那個「面」——唇形從「m」的閉合到「ian」的展開——和第三種口型完全吻合。
三個字。
酸菜面。
不是遺言。不是告別。不是什麼「替我好好活」。
是一個快死的人,看著以後會打開這段視頻的人,對他說——
酸菜面。
想吃。
---
灰毛衣把手機扣在地上。屏幕朝下。
坐著。
保溫杯在右手邊。擰開蓋。晃了一下。水聲。還有一點。倒進嘴裡。
沒有水。
幾顆枸杞。泡了不知道多久。全爛了。軟塌塌滑進嘴裡。
他嚼了嚼。
鹹的。
不是枸杞的味道。
又嚼了兩下。咽了。
手機碎屏朝下扣著。背殼朝上。上面貼著一張啞光貼紙,師兄從校門口一塊錢三張的攤上買的。一隻柴犬。歪眼。
師兄說像他。他說不像。師兄說一模一樣,你生氣的時候尤其像。
貼紙角翹了。灰毛衣用拇指按回去。按了兩遍。粘不住了。膠老化了。
他從口袋裡掏出一截透明膠——不知道什麼時候揣進去的——撕了一小條,把貼紙四個角貼好。
貼完了。
他把手機翻回來。打開文件屬性。
視頻元數據。標準欄位。創建時間。修改時間。解析度。幀率。
往下拉。
GPS欄位:空。正常。零號區沒有GPS。
備註欄位。有內容。
灰毛衣點開。
一組數字。純數字。十八位。
前六位——年。月。日。
後十二位是精度補償。到毫秒。
時間坐標。指向未來。
備註最後一行,用豎線隔開,跟著一句話。師兄寫代碼注釋的習慣——雙斜槓加空格。
// 這個時候去看看。應該能看見好東西。
灰毛衣把十八位數字逐位抄在手腕上。用指甲刻的。沒有筆。
刻完了。手腕上一串紅印。和旁邊黑屏手錶並排。
手錶黑著。師兄的字沒了。
紅印在。
他擰好保溫杯蓋子。空的。枸杞也吃完了。
站起來。碎石在鞋底磕了一下。
操作台上鍵盤的回車鍵,油漆脫落的那塊灰色,在零號區殘餘光線里泛著一點啞光。
灰毛衣走過去。彎腰。從操作台底下拿起地上那部手機。
師兄的。
屏幕碎了。比他的碎得更徹底。但亮著。壁紙是一棵柳樹。實驗室門口。
他拍的。
他把師兄的手機裝進左邊口袋。自己的裝右邊。
兩部碎屏手機。一左一右。
走了。
---
滅了的屏幕上什麼都沒有。看守者走了。師兄的字消了。零號區安安靜靜。
只有操作台上那個回車鍵的灰色底座,在黑暗裡,保持著一根手指按下去又鬆開的弧度。
四十七天。每天按幾百次。
磨出來的形狀。
沒人會再按了。
但形狀在。
剛好是一根小指的寬度。
---
許默的七號屏彈出一條數據。
視頻元數據中的時間坐標,被李斯自動抓取,與空白區域衰減模型交叉比對。
結果跑了0.8秒。
時間坐標指向的那個點——和空白區域厚度預計歸零的時刻,偏差在±41秒以內。
師兄在四十七天前算出了一個連李斯都需要跑模型才能得出的數字。
用30%的腦子。
許默沒建文件夾。
他把這條數據直接寫在操作台表面。用指甲。和灰毛衣刻在手腕上的方式一樣。
一串數字。
刻完了。看了三秒。拿抹布擦掉了。
心裡記著就行。
灰毛衣盯著它看了十二秒。不是猶豫。是在等手穩。
保溫杯剛放下,右手指尖還有零點幾毫米的振幅。枸杞水涼透了,杯壁和指尖差不多溫度,分不清是杯子涼還是手涼。
他點了解壓。
進度條跑得快。手機內存不夠,卡了兩次。第二次彈出提示——「存儲空間不足,建議清理大文件」。
灰毛衣把相冊里327張外賣截圖批量清了。
進度條跳到100%。
文件夾展開。三樣東西。
第一個:oblivion_source_v1.0.bin。
遺忘協議完整母本。二進位。1.7TB。
灰毛衣掃了一眼文件頭,前四十八個字節的排列方式就夠了——這不是拷貝。沒有拷貝權限。是師兄一個字節一個字節看著、記著、再敲出來的。
1.7TB。
手抄。
四十七天。
他沒打開。先看第二個。
第二個:log_day1-47.txt。純文本。42KB。
格式很熟。師兄寫日誌的習慣從讀研就沒變——日期用年月日不用時間戳,正文不分段,標點只有句號和逗號,偶爾一個感嘆號,表示他罵人了。
>Day1。進來了。比想像的小。操作台鍵盤布局奇怪。回車鍵在左邊。適應了十分鐘。開始抄源碼。
>Day2。抄了3GB。速度太慢。發現接口內部數據以光子態存儲。沒有物理介質。我在用一部火星文對照表翻譯外星字典。
>Day3。手指麻了。鍵盤太硬。回車鍵要用力摁。右手小指起了泡。
Day4到Day11,技術記錄。抄碼進度。接口結構分析。穿插著一些短句。
>Day7。沒吃的。不餓。可能這裡不需要吃東西。但想吃酸菜面。想得很具體。連調料包太咸都想起來了。
灰毛衣的拇指停在屏幕上。
三秒。
繼續滑。
>Day14。發現遺忘協議的底層邏輯不是刪除記憶。是刪除「你相信自己存在」這件事本身。非常優雅的設計。如果不是用來殺人的話。
>Day15。開始想辦法堵藉口。試了純代碼塞入。4小時後被消化乾淨。證實猜想。軟體堵不住。必須用硬體。
>Day16。沒有硬體。
>Day17。有一個硬體。
五個字。
灰毛衣沒往下滑。盯了很久。
Day17。師兄想明白的日子。
>Day18到Day22。沒有日誌。
五天空白。
>Day23。想通了。沒什麼好糾結的。把源碼抄完。把該留的留好。剩下的交給時間。
>Day24。開始寫告別。第一版寫了八千字。太長了。刪了。重新寫。第二版四千字。還是太長。第三版兩千字。第四版六百字。第五版就那行。
「那行」是什麼,灰毛衣知道。
「第二條命,換你活著。跑。」
八千字刪到十三個字。
刪了多少遍。
>Day26。那個東西又來了。從深處走出來。站在三米外看我。銀白色。沒有臉。但我覺得它在笑。不確定。可能是我太久沒見活物了。
>Day27。它還在。我跟它說話。它不回。試著給它看我手機壁紙。壁紙是師弟拍的。實驗室門口的柳樹。它看了很久。
>Day28。它問我你們還會做夢嗎。
>Day29。它坐在操作台邊上不走了。坐了一整天。我抄碼。它看著。偶爾歪頭。像聽不懂。但不打擾。挺乖的。
灰毛衣把手機翻過來。屏幕朝下扣在膝蓋上。
四秒。翻回來。繼續。
>Day33。源碼抄到89.4%。手指紋都磨平了。回車鍵油漆也掉了。銀白色那個跟我絮叨了半天。它管說話叫「振動」。說自己以前很會「振動」。現在忘了大部分。只記得一段。
>Day34。它說那段振動的內容是「好喝」。我沒聽懂為什麼這兩個字值得記。它也說不上來。就是忘不掉。
灰毛衣攥著手機。不緊。手指自然彎曲的力度。指甲沒發白。呼吸十四次每分鐘。正常值。
>Day41。源碼抄完了。1.7TB。全文手抄。沒有錯。檢查了三遍。
>Day42。開始疊代加密。
他往下滑的手停了。
回放。看了兩遍。
「開始疊代加密。」
師兄在世的時候,兩人共用一套自創的編碼規則。本科時課上無聊編著玩的。火星文變體。加了幾層數學變換。安全性約等於拿報紙糊金庫大門。
但夠用。兩個人的秘密夠用這種程度的鎖。
Day42。源碼抄完的第二天。距離他用自己堵藉口還剩五天。他開始疊代加密。
>Day42。第一次疊代。在原有基礎上加入橢圓曲線。密鑰長度翻倍。耗時9小時。不是因為難。是手指不太聽話了。
>Day43。接口開始反噬。頭痛。像有人拿勺子舀腦漿。忘了手機鎖屏密碼。試了四次才想起來。今天的日期記不太清。但師弟的枸杞水配方還記得——十五顆。他數過。強迫症。
>Day44。第二次疊代。把橢圓曲線替換成格密碼。量子級。密鑰生成邏輯比第一版簡潔三分之一。因為我算不動了。腦子裡能調用的東西越來越少。但越少就越不能浪費。每一行都得乾淨。
灰毛衣盯著這六個字。「每一行都得乾淨。」
他想起第一次看師兄底層代碼時的判斷——「筆法模仿他卻更老練」。
不是更老練。
是更窮。
一個程式設計師把腦容量從100%燒到30%,剩下那30%寫出來的代碼,每一個字節都經過了取捨。沒有冗餘的資格。沒有華麗的資格。
智能精準。只能最短路徑。
所以看起來「更老練」。
>Day45。第三次疊代。最終版。密鑰生成邏輯縮到十七行。從第一版的四百行到十七行。腦子裡只剩碎片了。忘了我媽長什麼樣。忘了導師的名字。忘了本科是哪個學校。
>記得的東西:師弟姓什麼。枸杞十五顆。酸菜面調料包太咸。
>這三樣夠用了。密碼用的是第三樣。
灰毛衣把手機放在地上。
站起來。走到操作台前。彎腰。
回車鍵在左邊。油漆掉了。露出灰色塑料基底。上面有指紋磨過的弧度。
他伸手按了一下。
硬。很硬。
手感和實驗室那台二手聯想的空格鍵差不多。師兄總用掌根拍空格,說手指按太累。被導師罵過。沒改。
灰毛衣鬆開手指。坐回地上。拿起手機。
第三個文件。
文件夾。名字六個字加一個句號。
**給師弟的。別哭。**
加密。
密碼輸入框彈出來。沒有提示。沒有找回選項。
師兄說了。Day45。密碼用第三樣。
灰毛衣打字:「調料包太咸」。
錯誤。
「酸菜面調料包太咸」。
錯誤。
他停了。
不對。這是第三次疊代後的加密。十七行邏輯。密鑰種子要經過格密碼變換才能輸出最終密碼。
他需要逆向還原師兄在「腦子只剩30%」時設計的那十七行。
灰毛衣翻回Day44和Day45的日誌。逐字看。三遍。
師兄腦子只剩碎片時,寫密碼用的素材只有三樣——師弟姓什麼,枸杞十五顆,酸菜面調料包太咸。不是密碼本身。是密鑰種子。
他在碎屏手機上打開空白文檔。一行一行寫。
前四行:標準格密碼初始化。公式就那樣。
第五到八行:師兄的簡化路徑。砍掉異常處理,砍掉溢出檢測。一個快死的人不需要檢測溢出。溢出了又怎樣。
第九到十二行,他停了。哈希鏈。師兄第二次疊代用的標準SHA,第三次腦子只剩碎片,他會換什麼?
灰毛衣翻回Day43——「師弟的枸杞水配方還記得——十五顆。」
十五。自定義哈希,模為15。
第十三到十五行:格向量旋轉。角度參數從三樣東西里抽——性的Unicode值、十五、字符串編碼長度。
第十六行:輸出截斷。截取前幾位?Day45最後一句:「這三樣夠用了。」三。前三位。
第十七行:終結符。
他把十七行邏輯跑了一遍。碎屏手機處理器嗡嗡響。兩秒後輸出一串亂碼——19位混合字符。
粘進密碼框。
回車。
文件夾打開了。
---
一個文件。
視頻。.avi格式。3.2MB。時長4分17秒。
灰毛衣點了播放。
畫面亮了。
零號區。天花板視角。廣角。略有畸變。像老式監控探頭拍的。畫質很差,480p都不到,顆粒粗得像下雨。
操作台在畫面正中。
師兄躺著。
穿那件洗到發白的格紋長袖。一隻袖子卷上去了,另一隻沒有。深色褲子,看不清牌子。鞋沒脫。運動鞋。鞋底朝上,左腳外側的磨損清清楚楚——走路外八字的人磨那個位置。
師兄走路外八字。被他笑過。師兄說程式設計師不需要走好看,又不選秀。
手放在鍵盤上。十個指頭。灰毛衣數了一遍。十個。都在。展開的。放鬆的。不像在敲鍵盤。像敲完了。擱著。
眼睛看著上方。看著鏡頭。
或者——穿過鏡頭——看著以後會打開這段視頻的人。
沒有聲音。
四分鐘的畫面里,師兄沒有動過。呼吸的起伏都看不出來。
但灰毛衣知道他還活著,因為畫面第1分23秒,右手小指抽動了一下。
抽了一下就不動了。
灰毛衣看了第一遍。拉回進度條。
第二遍他盯著師兄的臉。顆粒太粗,五官模糊,但輪廓能辨認。長臉。顴骨不高。下巴偏尖。額頭上一撮頭髮翹著——師兄的呆毛。從本科翹到現在,用髮膠都壓不下去。
第三遍他注意到操作台旁地面上有個東西。亮度很低,縮在桌腿陰影里。放大了也看不清。
但形狀像手機。師兄的手機。屏幕朝上。亮著。
灰毛衣兩根手指在碎屏上掐放大。像素炸成色塊。完全看不清內容。
但他知道壁紙是什麼。
Day27。「壁紙是師弟拍的。實驗室門口的柳樹。」
第四遍開始,他只看最後三秒。從4分14秒逐幀拖。碎屏太小。亮度拉到最高。色溫拉到最暖。
4分14秒。師兄的頭微微偏了。從正對鏡頭偏到稍微向右。
4分15秒。嘴角動了。
4分16秒。嘴唇分開。合攏。再分開。
4分17秒。黑屏。
灰毛衣拖回4分15秒。逐幀截圖。排成一列。一幀一幀看。
看了十四遍。
畫質太差。嘴唇輪廓和像素噪點混在一起。有三種可能的口型。
兩個字。三個字。四個字。
他把看守者日誌最後一條調出來。
「酸菜。」
不是師兄在想吃的。是師兄在說話。
4分15秒開始的口型——第一個字,舌尖抵上顎後彈開,「suan」。第二個字,開口度小,送氣,「cai」。
但嘴唇在「cai」之後沒有閉合。
還有。
4分16秒。嘴唇重新分開。張合一詞。口型比前兩個字小。緊湊。
灰毛衣把Day7的日誌調出來。「酸菜面調料包太咸。」
師兄在最後一刻說的不是「酸菜」。
是「酸菜面」。
最後那個「面」——唇形從「m」的閉合到「ian」的展開——和第三種口型完全吻合。
三個字。
酸菜面。
不是遺言。不是告別。不是什麼「替我好好活」。
是一個快死的人,看著以後會打開這段視頻的人,對他說——
酸菜面。
想吃。
---
灰毛衣把手機扣在地上。屏幕朝下。
坐著。
保溫杯在右手邊。擰開蓋。晃了一下。水聲。還有一點。倒進嘴裡。
沒有水。
幾顆枸杞。泡了不知道多久。全爛了。軟塌塌滑進嘴裡。
他嚼了嚼。
鹹的。
不是枸杞的味道。
又嚼了兩下。咽了。
手機碎屏朝下扣著。背殼朝上。上面貼著一張啞光貼紙,師兄從校門口一塊錢三張的攤上買的。一隻柴犬。歪眼。
師兄說像他。他說不像。師兄說一模一樣,你生氣的時候尤其像。
貼紙角翹了。灰毛衣用拇指按回去。按了兩遍。粘不住了。膠老化了。
他從口袋裡掏出一截透明膠——不知道什麼時候揣進去的——撕了一小條,把貼紙四個角貼好。
貼完了。
他把手機翻回來。打開文件屬性。
視頻元數據。標準欄位。創建時間。修改時間。解析度。幀率。
往下拉。
GPS欄位:空。正常。零號區沒有GPS。
備註欄位。有內容。
灰毛衣點開。
一組數字。純數字。十八位。
前六位——年。月。日。
後十二位是精度補償。到毫秒。
時間坐標。指向未來。
備註最後一行,用豎線隔開,跟著一句話。師兄寫代碼注釋的習慣——雙斜槓加空格。
// 這個時候去看看。應該能看見好東西。
灰毛衣把十八位數字逐位抄在手腕上。用指甲刻的。沒有筆。
刻完了。手腕上一串紅印。和旁邊黑屏手錶並排。
手錶黑著。師兄的字沒了。
紅印在。
他擰好保溫杯蓋子。空的。枸杞也吃完了。
站起來。碎石在鞋底磕了一下。
操作台上鍵盤的回車鍵,油漆脫落的那塊灰色,在零號區殘餘光線里泛著一點啞光。
灰毛衣走過去。彎腰。從操作台底下拿起地上那部手機。
師兄的。
屏幕碎了。比他的碎得更徹底。但亮著。壁紙是一棵柳樹。實驗室門口。
他拍的。
他把師兄的手機裝進左邊口袋。自己的裝右邊。
兩部碎屏手機。一左一右。
走了。
---
滅了的屏幕上什麼都沒有。看守者走了。師兄的字消了。零號區安安靜靜。
只有操作台上那個回車鍵的灰色底座,在黑暗裡,保持著一根手指按下去又鬆開的弧度。
四十七天。每天按幾百次。
磨出來的形狀。
沒人會再按了。
但形狀在。
剛好是一根小指的寬度。
---
許默的七號屏彈出一條數據。
視頻元數據中的時間坐標,被李斯自動抓取,與空白區域衰減模型交叉比對。
結果跑了0.8秒。
時間坐標指向的那個點——和空白區域厚度預計歸零的時刻,偏差在±41秒以內。
師兄在四十七天前算出了一個連李斯都需要跑模型才能得出的數字。
用30%的腦子。
許默沒建文件夾。
他把這條數據直接寫在操作台表面。用指甲。和灰毛衣刻在手腕上的方式一樣。
一串數字。
刻完了。看了三秒。拿抹布擦掉了。
心裡記著就行。