第3章
林哲在防火門後麵站了七秒。
七樓的走廊裡傳來電梯到達的提示音,叮一聲脆響,然後是腳步聲。不止一個人。硬底鞋踩在塑膠地板上,步子很快,帶著某種不需要猶豫的目標感。
他冇等聲控燈亮。
往樓下走。四樓,三樓,二樓。腳步聲在樓梯間裡疊成奇怪的回聲,像是有人在上麵跟著,又像是從下麵傳上來的。林哲在二樓的拐角停住,側耳聽了三秒。腳步聲是從七樓下來的,大概兩三個人,速度比他快。
手機螢幕亮了。
灰點閃了一下,彈出一條訊息。不是係統通知的格式,是剛纔那種對話框,白底黑字。
“彆走消防通道。從二樓進辦公區,貨梯到地下停車場。”
林哲盯著螢幕。他打了一個字:“誰。”
這次回覆慢了。對話框裡的光標閃了五下,字才跳出來。
“王愷的終端。他讓我盯著你。”
林哲想問更多,但樓上腳步聲近了。他把手機攥在手裡,推開二樓防火門。
走廊裡燈開著,和七樓一樣的白色日光燈,但這裡的工位是空的——不是下班那種空,是搬空那種空。格子間拆了一半,桌麵上冇有電腦,冇有檔案,隻有拆下來的顯示器支架和幾團亂糟糟的網線。牆上貼著A4紙,印著“辦公區調整中,請移步三樓臨時工位”。
空氣裡有新刷的牆漆味道。
林哲穿過空蕩蕩的辦公區。塑膠地板上有搬家留下的黑色刮痕,拖出一道道弧線。他找到貨梯,摁下按鈕。電梯門開了,裡麵燈管壞了一根,另一根在閃,把不鏽鋼轎廂照得一明一暗。
他走進去。摁B1。
電梯往下走的時候,手機又亮了。
“到B1往右拐,第三個柱子後麵有輛灰色麪包車。鑰匙在左前輪擋泥板內側。”
林哲讀了兩遍這條訊息。太具體了。具體到像是預先安排好的。他把手機翻過來,螢幕朝下,冇回覆。
電梯停了。門打開。
地下停車場很大,水泥柱子上刷著樓層的編號,日光燈管隔著幾米一根,照亮的地方有限,暗處停著車。空氣裡有股輪胎橡膠和潮氣的混合味道,頭頂的通風管道發出低沉的嗡鳴。
林哲走出去。右拐。第三個柱子。
柱子後麵確實有輛灰色麪包車。車身一側噴著“倒懸山市政服務”的字樣,但噴漆是歪的,最後一個字蹭掉了一塊,露出底下的藍色漆。他蹲下去,手伸進左前輪的擋泥板內側。指尖碰到冰涼的金屬。一把車鑰匙,用膠帶粘在塑料板上。
他扯下來。
車鑰匙是舊的,塑料殼上磨出了白色的劃痕。摁解鎖,車燈閃了兩下。林哲拉開車門坐進駕駛座,關門的時候,停車場裡的腳步聲從遠處傳過來,硬底鞋踩在水泥地麵上,迴音很重。
他冇發動車。透過擋風玻璃,看到電梯口走出來三個人。深藍色製服,不是保安——肩膀上有倒懸山數據管理部的徽章,一個銀色的倒山logo。其中一個對著對講機說話,另一個舉著手機,螢幕的光照著下巴,像是在看定位。
第三個人往這邊看了一眼。
林哲伏低身子。方向盤壓著胸口,心跳隔著肋骨砸在塑料圈上。他在心裡數了十秒。抬頭的時候,那三個人分散開了,一個往貨梯方向走,兩個沿著車道慢慢搜尋。
麪包車的鑰匙在手裡,冰涼的塑料溫度正在被掌心捂熱。林哲發動引擎。發動機的聲音打破了停車場的低頻嗡鳴,但冇人在意——那三個人停了一下,繼續往兩邊走。
他把車倒出來,輪胎在水泥地麵上擦出一聲尖響。前大燈照出去,光柱裡飄著灰塵。
出停車場的時候,後視鏡裡看到其中一個人拿起對講機。
林哲踩下油門。
第八區的街道已經黑了。路燈亮起來,橘黃色的光灑在瀝青路麵上,照出斑駁的油漬。人行道上人不多,有人牽著狗,有人在公交站看手機。麪包車的引擎聲很粗,方向盤有點抖,儀錶盤上亮著一個黃色的檢查引擎燈。
他開出去兩條街,手機震了。
這次不是對話框。是一個導航請求,自動彈在螢幕上——“目的地:第十區行政審批中心。預計行駛時間:47分鐘。”
下麵兩個選項。“接受”和“接受”。
冇有拒絕按鈕。
林哲點了一個。導航開始了,女聲機械地報出路名:“前方三百米,右轉進入中山北路。”
他把手機丟到副駕駛座上。
螢幕還是亮的,導航地圖上有條藍色的路線。灰點在右下角,一直閃。
開了大概十分鐘,手機又震了。不是導航,是那行訊息。白底黑字彈在導航介麵上麵。
“彆去十區。他們改路線了。”
林哲看了一眼。把車靠邊停下。副駕駛座上的手機還在彈訊息。
“行政審批中心是陷阱。那邊今天下午增加了三組人,全是從數據管理部調過去的。你的定位已經進了他們係統。隻要進十區,直接觸發定位輔助服務。”
林哲把手機拿起來。輸入欄跳出來。他打字:“你是誰。”
“說了。王愷的終端。”
“王愷人在哪。”
這次回覆停了十幾秒。林哲盯著螢幕,導航女聲還在報路名。車窗外麵是一條商業街,理髮店的旋轉燈箱在轉,紅藍白的光打在玻璃上。
訊息來了。
“王愷被隔離審查了。下午四點的事。他給你打完那個電話之後,網監處的內網權限就被凍結了。他的終端現在離線,我是他裝在你手機裡的備份程式。”
“程式。”
“是。”
“什麼程式。”
“一個監控腳本。本來是王愷用來追蹤網監處內部異常的。他三個月前發現有人在抽調八區居民的行為數據,走的是市政係統的後門。查了兩個月,隻能追到數據流進了一個叫‘權限’的節點。然後這個節點就消失了。”
林哲攥著手機。導航播了一句“前方左轉”,他關掉了。
“所以他把腳本裝在我手機上。”
“不是你。是隨機選了二十個目標終端。你是第十七個。”
林哲腦子裡的念頭跳了一下。第十七。所以前麵還有十六個,後麵還有三個。那個論壇帖子,收到彈窗的人,發帖被刪。他不是第一個。
“其他十六個呢。”
“目前有十一個被標記為行為偏差,六個在觀察期,三個失聯。”
車內安靜下來。車窗外的理髮店燈箱還在轉。林哲盯著手機螢幕上的那行字,光標一閃一閃。
“什麼叫失聯。”
“係統裡找不到。消費記錄、出行軌跡、通訊日誌,全部停了。停的時間點很集中,前後不超過二十四小時。王愷懷疑他們被納入了數據牢籠協議。”
數據牢籠。林哲記得最初彈窗上那句話——“數據牢籠協議已啟用”。後麵跟著的,是智慧治理試點項目。全方位生活護航。
“護航服務是牢籠。”
“是的。”
林哲把手機放到方向盤上。螢幕上的對話框還在,光標等著他輸入。
“我現在怎麼辦。”
備份程式回得很快:“兩個選擇。一個是繼續開,去十區。但數據管理部的人已經在那邊設了接收點,你的車是市政服務車輛,進了十區會自動上報定位。到時候就不是C級護航了。”
“C級以上是什麼。”
“B級。強製定位輔助。他們可以隨時知道你在哪,誤差不超過兩米。”
林哲喉嚨裡湧上來一點苦澀的味道。早上吃的那半管營養膏,矽基代糖的甜膩味忽然變得很清晰。
“第二個選擇。”
“把車停在這裡。走。”
“走哪。”
“倒懸山邊界。”
林哲盯著這四個字。倒懸山是一座城市,它和周邊市縣之間冇有圍牆,但有一條數據邊界。所有市民的終端設備在離開倒懸山範圍時,需要申報出境。申報需要理由、行程和審批。
“出境會被監控。”
“對。但監控的是數據流,不是人。你身上冇有植晶片——這是王愷確認過的。”
林哲下意識摸了一下左臂。是的,他冇植晶片。倒懸山規定公職人員和安全級彆較高行業的從業者必須植入定位晶片,但他是個體戶,做數據恢複的,不屬於強製人群。這是他少有的幸運。
“車上有東西嗎。”
“副駕駛手套箱。”
林哲打開。裡麵有一件灰色的工作服外套,一張市政服務人員的磁卡——上麵的照片不是他,是一個戴眼鏡的中年男人——還有一部螢幕裂了的舊手機,一個牛皮紙信封。他拿起來。信封裡有現金,大概兩千塊。還有一張便簽紙,用黑色水筆寫著幾個字母和數字組合。
“那個是王愷備份在離線端的密鑰片段。到了邊界能用。”
林哲把便簽紙摺好,連同現金塞進褲兜。外套冇拿,照片對不上。他推開車門。街上的人比剛纔多了些,有人從理髮店裡出來,頭髮剛理過,後頸上粘著碎髮。冇人注意他。
“最後一個問題。”他站在人行道邊上,對著手機螢幕打字。
“問。”
“為什麼幫我。”
回覆這次不是秒回。光標閃了七下,八下,九下。然後一行字慢慢彈出來。
“王愷寫這個腳本的時候,置入了一個優先指令。如果宿主終端被錨定,腳本必須優先保證宿主的安全。他當時是在開玩笑,說這叫‘代碼的良心’。寫完三天後他被隔離審查。”
林哲看著螢幕上的字。路燈的光落在玻璃上,反射出他自己的臉。嘴唇抿得很緊,下巴輪廓在橘黃色的光線裡顯得很硬。
“他還能出來嗎。”
冇有回覆。
林哲等了三十秒。對話框自己縮回去了,縮成灰點。導航介麵重新彈出來,藍色的路線還在,但目的地改了。不是第十區行政審批中心。
是倒懸山第七區的公交總站。那裡有發往臨近城市的班車。
林哲把手機揣進褲兜。沿著人行道往前走。
理髮店的燈箱在他身後繼續轉著,紅藍白的光一圈一圈照過去,像某種永不疲倦的信號。麪包車停在路邊,車燈滅了,車身側麵那塊蹭掉漆的“倒懸山市政服務”字樣,在路燈下顯得越來越模糊。
林哲冇回頭。
手機在褲兜裡震了最後一下。他冇看。
往前走了大概五百米,他拐進一條巷子。巷子兩邊是居民樓的背麵,牆上掛著空調外機和晾衣架。有人在某層樓的廚房裡炒菜,油煙味飄下來,混著辣椒和蒜。一扇窗戶開著,漏出電視新聞的聲音——女播音員在念一條通告,語調平穩得冇有起伏。
“……第三期智慧治理試點項目自啟動以來,市民生活滿意度提升明顯。數據顯示,參與試點的居民在行為可預測性方麵提升了百分之四十二,社會運行效率顯著優化。倒懸山數據管理部表示,將根據試點反饋情況,適時擴大試點範圍……”
林哲穿過巷子。
聲音慢慢遠了。巷子儘頭是另一條街,街口有個公交站牌。站牌下麵的電子屏滾動著班車資訊。去第七區的末班車,還有十七分鐘。
他看了時間。螢幕右上角顯示二十一點零三分。從下午到現在,他居然冇覺得餓。
手機螢幕上的灰點安靜地停在右下角。不再閃了。
等車的五分鐘裡,林哲用那台舊手機——手套箱裡拿的那部,螢幕裂了但還能開機——試著連了一下公共網絡。撥號介麵跳出來的時候,他猶豫了一下。
輸入王愷的號碼。
關機。
輸入王愷家裡的座機。響了三聲,接通了。那邊冇人說話,隻有背景音,像是電視,或者是廣播,也在播那條通告。幾秒鐘後,電話掛斷了。
林哲放下手機。公交車到了。
上去的時候刷卡機滴了一聲。車上隻有三個人,一個老頭,一個年輕女人,一個看起來像是下班的服務員,領子上彆著冇摘掉的名牌。林哲走到最後一排靠窗的位置坐下。座椅的塑料套破了,露出裡麵的海綿。
車啟動了。窗外的街道往後退,路燈的光一道一道地掃過車窗。林哲靠著椅背,拇指在褲兜裡摸著那張便簽紙的邊緣。紙有點潮,被體溫焐出了汗。
他掏出自己的手機。
螢幕亮了。那張拍糊的第八區夜景還在,燈光線拉著橙黃色的軌跡。灰點還在。
林哲按住那個灰點,壓了大概十秒。
螢幕閃了一下。灰點挪動了——從右下角移到了左上角,然後彈出一個介麵。是聊天記錄的介麵,標註著“備份程式-對話日誌”。最上麵一條,時間標註是今天下午十六點四十一分。
內容是那段他冇看到的對話。
“代碼的良心。他當時在開玩笑。寫完三天後他被隔離審查。”
下麵緊跟著一行,是剛纔冇顯示出來的。
發送時間是十六點四十一分二十三秒。
“林哲。王愷最後一次和腳本握手的時間是十五點五十八分。就是給你打完那個電話之後。握手記錄顯示,他當時正在被強製接入審查協議。數據流裡有三個監聽介麵,兩個身份驗證請求。他最後一條日誌寫了——”
光標停在那裡。
林哲往下滑。字一個一個跳出來。
“他說:彆讓我白做。”
螢幕的光照在林哲臉上。公交車顛了一下,頭頂的扶手環晃了晃。他鎖屏。把手機翻過來壓在膝蓋上。
車窗外麵,第八區的燈光正在慢慢變稀。路邊的店鋪關了門,捲簾門拉下來,上麵畫著塗鴉,有倒山的logo,有歪歪扭扭的字——寫著“數據永不眠”。車在紅燈前停了,引擎的震動透過座椅傳上來。
林哲翻開手機,點開備忘錄。空白頁麵上隻有一個光標在閃。他開始打字。不是給自己看,是給備份程式。
“要多久才能到邊界。”
灰點跳了一下。
“步行加換乘。明天上午十點之前。”
“通過邊界呢。”
“需要十分鐘的數據空白視窗。時間是明早十點零七分到十點十七分。邊界閘口係統自動更新,那個時間段人工乾預最少。”
林哲放下手機。公交車的電子報站器響了,女聲報了一個地名,他冇聽清。車裡的人又少了一個,隻剩下他和前排的老頭。老頭打著瞌睡,頭一點一點。
他從褲兜裡掏出那張便簽紙。紙皺了,摺痕很深,邊緣被汗浸得有點透明。上麵王愷潦草的字寫著:
“去十區。找姓趙的。她知道退訂的事。”
去不成了。姓趙的能不能見到,不知道。
但王愷最後那句話還在他腦子裡轉。
彆讓我白做。
車繼續往前開。第七區公交總站的停車場在城外邊緣,緊鄰著一條貨運鐵路。林哲看過倒懸山的地圖,知道沿著鐵路線往西走,大概十六公裡,就是邊界檢查站。
他把便簽紙展平,重新摺好。
然後拿起手機,給備份程式發了一條。
“十點。我到邊界。”
發完這句話,螢幕上的灰點閃了最後一下,徹底熄滅了。