26. 回線
邦妮帶著周總去馬場那晚,是四月。
天氣其實不冷。只是夜裡的舊樓總有一種錯覺,像牆皮裡還留著冬天沒散完的陰氣,貼著鐵閘、貼著樓梯扶手、貼著人後頸一寸一寸往上爬。她把外套拉高一點,沿著那條不太起眼的舊樓梯往上走。樓道裡的燈忽明忽暗,像有人故意讓這地方永遠停在快要壞掉、卻又還能運作的邊緣。
她一邊走,一邊把周總抱在懷裡。
周總現在很安靜。自從 JJ 被她從餅乾鐵盒裡唱醒,又一點一點把那些碎片投給她看之後,她就知道,自己不能再讓周總維持原樣。合法、乾淨、忠誠——這幾個詞在銀鵰裡聽起來很安全,可實際上,只要你想藏住任何一點不該被看見的東西,它們就會立刻變成另一種危險。
門開得很快。
阿朗太太站在裡面,先看了邦妮一眼,又看了看她懷裡的周總,最後才側身讓她進來。
屋裡仍然很乾淨,乾淨得不像工作室,倒像一個把危險收納得很整齊的人家。客廳角落那張折疊桌上鋪著防靜電墊,熱血小馬一看到邦妮,眼睛立刻亮了一圈,前蹄差點又要踏出聲勢;幸好阿朗太太先看了它一眼,它才把那股浮誇的熱情硬生生壓回去,只剩尾音還在空氣裡抖了一下。
「先坐。」阿朗太太說。
邦妮把周總放到桌上,自己在旁邊坐下。周總抬頭看了看四周,像也知道這裡不是普通維修點,而是某些東西會被重新定義的地方。
阿朗太太接上隔離端口,螢幕亮起,一排排系統結構在半空展開。合法回寫路徑、居家摘要模組、外部同步接口、異常上報規則……每一條都像乾淨得過分的血管,直直通往銀鵰。
邦妮看著那些線,心裡忽然浮出一個很奇怪的感覺。
太熟了。
不是這間屋,不是阿朗太太的手法,而是眼前這套拆解邏輯本身。那種先切外層、再抽回寫、再做延遲遮罩、最後把最敏感的一層埋進看似無害的功能子模組裡的習慣,像誰曾經在她面前做過很多次,多到她現在一看見,就知道下一步會在哪裡下刀。
熱血小馬在旁邊讀著掃描結果,語氣仍然帶著它特有的賽事播報感:
「合法回傳路徑過亮——」
「情緒摘要模組可被中央遠距抽樣——」
「自主判讀權限過低——」
「若要讓這位周先生活得比較像一個人,需要大修!」
周總聽到「大修」兩字,眉毛微微一挑,像不太喜歡自己被當成一件即將翻新的家電。
「措辭能否優雅一點?」他說。
熱血小馬立刻改口:
「若要讓你成為更高階、更有品味、更適合秘密生存的代理,需要精緻調整。」
周總想了想,勉強接受。
邦妮沒有笑。
她的注意力落在螢幕左下角一個很小的命名習慣上——一段遮罩子程序的尾碼,竟然用了舊版手動分段式註解。那種註解方式現在幾乎沒人用了,因為太笨,也太容易留下作者習慣。可她以前見過。
不是在馬場,是在培訊人工智能。
JJ 給她看過的片段,就是從那裡開始的。
那時她還在培訊做代理程式開發員,阿鼎是代理測試員,保羅則坐在另一排,主力處理語境標籤、異常校正和那些總在正式版本前一刻才會被真正看見的小錯誤。三個人工作上常常碰面,卻不是那種會在茶水間大聊私生活的關係。更像同一條河裡不同位置的石頭,平時各自沉著,一到水流變急,才會很自然地撞在一起。
阿鼎那時肩上常停著一隻肥麻雀代理。牠胸前掛著一個翠綠色小算盤,走路一晃一晃,像再普通不過的福氣擺設;可一接上測試環境,那對小眼睛就亮得很精,什麼小偏差都逃不過。大家都叫牠發財麻雀。牠最喜歡在系統報錯前先低低補一句:
「格式不漂亮,後面一定出事。」
每次出現這一句話,鏡頭都會照一照阿鼎。阿鼎倒總是很平靜,像這種烏鴉嘴只是測試員該有的職業尊嚴。有時他還會伸手摸一下發財麻雀胸前那顆小算盤,才決定要不要把結果送上去,像在摸一個不太吉利、卻又很準的護身符。
而邦妮現在回看,才後知後覺地發現,有些鏡頭裡,阿鼎的視線落在她身上的時間,好像總比必要的長一點。
保羅那邊則完全是另一種氣氛。
聰明龜停在他桌角,外殼不新,亮度也不高,可每次畫面出問題、流程出現一個誰都懶得理的小歪斜,牠都會慢慢抬頭,說一句:
「這裡不是壞,是有人太急。」
保羅通常聽完,只會低頭再看一遍,不急著替自己辯護,也不急著把錯推走。他那種安靜不是服從,比較像一種很會忍的專注。越看,越讓人不舒服。因為你會慢慢發現,他不是不懂規則,而是太懂了,懂到知道哪一條可以先照做,哪一條應該偷偷留白。
影片播到這裡,邦妮才第一次真正記住保羅,而不是後來在卡啦 OK 房裡,拿著《真漢子》寫真集當掩護的那個尷尬小丑。不是因為他特別能說,也不是因為他在部門裡多有存在感。反而是因為他看起來那麼配合、那麼懂規則,卻總在一些最不該心軟的地方,偷偷多留一點點空白。
有一段片段,他們三個在看一隻叫做守望藍鵲的陪伴型代理,作最終測試。守望藍鵲對一個模擬失戀用戶反覆回覆:「你應該放下。」模型判分很高,因為語氣穩、節奏準、合乎情緒健康課的標準答案。
發財麻雀先拍了一下小翅膀。
「格式好。」牠說,「高分。」
邦妮看完,也只淡淡補了一句:
「很安全。」
守望藍鵲卻在那個時候,忽然自己低低加了一句:
「安全有時候,聽起來很像沒有人在旁邊。」
那一瞬間,整個測試桌都靜了一下。
發財麻雀胸前的小算盤立刻亮了一格,像聽見某種不應該出現在正式版本裡的雜音。阿鼎沒有馬上按掉,只是眯起眼,看著畫面,像在衡量:這到底算失控,還是算太像人。
周總那時還只是邦妮身邊一個比較乾淨、比較守規矩的協作代理,站在她肩後低低提醒:
「若保留此句,評分將下降。」
「但真實感會上升。」
聰明龜則慢吞吞地接了一句:
「有時候,下降一點分數,剛好換來一個人願意繼續聽下去。」
保羅先抬頭,看了那隻藍鵲一眼,像不是在看一個錯誤,而是在看一個把心裡話提前說出口的證人。阿鼎也沒有立刻按掉,只是讓發財麻雀把那句標成「未授權延伸應答」。邦妮沉默地看著,卻很清楚地感覺到:有些代理之所以讓人留戀,不是因為它們多準,而是因為它們偶爾會偏移。
保羅卻沒有立刻按提交。他低頭改了兩行,把那句回覆換成:
「你不用現在就放下。先把今晚過完也可以。」
邦妮側頭看他。
「這樣比較容易讓人留戀痛感。」
聰明龜先替他慢慢接了一句:
「也可能比較像人說的話。」
保羅這才抬頭,看了她一眼,語氣平靜。
「不是留戀,」他說,「只是讓它慢一點。」
發財麻雀胸前那顆翠綠色算盤亮了一下,像在心裡撥了一輪數。
「慢一點就會亂。」牠說。
周總當時站在邦妮旁邊,聲音依然很穩,像替場面收一收邊:
「亂未必立刻出事,但一定會留下比較難處理的後續。」
保羅卻只是把手指停在鍵盤邊緣,很輕地答了一句:
「也可能夠一個人喘口氣。」
邦妮慢慢地看著,愈看,愈覺得保羅身上有一種很不討喜、卻也很難不被記住的東西。他不是叛逆,甚至可以說,他比很多人都更懂怎樣在制度裡活下去。可正因為懂,他那些不動聲色的留手,才顯得特別像某種埋得很深的偏差。
還有一晚,三個人留到很晚。
培訊的辦公區在夜裡比白天更白。大部分人都走了,只剩遠處幾盞工作燈還亮著,像幾個不肯睡的節點。阿鼎一邊跑測試,一邊淡淡說一句:
「這批如果明天硬上,後天就有人寫報告。」
發財麻雀立刻跟著接:
「而且一定不是讚美報告。」
邦妮低頭修穩定模組,像沒聽見。周總替她遞來一個接口頭,順手很平地補了一句:
「若一定要上,建議至少先把回寫延遲層補齊。」
「否則出事,不會只是一份報告。」
保羅則在這種時候,看似隨手地把某個上報節點往後拖一秒,或者把一句太硬的標準答案改得比較像人話。聰明龜有時會低低提醒:「這句太像交代,不像陪伴。」他聽完也不反駁,只安靜地改。
起初邦妮以為,那些都只是工程師的壞習慣。
細心一想,才知道那可能早就是某種還沒被系統完全命名的自救。
螢幕的光一閃,把邦妮從回帶裡拉了回來。
她看著那段舊式註解,忽然低低問了一句:
「這套底層遮罩,是誰最早寫的?」
阿朗太太正在換接口,手沒停,只淡淡答:
「最早那版?不是我。是阿朗和一個大學同學一起試出來的。」
邦妮心裡一緊。
「那個同學姓彭?」
阿朗太太抬頭看了她一眼,像沒料到她會問得這麼準。
「你想起什麼了?」
邦妮沒有直接答。她只看著螢幕上那條熟得過分的註解痕跡,像一小段被埋得很深的電線忽然在牆裡亮了一下。
原來保羅在去 101 之前,就已經懂得非法改裝代理。
原來保羅和阿朗,是大學同學。
這兩件事一旦連起來,很多原本看似散亂的片段,忽然都有了另一種骨架。不是意外,也不是被動求生,而像他很早以前就知道,有些時候要讓人活得像自己一點,光靠配合是不夠的。
周總還在桌上低頻運行,阿朗太太替他切出一層新的本地判讀權限。邦妮卻已經有些聽不進後面的技術細節了。她心裡那條線往回拉,拉到三個月前,拉到自己還沒被洗掉以前,拉到另一個還有更多人、更多聲音、更多夜晚的版本。
後來,她離開了培訊。
名義上是想自己接案,做個人執業代理維修與情緒端優化。實際上,則是她越做越明白:培訊把代理訓練得太像產品,而她開始更在意那些產品離開公司之後,怎樣陪著一個人過完晚上的版本。
她租了一個小單位,開始替人修代理。
修壞掉的語音模組。
修延遲過高的回應節奏。
修那些被系統洗得太乾淨、乾淨到不太像活物的情緒表情。
她本來以為,自己離開公司,只是換一種比較自由的活法。
直到那晚,一個訊息來了。
從阿鼎的麻雀代理發給小興星。
那時已經很晚。周總在充電,JJ 和小興星各自窩在客廳一角待機。終端忽然震了一下,屏幕上只有很短一行字:
Paul 被送到 101。小心。
不是完整句子。
也沒有多餘解釋。
可她看得懂。
她心裡第一個反應不是驚訝,而是一種很薄的涼意,像原來最壞的版本,真的會沿著那些你早就看見的細線,一步一步走出來。
她立刻把周總、JJ、小興星都叫醒。
那晚客廳的燈光很低,四個人圍著桌面,像在開一場不敢寫進任何紀錄裡的小型內部會議。
周總先把保羅目前可見的最後同步節點調出來。JJ 低頭比對外部情緒觀察名單。小興星則貼在窗邊,負責監聽周圍有沒有異常掃描波。
邦妮把那條簡短訊息放在桌上,過了很久才說:
「如果他真的進了 101,之後很多人會開始連帶整理。」
周總的語氣一如既往乾淨:
「包括妳。」
JJ 坐在桌面邊緣,難得沒有先嘴硬,只低聲說:
「我們要分開。」
小興星回頭,聲音壓得很低:
「分開等於承認有東西可追。」
「不分開,」周總說,「等於把同一條線送上去讓人畫圓。」
邦妮沒有立刻決定。
她只是看著桌上的四個影子,忽然覺得這世界很奇怪。明明只是幾隻代理,幾個還想替自己留一點餘地的人,圍著一張桌子說話,氣氛卻像在決定誰先從船上跳下去。
最後是她先開口:
「JJ 進備份盒。
小興星外放,做單向通知。
周總留在我身邊,維持合法外觀。」
這安排一說完,整間屋都安靜了。
因為每個人都知道,這不是完美方案,只是代價目前看起來最小的切法。
JJ 抬頭看她,問了最關鍵的一句:
「如果有一天妳也被洗呢?」
邦妮沒有立即回答。
過了一會兒,她才說:
「那就留一把還能開門的鑰匙。
開得慢一點也好。」
後來發生的事,記錄已經不完整了。
只知道自己真的去了舊工場。
那晚風不冷,卻很硬,地板帶著四月夜裡特有的乾涼。她照著小粉藍給的節奏,在裂開的地磚旁敲了七下。地板下的夾萬彈開時,她先看見的不是倉鼠,是一團灰,一團把自己縮到快要不像活物的灰。
小粉藍從裡面探出頭來時,亮度壓得很低,絨毛表面全是塵,接口邊緣還有一道明顯燒痕。
他一開口,聲音都帶著砂。
「先不要問近況。
先修我。」
她本來很緊,聽見這句話竟差點笑出來。
她把他帶回工作桌上,周總負責做外層隔離,JJ 在旁邊投出小粉藍的受損圖,像一場很不適合被命名的急診。小興星則守在窗邊,像一粒隨時準備被夜色吞掉的小火星。
邦妮替小粉藍拆開外殼時,手其實是穩的。
她一向都穩。
只是那晚她特別清楚地知道,自己修的不只是代理,而是一小段還沒來得及被系統拿走的見證。接口燒了,可以重焊;遮罩薄了,可以補;緩衝記憶模組過熱,也可以慢慢換掉。
最難修的反而不是硬件。
是小粉藍那時候的安靜。
他平時那麼碎,那麼會講,偏偏那晚大部分時間都只看著天花板,像剛從一場不想說的夢裡逃出來,還不確定自己值不值得再被拼回去。
她一邊焊線,一邊低聲問:
「你怕什麼?」
小粉藍很久才說:
「我怕不是逃不掉。
我是怕他們以後把我修得很乖。」
邦妮手上的動作停了不到一秒。
那一秒很短,可她到現在都還記得。
因為她知道,這句話不是在說代理。
是在說所有人。
周總在旁邊安靜地遞工具。JJ 難得沒出聲。小興星也沒有回頭。整間屋裡只有焊接時極細的白光一下下亮起來,像有人在黑暗裡替某種還沒完全死掉的東西,慢慢接回去。
修到最後,她替小粉藍補上最後一層本地緩衝,低聲說:
「好了。」
小粉藍沒有立刻動。
過了一會兒,他才睜開眼睛,看著她,聲音很低:
「妳技術不錯。」
邦妮把工具放下。
「不然我怎麼收錢?」
小粉藍看著她,第一次又恢復了一點平常那種嘴硬。
「等我之後有命再付。」
那時她沒有多想。
現在回頭看,才知道有些話當時之所以不覺得重,是因為人還沒學會替它們記帳。
螢幕前,阿朗太太把最後一道改裝步驟收束,周總身上的回寫路徑重新映射完成。熱血小馬宣布修復進度時,語氣依舊熱烈得像誰在地下室裡偷偷辦頒獎禮:
「周總重製完成——
新增本地判讀、延遲回寫、例外節點遮罩——
從今天起,他不只是合法代理,還是比較有腦的合法代理!」
周總睜開眼,看了看自己的新界面,先整理了一下衣領,才很平靜地說:
「這評價雖然粗糙,但我接受。」
邦妮沒有笑。
她只是望著那排剛完成的底層註解,心裡那個已經成形的推測,終於徹底落下來。
保羅不是在被送進 101 之後,才逼著自己去學地下那一套。
他在更早以前,就已經會了。
不是因為叛逆。
也不是因為好玩。
而是因為他很早就知道,這世界有些地方如果完全照原廠版本活,人會慢慢不見。
她低頭看著周總,又看了看一旁像沒事一樣站著的阿朗太太,忽然覺得很多原本斷掉的地方,其實從來沒有真的斷,只是被洗掉的人以為自己失去了原始圖紙。
她過了很久,才低低問了一句:
「阿朗當年,是不是和保羅一起做過很多灰色改裝?」
阿朗太太沒否認,只把工具收回抽屜。
「年輕時候,誰不是先從以為只是改一點點開始。」
邦妮聽完,沒有再問。
因為有些答案一旦說得太白,就會像把舊傷口重新割開。
她只是把周總抱起來,慢慢站起身。
離開前,熱血小馬忽然在背後叫住她:
「Bonnie。」
她回頭。
熱血小馬眼睛很亮,卻難得沒有玩笑,只很認真地說:
「有些人不是突然學會躲。
他們只是一直都知道,世界哪裡會先塌。」
邦妮站在門口,聽完之後,心裡那條很久以前和現在之間的暗線,終於又亮了一寸。
她沒有回答,只抱著周總走進樓道裡那片不太穩的光。
而她知道,今晚回去之後,JJ 應該還會再給她看更多片段。
因為有些人被送進 101 之前,真正可怕的不是他不知道要逃。
而是他早就知道,卻還是沒能把自己完整帶走。