← 共識引擎

第 10 章:第 10 章

週六早上十點,第一個使用者在社群媒體上發文。

「有人發現和盟 APP 的首頁推薦這三天都一模一樣嗎?我刪掉重裝還是一樣。#和盟異常」

然後是第二個、第三個、第十個。

到了中午,推特上出現了一個 hashtag:#StuckRecommendations。用它的人數持續成長。大部分帖子是困惑——「我的推薦已經五天沒換了」「我朋友的手機也是」「我換了帳號就正常了」。

少部分帖子是恐慌——「所以我們的手機真的被控制了?」「那之前那些推薦也是被操控的?」

哲維在螢幕前面看著這些帖子。

「看。」他把手機給若晴看。「他們注意到了。」

若晴看了幾條。然後她把手機還給他。「他們在困惑。但困惑不是覺醒。」

「這是第一步。」

「我知道。」她說。「但第一步之後還有很長的路。」

下午一點,宥心的報導已經被更多媒體轉載了。不是主流媒體——是幾家科技媒體跟獨立新聞網站。每一家的角度都不一樣:

「前和盟分析師指控公司操控使用者決策。」

「共識引擎:便利的代價是什麼?」

「和盟集團: Ethan 倫理委員會自己審自己?」

和盟的公關在下午三點發了第二份聲明。比第一份長。核心內容增加了:「我們注意到部分使用者近期體驗到推薦排序的異常重複。這是一個已知的技術問題,我們的工程團隊正在處理。預計在七十二小時內修復。對於造成的不便,我們深表歉意。」

已知技術問題。七十二小時內修復。深表歉意。

沒有提到操控。沒有提到決策鎖定。只是一個「已知的技術問題」。

哲維把那則聲明拿給若晴看。「他們把觸發造成的異常当成自己的系統故障在修。」

「這樣更好。」若晴說。「他們承認有問題。但把問題的性質改了。」

「然後呢?」

「然後等。看有沒有人追問『為什麼會有這個已知的技術問題』。」

和盟的聲明發出之後,#StuckRecommendations 上的帖子開始出現另一種聲音:「喔,原來是技術問題,那我就放心了。」

哲維把筆電推開。

他站起來,去廚房倒了一杯水。站在陽台外的時候,他看到巷子裡有一個女生在講手機。她的聲音從樓下傳上來,聽不清楚內容,但語氣聽起來很正常。好像什麼都沒有發生。

也許對她來說,真的什麼都沒有發生。


週六晚上,若晴的手機開始收到訊息。

有些是朋友——「妳是不是那個報導裡的分析師?」「妳還好嗎?」「妳在那邊做了什麼?」。她不回覆。

有些是未知號碼——記者的採訪邀請、不明人士的威脅「妳會後悔的」、還有幾封看起來像垃圾信的東西。

她把那些全部刪除。

然後她收到了一則訊息。傳送者是蘇薇。

「若晴,我知道妳看到我的訊息了。我不是來跟妳談條件的。我只是想告訴妳一件事。HC-Phase 3 的部署計畫已經暫停了。」

若晴把那則訊息給哲維看。

哲維看完,把手機還給她。「她在告訴妳妳贏了。」

「她是在告訴我她們被我逼到了。」

「有什麼差別?」

若晴傳了一則訊息回去:「暫停是臨時的還是永久的?」

蘇薇過了十分鐘回覆:「目前未知。管理層在重新評估妳提到的問題。但我要告訴妳一件事——妳的名字現在在所有合作廠商的資料庫裡都被標記了。妳知道這代表什麼。」

若晴回:「我知道。」

蘇薇沒有再回覆。

若晴把手機放下,看著哲維。「她說 HC-Phase 3 暫停了。」

「妳信嗎?」

「短期是真的。長期——就看輿論壓力能維持多久。」

「所以這不是結束。」

「這不是結束。但也是一個開始。」

他們坐在房間裡,兩個人都很安靜。窗外的巷子暗下來了。雜貨店的招牌亮了。「雜貨」兩個字在黑夜裡很清楚。

「哲維。」若晴在晚上十一點的時候說。

「嗯。」

「我們做了。」

「對。」

「我不知道這算不算夠。但我們做了。」

哲維點了一下頭。

他打開終端機,看了一下觸發狀態。

「Anomaly active. 56:17:08 remaining.」

五十六小時十七分八秒。

然後系統會自動恢復。然後一切回到正常。

但會跟之前一樣嗎?

他不知道。

和盟的安全團隊在異常觸發之後的二十二小時追查到了哲維。

不是因為他的 API key——那個他已經預期會被查到。是因為他的舊外包帳號的應用程式層 key 有完整的查詢紀錄。什麼時候、連接到哪個數據庫、讀取了哪些資料。全部被記錄了。

週日早上八點,哲維的手機收到了一封電子郵件。寄件人和盟集團資訊安全部門。標題:「未經授權系統存取通知」。

他打開信。

信的內容很短:我們偵測到您的應用程式層 API key 於 2032 年 8 月 12 日凌晨 08:00 觸發了未經授權的系統操作。此操作導致了部分推薦排序的輸出異常。我們已經將此事件通報相關執法單位。如果您對此通知有疑問,請聯繫以下信箱。

沒有道歉、沒有商量。只是通知你:我們知道了,我們通報了。

哲維把信拿給若晴看。

「他們通報執法單位了。」他說。

「什麼單位?」

「不知道。也許是刑事——未經授權存取電腦系統。」

若晴看完信,把手機還給他。「你要怎麼辦?」

「不知道。但也沒有什麼能做的。除非請律師,否則我做什麼都可能讓情況更糟。」

「你要不要先聯繫一個律師?」

「我沒有錢請律師。」

若晴沉默了。

那天下午,哲維收到另一封信。這次是和他之前合作過的外包平台寄來的。標題是:「帳號終止通知」。內容是:由於違反平台使用條款,您的帳號已被終止。

哲維把那封信關上。

然後他打開了銀行 App。帳戶恢復正常了。他不知道為什麼——也許是標記被解除了、也許是流程跑完了。但他的錢沒有少。

他在房間裡坐了一個下午。沒有開筆電、沒有看手機。就只是坐著。

若晴在他旁邊看她的筆電。她在更新她的履歷、投新的工作申請。

「你還好嗎?」她在傍晚的時候問。

「不知道。」他說。「被通報執法單位、外包平台帳號終止。這些是我可以預期的。但真正發生的時候,感覺不一樣。」

「什麼感覺?」

「像是從一個系統裡被刪除。我不是一個有問題的人。我只是一個編號。現在編號被標記了。」

若晴把筆電蓋上。「我也是。蘇薇說了。所有合作廠商的資料庫。我現在也是一個被標記的編號。」

兩個人安靜了。

「我們現在一樣了。」哲維說。

「我們本來就一樣。」若晴說。


週一早上,和盟的異常被修復了。

終端機上的倒數歸零。「Anomaly resolved. System returned to normal operation.」

系統恢復正常運作。

使用者打開他們的手機,推薦排序恢復了隨機性。那些在社群媒體上發帖的人開始發更新:「我的推薦恢復正常了。」「問題修好了。」「和盟動作很快。」

然後大多數人繼續他們的生活。

宥心的報導還在線上。但新的討論越來越少。新的留言越來越少。三天之後,那個 hashtag 幾乎消失了。取代它的是別的話題——一則政治新聞、一部新劇、一支動物的影片。

世界在轉向。

哲維在螢幕前面看著那些數字——報導的點閱數、推文數、留言數。全部在下降。

「然後呢?」若晴問。她站在他後面,看著同一個螢幕。

「然後看和盟怎麼回應。」

「他們已經回應了。說是已知的技術問題、七十二小時內修復。」

「這是對異常的回應。不是對報導的回應。」

若晴想了一下。「你說得對。他們還沒有正式回應報導的內容。」

哲維把筆電關上。「他們會在準備好了之後才回應。他們需要時間——準備聲明、協調內部、決定哪些承認哪些否認。」

「你覺得他們會承認多少?」

「不會承認決策鎖定。也不會承認 HC 系列。他們會承認有一個『參數過度調校』的錯誤。然後做一些表面上的改變。然後等這件事被淡忘。」

若晴沒有反駁。因為她知道他說的可能是對的。


那天晚上,哲維做了一個夢。

夢裡他又站在那個巨大的空白房間裡。房間裡什麼都沒有。只有白色。他伸出手,觸碰牆壁。牆壁是冰的。然後他聽到了聲音——很遠的、很多人同時在說話的聲音。他聽不清楚他們在說什麼。但聲音一直都在。

他嘗試往聲音的方向走。但房間沒有邊際。他走了很久,白色一直延伸到看不見的地方。聲音沒有變大、也沒有變小。就是一直在那裡。

他醒過來的時候是凌晨三點半。房間很暗。若晴在他旁邊睡著了。

他看著她的睡臉。表情很平靜。

他拿起手機。時間是凌晨三點三十八分。他打開 Twitter,搜尋「和盟」。最新的推文已經跟和盟無關了。最新的娛樂新聞、最新的生活分享。

他把手機放下。

然後他站起來,去廚房倒了一杯水。站在陽台旁邊喝的時候,他看了一眼巷子。很暗。雜貨店的招牌暗了。路燈照在空無一人的巷子上。

他回到房間,沒有再睡。他坐在椅子上,打開了那份一直沒有放上去的白皮書。

讀了一遍。然後他加上了新的一章——關於 HC-Phase 三的內容、關於觸發機制的技術細節、關於和盟安全團隊在二十二小時內追查到他的過程。

他不知道這份白皮書還有沒有用。但他繼續寫。

窗外,天空開始亮了。

新的開始了。

週三,和盟異常修復之後的第四天,宥心發表了第二篇報導。

不是她原本計劃的。是第一篇報導發出之後,她收到了更多的資訊——三個不願具名的現任和盟員工分別跟她聯絡,提供了更多內部文件。其中一個是 RD-7203 的早期草稿版本,裡面的 lock_threshold 參數比若晴提供的版本更激進。另一個是 HC-Phase 3 的完整版部署計畫,包含了時間表、預算、和目標 KPI。

第二篇報導比第一篇長。五千字。結構一樣——使用者故事、技術分析、內部文件、和盟回應。

但這一次,和盟的回應不一樣了。

他們沒有再說「正在調查來源,保留法律追訴權」。他們發了一份正式的公開聲明:

「和盟集團重視近期媒體對我們推薦系統的報導。我們已經成立了獨立的外部審查委員會,對公司所有的 A/B 測試和推薦系統進行全面審查。在審查完成之前,我們決定暂停所有正在進行中的決策相關測試,包括 RD-72 系列和 HC 系列。我們承諾在三十天內公布審查結果。」

獨立外部審查委員會。三十天內公布結果。

哲維把那則聲明讀了三遍。

「這是好事。」若晴說。「他們承認有問題、承諾外部審查、暂停測試。」

「其中有多少是真的?」

「不知道。」若晴說。「但這是和盟第一次用『暂停』而不是『正常運作』來描述他們的測試。這是第一步。」

「然後呢?」

「然後看三十天之後他們公布什麼。如果審查委員會是獨立的、結果是可信的,那也許——」她沒有說完。

「也許什麼?」

「也許會有一些真正的改變。但也許報告會用很技術性的語言、把問題描述成『參數調校過度』或『審查流程不夠嚴謹』,然後做一些人員調動、流程更新。本質上什麼都沒變。」

「妳覺得哪一個比較可能?」

「第二個。但也許有了外部審查,下一次他們要部署 HC-Phase 3 的時候,會多想一下。」

哲維想了一下。

「這不夠。」他說。

「我知道。」若晴說。「但這是我們能做的全部了。」


那天晚上,哲維收到了宥心的訊息。

「和盟的法律部門聯繫了我們工作室。他們說要告你未經授權系統存取。你知道這件事嗎?」

「我知道。他們已經發了通知給我。」

「你要不要請律師?工作室的法律顧問說他可以幫你。」

哲維想了一下。「為什麼他要幫我?」

「因為你是他的報導的資訊來源。如果他和盟告你,其他知情者以後就不會再找他。他在保護他的消息來源。」

「好。」哲維說。「那謝謝他。」

宥心把律師的聯絡方式給了他。哲維跟律師通了電話。律師叫陳以安,三十五歲左右,說話的方式很直接。

「和盟要告你未經授權存取電腦系統。根據刑法,這是有刑事責任的。」

「我知道。」

「但你的情況有空間可以辯。第一:你的 API key 是在合作期間合法取得的。第二:你的操作沒有造成數據洩露或系統損壞。第三:你的行為揭露了一個涉及公眾利益的問題。這三点加起來,有很大的辯護空間。」

「所以我不會坐牢?」

「我無法保證。但我會盡力。」

「律師費多少?」

「第一階段十萬。如果走到法院,再加。」

哲維沒有十萬。

「不用擔心費用。」陳以安說。「媒体工作室會承擔。你是他們的保護消息來源。」

哲維掛了電話,把這件事告訴了若晴。

「他幫你出錢?」

「對。」

「那就讓他幫。」若晴說。「如果你被關了,誰來做剩下的事?」

「什麼剩下的事?」

「我不知道。但事情還沒結束。」

哲維看著她。然後他點了一下頭。

那天晚上他躺在床上,看著天花板上的裂紋。

四天了。報導上線四天了。系統異常已經修復了。和盟暫停了測試、成立了委員會、說要在三十天後公布結果。

他做的所有事情——從寄出那封信、到觸發異常——好像產生了一些效果。但效果有多大、能維持多久,他不知道。

他拿起手機。Twitter 上 #StuckRecommendations 的帖子幾乎消失了。取而代之的是一些其他的話題——一則政治醜聞、一部新劇的結局、一支動物的影片。

世界在繼續。

他放下手機,閉上眼睛。

那天晚上他做了一個夢。夢裡他站在一個巨大的空白房間裡。房間裡什麼都沒有。只有白色。他伸出手,觸碰牆壁。牆壁是冰的。然後他聽到了聲音——很遠的、很多人同時在說話的聲音。他聽不清楚他們在說什麼。但聲音一直都在。

他醒過來的時候是凌晨三點。

若晴在他旁邊睡著了。

他看著她的睡臉。她的表情很平靜。

他想起她說的一句話:「改變不是靠一次揭露完成的。」

他閉上眼睛。

這一次他很快就睡著了。

5182 字 •