短篇《反向物流線》
2049年的香港,夜色像一層薄薄的紗,籠罩在高樓之間。空氣乾淨得有些不真實,天空隱隱浮著一層看不見的工業薄膜,那便是霧網。低空巡航的微型無人機悄無聲息地滑過,像一群無形的昆蟲,收集懸浮粒子,分類、壓縮,然後送往新界北的再製中心。風吹過時,帶著淡淡的金屬味,市民們習以為常,把這當作環保的政績,警方視之為第二套天眼,平台公司則將它當作行為資料的無盡入口。
每一次呼吸,每一次轉身,每一次夜歸的腳步,都被悄然記錄,換算成一串串可用的數字。演算法在暗處運轉,能預測交通流量、消費趨勢,甚至是下一場抗議的潛在熱點。唯一預測不了的,是惡意何時轉向,何時從散亂的衝動,變得有條理、有計劃,像一條隱藏在城市脈絡中的暗流。
荃灣一棟舊工廈裡,有間名為「皮革修補」的工作室。門面斑駁,招牌卻擦得乾淨,字跡清晰。店主姓顧,社區裡的人很少提起他的全名,仿佛那名字被刻意抹去,只剩一個暱稱:皮匠。他不愛說話,不笑,也不與人建立多餘的關係。工作室內恒溫十八度,濕度四成五,空氣中瀰漫消毒酒精與皮革護理油的混合味,乾淨得像一間小型診所,沒有多餘的灰塵,沒有多餘的聲音。
夜深後,他關上店門,拉下鐵閘。不接新單子了。他打開紫外掃描燈,從牆後的金屬箱取出一個個透明封存袋。袋上沒有姓名,只有編碼:區域、日期、序列號,像倉庫貨架上的定位標籤。他不叫那些為遺體,也不叫證物。他用一個中性詞:素材。字眼一旦穩定,人就能把手伸得更深,不帶顫抖,不帶猶豫。
同一時期,警方在不同區域接到多宗失蹤與死亡案件。現場共同點不多,最明顯的是那些「結」。束帶纏在手腕、腳踝,或是髮束上,留下淺淺的痕跡,結型一致,收尾俐落,沒有多餘的纖維殘留。材質不是普通尼龍,而是可降解聚合纖維,約七十二小時後便開始分解,留下淡淡的植物糖味,像一場短暫的春風,吹過就無跡可尋。這讓追蹤變得異常麻煩,因為證物會自己消失,像城市在幫忙掩蓋什麼。
重案組給兇手取了代號:繩結師。代號不是為了浪漫化,而是方便寫報告、開會議。警方追的不是傳說中的怪物,是流程,是線索,是可量化的進度。法證部門把結型的偏差量化,轉換成四位數座標。那些座標指向城市邊緣:舊倉庫、廢棄學校、工地空地。每一個點,都像把受害者從都市的秩序中推開,推向盲區,推向無人注意的黑暗角落。
突破不是來自監控中心的海量數據,而是來自一個平凡的目錄員。林芷晴,在一家供應鏈公司做風險與品類管理。日常工作是處理SKU、出貨節點、價格波動、異常退貨。日子像一條平穩的流水線,沒有驚濤,沒有駭浪。
警方公開徵求可降解束帶來源線索時,她只看了一眼現場照片,就認出那材料。那是醫療級固定帶的衍生款,近半年本地出貨量分散異常。不是爆量,而是被切碎成數十個小商戶、數百筆小單。每間店只賣一兩款商品,標題刻意避開敏感詞,價格卡在平台風控閾值以下,不求賺錢,不求曝光。這不像正常的零售,更像一種隱秘的取件方式,像暗號,像約定。
她花了幾個晚上,把數據交叉比對:下單IP分佈、收貨自提櫃、物流掃碼時間,與案件座標的地理重疊。周啟文看完她的表格,沒有多餘的讚美,只問了一句:「你怎麼想到這樣比對?」
芷晴平靜回答:「系統看人。我看貨。」她不覺得自己在幫警方,她只是把一條不正常的供應鏈拉直,像日常工作那樣,理性、冷靜,沒有情緒波動。
霧網例行維修的那晚,部分區域暫停低空巡航。市民覺得空氣輕鬆了些,犯罪者覺得空間大了些。顧的工作室裡,舊式收音機在午夜自行開機,沒有電台訊號,只有一段失真的聲音,從排水管道般逆流而上,沙沙作響。
「你收集得太慢。」聲音很穩,字句像經過多次排練,沒有多餘的喘息。
顧抬頭,看向角落的攝影機外殼。他店裡真正的鏡頭藏在牆體暗槽裡,線路隱秘。他不驚,因為他早就習慣被看見,只是討厭被先說破,像一層薄薄的皮膚被撕開。
他回了一句:「你找我做什麼?」語氣平平,像問客人要不要換鞋底,沒有起伏,沒有防備。
收音機短暫雜訊後,聲音繼續:「你保存外層,但沒有結構。沒有秩序。」
顧聽著,把紫外燈調暗,像在保護某種敏感材質,避免過度曝光。
他說:「你那條繩會化。你留下的是空。」把「空」說得很乾澀,像一塊風乾的皮革。
對方停頓半秒,回:「空,才放得進新東西。」隨後是一串座標數字,像地址,也像邀請,懸在空氣中,久久不散。
顧關掉收音機,手掌貼住金屬箱邊緣。那一刻,他不是害怕。他是在衡量:合作,能把自己帶到哪一步,像計算一筆工藝的成本與收益。
周啟文帶隊去新界北一個舊轉運場。那裡曾處理霧網回收物,後來改成半自動倉庫,夜間人流稀薄。霧燈打在貨架上,格線延伸無盡,像一張無邊的清單,等待填入更多物品。
現場沒有血跡,沒有明顯拖拽痕跡。只有一個擺得過分整齊的展示台:半分解的束帶編成球體,中心放著一張薄膜,像皮,卻薄得不合常理,邊緣有細微的孔洞,呼吸般微微起伏。
展示台旁,有一枚舊式USB,外殼刻著四個字母:KNOT。它不是炫耀,更像把資料交給你,讓你按他的規則去理解,去解讀。
USB裡不是影片,是表格。姓名欄位全部空白,只有行為指標:睡眠不規律、報案紀錄、藥物購買、夜間路線重複率、束帶下單次數。最後一欄:可替換性RR。
周啟文盯著那個RR值,喉嚨微微發緊。他懂了。兇手不是隨機挑人,是用城市資料篩選「最不會被注意」的那一批,像平台優化庫存,淘汰滯銷品。
芷晴站在旁邊,補了一句:「這些資料不是警方獨有。廣告平台、物流、支付、健康裝置,加起來就完整。」她說得很冷,因為她每天就在處理這些數據,熟悉得像自己的呼吸。
周啟文合上電腦:「這不是一個人能做完的工作量。」他抬眼看她,「我們還有另一個人。」聲音低沉,像預感一場更大的風雨。
顧按座標去了廢棄村校。黑板上粉筆字殘留,操場地面龜裂,榕樹枝幹伸展,像多節的手指,抓向夜空。榕樹下站著一個戴呼吸面罩的人,手套薄而乾淨,沒有日常生活的磨損痕跡,像從未真正活過。
面罩後的聲音說:「你比我想像平靜。」沒有寒暄,直接拉進談判,像一場預約好的會面。
顧回:「你比我想像年輕。」他觀察的是風險。年輕意味衝動,也意味體力和學習速度,雙刃劍般危險。
對方抬手,做了一個結勢,動作像示範,像手術般精準。「你用皮保存。我用結建框架。我們做的是同一件事。」說「同一件」時沒有情緒,像陳述一個簡單的等式,沒有多餘的解釋。
顧問:「你想要什麼?」他不問道德,不問動機。那不是他的語言,他的語言是工藝,是材質,是保存。
繩結師說:「我給名單。你給外層。最後做一個能避開霧網的新身份。」把「新身份」說得像新證件,像一個可落地的專案,平實而誘人。
顧追問:「名單哪來?」
繩結師沒有回答來源,只說:「城市自己交出來。每個人都在賣自己。」那句話像判詞,沒有上訴窗口,懸在夜風中,久久迴盪。
霧網維修第二晚,荃灣附近短暫停電。對一般人只是燈閃一瞬,對顧和繩結師是珍貴的時間窗口,像一道裂縫,透進月光。
顧帶他下暗門。門後是改裝空間:冷藏櫃、無菌燈、鋼台、拋棄式透明膜。工作流清晰,像微型生產線。那不是激情犯罪,是可複製的工藝,步驟分明,效率優先。
繩結師放下一個小盒,裡面幾枚拇指大的晶片。「霧網識別空氣樣本用的標籤。我改過,會回報假訊號,讓巡航路線偏移。」說得像工程師交付成果,平靜而專業。
顧看著晶片,第一反應不是驚訝,是理解。「你不用偷。」顧說,「你只要會下單,會拆單,會用自提櫃分散風險。」他說的是現代城市的便利,也是一套成熟的犯罪SOP,像日常購物般自然。
繩結師點頭:「最後一步不是逃跑,是寫入。」他打開終端,螢幕顯示一堆新養出的帳號:步數、睡眠、社交互動全都「正常」,像一個完美的市民模版。
顧皺眉:「你要做什麼?」
繩結師說:「拼一個人。」語氣平到像說「拼一台機」。他不是在偽造身分,他是在拼裝一個可被系統承認的存在,像從零件堆裡組裝一個新生命。
芷晴再次回查自提櫃取件記錄,抓到一條更完整的線:多個帳號、不同身份碼,但共用同一套「行為指紋」。打字節奏、滑動速度、GPS漂移模式高度一致,像由同一個生成器批量輸出,沒有個性,只有模式。
她把取件點位串起來,像畫一條反向物流線:從市區往工業區退,最後落在荃灣某座舊工廈。她打給周啟文:「別等他們再犯案。他們在備貨。」聲音急促,像預感風暴即將來臨。
行動當晚,霧網恢復巡航。警員封電梯、走樓梯,步伐規律,無線電簡短。這些聲音對顧而言很清楚:窗口關了,像一扇門緩緩合上。
顧在上層聽到震動,轉頭看繩結師:「你說可以偏移霧網。」把話說成責任追究,冷靜而尖銳。
繩結師回:「偏移一點。不可能讓人消失。」停了一瞬,補一句,「你要的太多。」這不是道德批判,是風險評估,像計算一筆交易的極限。
顧冷笑:「貪的是你。你要穿著別人的人生走出去。」他把合作的核心拆開,露出真相:這不是逃亡,是奪佔,是取代。
外面撞門聲越來越近,像心跳加速。繩結師抓起晶片盒,拉開暗門要走。顧伸手去攔,只抓到束帶尾端,滑走得像蛇般靈活。繩結師回頭:「你以為保存外層是保存記憶?你只是收藏空殼。」
顧回擊:「你留結,結會化。你連殼都留不住。」這句話打在對方的自我敘事上,像一記悶棍。繩結師眼神冷了一度,像某個齒輪卡住,短暫失序。
他說:「我留下方法。」然後消失在暗門下方,腳步聲漸遠,融入夜色。
警方破門進地下空間,第一眼不是屍體,而是一排排封存袋與編碼標籤。鋼台旁是終端機,螢幕自動打卡:步數達標、睡眠良好、飲水提醒。那種日常語言搬進這裡,反而更刺耳,像嘲諷,像鏡子反射出現實的荒謬。
法證員低聲說:「他們在養一個人。」沒有人回話。回話會讓這件事聽起來像奇聞,而不是現實。
繩結師從暗門衝出,上樓梯,手裡握晶片盒,另一手拖著黑袋。他沒有歇斯底里,動作乾淨,像在撤離資產。他把黑袋往前推:「你們要證據?給你們。」
袋口滑開,露出捲起的薄膜,邊緣微孔清晰,像一張等待呼吸的臉。周啟文抬手制止法證上前。他直覺那是餌,也是節奏控制,像一場精心設計的遊戲。
繩結師趁那一秒轉身跳窗。探照燈掃到他,但光束追不上他的路線偏移。霧網像被人在暗處推了一下,巡航曲線出現肉眼難辨的錯位,短暫而詭異。
周啟文咬緊牙:「他真的能讓系統偏移。」聲音中帶著一絲無力,像面對一個看不見的敵人。
顧從暗門上來,雙手舉起,面無表情。周啟文用槍指著他:「另一個人在哪?」
顧看著窗外,聲音很淡:「你找不到『是誰』。你只能找到『在哪裡被系統放大』。」說完像交代完一道工序,沒有懇求,沒有後悔。
繩結師逃到天台,風很硬,吹得耳內發痛,像針刺。霧網無人機群在高空排成弧線,像巨型生物的脊椎,緩緩移動。城市在下方發光,光沒有溫度,冷冽而遙遠。
他捏碎一枚晶片,粉末落在手心。手機彈出提示:身份驗證通過、信用評分更新、醫療紀錄同步。那是他要的「承認」,像一紙通行證。
他盯著螢幕,表情第一次出現裂縫。名字不是他幻想的重生,而是一行冷字:測試用戶—霧網維修組。原來他以為自己在寫入系統,其實只是被系統納入測試範圍,像一隻試驗中的小鼠。
警笛聲逼近,尖銳而無情。他把手機拋到天台邊緣,碎裂聲像一個句號,乾脆而絕決。
他抽出最後一條束帶,快速打出一個完美的結,掛在水箱旁。結會在七十二小時內分解,但影像會被上傳、備份、標註。那就夠了。犯罪者不一定要留下身分,只要留下可複製的漏洞,像一粒種子,埋在系統深處。
審訊室燈光白得過分,像無菌室。顧坐得筆直,像例行登記。周啟文把照片推過去:封存袋、薄膜、終端機、天台的結。
顧看了一眼就移開視線:「你們覺得我是主謀?」問得很平,像確認表格欄位,沒有波瀾。
周啟文反問:「不是你?」
顧說:「我只是供應商。我處理材料、保存外層、維持品質。我以為那是工藝。」停頓一下,像檢查用字是否足夠客觀,「直到他說要拼一個人,我才知道自己在做包裝。」
周啟文問:「你現在才後悔?」
顧搖頭:「後悔不是因為殺人。」抬眼,瞳孔沒有水分,「後悔是我以為自己比城市清醒,結果只是城市流程的一段支線。」聲音淡漠,像在陳述一個事實,沒有自憐。
玻璃後的芷晴聽著,手指扣緊筆記本邊。她突然意識到,最可怕的不是兩個人合作,而是他們使用的語言與她每天的語言幾乎一致:流程、質量、分區、備貨、可替換性。文明用同一套詞彙管理口罩,也能管理人,像一張無形的網,悄然收緊。
三天後,天台那個結消失。束帶分解無影。霧網照常巡航,平台照常推送,新聞用幾行字交代案件,然後轉去天氣與跨年活動,像什麼都沒發生。
芷晴回到公司,看見某些材料被列入敏感品類:下架、限購、加強實名。系統顯示一行綠字:「風險已降低。」同事鬆一口氣,說漏洞補上了,像慶祝一場小勝利。
她盯著那行字,沒有跟著放鬆。漏洞可以補,指標可以更新,流程可以再優化,但把人換算成RR值的視角不會消失。它藏在每一次看似合理的效率提案裡,藏在日常的數據流中,悄無聲息。
夜裡她走過海旁,無人機嗡鳴掠過,聲音像海潮,也像一個永遠不會停止的計算,迴盪在耳邊。她想起那句話:空,才放得進新東西。
原來空不是自由。空是容器。容器永遠在等下一批可被填入的東西,像城市永遠在等下一批可替換的市民,循環往復,沒有盡頭。

