第 1 章

第一章:異常

第一章:異常 插圖

陳建宏盯著螢幕上的 pull request,reviewer 留了十二條 comment,其中三條帶紅色驚嘆號。他正想逐條反駁,前門傳來鑰匙轉動的聲音。

「我回來了。」佩琪把包放在鞋櫃上,踢掉布鞋,腳步帶著她慣有的俐落。「小孩在睡?」

「房間裡,不知道醒沒。」他頭也沒抬。第九條 comment 質疑他的錯誤處理邏輯,reviewer 說「這裡會不會有 race condition」——會你個頭,他在心裡嘀咕,我特地加了 mutex 你沒看到嗎。

他的手指在桌面上敲了兩下。算了,等下再處理。他拿起馬克杯喝了口冷掉的咖啡,瞥了一眼右下角的時間。下午兩點十七分。

客廳的電視沒開,但手機忽然震了。不是訊息——是新聞 app 的推播。

〔快訊〕南港展覽館周邊發生大規模暴力事件,警方已封鎖現場,呼籲民眾避開該區域。

他滑開來看了一眼。南港。離家大概……十二公里。他在腦中粗略算了一下,很遠。點進去沒有更多細節,只有一張模糊的空拍圖,馬路上好像有人倒著。照片糊到什麼都看不出來。

關掉。繼續回 comment。

過了大概十分鐘,手機又震。這次是公司群組。

Kevin:南港那邊是不是很嚴重啊 有人看新聞嗎

Elaine:我朋友在南港軟體園區上班 說整棟大樓鎖起來了

Rex:看這個

Rex 丟了一個連結。建宏點進去,是一段手機拍的影片。畫面很晃,拍攝者好像在跑。鏡頭掃過一條大馬路,有好幾個人倒在地上,有人在尖叫。然後畫面裡出現一個人——不,是一個人追著另一個人。追的那個跑法不對。腿的擺動太快,上半身幾乎不動,像提線木偶但只有腿上接了線。

他把影片退回去,重看了一次。

不可能。

他又看了一次。手指無意識地加速敲著桌面。

建宏:這影片是真的嗎 確認過 source 沒有

Rex:我怎麼確認啊 PTT 到處都是

Kevin:靠 你們看電視了嗎 每一台都在播

建宏起身走到客廳,按下電視遙控器。新聞台的畫面跳出來:航拍鏡頭俯瞰一個路口,路面上幾十個黑點在移動。記者的聲音帶著壓不住的顫抖:「……目前警方將這些攻擊者的動機歸類為不明,呼籲市民切勿——」

畫面切到棚內,主播整理了一下表情,眼神閃了一下。那一閃讓建宏的胃縮了一下。主播都慌了。

「怎麼了?」佩琪從廚房探出頭。

「南港那邊有……暴力事件。很嚴重的樣子。」他頓了一下。「很多人。」

佩琪走到電視前,看了大概三十秒。她沒有問問題。然後她轉身走回廚房。

建宏繼續盯著電視。第二台、第三台、第四台。每一台都在播。有一台連到了一個超商的監視器畫面——一個人衝進店裡撞倒貨架,撲向櫃台後面的店員。畫面在那裡被切掉了。

公司群組已經洗了四十幾則訊息。他快速掃過——有人說家人在南港回不來了,有人說交通全面癱瘓,有人在問公司要不要宣布遠端。

他的腦子開始自動跑模型。攻擊者。多人。動作異常。快速擴散。監視器畫面裡那種撲人的動作,那不是搶劫,搶劫犯不會用咬的——

等等。

他把影片又打開看了一次。追人的那個,跑起來像程式跑到一半 segfault——核心崩了,但周邊的 process 不知道,還在繼續執行。身體在跑,控制系統已經不正常了。

他把這個想法打了出去。

建宏:你們有沒有覺得那些人的動作像 segfault 之後還在跑的 process

群組安靜了幾秒。

Rex:……建宏 你現在是認真的嗎

Kevin:哥 我覺得你可能需要離開電腦了

他把手機放下。數據不夠,變數太多,連這些攻擊者的基本行為模式都還沒確認——

廚房傳來冰箱門開關的聲音。不是拿東西吃那種開法,是整個打開、停頓、翻找、一樣一樣拿出來那種。

他走過去。佩琪正蹲在冰箱前面,把蔬菜和肉分門別類地搬到流理台上。旁邊的地上已經擺了三個塑膠袋和一個保冷袋。水壺在瓦斯爐上燒著。

「妳在幹嘛?」

「整理。」

「整理什麼?」

她頭也沒抬。「冰箱的東西停電就壞了。能煮的先煮。水先裝滿。」她站起來,打開頭上的櫃子,拿出急救箱翻了一下,嘴裡碎碎念:「OK 繃猶有、紗布有、碘酒——碘酒過期了。袂用得。退燒藥、止痛藥——」

「佩琪。」

「嗯?」

「妳為什麼在準備這些?」

她終於轉過來看他。表情不是恐慌,是他在她處理小孩突發狀況時看過的那種表情——所有情緒先收起來,手先動。

「不管外面是什麼,先準備不會錯。」

建宏張嘴想說什麼,但說不出來。她已經在行動了,而他還在看影片、分析數據、試圖建立模型。他看了一眼自己的工作螢幕——那個 pull request 還開著,十二條 comment 亮著紅點。

那些 comment 忽然變得非常遙遠。

他走到陽台。外面看起來很正常——對面大樓的冷氣外機、樓下的機車格、巷口的飲料店。正常的星期三下午。

但聲音不對。

他閉上眼睛,用耳朵聽。遠處有救護車的聲音,不是一輛,是好幾輛疊在一起,像是永遠不會停。更遠的地方有直升機。偶爾有聲音穿過來,他不確定那是什麼——也許是喊叫,被距離壓成了一個模糊的長音。

然後,最讓他不安的事情發生了。

救護車的聲音斷了。一輛接一輛地消失了。遠處那些模糊的聲音也在退潮。

下午三點四十分。台北市。不該這麼安靜。

他退回客廳的時候聽見樓下傳來一聲金屬撞擊——鐵門。不是關門那種清脆的碰,是被整個人撞上去的悶響。然後又一聲。又一聲。

他回到陽台,往下看。

六樓的視角能看到巷子。一個穿灰色外套的男人在追一個女人。女人跑得很快,涼鞋甩掉了一隻,光著一隻腳在跑。男人的跑法——和影片裡一樣。頭部不規則地擺動,像壞掉的萬向接頭。腿在跑,但上半身的節奏對不上。

女人跑到巷口轉角消失了。男人跟著轉過去。

巷子又空了。

建宏發現自己的手抓著陽台欄杆,指節發白。他低頭看了一眼九層塔。葉子在微風裡輕輕晃。

他退回屋內,把陽台門關上,落鎖。

佩琪站在廚房門口。她看著他的臉,什麼都沒問。然後她走到前門,先關木門,再關鐵門,鐵門的雙重鎖扣咬死的聲音在安靜的公寓裡特別響。

她回到廚房繼續整理。途中拐進浴室,把浴缸水龍頭轉開,水聲細細的,讓它流著。水壺開始發出尖銳的哨聲。她關火,把熱水倒進三個保溫瓶。每一個動作都穩定,像做了一千次的事。

建宏站在客廳中間。電視還開著,主播已經換了一個人,新的主播臉色更差。畫面下方的跑馬燈寫著:「新北市板橋區亦傳類似事件,疫情指揮中心緊急召開記者會——」

板橋。那離家只有五公里。

他的手指開始敲大腿。快速地。密集地。

走廊上傳來門開的聲音。輕輕的,是小孩房的門。

宥廷先出來,站在走廊口。他看了一眼客廳的電視,看了一眼廚房裡的媽媽,再看了一眼站在客廳中間的爸爸。然後他問:

「外面怎麼了?」

宥安跟在後面,揉著眼睛,拖著一角棉被。他打了一個呵欠。

「吵死了。是救護車嗎?怎麼那麼多?」他歪著頭。「欸等一下,現在又沒有了。」

建宏看向佩琪。佩琪看向建宏。

那個眼神持續了不到一秒,但裡面裝了所有他們還說不出口的東西。

佩琪把手上的保溫瓶放下。她走到走廊口,一手搭上宥廷的肩膀,一手摸了摸宥安的頭。

「先來吃點東西。」她的聲音和平常一樣。「媽媽煮了泡麵。」

「讚!」宥安立刻精神了。「我要加蛋。」

宥廷沒動。他還在看他爸的臉——不是在等答案,是在看他爸有沒有在裝沒事。

建宏對他擠出一個表情。大概是笑。