← 共識引擎

第 5 章:第 5 章

蘇薇的視訊邀請在週一早上一點零三分寄達。

哲維打開信的時候還沒完全清醒。收件匣裡有三封信——一封是電商搜尋功能的客戶來回了一輪修改需求,一封是某個外包平台的系統通知,第三封是蘇薇。標題寫著:「外包案結案討論 — 視訊會議」。

他看了一眼時間。會議排在十分鐘後。

他洗了臉,打開視訊。

蘇薇的背景換了。不是之前那個素面灰色壁紙,而是一間會議室。桌上有一個杯子、一杯咖啡。她的表情跟之前不一樣——不是不友善,是某種更正式的東西。像是一個準備好要談條件的人。

「哲維,早安。」她說。

「早。」

「我先跟你確認一下目前你的外包案狀態。」她翻了一下桌上的東西——可能是文件。「你的外包案是五月七號簽約的。合約期限十二週。今天是七月十九號。已經過了十週。」

「嗯。」

「你的工作範圍是修復推薦引擎 7.2 持續整合模組中的決策路徑異常。到目前為止,你提交了一份初步分析報告和一份漏洞回報信。」

「對。」

「你的漏洞回報信提到了 RD-7203-DPV 測試中的 lock_threshold 機制。」她的語氣沒有變。「RD-7203 的範圍不在你的合約內。」

「我知道。但異常的來源是連動的。」

「我理解。我今天找你,不是來討論這個的。」她頓了一下。「我來跟你討論你的外包案要怎麼結案。」

哲維沒有說話。

「目前你的案子的付款進度是:預付款三成已經支付。剩餘七成是結案後支付。合約附件五規定,結案需要提交修復方案、測試報告、跟數據驗證結果。」

「我的回報信裡已經寫了 lock_threshold 是成因。我沒有權限修改內部測試參數。」

「對。所以 Internal team 會接手這個部分。」蘇薇說。「你那邊的工作到這裡可以告一段落。」

「所以是提前結案?」

「是阶段性结案。」她說。「Internal team 接手之後,你的部分就完成了。」

「那剩餘的款項呢?」

蘇薇喝了一口咖啡。「合約附件七有规定:提前结案的情况,付款比例按实际完成工作量评估。你那边提交了初步分析报告跟漏洞回报信,但没有提交修复方案。」

「因為成因不在我能夠修復的範圍裡。」

「我知道。」她說。「這是 Internal team 的問題,不是你的問題。所以你的工作量評估會按照你有提交的部分來算。」

「算多少?」

「我這邊評了大约六成。」

哲維算了一下。他接這個案子的總報酬,扣掉已經拿的三成預付款,剩餘七成乘以六成——他只能拿到总额的 42%。比合約寫的少,但在合約附件七的範圍內。

他可以爭。他可以說他已經提交了完整的分析、完整的數據、完整的成因報告。但蘇薇說的「六成」是合理範圍內的。如果他爭,他可以拿到更多,但這意味著要走仲裁流程,而仲裁需要時間、需要律師、需要他會一直跟和盟糾纏。

「好。」他說。

蘇薇看了他一秒。「你接受?」

「對。」

「那我們走結案流程。你的外包帳號權限今天會關閉。剩餘款項在三十個工作天內支付。」

「好。」

蘇薇把他的反應記錄了——哲維看得出來。她可能在打字或者在文件上做記號。

「還有一件事。」她說。「你的 NDA 附件三第二條——外包期間接觸到的未公開產品資訊,保密義務在合作結束後仍然有效。」

「我知道。」

「RD-7203-DPV 的詳細內容、測試參數、實驗組数据——這些都屬於保密範圍。」

「我沒有打算公開任何東西。」

蘇薇看著他。「我相信你。」

這句話她在電話裡說過一次。那時候聽起來不像是在相信他。現在也是。

「那就這樣。」蘇薇說。「你的帳號權限今天內會關閉。後續如果 Internal team 有問題會再聯絡你。」

「好。」

蘇薇切斷了視訊。

哲維看著自己的臉還停留在螢幕上——視訊切斷之後,系統會把攝影機的畫面凍結一下。他的臉看起來很累。但不是因為昨晚沒睡。是因為他已經連續很長時間睡不好了。

他的手機震了。系統通知:他的外包帳號已被關閉。

哲維把那台筆電蓋上去。然後打開了另一台——他自己的生活筆電,裡面沒有和盟的任何東西。

他打開銀行 App 看了一下餘額。預付款還在那里。剩餘的 42% 會在三十天內入帳。扣掉房租、生活費、還有下個月的飯錢,他的存款還夠撐四到五個月。

如果中間沒有其他案子的話。

他打開了外包平台的帳號,看了一下目前有哪些案子可以接。搜尋引擎推薦一個電商平台要做轉換率優化、一個行銷公司要做 LIST 數據清理、一個小型出版社要做網站。

他把幾個看起來合理的案子投了提案。

然後他躺在床上,看著天花板上那條裂紋。

蘇薇的「六成」是合理的。她的 NDA 提醒是標準的。她的整個流程都是合法的。

這是最讓哲維不舒服的部分。

她沒有威脅他、沒有恐嚇他、沒有對他做什麼不正當的事。她只是一步一步地把他從和盟的系統裡移走——合法的、合規的、不留把柄地。

他從一個麻煩變成了一個結案的數字。

然後一切回到正軌。

哲維閉上眼睛。

電話響了。是若晴。

「你的帳號被關了?」她問。

「妳怎麼知道?」

「蘇薇在 Internal 群組裡公告了。外包案阶段性结案,Internal team 接手。」

「妳不能在群組裡看到這些吧?」

「我的主管轉發給部門的。說 RD-7203 後續由 Internal 團隊接手,分析 support 部分照常。」

「什麼意思?」

「意思是我還是要繼續支援 7203 的分析。只是現在不是外包、是 Internal。」

若晴的聲音聽起來很平。但哲維聽得出來底下的東西。

「妳還好嗎?」他問。

「不好。」她說。「但還沒不好到走不動。」

哲維的存款開始減少。

不是突然減少。是每天一點一點地少——房租、電費、水費、吃飯、交通。自由接案的人沒有穩定的收入線,只有支出線是穩定的。

他的提案投出去了幾個,但回音很少。電商平台的案子選了另一個工程師。行銷公司的案子沒有回覆。出版社的案子回了,但預算比他預期的低三成。他接了。

出版社的案子花了兩週。做完之後他拿到了錢,但那個數字比他需要的少。

他開始算。每個月的固定支出:房租、網路、水電、電信、吃飯。加起來是一個固定的數字。他目前的存款扣掉這個數字,再扣掉下個月的,再扣掉下下個月的——

四個月。如果中間沒有其他收入,他的錢夠撐四個月。

他把計算結果存在手機裡,然後把手機放下。

和盟的結案款項在第二十個工作天入帳了。比他預期的早。金額是合約總額的 42%。他看了一下數字,沒有多也沒有少。

他把房租轉帳給房東。房東回了一個「收到」。

然後他繼續投提案。

第三週的時候,他接到了一個新案子。一間小型物流公司要做路線優化系統。技術上不複雜,但客戶的需求很模糊,每次視訊會議都在改範圍。他花了三天幫他們釐清了需求,然後開始寫。

做到一半的時候,客戶打來說預算被砍了,問他能不能用更便宜的方案。他說可以,但功能會少。客戶說好。

他交了一個功能減半的版本。客戶說可以。他收到了錢。

第四週,他的銀行 App 推播了一則通知:帳戶餘額低於某個門檻。他看了一下數字,把通知滑掉。

那天晚上他吃的是泡麵。不是因為他想要吃泡麵,是因為泡麵是最便宜的。他站在廚房裡等水滾的時候,看了一眼窗外。雜貨店的招牌今天全暗了。不是壞掉,是沒開。

他回到房間,打開筆電。收件匣裡有一封新信。

不是客戶。是若晴。

「你最近好嗎?」

他看了這三個字很久。

他回:「還好。在接一些小案子。妳呢?」

若晴過了十五分鐘才回。「Internal team 接手 7203 之後,我的工作變成支援 Phase 2 的數據分析。」

「Phase 2 要啟動了?」

「下週產品會議。我的主管叫我準備 Phase 2 的數據報告。」

哲維看著這行字。Phase 2。跨領域決策一致性擴展測試。如果啟動,受影響的人會從 0.3% 開始擴大。

「妳打算怎麼做?」他問。

「我不知道。但我不能再寫一份『建議調整混合比例』的報告了。」

「妳可以拒絕嗎?」

「可以。然後我就會被調到邊緣部門。跟三年前那個發現數據隱私漏洞的人一樣。」

「那妳會變成一個知道真相但不能做事的人。」

「對。或者我可以寫一份有問題的報告——故意把數據寫錯、把結論寫弱。但他們會發現。」

哲維想了一下。「或者妳可以寫一份正確的報告。數據正確、分析正確。但把結論寫成你們需要更多測試才能確定。」

「拖時間?」

「對。」

若晴沉默了很久。「這是我能做的極限了。」

「那就做這個。」

「哲維。」

「嗯。」

「你那邊還好嗎?」

他看了一眼銀行 App 的截圖。然後他回:「還好。」

他沒有說他的存款剩多少。沒有說他今天吃的是泡麵。沒有說雜貨店的招牌暗了。

因為這些不是若晴需要擔心的事情。


第五週的時候,哲維的筆電壞了。

不是完全壞掉。是電池膨脹,鍵盤開始凸起。他拿去修理,修理的人說電池要換、鍵盤也要換,加起來差不多是一台新筆電的三分之一價格。

他付了。

修好之後他回到房間,打開筆電。收件匣裡有一封新信。

不是客戶。是一個他沒見過的信箱。標題寫著:「關於 RD-7203 漏洞回報的後續通知」。

他打開信。

信很短。內容是:你的漏洞回報已經經過內部評估。RD-7203-DPV 測試中的 lock_threshold 機制屬於正常的 A/B 測試參數,不存在你所描述的「決策鎖定」問題。測試已按照標準流程通過倫理審查。感謝你的關注。

哲維把信讀了三遍。

倫理審查。標準流程。正常的 A/B 測試參數。

他把信關上。

然後他打開了若晴的對話視窗。

「他們回信了。說 lock_threshold 是正常的測試參數。」

若晴這次回得很快。「我知道。Internal 群組裡有公告。說外包工程師的漏洞回報已經結案,測試合規。」

「倫理審查是誰做的?」

「和盟自己的倫理委員會。七個人。其中三個是 Internal 員工。」

「所以自己審自己。」

「對。」

哲維把手機放下。

他躺在床上,看著天花板。那條裂紋在晚上的燈光下很清楚。他突然想到一件事:他搬進來的時候房東說這是邊間、採光好。但邊間的牆壁比較薄,冬天會冷、夏天會熱、樓上的腳步聲聽得很清楚。

他當時沒有想這麼多。因為房租便宜。

他現在也沒有想這麼多。因為他沒有別的地方可以住。

手機又震了。若晴。

「我查到了一些東西。你可能不想知道,但我覺得你必須知道。」

「什麼東西?」

「Phase 2 的測試範圍不是 0.5% 到 1%。是 5%。」

哲維坐起來。「5%?」

「我在準備數據報告的時候看到的。蘇薇更新了測試配置。從 0.5% 到 5%。全球活躍使用者的 5%。大約兩億五千萬人。這還只是 RD-72 系列的 Phase 2。我另外看到了一個新的測試系列——HC 系列。那個的先導測試已经跑了,對象是東南亞五十萬人。如果 HC 也擴大到相同的覆蓋範圍……」

她沒有說完。

哲維看著螢幕上的數字。兩億五千萬人。

「產品會議什麼時候?」

「下週三。」

「妳的報告什麼時候要交?」

「下週一。」

哲維想了一下。「妳能拖嗎?」

「拖多久?」

「拖到會議之後。」

「那我的報告就不會被納入會議討論。Phase 2 會在沒有完整數據報告的情況下被決定。」

「對。但妳的報告如果現在交上去,它會被用來支持 Phase 2 的啟動。」

若晴沉默了很久。

「你說得對。」她最後說。「我不交。」

「妳主管會問。」

「我會說數據還在清理中。」

「他會信嗎?」

「短期會。長期不會。但短期就夠了。」

哲維把手機放在枕頭上,看著天花板。

兩億五千萬人。

他想到那個四十多歲的南美男性每天早上像鬧鐘一樣點同一個位置。想到那個二十出頭的東南亞女生盯著首頁不點擊任何東西。想到那個六十歲的歐洲男性只買固定價位的商品。

然後他把這些人乘以兩億五千萬。

他閉上眼睛。

那天晚上他又沒有睡著。

若晴的主管在週二下午找了她。

不是正式的會議。只是經過她的座位,敲了一下她的桌面。「若晴,你現在有空嗎?來一下會議室。」

她站起來的時候,隔壁座位的同事看了她一眼。那個眼神沒有特別的意思——只是有人在看你站起來去開會的時候會有的那種眼神。但若晴覺得那個眼神比平常長了一秒。

會議室在走廊盡頭。她的主管已經在裡面了。他叫徐弘,四十出頭,頭髮剪得很短,說話的方式是那種把所有事情都講成合理的那種。

「坐。」他說。

若晴坐下來。

「Phase 2 的數據報告,你上週說還在清理。」徐弘翻了一下手中的平板。「產品會議昨天開完了。蘇薇那邊說你的報告沒有提交,所以 Phase 2 的決定先按照現有的數據做。」

「數據清理比我想的複雜。」若晴說。「實驗組跟對照組的數據有雜訊,我需要更多時間排除。」

「雜訊是什麼類型的?」

「使用者的跨設備行為數據沒有完全同步。有些使用者的手機跟電腦數據對不上,影響了決策一致性的計算。」

這是真的。數據確實有這個問題。她沒有說謊。她只是沒有說這個問題她上個禮拜就已經排除了。

徐弘點了一下頭。「那你什麼時候能交?」

「這週四。」

「好。但我要先讓你知道一件事。」他把平板放下,看著她。「蘇薇昨天問了我一個問題。她說你之前查過 RD-7201 的數據。沒有權限的那個。」

若晴的表情沒有變。但她的肩膀收緊了一點。

「她說系統日誌顯示你的查詢記錄。」徐弘繼續。「她想知道你為什麼要查 7201。」

「7201 跟 7203 用的是同一個數據 pipeline。」若晴說。「我在跑 7203 的分析時,需要確認 pipeline 的完整性。查 7201 是為了排除數據污染的可能性。」

「你查了什麼?」

「實驗組的分流邏輯。確認 7201 的實驗組跟 7203 的實驗組沒有重疊。」

「有重疊嗎?」

「沒有。」

這是真的。她查了。確實沒有重疊。

徐弘看了她幾秒。「好。但你下次要查跨測試的數據,先跟我說。我幫你開權限。不要自己跑。」

「好。」

「蘇薇那邊我會回覆。你不用擔心。」

「謝謝。」

若晴站起來,走出會議室。走廊的燈光比辦公室亮一點。她走回自己的座位,坐下來,打開了螢幕。

她的手在抖。

不是明顯的抖。是那種如果不注意看不出來、但自己知道的抖。她把雙手放在鍵盤上,等它停。

隔壁的同事轉過頭來。「沒事吧?」

「沒事。」她說。「數據問題。」

同事點了一下頭,轉回去。

若晴打開了通訊工具,傳了一則訊息給哲維。

「蘇薇查了我的 7201 查詢記錄。我主管今天問我了。」

哲維在十分鐘後回。「妳怎麼說?」

「我說我在確認數據 pipeline 的完整性。」

「他信了?」

「短期會。」

若晴把通訊工具關掉,繼續看著螢幕上的數據。但她的眼睛沒有在讀數據。她在想一件事。

蘇薇不是隨口問的。蘇薇是在確認——確認若晴知道多少、查了什麼、跟誰說了。

這不是關心。這是調查。


那天晚上若晴沒有回住處。

她去了哲維那裡。沒有事先說。她到的時候是晚上九點多,按了門鈴,哲維開門的時候看起來剛從床上起來。

「妳怎麼來了?」

「我可以進去嗎?」

他讓開。若晴走進來,站在房間中間,看了一圈。這是她第一次來他的房間。比她以為的亂,但也沒有太亂。就是一個一個人住的房間該有的樣子。

「妳還好嗎?」他問。

若晴沒有回答。她坐在床邊的椅子上——就是上次他坐的那張。

「他們不是在威脅我。」她說。「他們是在『關心我的資料使用是否符合規範』。」

「妳主管說的?」

「對。他的語氣就像在處理一個行政流程。但我知道他在記錄。」

哲維在她對面坐下來。

「若晴。」他說。「妳不需要繼續做這件事。妳可以退出。就說數據有問題、需要更多時間、拖到他們找別人。」

「然後呢?」

「然後妳繼續做妳的工作。Phase 2 會啟動,但不是妳的報告支持的。」

「那有什麼差別?」

「差別是妳的手是乾淨的。」

若晴笑了一下。很小的、很苦的笑。「我的手從來就不乾淨。我寫了那份情緒色調的分析報告。我提供了 lock_threshold 的優化建議。我跑了三年的分析,每一份報告都被用來讓這個系統變得更強。」

「那時候妳不知道。」

「我現在知道了。知道了之後我就沒有辦法繼續假裝不知道。」

兩個人安靜了。冰箱在廚房那邊嗡嗡地響。

「我今天從會議室出來的時候,我的手在抖。」若晴說。「不是因為害怕。是因為我對我主管說了謊。我說了謊,然後他信了,然後我回到座位上繼續工作。我坐在那裡,看著螢幕上的數據,想的是:我現在是共犯了。不是被動的共犯。是主動說謊的共犯。」

哲維不知道該說什麼。

「你上次問我後不後悔查 7201。」若晴說。「我不後悔。但我現在知道,查了之後,我沒有辦法繼續像以前一樣了。不是因為他們查我。是因為我自己沒有辦法原諒自己。」

她抬起頭來看他。她的眼睛紅了,但還是沒有哭。

「哲維。」她說。「你能不能先過來?」

他走過去,站在她面前。

若晴伸出手,抱住了他。

不是那種熱烈的、重逢的抱。是那種兩個人站在快要淹死的水裡面、抓住對方的抱。

哲維沒有動。然後他把手放在她的背上。

他們就這樣站了很久。

窗外的巷子很安靜。雜貨店的招牌還是暗的。

6637 字 •