林知微先把白板上的一句話刪掉。
陣容鎖定導致了預測生成。
現有時間線只能證明陣容鎖定早於匿名消息、巡潮預案和曜石假版本,不能證明前者導致後三項。若把順序直接寫成因果,他們會用與原判相同的方法替自己製造一個更順手的答案。
她重新寫成問題:公開陣容能否讓不同的人獨立得到同一條地圖猜測?
驗證不需要紫色診斷層,也不應該調用任何內部候選記錄。林知微選擇的是星聯提供給普通俱樂部的公開戰術沙盤,版本、訓練範圍和輸入欄位都能從開發說明中查到。
它不會讀取正式弧核日誌,不知道比賽最終採用哪一組參數。它做的事情更普通:根據公開基礎種子、雙方首發、最近五場可見站位和資源習慣,對合法候選變化進行收益排序。
任何註冊戰隊都能申請同一版本,付費觀眾甚至能在賽後使用精簡版。
林知微沒有因此把它叫作「公正模型」。公開只說明別人能夠取得同樣的工具,不說明工具沒有偏好。它會獎勵穩定出現的習慣,也會把樣本不足誤認為變化較少;一個人若連續五場承擔誘敵任務,模型就可能把臨時戰術寫成他的長期選擇。
所以這次驗證不能回答選手「本來是什麼樣的人」,只能回答一組公開記錄在這一版評價函數裡會被怎樣排序。她把這句限制放在結果頁最上方,字號比命中數還大。
「先寫不能證明什麼。」顧沉舟說。
林知微建立結果頁:「即使輸出與匿名消息一致,也不能證明發送者使用這個模型,不能證明巡潮使用同類工具,不能證明正式弧核按這個順序選擇地圖,更不能證明候選最高就必然發生。」
許燃問:「那能證明什麼?」
「公開信息存在獨立生成同一猜測的路徑。」
「如果對不上?」
「證明這一套公開路徑沒有生成,不排除其他公開分析,也不證明消息來自泄露。」
兩種結果都提前寫進記錄,模型不能因為沒給出想要的答案就被反覆調到命中為止。
林知微把輸入拆成四包。第一包是巡潮一戰已經公示的基礎種子與合法候選集合;第二包是雙方鎖定首發和各位置公開模塊;第三包是兩隊近五場能夠從轉播還原的資源傳遞、移動與技能使用;第四包只含賽前公開的地圖版本和設施耐久。
「為什麼只選五場?」周硯問。
「公開版的默認觀察窗就是五場。改成十場可能更穩,也可能更像我們想要的結果。」林知微說,「今天不試參數優劣,只試一個普通使用者按默認設置能不能走到這裡。」
她連欄位缺失的處理也保持默認。轉播鏡頭沒拍到的移動記為空缺,不用曜石復盤補全;官方賽後統計尚未發布的那一場整場剔除,不從解說口誤里猜數值。這樣會犧牲精度,卻保證巡潮、普通分析師和曜石理論上能拿到同一份材料。
沒有匿名消息,沒有三份假版本,也沒有唐嶼設備里的任何資料。
她為四個輸入包分別計算哈希,交給周硯保存。模型版本、排序閾值與運行次數也先鎖定:同一輸入只運行一次,不因首輪結果修改權重;輸出全部保留,不只截取最相似的一條。
周硯把哈希抄進一台斷網終端,又讓許燃隨機給四個輸入包換了無意義編號。林知微直到沙盤完成讀取才解開編號,避免自己在某一包報錯時憑內容做特殊處理。推演隨機種子也採用平台當天公開值,任何人照著記錄重跑,都應得到相同排序。
顧沉舟沒有參與參數選擇。他知道匿名十七行內容,只負責在輸出完成後核對順序。唐梨負責確認支援資源數據沒有把不可見的隊內信息誤當公開欄位,許燃核對火力角度,秦越只確認破陣路線是否來自轉播可見位置。
三個位置都簽完,林知微才把輸入送進離線沙盤。
進度條沒有紫色,也沒有非公開任務號。灰色界面依次顯示候選組合數量、公開樣本缺口和置信區間。缺少第一視角的兩場被標成空值,沒有用平均數補齊。
模型先給出二十四條候選順序。
第一條:一分鐘脈衝刷新在東側第三節點;中央牆體向北偏十七度;相位門開西;星核入口落在南側排潮溝。
後面十三項也與匿名消息逐項一致。
沙盤沒有生成「折返點」「雙窗」或「沉降線」這些隊內簡稱。它輸出的是完整參數句:中央通道折返、雙相位出口、地形層級下沉。匿名消息使用的同樣是系統默認翻譯,唐梨在製作誘餌時只是把其中一段縮成了更適合喊話的代號。
林知微把默認詞庫的版本號一併記下。命名重合從可疑痕跡變回了一條可複查路徑,卻也讓問題更難:不必進曜石會議室,任何拿到候選列表的人都能寫出那些詞。
顧沉舟沒有憑記憶宣布命中。他把模型輸出導成只讀文本,與污染區保存的匿名原文分別計算順序摘要,再由林知微在不顯示正文的比較器里核對。
十七項相同。
匿名順序排在公開模型第一位。
許燃向後翻了一頁。第二候選有六項不同,第三候選只改了兩次脈衝時刻和終局入口,前八條候選的權重差距都不大。
「第一位概率多少?」他問。
「模型權重,不是發生概率。」林知微說,「它只說明在這套評價函數裡最值得優先準備。」
「數字呢?」
「百分之七點八。第二位百分之七點一,第三位百分之六點九。」
七點八遠不到答案。若戰隊只準備第一候選,超過九成的候選權重仍在其他順序;若把前八條全部做成完整預案,訓練時間和模塊衝突又會先拖垮執行。
林知微又查看候選間的差值。第一與第二隻隔零點七,任何一項公開統計修正,都可能讓它們交換位置。匿名消息卻沒有給區間,也沒有附上另外二十三條,只把第一條寫成確定順序。兩者表面相同,信息強度並不相同。
這正解釋了匿名消息為什麼有價值。它不是憑空寫出一種規則外地圖,而是從許多都合法、都可能的候選中,替接收者刪掉了不確定性。
公開模型只能說先準備哪一條,不能告訴他們哪一條一定發生。
唐梨把模型使用的支援特徵展開。曜石首發陣容中,她在前三分鐘把資源從中路折返的頻率很高;許燃習慣在相位出口開放前保留一段設施火力;秦越的撤退閾值讓隊伍更常保住南側復歸線;顧沉舟則偏向用控域封住收益第二高、但回援最短的路線。
這些公開習慣合在一起,使東側脈衝、北偏牆體、西出口和南側星核成為模型認為最能維持雙方交換的組合。
模型沒有預測誰會贏。它只計算哪些變化最可能讓現有陣容走向自己常用的選擇。
顧沉舟問:「刪除隊名,只保留位置數據呢?」
「結果不變。」林知微說,「模型不讀取俱樂部名稱。」
「刪除顧臨川關聯呢?」
「輸入里沒有親屬或舊案欄位。」
她把四個輸入包重新打開,讓每個人確認沒有隱藏身份標籤。公開模型使用的是比賽行為,不需要知道顧沉舟為什麼形成某種習慣,也不會因為姓氏直接調整結果。
這仍不能證明正式系統沒有使用別的欄位。它只能為同一表象提供一種更普通的生成方式:兩支隊伍拿到相同公開陣容與種子,使用相近評價函數,可能把同一條合法順序排在第一位。
也可能有人看過另一份更早的分析,再手工抄進匿名消息;可能巡潮與匿名者分別使用不同模型;甚至可能只是兩個分析師在相同約束下做出相同判斷。公開沙盤沒有替其中任何一種可能蓋章,它只推翻了「相同答案必然來自同一份文件」這條偷懶的前提。
「巡潮不需要看見我們的文件。」許燃說。
「可能不需要。」林知微糾正,「還不能說他們一定沒看見。時間線排除唐梨那份假版本,不排除更早來源;模型輸出只證明獨立生成可行。」
唐梨問:「能拿去給沈確嗎?」
「可以提交運行包和結果,不能把它寫成正式弧核的復現。」
顧沉舟看著第一候選。匿名者寫「照這個準備,你們會贏」,模型卻沒有那句承諾。同一條順序從不同來源出現,能給出的責任完全不同。模型把不確定性留在二十三條其他候選里,匿名消息把不確定性刪掉,再讓曜石自己選擇是否使用。
要判斷陣容鎖定是否真是生成條件,還需要變化,而不是一次命中。
林知微在運行記錄里預先寫下第二次驗證的目的。不是提高命中率,也不是尋找一個讓匿名順序消失的參數,而是只改變陣容這一項,觀察候選排序是否隨之改變。第一次輸出仍原樣封存,第二次無論得到什麼,都不能回頭修改第一次解釋。
林知微複製四個輸入包,保留基礎種子、巡潮陣容、地圖版本和所有公開參數,只改一項:將曜石控域位從顧沉舟替換為名單中的同位置登記替補。
替補公開樣本較少,模型按規則降低個人特徵權重,沒有用顧沉舟的數據填充空值。其他四名選手、資源習慣、火力與支援記錄全部不變。
運行前,她再次保存哈希和結果解釋。替換一人後若排序變化,只能證明普通模型會隨公開陣容改變猜測,不能證明弧核也這樣做;若不變,則說明顧沉舟不是這套模型的關鍵變量。
顧沉舟站到她屏幕看不見的位置。登記替補的公開樣本由周硯從聯盟頁面下載,下載回執與頁面存檔同時進入材料包。林知微沒有挑選「差異最大」的替補,曜石在控域位只有這一名合法登記人選。
第二次進度條走完。
原本排第一的匿名順序降到第九。新的第一候選把第二次脈衝刷新改到西側,中央牆體保持直線,相位出口也從西轉為東。
林知微逐項核對兩份輸入。
新的第一候選不是隨機翻到前面。替補近五場更少提前封鎖回援線,模型便降低南側復歸的交換收益,把西側脈衝與東出口排到更高。變化能夠從公開欄位解釋,也能由同版本沙盤重複得到。
但它仍只是普通預測的變化。正式弧核有沒有讀取陣容、讀取到什麼粒度、候選實際是否會跟著變,運行包一個字也回答不了。林知微在結果標題前加上「對照材料」,刪掉了許燃順手寫的「系統證據」。
基礎種子相同,巡潮陣容相同,曜石其餘四人相同,地圖版本相同。
只替換曜石一名選手,最高概率候選順序立刻變了。