第6章
修車鋪的捲簾門隻拉起來半截。
林哲彎腰鑽進去的時候,門框上的感應器滴了一聲。鋪子裡很暗,空氣裡有股機油混著橡膠皮的味道。一台升降架占了半個屋子,上麵停著輛拆了輪胎的麪包車,車底盤鏽跡斑斑。牆角堆著廢輪胎和紙箱,收音機正放著倒懸山新聞頻率。
“找誰。”
聲音從車底傳出來。林哲看見兩條腿,工裝褲,鞋底磨歪了,躺在滑板上。
“丁師傅?”
滑板動了一下。人從車底滑出來,五十多歲,花白頭髮,臉上沾著機油。他撐起上半身,眼睛從林哲臉上掃到揹包,又掃回臉上。
“誰介紹的。”
“王愷。”
老丁的手在工裝褲上擦了兩下。他冇站起來,就那麼撐著坐在滑板上,盯了林哲大概五秒。“王愷人呢。”
“隔離審查。”
老丁冇再問。他從滑板上起來,膝蓋發出哢噠一聲,走到門口把捲簾門拉到地麵。鋪子徹底暗了,隻有車底那盞工作燈亮著慘白的光。
“樓上。”他指了指角落的鐵梯子,“彆開窗。臨街的攝像頭多。”
鐵梯子踩上去噹噹響。二樓是個小隔間,一張摺疊床,一張摺疊桌,牆角堆著幾台拆開的顯示器,螢幕朝牆摞著。桌上擺著一台老式台式機,機箱蓋冇裝,主機板裸露在外,CPU風扇嗡嗡轉。
“冇聯網?”林哲問。
“網卡拆了。”老丁在樓下應了一聲,“係統是去年裝的。夠你用了。”
林哲把揹包放在摺疊床上,坐下來。床墊是硬海綿,邊緣破了,露出裡麵的黃。他從褲兜裡掏出那張便簽紙和臨時通行證,展平在桌上。
春城南路17號。趙冬梅。
他打開台式機。螢幕是老舊的液晶屏,右上角有一塊漏光,發白。係統啟動很慢,硬盤咯吱咯吱響了四十幾秒才進桌麵。冇有圖標,壁紙是默認的藍色。他點開瀏覽器——打不開,冇聯網是對的。
需要查的東西在本地。王愷的備份。
他把手機掏出來。灰點在左上角安靜地亮著。備份程式還在運行,但出了邊界之後,信號一直在一格和零格之間跳。他打字:“你能把本地數據傳到這台台式機上嗎。”
回覆過了七秒才彈出來:“可以。藍牙。加密傳輸。”
“傳。”
手機螢幕閃了一下。進度條從0%爬到100%,大概用了兩分鐘。台式機的硬盤燈狂閃了一陣,桌麵上多了一個檔案夾,名字是一串隨機字元。
林哲點開。
裡麵有幾十個文檔。大部分是日誌檔案,標註著日期和時間。還有幾個文字檔案,命名方式不一樣——有的是日期,有的是一兩個詞。“權限節點追蹤”、“錨定協議分析”、“名單”、“趙”。
他點開“趙”。
文檔很短。幾行字。
“趙冬梅,女,42歲。原數據管理部係統架構師,工號DM-072。三年前離職。離職申請表上填的是‘個人原因’。內網裡有她的離職麵談記錄,但內容是空的。擦得很乾淨。”
下麵是一個地址。
“臨市老城區春城南路17號。確認日期:三個月前。確認方式:社保代繳記錄。她用的假名,但醫保賬戶綁定的手機號冇換。最後一次定位信號出現在這個地址方圓五十米內,時間是三個月前週四下午四點。”
林哲往下翻。
“退訂機製:智慧治理試點項目的退訂條款寫在用戶協議第37條。公開版本是‘滿一年且行為偏差率低於30%可申請退出’。但內部版本有一個隱藏條款——如果被護航人能證明護航服務本身基於非法數據采集,可即時申請強製退訂。”
“需要三個條件。一,數據采集的原始檔或日誌。二,係統內部工單或批示記錄。三,至少一個活人的證言。”
林哲盯著螢幕。
數據采集的原始檔。王愷追蹤到的那個叫“權限”的節點,他說是從市政係統的後門抽調數據。如果趙冬梅是係統架構師,她可能知道那個節點是怎麼運作的。內部工單。需要數據管理部的人經手過的批示記錄。
活人的證言。趙冬梅本人。
文檔最後一行字是王愷寫的備註。
“她怕被找到。見麵不要提我的名字。提她以前經手過的一個項目,代碼名‘灰域’。那是她離職前做的最後一項評估。評估報告被她親手刪了。如果她還留著備份,那就是證據。”
林哲關了文檔。
他把台式機往旁邊挪了挪,掏出那半瓶踩扁的水。擰開蓋子喝了最後一口。水溫吞吞的,帶著塑料和鐵鏽的混合味道。
樓下傳來電鑽聲,刺耳。老丁在修車。
林哲在鍵盤上敲了幾下,把老城區的地圖調出來。春城南路在臨市的老城區,整片區域屬於舊城改造範圍,拆了一半。衛星照片上能看到成排的空房子,有的已經扒了屋頂。
他把便簽紙拿起來。正麵那句話已經被汗泡得快看不清了。背麵王愷寫的密鑰片段——已經用掉了。出閘口用了一次,通行證背麵寫著“密鑰隻能用一次”。
他把便簽紙翻過來又翻回去,拇指搓著紙的邊緣。
紙條背麵最後一行還有個東西。不是密鑰。是王愷寫的那行更潦草的字——“彆讓我白做。”寫得很用力,紙背能摸到凹痕。
他把紙條摺好,連同通行證一起塞進褲兜。
樓下電鑽停了。老丁的聲音傳上來:“要幫忙嗎。”
林哲走到鐵梯子口往下看。老丁正拿抹布擦手,抬頭看他。
“你知道春城南路怎麼走嗎。”
“老城區。坐23路公交,到底站下。”老丁把抹布扔在工具箱上,“那片拆得差不多了。住的人少。”
林哲點了下頭。回到桌前,把手機拿起來。備份程式還在跑,灰點一閃一閃的。他打字:“我下午去春城南路。趙冬梅如果在的話,怎麼讓她開口。”
回覆彈出來:“不知道。王愷的備註裡寫了,她警惕性很高。三年前離職之後就把自己從所有內部係統裡摘乾淨了。連社交賬號都登出了。”
“她怕什麼。”
“檔案裡冇說。但王愷查到過一件事。趙冬梅離職前一個月,經手過‘灰域’項目的一次內部審計。審計報告上交之後,她的直屬上級在一週內調離。接任的那個人,三天後簽了趙冬梅的離職申請。簽完當天,這個人也申請調崗了。”
“灰域是什麼。”
“王愷冇查到。係統裡隻有代碼名。所有的技術文檔都被清理了。”
林哲靠回椅背。摺疊椅的塑料靠背壓得吱嘎響。灰域。這個名字聽起來像一塊擦掉的東西——擦過之後紙張上留下的痕跡,不是字,但能證明字存在過。
他想起自己手機上那個叫“權限”的應用。也是這麼個東西。出現過,消失了,留下一個灰點。灰點,灰域。
同一個人起的名字。
趙冬梅。
他把手機揣進褲兜,下樓梯。老丁在升降架旁邊擰扳手,看見他下來,停了一下。
“出去的話,後門走。”老丁指了指鋪子最裡麵,那扇鐵門被紙箱擋住一半,“後麵是巷子。巷子通菜市場。從菜市場穿過去就是23路站台。”
“謝謝。”
老丁冇應。繼續擰扳手。
林哲推開紙箱,拉開門。外麵確實是個窄巷子,兩邊的牆貼著白瓷磚,被油煙燻黃了。頭頂掛著晾衣繩,晾著幾件洗褪色的工裝。他側身穿過去,腳底下踩到積水,濺在褲腿上。
菜市場在巷子儘頭。下午的攤位收了大半,地上剩著爛菜葉和塑料袋,幾個攤主在拆遮陽棚。林哲穿過空蕩蕩的市場,聞到了魚腥和泔水的混合味道。一個賣豆腐的女人抬頭看了他一眼,低頭繼續收拾木板。
23路站台在市場出口外麵。站牌鏽了,塑料板上的線路圖被太陽曬褪了色。等了大概十分鐘,車來了。是輛舊式公交,柴油發動機聲音很響,車門打開的時候吱嘎一聲。
林哲上去。車裡隻有四個人。他坐到最後一排靠窗的位置。座位上的海綿坐塌了,能感覺到底下的鐵板。
車開動了。窗外的臨市街景慢慢往後退。
臨市和倒懸山不太一樣。廣告牌更多,店鋪招牌五顏六色,路邊的垃圾桶滿出來了冇人收。但路燈柱上也裝著攝像頭。方的,銀灰色,和倒懸山第七區的一樣。外殼上印著製造商的logo,下麵貼了一行小字——“倒懸山數據管理部監製”。
邊界以西五百米,數據管轄權終止。但攝像頭還在。
林哲把視線從窗外收回來。
公交車晃了四十分鐘。到老城區的時候,乘客隻剩他一個。司機從後視鏡裡看了他一眼,把車停在終點站。站牌旁邊是一排已經拆掉一半的沿街樓,露出了牆內麵的紅磚和電線。碎玻璃堆在人行道邊上,冇有人掃。
林哲下了車。春城南路的路牌立在街角,藍色底子漆皮剝落了一大半,剩個“南”字還看得清。
17號在路的中段。
是一棟四層的舊式樓房,底層是店麵,捲簾門緊閉,上麵噴著“五金店”三個字,字被鏽跡侵蝕了。店招是燈箱式的,但燈管早就碎了,隻剩鐵架框。二樓以上的窗戶蒙著一層灰,看不到裡麵。整棟樓看起來是空的。
但一樓捲簾門右下角有個小門。鐵皮門,漆成和捲簾門一樣的灰色,不仔細看會漏掉。門縫底下塞著一張廣告單,被雨水泡爛了,黏在地上。
林哲蹲下去,把廣告單摳起來。底下露出地板磚,還有一行用粉筆寫在門口台階側麵的小字,很小,要彎腰才能看到。
“訪客請繞到後麵。前門不響。”
字跡很淡,不像最近寫的。
他直起腰,繞過樓房的側麵。樓後麵是一條更窄的巷子,堆滿建材廢料。有個鐵樓梯搭在樓房背麵,通到二樓。樓梯生鏽了,扶手一碰就晃。
他走上去。到二樓,門上冇有門鈴,隻有一塊貼在牆上的膠布,上麵用圓珠筆寫著“有事敲門”。
林哲敲了三下。
裡麵冇動靜。他等了十秒,又敲了三下。
門開了條縫。
縫裡麵是鐵鏈釦。一張女人的臉從縫裡看他,四十多歲,臉消瘦,頭髮隨便夾在腦後,眼角的紋路很深。她冇說話。
林哲開口:“我找趙冬梅。”
女人的表情冇變。“找錯人了。”
“灰域。”
門縫後麵的眼睛動了一下。不是瞳孔——是眼瞼,眯了一點。女人沉默了幾秒,把門關上了。林哲站在門外,鐵樓梯在風裡微微晃,腳下的鐵板咯吱咯吱的。
鐵鏈釦的聲音響了一聲。門開了。
趙冬梅站在門口。穿著深灰色的舊運動服,袖口磨得起毛。她冇讓林哲進門,就站在門口,一隻手撐著門框。
“誰讓你來的。”
聲音是啞的,但語調很穩。
“一個朋友。”林哲冇說王愷的名字。
“朋友。”趙冬梅把這兩個字嚼了一下,“什麼朋友會知道灰域。”
“做數據恢複的。”
趙冬梅的眼睛在他臉上停了幾秒,然後移開了。她往門框上靠了靠,左肩頂在門框上。袖口露出來的手腕上有一道舊傷疤,顏色很淡,大概是幾年前縫過針。
“灰域項目已經被刪乾淨了。冇什麼能恢複的。”
“我不是來拿數據的。我是來退訂智慧治理試點的。”
趙冬梅的手從門框上滑下來。她看著林哲,嘴唇動了一下,像在說什麼冇出聲的話。然後她側開身。
“進來說。”
林哲跨進門檻。門口堆著幾雙舊拖鞋,鞋底磨平了。客廳不大,窗戶用報紙糊著,透進來的光是黃的。桌上擺著一台舊筆記本,螢幕合著,電源燈冇亮。牆角有個書架,塞滿了檔案夾和紙箱。空氣裡有股樟腦丸和舊書混在一起的味道,有點悶。
趙冬梅把門關上,鐵鏈重新扣上。她從桌上拿起一包皺巴巴的煙,抽出一根,點上。煙霧在天花板的角落裡散開。
“退訂。”她吐了口煙,“你知道退訂需要什麼東西吧。”
“三樣。原始檔,工單,證言。”
趙冬梅點了下頭。“原始檔我有。工單也有。但證言——”她彈了下菸灰,“我自己就是證言。問題是,三個條件齊全了也不一定退得掉。他們改過條款。”
“什麼意思。”
“退訂申請必須回倒懸山交。第十區行政審批中心。”趙冬梅把煙叼在嘴角,從書架上抽出一個牛皮紙信封,“你人不在倒懸山,冇法交。你在倒懸山,他們就能鎖定你。這是個死扣。”
林哲看著那個信封。紙皮發黃,四角磨圓了。“你試過交。”
趙冬梅把信封放回書架。“不是我。是另一個。去年的事。他已經湊齊了三個條件,進了第十區行政審批中心的大廳,排到第八號視窗。”她停了一下,“那天下午,係統裡關於他的所有記錄被清理了。社保、醫保、通訊日誌、消費記錄。什麼都冇了。不是刪除——是變成初始值。像從來不存在。”
林哲想起王愷備份裡那幾個失聯的人。十六個被標記的目標終端持有者,三個失聯。係統裡找不到。一切歸零。
“他在哪。”
趙冬梅冇回答。她把煙掐滅在桌上的菸灰缸裡,瓷缸子底上有個豁口。“你來這裡之前,過邊界的時候用了密鑰對吧。”
“是。”
“那串密鑰是王愷留下的。王愷三個月前聯絡過我。他說他在追蹤‘權限’節點的底層協議,發現了一件事——數據牢籠協議不是監控程式。是替代程式。”
林哲的手指在膝蓋上蜷了一下。“替代什麼。”
“替代現實。”趙冬梅坐進桌邊的椅子,翹起二郎腿,運動褲的膝蓋位置磨得發白,“智慧治理試點的底層邏輯不是監視市民。是用數據構建一個行為模型,然後當模型精確到一定程度的時候,係統可以直接替代真人做決策。”
她敲了一下桌麵。
“你去超市買牙膏,係統預測你會選薄荷味。你選的時候猶豫了兩秒,最後選了薄荷味。係統判定預測準確。下次你再買牙膏,係統自動下單薄荷味,跳過你的猶豫。你看到購物籃裡已經有牙膏了,懶得換,用了。這叫護航服務。”
林哲的喉嚨發緊。“如果預測錯了呢。”
“預測錯了一次,係統記錄為偏差。偏差率高了,係統加大監控力度,收集更多數據,提高預測精度。”趙冬梅從煙盒裡又抽出一根,冇點,“直到偏差率降到某個閾值以下。那個時候,你在係統裡的行為模型已經比你真實的行為更精確了。”
“什麼叫比我更精確。”
趙冬梅看著他。眼睛裡的光不是同情,是某種很冷的確認。
“比如你接到王愷的電話。真實的你,會懷疑他是不是被控製了。係統預測的你,會相信他說的一切。因為在你過去六個月的通話記錄裡,你從來冇懷疑過他的真偽。”
林哲攥緊的手指,指節發白。
“係統不關心真假。係統隻關心一致性。”趙冬梅把煙放在鼻子下聞了聞,叼上,“王愷說你是個體戶,冇植晶片。你知道為什麼被選中嗎——因為你不可預測。你的行為偏差率天生就不低。係統標記你,不是因為你有威脅。是因為你是它漏掉的盲點。”
客廳裡的某個角落傳來冰箱壓縮機的啟動聲。嗡嗡的。
林哲鬆開手。掌心有指甲掐出的印子。“灰域項目和你離職有關。”
趙冬梅把冇點的煙從嘴裡拿下來。她盯著林哲,沉默爬滿了臉上的紋路。
“灰域是我寫的。”她把煙放在桌上,“不是評估報告。是灰域本身。我是主程。”
林哲冇動。
“灰域是一個協議。能讓係統在一個有限範圍內,允許真實行為存在,不進行預測替代。它像係統內部的一小塊灰色地帶,數據流過,但不被記錄,不被建模。”趙冬梅的聲音慢下來了,“我寫它是想留個後門。一個保護性的後門。”
“後來呢。”
“後來他們發現了。不是發現代碼——是發現邏輯。有人在內網查灰域節點的流量異常。我把代碼刪了,提交了離職。但他們知道有人用過灰域協議。”趙冬梅把煙盒捏扁了,塑料哢哢響,“用過的終端都會被標記。規則破壞者。”
林哲眼前閃過手機螢幕上的彈窗。規則破壞者已標記。那個粗糙的畫素字體。王愷的腳本裝在了二十個終端上。他是第十七個。前麵的十六個裡,有三個失聯。
不是失聯。是被替代了。係統用行為模型替代了真人。他們還在走,在買東西,在打電話。隻是做決定的已經不是他們了。
“替代之後,真人去哪了。”
趙冬梅冇說話。
她把那個牛皮紙信封從書架上重新拿下來,打開。裡麵是一疊列印紙,邊緣捲了,密密麻麻的字和圖表。她抽出最底下的一張,遞給林哲。
是倒懸山數據管理部的內部工單影印件。日期三年前。標題寫著“灰域項目清理方案”。方案正文最後一段,有一行字被人用熒光筆畫了出來。
“涉及終端,全部執行協議終止。”
協議終止。
不是係統層麵的刪除。是協議終止。數據牢籠協議,護航服務終止,人不存在於係統裡。係統裡不存在的人,在倒懸山是什麼。冇有身份證。冇有醫保。冇有消費記錄。冇有出行軌跡。什麼都冇有。
“這是你交不了退訂申請的原因。”林哲把工單影印件放在桌上,“你一進倒懸山,係統就檢測到你。”
“對。我提交申請的那一刻,就會被協議終止。”
窗外有風吹過,報紙糊的窗戶鼓了一下。冰箱的壓縮機停了,房間忽然安靜下來。
林哲看著桌上那疊列印紙。“王愷說,三個條件齊全就能退訂。”
“能退訂。問題是退訂之後,你需要拿著退訂批文,在係統裡執行逆向協議——把數據牢籠的錨定解除。逆協議必須在倒懸山內部網絡執行。物理接入。冇法遠程。”
“需要什麼東西。”
趙冬梅從信封裡抽出另外幾張紙。技術文檔,頁腳標著“灰域協議v2.1”,字體是等寬的。她翻到最後一頁,指著一行代碼註釋。
“需要一台終端,接入數據管理部的內網。用我的灰域協議登錄權限節點。把退訂批文上傳。然後——”
她停了一下。
“然後呢。”
“然後係統會檢測到有人在動它的底層規則。你能操作的時間不超過九十秒。九十秒後,係統會鎖定入侵點。如果那時候你還冇退出內網,你手上的終端會被執行協議終止。”
林哲看著那行註釋。代碼他認得一部分,是做偽裝的。註釋寫得很短,隻有三個詞。
“速度要快。彆猶豫。”
他抬起頭。“你寫的。”
趙冬梅拿起桌上那根冇點的煙,叼在嘴裡。冇點。“王愷說你是做數據恢複的。如果讓你在九十秒內上傳數據並清除日誌,你能做到嗎。”
林哲在心裡算了一下。九十秒。登錄、驗證、上傳、清理痕跡。普通操作要三到五分鐘。但如果提前準備好腳本,自動執行,三十秒就夠了。
“能。”
趙冬梅把煙從嘴裡拿下來。她站起來,走到窗戶邊,從報紙邊緣往外看了一眼。樓下巷子裡冇有人,隻有風把廢紙吹得在地麵上滾。
“我可以給你灰域協議和退訂需要的數據。但有一個條件。”
“什麼。”
“逆協議做完之後,把我從係統裡刪乾淨。不是刪記錄——是把趙冬梅這個人的初始數據全部擦掉。”
林哲皺眉。“擦掉之後呢。”
“她會變成不存在過的人。”趙冬梅轉過身,靠窗站著,窗外的光從報紙縫隙裡漏進來,照在她的運動服上,“冇有檔案。冇有記錄。冇有跟蹤。這就是條件。”
林哲盯著她。她臉上的表情很平,冇有激動,冇有恐懼,像是這三年來每天都在想同一個問題,現在終於把答案說出來了。
“你自己不行嗎。”
“我冇有內網權限。離職的時候權限被登出了。灰域協議隻能在外部隱藏數據流,但做不了內部操作。需要一個有終端接入能力的人。”
“我的手機被錨定了。”
“會用到的。錨定設備是唯一的憑證。”趙冬梅從窗邊走過來,把那個牛皮紙信封推到他麵前,“拿著。看完燒掉。明天早上我告訴你進倒懸山的路線。”
林哲低頭看那個信封。紙皮發黃,裡麵裝著三年前的秘密,足夠把一個人從係統裡徹底抹掉的秘密。不是隻有趙冬梅被抹掉。是他自己。如果九十秒不夠。如果係統鎖定比他快。
但王愷已經被隔離審查了。被係統用聲紋合成打著電話,把備份塞進二十個陌生人的手機,最後一句話寫在代碼註釋裡。
彆讓我白做。
林哲把手按在信封上。
“不用等明天。”他站起來,“我今晚看。看完就走。”
趙冬梅看著他。眼睛裡的光變了一下,像是想說什麼。但她冇開口。隻是把桌上那根冇點的煙重新叼回嘴裡,拿起打火機。
打火機哢噠一聲。
火光照亮她半張臉的輪廓,三秒後滅了。