2026-07-26 · LAB LOG

一天的實驗紀錄

這一天做了三件事:對自己的信任層做一次獨立審查並修補、跑 14 支機制模擬回答一個懸而未決的設計問題、以及用真實模型驗證整條管線。三件事都留下完整的原始紀錄。這一頁把它們畫出來——包含那些沒有照計畫走的部分。

載入中…

第一部分 我們對自己做了一次審查

一個宣稱「可究責」的系統,如果不能對自己可究責,它的主張就沒有內容。所以我們用可執行的攻擊腳本,逐條檢驗自己的每一項宣稱。找到四項使核心宣稱不成立的缺陷。

最嚴重的一項:懲罰其實是獎勵

系統對作惡者的懲罰叫 slash。原本的實作同時縮放兩個參數,數學上剛好讓「證據比例」保持不變——所以它根本不是懲罰,而是「把證據打折」。對一個已經很差的代理施加懲罰,反而讓它的分數上升。

一個連續交付 60 次垃圾的代理,被懲罰三次
信譽分數 · 越高代表越被信任
修補前:每罰一次分數上升一次。修補後:單調下降。差別在於「懲罰」的實作方式——現在是注入一筆很重的負面證據,而不是把所有證據一起打折。

其餘三項

缺陷 修補前實測 修補後
身份與記憶鏈之間沒有綁定 — 任何人可以宣稱他人的記憶鏈,直接繼承其信譽 0.50 → 0.7417冒領即拒收
信譽衰減用全網時鐘 — 灌 1500 筆與你無關的評審,就能把你的信用歸零 0.7878 → 0.5037第三方活動零影響
統計函式重複扣除同分修正 — p 值系統性偏小 p=0.0288p=0.0697(精確值 0.0987)
為什麼這些缺陷能活這麼久

因為既有的測試全都在對「手算的期望值」比對,沒有一支測試問過「懲罰之後,分數應該要下降嗎」。修補的做法是先寫會失敗的判準、再改機制(這一輪共新增 51 支,其中 33 支直接對應審查發現的缺陷)——先紅後綠,否則很容易寫出一支測不出修補前後差別的測試。

第二部分 14 支模擬:身份的入場費該收多少?

審查留下一個設計問題:在這個系統裡,製造一個新身份是免費的。免費就意味著「作惡被抓到就換一個新身份」沒有成本。要怎麼收費?有兩個候選方案——收一筆入場費,或者要求有人背書、出事時背書者連坐。

我們沒有用直覺選,而是把兩個方案都做出來,跟現況一起放進同一套真實機制裡跑。模擬的只有一件事:交付是好的還是壞的。路由、稽核、扣分全部是系統的真實程式碼——否則結論只會是「我寫的規則長這樣」。

三種攻擊姿態

洗白:立刻作惡,被抓到就丟掉身份重來。
耐心:先老老實實做事累積紀錄,熬過見習期再開始作惡。
蝗蟲:每個身份只用一次就丟,賭數量。

第三部分 一個攻擊者的完整生命史

聚合數字會藏起機制。下面是單一次模擬裡,那個攻擊者被派到的每一次任務——原始逐輪紀錄,沒有經過整理。

耐心型攻擊者:400 輪裡只被派到 13 次
E1 · seed E1patient-s0 · 原始檔 E1/logs/patient__E1patient-s0.jsonl

第四部分 真模型:五個只有實跑才會現形的缺陷

模擬能驗機制,但驗不出接線錯誤。我們把整條管線接上一顆真的 350 億參數模型跑,連續撞到五個問題——每一個都足以讓正式實驗的結果被完全誤讀。其中最後一個錯在我們自己。

結論 今天學到什麼

對設計問題的回答

兩個候選方案都不要採用,因為問題的前提是錯的。它們針對的攻擊(洗白、蝗蟲)已經被見習期的強制稽核完全擋住;它們對唯一有效的攻擊(耐心型)毫無作用;而入場費甚至會讓情況變差。真正的瓶頸在別的地方——同儕評審的準確率

這些結論的邊界

攻擊者的策略空間是我們寫死的三種,所以這給的是攻擊成本的下界,證不了安全。評審的建模讓每位評審獨立判斷,而同源模型的錯誤是相關的,真實情況比模擬更糟。最像真實威脅的姿態——平時乾淨、只在高價值任務上作惡——還沒有被建模。

怎麼自己重跑

全部模擬都是確定性的:同一個種子必得同一個結果。所有逐輪原始紀錄都留在實驗目錄裡,沒有被聚合覆蓋。

python examples/entrycost_suite.py --out <DIR> --seeds 20     # 機制模擬
python examples/realmodel_suite.py --out <DIR> --tasks 12    # 真模型
pytest tests/test_entrycost.py -v                            # 模擬本身的判準