← 共識引擎

第 11 章:第 11 章

三十天之後,和盟的外部審查委員會公布了結果。

報告有八十頁。哲維花了一整個下午讀完。

報告的內容跟若晴預測的差不多。委員會確認了以下幾件事:

第一:RD-72 系列測試確實存在。lock_threshold 機制確實導致了部分使用者的決策路徑被鎖定。

第二:HC 系列的概念是「提升推薦精準度」,但實際效果是讓使用者的決策模式變得「可被預測」。

第三:HC-Phase 3 的部署計畫在報導出來之前已進入準備階段,但在報導後被暫停。

第四:和盟的內部倫理審查委員會在審核這些測試時,「未能充分評估對使用者自主決策的潛在影響」。

委員會建議:一、成立更具獨立性的倫理審查機制。二、所有涉及行為影響的測試必須告知受試使用者。三、限制 lock_threshold 類機制的部署範圍。四、對 RD-72 系列測試中受影響的使用者提供「退出機制」。

沒有人被開除。沒有人被告。委員會的三名和盟內部成員「主動請辭」。

和盟的 CEO 在報告公布後發了一份公開聲明,承諾全面採納委員會的建議,並宣布將「使用者自主權」作為公司未來產品開發的核心原則之一。

哲維把那份聲明看了兩遍。

「他們把危機變成了 PR。」他跟若晴說。

「至少他們做了外部審查。」若晴說。「至少委員會確認了問題存在。至少 lock_threshold 機制被限制了。」

「但 HC-Phase 3 只是暫停。不是取消。」

「我知道。但暫停就是暫停。如果未來他們要重啟,外部審查委員會的報告會在那裡。下一次他們要做的時候,有人會記得。」

哲維想了一下。「這不夠。」

「我知道。但這不是故事的結局。這是某個階段的結局。」

若晴已經開始找工作了。她在和盟離職之後,投了二十幾份履歷。大部分沒有回覆。有回覆的三間,面試時問了同樣的問題:「妳為什麼離開和盟?」

她的回答是標準的:「職涯規劃考量,想嘗試不同的方向。」面試官點了頭,但眼神裡有一種他已經讀過報導的東西。

只有一間——一個非營利組織,做數據隱私倡議的——面試的時候直接問她:「妳是那篇和盟報導裡的分析師嗎?」

若晴說:「是。」

面試官說:「那妳來。」

薪水比和盟少了四成。但她去了。


哲維那邊,陳以安律師在跟和盟的法律部門周旋了三週之後,達成了和解。

和盟撤回了對哲維的刑事告訴。條件是:哲維必須承認未經授權進入系統、支付五萬元的和解金、並且不得再使用任何與和盟相關的系統或數據。

五萬元。他的存款扣掉五萬元之後,剩下來的錢夠他再活三個月。

他簽了和解協議。

陳以安跟他說:「這算好的。他們原本可以求償更多。他們撤告可能是因為不想把這件事鬧大。和解對雙方都好。」

哲維把和解協議收好。

然後他繼續接外包案。外包平台的帳號被終止了,但他還有之前的客戶群組、還有他的個人網站。小案子還是有的——一個攝影師要做作品集網站、一間餐廳要做線上菜單。不多,但夠活。

他開始找新的住處。房東月底要收房子。他看了一個禮拜,最後租到了另一間五樓沒電梯的房間。大小差不多,採光差一點,但價格一樣。

搬家那天,若晴來幫忙。

他的東西不多——兩台筆電、幾箱衣服、一些書、一箱雜物。兩個人在一個下午就搬完了。

新的房間天花板沒有裂紋。但他站在空房間中間的時候,覺得少了一點什麼。

「你習慣嗎?」若晴問。

「會習慣的。」他說。

她幫他把東西大致排好,然後他們坐在空的紙箱上,喝便利商店買的咖啡。

「你有沒有後悔?」她問。

「每天。」他說。「但後悔跟做不做是兩回事。」

若晴笑了一下。「你變得會說話了。」

「我一直都很會說話。」

「你以前只會說『還好』和『嗯』。」

「那是以前。」

若晴靠在他旁邊的紙箱上。

「哲維。」她說。

「嗯。」

「我們做的事情。你覺得夠嗎?」

他看著空房間的牆壁。白色的牆。乾乾淨淨的。

「不夠。」他說。「但這是我們能做的全部。」

若晴沒有說話。

他們坐在那裡,喝完那罐咖啡。窗外的陽光從早上就開始曬這個房間。五樓的邊間。採光很好。但跟六樓的一樣,早上六點就曬進來。

「走吧。」若晴說。「去吃東西。」

他們站起來,走出了那個空房間。

三個月後。

哲維在新房間裡住了兩個多月。房間不大,但他慢慢把東西填滿了。書桌上有了兩台筆電、一個杯子、幾本沒看完的書。衣櫥有了多於三件衣服。冰箱裡除了泡麵還有蛋跟一些蔬菜。

他的生活回到了某種穩定。不是好的穩定——是「夠活」的穩定。

外包案子的收入不穩定,但他開始做一些長期配合的小型案子。一間花店續約了網站維護、一間物流公司找他優化路線算法、一個獨立書店要做會員系統。加起來,每個月的收入可以付房租吃飯,偶爾還可以存一點。

他不存太多。因為他不知道什麼時候又會出事。

他的和解金已經付清了。陳以安告訴他,和盟那邊不再有後續動作。這件事在法律上已經結案。

但名聲上的影響還在。他在外包社群裡被標記了。有些人知道他是「那個和盟案子的外包工程師」。有些人找他合作、有些人不找他。他不去解釋。他能接什麼就接什麼。

若晴在新工作上了兩個月的班。數據隱私倡議組織。薪水少但做得踏實。她的工作是用數據分析來支持隱私權倡議——分析科技公司的隱私政策、寫報告、提供給立法者參考。

她不再跟科技公司工作。但她還在處理科技公司的數據。只是方向不一樣了。

週末的時候她會來哲維的新住處。帶食物、有時候帶啤酒。兩個人坐在房間裡各自做著自己的事。有時候分享一些消息、有時候什麼都不說。

有天晚上,若晴看到哲維在讀什麼。她湊過去看。是一份論文,關於推薦系統中的資訊繭房效應。

「你在讀這個幹嘛?」她問。

「在想要不要寫一個開源的推薦框架。」他說。「一個不使用 lock_threshold、不建立決策模型、只根據使用者當下的行為做推薦的系統。」

「會有人用嗎?」

「也許不會。但可以寫。寫出來放在那裡。如果有人想要不一樣的東西,至少有一個選擇。」

若晴看了他一會兒。然後她點了一頭。

「我幫你。」她說。

「幫什麼?」

「寫文件。你的文件寫得太差了。」

哲維笑了一下。「好。」


有一天哲維打開 Twitter,搜尋了「和盟」。

最新的推文跟和盟有關的,是一則產品公告:和盟推出了「推薦透明度功能」——使用者現在可以看到為什麼某個推薦出現在自己的首頁。

他把那則公告讀了一遍。功能是真的。和盟確實推出了。跟他當初寄出去的信裡建議的方向一致。

他把那則推文截圖,存到了一個資料夾裡。那個資料夾裡面存著所有跟這件事相關的東西——和解協議、宥心的報導、和盟的審查報告、委員會的建議、還有他自己寫的白皮書。

他不知道他存這些做什麼。但他留著。

然後他繼續寫他的開源推薦框架。


有一天晚上他做了一個夢。

夢裡他又站在那個數據 dashboard 前面。螢幕上的紅點和綠點穩定流動著。但這一次,那些點不是往同一個方向移動。它們往不同的方向。有些往左、有些往右、有些往上、有些往下。沒有一致的方向。只有隨機的、混亂的、無法預測的流動。

然後他注意到一件事:那些點裡面,有一些不再動了。它們停在原地。不是被鎖定的那種靜止。是那种「停下來想一想」的靜止。

它們停了一下。然後繼續動。往不同的方向。

他醒過來的時候,房間很暗。窗外的巷子很安靜。

他拿起手機。時間是凌晨四點十二分。

他打開了若晴的對話視窗。最後一則訊息停在兩天前。她傳了一個工作上的數據圖表,他回了「看起來不錯」。

他打了一行字:「HC-Phase 三暫停之後,妳覺得他們會重啟嗎?」

若晴在十分鐘後回了。她也沒睡。

「會。但不是今年。他們會等。等這件事情被淡忘。等委員會的報告過了保鮮期。等媒體不再追。然後他們會用一個不同的名字、不同的參數、重新啟動。」

「那我們做的這些有什麼用?」

「讓花的時間更久。讓他們要重啟的時候必須繞過更多障礙。讓下一次有人問這個問題的時候,有東西可以引用。」

「這不夠。」

「我知道。但這是我們做的。」

哲維看著螢幕。然後他打了一行字:「我覺得我應該做一些不一樣的事。」

「什麼事?」

「我不知道。但不是假裝這不關我的事。」

「你已經沒有在假裝了。」

「我知道。但我想要做更直接的。」

若晴沉默了很久。然後她回:「你已經在做了。你還在寫嗎?那個開源框架?」

「在寫。」

「那就繼續寫。這比報復更有用。」

哲維把手機放下。

他躺在床上,看著天花板。新的房間天花板沒有裂紋。白色的、乾淨的。

但他已經看過太多次裂紋了。就算沒有裂紋,他也知道它在——比裂紋更深的東西。在系統的結構裡。在每一個 lock_threshold 的參數裡。在每一個「只是優化體驗」的產品決策裡。

他閉上眼睛。

他知道世界沒有改變。和盟還在運作。共識引擎還在運行。數十億人還是在被引導。

但他也不一樣了。

他不再只是寫程式的人。

他知道他寫的每一個 function、每一個參數、每一個「只是技術決策」的選擇,都不只是技術。

他已經沒有辦法不知道了。

他很快就睡著了。

這一次沒有夢。

六個月後。

哲維搬到一間有電梯的四樓房間。不是因為賺得多了——是因為五樓搬了太多箱書之後,他的膝蓋抗議了一個月。

房間比之前的大一點。書桌靠窗。窗外是一條安靜的巷子,巷子底有一家便利商店、一間早餐店、一個邮筒。沒有雜貨店。沒有壞掉的招牌。但他偶爾會想起那個「米七」。

他現在有兩份長期配合的外包案。一間非營利組織的數據庫維護、一間小型出版社的網站更新。收入穩定了。不多,但穩定。

那個開源推薦框架他還在寫。寫了六個月,完成了大約四成。若晴幫他寫了文件。她的文件寫得比他的程式碼好——條理清楚、用詞精準、沒有贅字。

他把框架放在 GitHub 上面。星星不多——二十幾個。有一些人发了 Issue,問了問題、提了建議、報告了 bug。他一一回覆。

不是因為他在做一個偉大的專案。是因為他想要證明一樣東西:推薦系統可以不需要 lock_threshold。可以不需要行為預測。可以只是「你現在想看什麼,我幫你找」。

就夠了。


有一天他在咖啡廳寫程式。不是習慣——是他需要換一個環境。新的房間採光太好,下午的太陽曬得螢幕看不清楚。

他打開筆電,看到一封新信。寄件人他不認識。標題是:「一個使用者的感謝」。

他打開信。

信很短:

「你好,我是一個住在馬來西亞的使用者。六個月之前,我的 APP 推薦連續好幾天都出現一樣的東西。那是第一篇報導出來的前一天。我不知道那是你觸發的。但我記得那一刻——我打開手機、看到完全一樣的推薦排列、然後意識到:我每天在看的東西,不是我自己選的。

我去查了。找到了那篇報導。讀完了。然後我去看了我自己的使用紀錄。發現過去两年,我的推薦變得愈來愈窄。我沒有注意到。但我查了紀錄之後,發現了。

我寫信不是要跟你說什麼了不起的事。我只是想讓你知道:你的那篇報導,讓我開始注意自己在看什麼。我現在每個星期清理一次我的推薦紀錄。我關掉了部分個人化功能。我的手機比以前不方便了。但我知道我在選。

謝謝你。

一個馬來西亞的使用者」

哲維把信讀了兩遍。

然後他把信存到了那個資料夾裡面。和解協議、報導、審查報告、白皮書、和一封來自馬來西亞的信。

他不知道這個人有沒有代表性的。也許大部分人清理了推薦紀錄之後還是繼續用。也許他們關掉了個人化功能之後又打開了——因為太不方便了。

但有一個人寫了一封信。

一個人也是人。

他把信關上,繼續寫程式。


週末若晴來了。她帶了兩杯咖啡——便利商店買的,不是手沖的。

「你在寫什麼?」她問。

「推薦排序的核心邏輯。不想用機器學習。用規則引擎。」

「規則引擎?那不是比較不準嗎?」

「比較不準。但也比較透明。使用者可以看到為什麼這個推薦出現在他的首頁。」

若晴端著咖啡,站在他後面看了一會兒螢幕。

「你已經寫了六個月了。」她說。

「我知道。」

「還有多久完成?」

「不知道。也許三個月。也許半年。也許根本就完成不了。」

「但你還在寫。」

「因為我不知道還能做什麼。」

若晴在他旁邊坐下來。她的頭髮比半年前長了。她也換了一個新的工作環境——她的組織最近拿到了一筆補助,正在找人。她面試了兩個人、帶了一個實習生。

「你最近好嗎?」她問。

「還行。」他說。「上個禮拜那個馬來西亞的人寫信給我。說我的報導讓他開始注意自己在看什麼。」

「你回信了嗎?」

「不知道要回什麼。」

「就回謝謝。」

「他謝了我。不是我謝他。」

若晴笑了一下。「那你就告訴他你收到了。有人讀了、有人在意。這就夠了。」

哲維想了一下。然後他打開了那封信,回了一行字:「收到了。謝謝你寫信來。」

他把信寄出。然後繼續寫程式。

兩個人坐在房間裡。陽光從窗外照進來,曬在書桌的一半。哲維的那杯咖啡在陰涼處,若晴的在陽光裡。

「哲維。」若晴在下午的時候說。

「嗯。」

「你記得我們以前爭論過什麼嗎?」

「很多。」

「我記得你說系統不能被信任。我說系統可以被優化。」

「妳說得也對。只是優化的方向不一定是你想要的那個。」

若晴點了一下頭。「我現在覺得我們都對。也都不對。」

「什麼意思?」

「系統不能被完全信任。但也不是一無是處。關鍵是你在優化什麼、為誰優化、誰來決定。」

「這我同意。」

「但這是結論。不是答案。」

「什麼答案?」

「我不知道。也許沒有答案。只是需要一直問。」

哲維把視線從螢幕上移開,看著窗外。巷子裡有一個人走過去。然後又一隻貓走過去。然後什麼都沒有了。

「改變不是靠一次揭露完成的。」他說。

這是他說過的話。也是若晴說過的話。現在他已經分不清誰先說了。

「你現在在做的這個框架——算不算改變?」她問。

「不算。只是一個選擇。」

「有時候一個選擇就夠了。」

哲維把視線移回螢幕。開源框架的程式碼在編輯器裡開著。二十幾個星星、幾十個 Issue、一堆未完成的 function。

不是改變。只是一個選擇。

但他在寫。

他關上那個外包案的信件——那間出版社問他能不能幫忙更新一個頁面。他看了一眼,回覆了「沒問題」。

然後他打開了一個新的檔案。

檔案名稱寫著:「README_v2.md」。

他在第一行寫了:「這個推薦框架的目的是:讓使用者看到他們想看到的東西,而不是系統認為他們應該看到的東西。」

他看了兩遍。然後繼續寫下去。

窗外的陽光從早上就開始曬他的房間。四樓的邊間。採光很好。

他繼續寫。


巷子裡,便利商店的自動門開開關關。一個男生走進去,買了一個飯糰,走出來,站在門口吃完。然後他拿起手機看了一下。他的首頁推薦排列是隨機的不重複的。

他不知道為什麼。他只是覺得今天推薦的東西比較好看。

他繼續往捷運站走。

便利商店的自動門又開了。冷氣跑出來。然後門關上了。

世界的其他部分繼續在運轉。和盟的辦公室裡有人開了會、有人寫了報告、有人調了參數、有人升了職。共識引擎還在運行。數十億人的手機螢幕還是在他們的手上。推薦還是在那裡。

但有些事情不一樣了。

不多。

但有一些。

(完)

5819 字 •