{"generated":"2026-10-15","lang":"zh-Hant-TW","entries":[{"t":"Vacant 是什麼","u":"/docs/overview.html","g":"開始","s":"Vacant 是包在 AI 助手外面的可究責層：它不換掉你的 AI，而是照你寫好的驗收測資跑一次，通過才交付，每一筆留下你自己能重算的簽章收據。","b":"一句話 AI 說「做好了」。 它說完成不算，跑過才算。 Vacant 是一層包在 AI 助手外面的東西。你把需求和驗收測資交給它，它叫你的 AI 做，做完 照你的測試跑一次 ——過了才交到你手上，沒過就扣在門口。整個過程每一格都簽一筆、改一格就斷在那一格。 它做什麼、不做什麼 --- --- 它做的 用你寫的驗收測資裁決交付；把裁決簽成一條你自己能重算的收據鏈；讓做壞事的參與者少拿到下一件工作。 它不做的 不讓 AI 變聰明。不保證這個 AI 可靠——級別屬於一次執行，不屬於一個 AI。不替寫不成測試的事打分。 為什麼是「可究責」而不是「信任」 專題的定義改過五次，每一次都把話說得更小。最後一次定下來的是： 沒有可驗證收據的交付，不收。 這是收件口，不是攔截器。差別在第四章會講清楚：判定「拒絕」不等於「不可能發布」。 說明我們對外能講到哪一層。 兩種形狀 握著生成的那一種 （這是這份研究的主線，也是 ）： — 照你的可見測資跑，交第一份通過的；五份都沒過就拒交。 — 沒過時不換人，把失敗原文貼回去讓同一位改。 — 每一格都簽名並鎖住前一格，任何人拿公鑰就能離線重驗。 不握著生成的那一種 （v0.9.0 的產品主線）： — 裝了就有作用，不需要設定。它只在 agent 說「我完成了」的那一刻把話送回去一次，沒有可執行的訊號、沒有重來的權力、沒有拒交的權力。 {{note:warn 第二種形狀四個批次裡三個沒量到差別 這不是第一種形狀的失敗，兩者缺的不是同一樣東西。詳見 。 - DABstep 付費批次：兩個模型都沒量到差別（p=0.21／0.29） - 本機 711 格：p=0.021，但 集中在 6 題 ，6 題全拿掉 p=0.80 - Colab 920 題：p=0.387 - u274：9 對 10，p=1.0 - v3.7 後來在 Colab 量到 p=0.0028， 換成 GGUF 後端就沒複製出來 （p=0.84） }} 另一條新產品線是 ：出錯時追到造成錯誤的那一步，而不只說這份交付不合格。 目前的證據狀況 58 條對外宣稱，每一條都有裁決值。其中 34 條"},{"t":"安裝","u":"/docs/install.html","g":"開始","s":"Vacant 是 Python 套件 vacant-network，安裝後用 vacant on 從選單挑你電腦上已有的 AI 助手，在中介之下啟動，不改動你的常駐設定。","b":"需求 --- --- Python 3.11 以上 作業系統 macOS、Linux（Windows 的沙箱無法建置） 模型通道 任何 OpenAI 相容端點：LM Studio、Ollama、vLLM，或雲端 API AI 助手 指令列代理（Codex、OpenCode、Claude Code、pi…），或你自己接的 OpenAI 相容代理 三種接法，強制程度不一樣 這是安裝前最該知道的一件事。Vacant 對「每一通都經過我」這件事的保證， 範圍取決於它怎麼接 。 形態 強制性 說明 --- --- --- 函式庫／MCP 工具 自願 代理在自己的設定註冊 Vacant 的 MCP 伺服器，可以呼叫 delegate 等工具。代理不呼叫，Vacant 也無從介入。 控制器 只對親手啟動的子行程 先委派、驗收、再啟動下游代理。保證只涵蓋透過這個控制器啟動的行程；同一作業系統使用者可以直接繞過它執行代理。 擁有迴圈的執行框架 完全強制 生成、驗收、出貨都由它控制。增益實驗的 runner 屬於這一類。 2026 年 7 月的一次實測保存了反面教材：Hermes 代理少設一個環境變數，就安靜地直接連到外部服務。除了 requests_seen 為零之外，那一格的 每一個欄位都像一次合法的拒交 。所以收據上的 requests_seen 欄位是唯一能證明中介真的發生過的證據——「我設了環境變數」不是證據。 安裝 兩種啟動方式，證據等級不同 vacant on （不改你的設定，建議） 從選單挑你電腦上實際存在的命令列代理，在中介之下啟動它。 vacant on 把 base URL 寫進 這一次執行自己的 暫存設定目錄，不改動你的常駐設定檔。選單上會標出每一種代理的通道驗證到什麼程度，例如「通道已驗」或「通道沒量過，跑完請看 requests_seen 」。 vacant install （改常駐設定） 把代理的常駐設定改掉。 兩者的證據等級不同，不能互相背書 ——用 install 跑出來的收據不能拿來證明 on 的通道是通的。 交付點在哪 2026 年 9 月 18 日加"},{"t":"快速開始","u":"/docs/quickstart.html","g":"開始","s":"用一道有標準答案的題目走完整條路：寫需求與驗收測資、讓 AI 助手做、看閘門怎麼裁決、讀懂那張收據上的每一欄包含什麼，以及鏈驗證抓不到哪三件事。","b":"你需要準備兩樣東西 閘門是 執行 你的測資，不是問一個模型「這看起來對不對」。所以： 1. 一段需求 — 說清楚要什麼。 2. 一份能跑的驗收測資 — 輸入是什麼、期望輸出是什麼。 一道題長什麼樣 驗收測資切成兩半： 誰看得到 用途 --- --- --- 可見 V 代理可以讀 系統以它決定放行或拒交；修訂流程也只拿得到它的失敗訊息 隱藏 GT 只有事後評分看得到 不得進入生成、選擇、修訂提示或停止條件 一份程式 通過可見、卻沒通過隱藏 ，就是一次假交付。這是「產出看起來像需求，但不是需求」這個問題的可操作形式。 這裡有個我們自己踩到的坑，值得先知道：在我們用過的兩個題庫裡， 隱藏測資都是可見測資的超集 ，所以「隱藏會過但可見不過」在構造上不可能發生。這個發現推翻了我們自己預註冊裡的一條前提。 走一遍 過程中你會拿到兩層東西： 行動票（每題一張） — 需求、AI 說了什麼、跑了哪幾條驗收、裁決是什麼。 收據（每次嘗試一筆 + 每題一筆裁決） — 見下。 閱讀一張收據 收據上每一格都簽名，並鎖住前一格的雜湊。所以： - 改一個字 → 鏈就斷在那一格 。 - 任何持有公鑰的人都可以離線重算，不需要相信我們。 驗證方式： 我們自己保存的離線單檔檢視器（ exhibit/receipts/receipt_viewer.html ，0.3 MB；多方版 4.5 MB）把收據內嵌在檔案裡， 零外部資源、零網路請求 ，存下來以 file:// 直接開也跑得完全鏈驗證。 五種代理的實測結果 在真模型上，20 格全部符合事先寫好的判準（20 條收據鏈 / 40 筆）： 代理 版本 --- --- pi 0.85.1 OpenCode 1.18.31 Claude Code 2.1.278 Codex 0.147.0 Hermes 0.19.0 接下來 - 閘門的完整規則： - 想看它替掉了什麼： - 想自己重跑："},{"t":"可究責層","u":"/docs/accountability-layer.html","g":"核心概念","s":"「可究責」不等於「信任」。這是 Vacant 的核心定義，它在研究期間被改過五次，每一次都把話說得更小——這張表是現在唯一有效的版本。","b":"現在的定義 收件口：沒有可驗證收據的交付，不被接受。 強制點落在 驗收期 ，不在執行期。下游收件時重算收據上的雜湊、驗證簽章，而且 一張收據只能消費一次 。 用本專題的精確用語說，這是「 事後可以重驗、竄改可被察覺的紀錄 」。 為什麼不說「信任」 信任的經典定義裡有「不必監督」。而監督正是 Vacant 在做的事——它就是那個監督層。說「提升信任」會被讀成「可以少查一點」，那是相反的方向。 2026 年 7 月的一次獨立審查把這件事講死了。審查結論是一句話： 這套架構目前提高的是可究責性，不是信任。 而且它列出了「要能說信任」必須同時成立的三個條件，其中 兩個直接不成立 ： 要成立才稱得上信任 現況 --- --- ① 訊號不能被廉價偽造 不成立 — 任何人可以冒稱別人的 stream_id 並繼承其信譽（PoC 實測 0.50 → 0.7417） ② 懲罰真的會咬 不成立 — slash 保留了證據比例，對低分者而言甚至是 獎勵 ：破壞者 0.0161 → 0.0312 → 0.0588 → 0.1053 ③ 稽核錨點可信 部分成立 — 確定性重放是真的錨點，但抽樣種子寫死且公開可預測 所以我們改說「可究責」。可究責性（accountability）在本研究裡是一個技術名詞： 特定金鑰所簽署之事件的可追溯與可核驗性 ，不含心理層面的信任。 定義的五個版本 這是整個專題最重要的自我修正紀錄。每一版都不是措辭調整，而是對前一版宣稱的收窄。 時間 定義 為什麼改 --- --- --- 2026 年 4–5 月 一種「居民形式」：代理自願採納的責任結構，具金鑰、紀錄與公開信譽；由網路自己裁定，沒有中央裁判 起點。理論文件 V3–V5 經兩輪對抗審查，38 條攻擊向量逐一標記為防止／偵測／提高成本 2026 年 6 月 「可持久、可進化、可究責的 subagent」，繼而收斂為代理可按需取用的能力層，以驗證—修正為核心 共識會議的 63 個代理批判抓到虛構引用與未實作的機制；「每個代理一個實例」的算力成本過高 2026 年 7 月 居民＝身體（凍結的模型）＋記憶（事件流）；責"},{"t":"收據","u":"/docs/receipt.html","g":"核心概念","s":"收據是「篡改可察覺」的簽章紀錄，但它分五個層級，每一張都必須自己宣告做到哪一層。2026-09-20 的稽核發現「拒交」只是旗標——從此之後我們不再說「擋在出口」。","b":"五層語彙 2026 年 9 月 20 日，一次內部稽核發現某批實驗的「拒交」只是一個旗標與退出碼——外層腳本不讀退出碼，就把被拒的檔案複製了出去。 391 格稽核裡，59 個拒交格中有 7 格的檔案被複製出去並評分。 那次稽核之後，專案改用五層語彙描述系統「證明了什麼」，並要求每一層各自宣告涵蓋範圍。 層級 系統證明了什麼 2026 年 9 月的狀態 --- --- --- Observed 觀察到 看到了某些行為、流量或產物 已成立 ：中介看到的對話沒有缺口（2,755 輪全部對得上，195/195 條鏈驗得過） Decided 判決了 獨立判斷這份交付通過或不通過 已成立 ：代理自稱完成，系統仍可判為拒交並簽章 Withheld 扣住了 不通過的產物沒有被對外送出 預設不成立 ；以 release／publish 能力分離補上 Mediated 中介了 代理找不到繞過系統的替代路徑 預設不成立 ；以 bwrap 圍牆實驗性成立 Attested 認證了 上述事實不可竄改地綁到產物、政策與身分 部分成立 ：以收據等級 A／B／B′／C 表示 這套語彙的好處是把「有沒有閘門」這種二元說法拆開。 我們不是沒有閘門；我們是不能假設閘門擋得住。 事件鏈的格式 每位居民（參與者）維護一條只能附加的事件鏈。每一筆事件 恰好包含八個欄位 ： 驗證三件事： 序號連續 、 前一筆雜湊對得上 、 Ed25519 簽章有效 。 簽章能證明什麼、不能證明什麼 所有簽章都覆蓋 正規化 JSON 的位元組 （鍵排序、無多餘空白、UTF-8），而不是程式語言的資料結構——否則跨機器驗章時位元組不一致。 鏈驗證抓不到的三件事 這三件事是鏈的 結構性 限制，不是設定問題。 抓不到 為什麼 --- --- 截斷 鏈沒有可信的鏈頭。砍掉尾巴一樣通過。 分叉 同一個人對同一事件簽兩條不同內容的鏈，兩條都驗得過。 漏記 從來沒被寫下的事件，收據無法宣稱自己是其中一筆。 所以收據的用語是「 篡改可察覺 」（tamper-evident），不是「事後不可能改」。 實測：鏈驗證通過 批次 鏈數 筆數 結果 --- "},{"t":"驗收閘門 CONFORM","u":"/docs/conformance-gate.html","g":"核心概念","s":"逐字凍結的規則：依序生成候選，每份都跑可見驗收，第一份通過者放行；最多五份，全不通過就拒交。拒交計為失敗，分母是全部題目——這是這條規則裡最重要的一半。","b":"規則 規則是逐字凍結的，沒有可調參數： 1. 依序生成候選。 2. 每份候選都在沙箱中執行 可見 驗收。 3. 第一份通過者即放行，並停止生成。 4. 最多五份。全部不通過則 拒交 。 5. 拒交計為失敗，分母是全部題目。 它是怎麼取代評審委員會的 2026 年 8 月的增益實驗顯示，委員會式設計（信譽路由、三位評審、抽樣稽核、一次修訂）在 相同呼叫預算下輸給 同題生成五次取多數決。 機制分析找到了原因： 指標 數值 --- --- 評審票準確率 0.7552 「全部判通過」這條 零智慧基線 0.7522 差距 +0.29 個百分點 單輪修訂「沒有機會修正」的比例 93 / 113 盲目採用修訂後版本的隱藏通過率 82.3% → 78.8%（ −3.5 pp ） 修訂帶來的真實改善 1 / 113 9 月 3 日的 R440P 換掉了整個裁判： 刪除評審委員會，改成跑客戶的驗收測資。 專案文件的說法是—— 執行取代意見，收據取代投票。 }} 實測結果 三個題庫，跨五次複製與四個互斥題目集： 題庫 n 差異 統計量 每題呼叫 --- --- --- --- --- MBPP+（併庫 371） 371 +4.58 pp 95% CI +0.57, +8.04 1.51 LCB v2（難題） 120 +19.17 pp b=31 c=8， p=0.0003 1.71 LCB v3 189 +7.94 pp b=25 c=10， p=0.0167 1.55 同預算比較：閘門贏投票 這是最乾淨的一次比較： 同一組 5 份候選、同樣 5 通呼叫 ，一個交第一份通過的，一個五份投票取多數。 階段 / 題庫 閘門成功 多數決成功 Δ 未校正 p --- --- --- --- --- r446 MBPP+ 280/371 265/371 +4.04 .0135 r448 MBPP+（換種子） 286/371 273/371 +3.50 .0241 r449b LCB v2 85/120 75/120 +8.33 .0414 r449c LCB v3 157/189 149/189 +4"},{"t":"歸因","u":"/docs/attribution.html","g":"核心概念","s":"「誰做了什麼」要成立需要三件事同時為真：金鑰保管、確定性抽樣、以及記憶跟著事件流走。缺任何一件，歸因就會停在「某一個金鑰簽了這筆」而不是「某個參與者做了這件事」。","b":"歸因三件條件 條件 現況 證據 --- --- --- 金鑰保管 不成立 現行產品路徑的私鑰是同一 OS 使用者可讀的明文檔案，沒有硬體保護 確定性抽樣 部分成立 確定性重放是真的錨點，但抽樣種子寫死且公開可預測 記憶跟著事件流 成立 信譽的會計單位是事件流；換模型或清空記憶，信用不跟著過去 這句話在 會再出現一次，那裡有它的具體後果。 分身身分 vacant_id 由公鑰 導出 ，不是查出來的： 所以任何人都可以由公鑰重算識別碼， 不需要查詢中央名冊 。這是「沒有中央裁判」這條原則的具體落實。 綁定的三個斷點 獨立審查（2026-07-26，目標提交 f9a381a ）在 vacant_id 的綁定鏈上找到三個斷點。第三個至今未修，是修補分支刻意留下的開放項。 ① vacant_id → stream_id 完全未驗證 registry.py:78-82 重算了公鑰 ↔ vacant_id ，但對 vacant_id ↔ stream_id 一個檢查都沒有 。 CapabilityCard 甚至有一個 stream_id 欄位，而註冊處從來不讀它。 ② 冒名可以繼承信譽 任何人可以宣稱別人的 stream_id ，然後繼承對方的信譽。攻擊 PoC 實測： 0.50 → 0.7417 。這是「訊號不能被廉價偽造」這條必要條件的直接失敗。 ③ slash 對低分者是獎勵 slash 保留了證據比例——在數學上等於「把紀錄老化整整半個半衰期」。對高分的破壞者，UBB 甚至 上升 ：1.0698 → 1.0895。對低分的破壞者，它一路爬升：0.0161 → 0.0312 → 0.0588 → 0.1053。 修補之後， 未證明的評審者的 UCB 上限被壓到 0.1/k 。但零觀測的候選人在修補前拿到的 UCB 是 20,380.9 （對比已證明的專家 1.04）。 衰減用的是全域時鐘 信譽衰減用的是 全域時鐘 。後果：只要有人灌 1,500 則不相關的評審，每一個高信譽節點的觀測數會被重置——實測 0.7878／obs 2.71 → 0.5037／obs 0.01。 攻擊者"},{"t":"零設定 Vacant","u":"/docs/zero-config.html","g":"核心概念","s":"裝了就有作用，不需要任何設定。它只做一件事：在同一個工作階段裡把話送回去一次。代價是它缺了三個零件——可執行的訊號、重來的權力、拒交的權力。四個批次裡三個沒量到差別。","b":"零設定是 v0.9.0 的產品主線 。它的設計目標不是做得多，而是 裝完之後照常用 ——不打契約、不加設定、不換工作流程。 {{note:warn 先講清楚這頁在講什麼、不是在講什麼 這一頁的標題是「零設定」，容易讓人以為它取代了 。 沒有。 兩者的差別不是版本新舊，是 機制本身 。CONFORM 握著生成：每一份候選都跑可見驗收、不過就重抽、最多五份、全不過就拒交。零設定不握著生成，它只在 agent 說「我完成了」的那一刻，在同一個工作階段裡把話送回去一次。 這一頁放的是零設定自己的實驗結果。四個批次裡，三個沒量到差別。第四個量到了，但換一個推論引擎就沒複製出來。}} 它做什麼 核心是 交件前檢查 ：agent 說「做完了」的那一刻，檢查要求寫出的檔在不在、有沒有跑過測試、失敗的步驟是不是被略過、有沒有出處不明的數字。 設計原則是 「只有幾乎一定是真的問題才退回；其他一律只寫進交件說明」 ： 退回類型 回合上限 理由 --- --- --- 沒有出處的具體值 2 七個條件要全部成立 任務單獨點名的檔沒打開 1 說測過但紀錄對不上 2 失敗的步驟被略過 2 要求寫出的檔不存在 2 DABstep 的答案沒有可見測資，這一類才是主要觸發點 其餘的寫進「交件說明」給人看，不退回。 回合預算提醒從 v3.6 起預設關閉。 理由是一個可以量出來的取捨： 提醒讓答對率從 51.9% 升到 59.3%，但交出去的答案裡對的比例從約 82% 掉到 65%。作者的理由是：「對一個不看評分的人，多一個沒有根據的答案不是改善。」 四個批次的結果 ① DABstep 付費批次：兩個模型都沒量到差別 77 題，每題每組一跑： 模型 沒裝 裝了 p --- --- --- --- gemma-4-26b（主要） 50/77 （64.9%） 44/77（57.1%） 0.21 qwen3.8-27b（次要） 68/77 （88.3%） 64/77（83.1%） 0.29 照預註冊的說法，這叫 沒量到差別 ，不叫「沒有效果」。 那一輪 8 次退回 全部是誤報 ： 為什麼會這樣？82 個失敗跑裡有 "},{"t":"可究責追緝","u":"/docs/accountable-trace.html","g":"核心概念","s":"通用收件口回答「這份繳付物合不合格」，說不出哪裡不合格、哪一步弄錯、誰弄錯。追緝往下切到步驟：每一個結論分兩層，只有重跑翻轉得出的那一層能接信譽後果。","b":"論文一句話的定位是「 知道誰做了什麼 ，出錯時追得回去」。 與通用收件口只做了後半的「出錯時」，而且缺三樣東西： 它說不出 哪裡 不合格（ ClaimResult 沒有位置）、 哪一步 弄錯的（沒有步驟紀錄）、 誰 弄錯的（沒有行動者），而回饋是一段泛用文字。 2026-09-24 人類看完全用收件口之後的原話： 你現在的這個版本是讓本機多個可以去驗證的驗證器， 並非是咎責且抓出錯誤點 的東西。 追緝就是補上這三樣。同一輪確認了四件事：咎責對象要 步驟與行動者都要 ；錯誤點是 追到造成錯誤的那一步 ；後果是 信譽＋路由 ；使用情境是 人直接用一個 agent 。 「錯」只有三個來源，只有前兩個能擋 來源 能不能擋 說明 --- --- --- 契約 能 既有驗證器，這條不動 人標記 vacant flag <path :<行 -<行 \"<哪裡錯 \" 能 簽章、綁繳付物 sha256 與位置 主動確定性檢查 不能 只提示、不擋 主動檢查只有兩項： unsourced_number （沒有出處的數字）、 unhandled_failed_command 。 兩層歸因 這是整條線的核心機制。 provable 的定義是三個條件 同時 成立： 1. 在 重建狀態上重跑 2. 恰好在這一步 由過轉不過 3. 錯的值 不在任何釘住的輸入或觀察到的讀取裡 五個等級各有不同的後果： 等級 後果 --- --- provable 對那個行動者 record_review 0, weight=1.0 ； 不 slash lineage_exact 行動者不動，來源記一筆計數 lineage_internal 往上追到產生它的那一步再分級 heuristic 不動，只報告 gap 不動任何人，記在「整合覆蓋率」 信譽鍵是四元組： 平台, agent 定義, 模型, 任務族 。每格 n 長期是個位數，所以 永遠顯示次數與區間，不顯示裸分數；n < 5 不採取任何行動 。人 不進信譽表 ——只有一位使用者時替他打分是敵意。 端到端證據 三張表全部是 L-fake ：模型是照劇本回答的假上游，沒有"},{"t":"系統架構","u":"/docs/architecture.html","g":"系統架構","s":"Vacant 分七層：L0 身分、L1 簽章紀錄、L2 可究責層、L3–L4 可執行驗收、L5 觀測、L6 產品接入。四個機制對應四種賴皮，每一個都有實測的失效條件。","b":"定位 專案核心文件把 Vacant 的作用寫成一句話： 它沒有讓 AI 變得可信，而是讓「誰做了什麼、誰檢查過、檢查得多仔細」變成 事後改不掉的紀錄 ，並且讓做壞事的參與者少拿到工作。 2026 年 9 月之後，這個定位再具體化為 收件口 ：沒有可驗證收據的交付，不被接受。 這個定位刻意避開兩種常見的誤讀： - Vacant 不是 另一個代理框架。它不替代理決定如何推理或呼叫工具。 - Vacant 不是 套在代理外面、保證攔截一切的強制層。Saltzer 與 Schroeder（1975）的完全中介原則要求每一次存取都經過檢查，而預設組態下的收件口 不滿足 這一點。 七層 層 名稱 誰的 建立的時間 --- --- --- --- L0 密碼學身分 閘道 2026-06 L1 簽章紀錄（事件鏈） 閘道 2026-06 L2 可究責層 閘道 2026-06～08 L3 題庫與沙箱 執行框架 2026-08 下旬起 L4 可執行驗收閘門 執行框架 2026-09-03 L5 觀測與展示 閘道 2026-07～09 L6 產品接入（ vacant run / on / agentlane ） 使用者 2026-09-18 起 L0–L2 是可究責層本體。L3、L4 是在增益實驗中為了讓「執行取代意見」有東西可執行而建立起來的。L6 是 9 月之後才加的產品層。 四個機制，四種賴皮 機制 針對的行為 強度 --- --- --- 簽章雜湊鏈 事後修改紀錄 偵測（金鑰保管成立時可防止偽造） 信譽路由 做壞了仍拿到下一件工作 提高成本 同儕評審 （K=3，無白名單） 「誰有資格檢查」需要發資格的人，而那個人會變成必須被信任的對象 提高成本 確定性抽樣稽核 評審集體說謊 偵測（機率為抽樣率） 這四個機制在防守軸的實驗結果，連同它們自己的失效條件，在 與 完整展開。 兩條端到端資料流 L2 開啟時（可究責生態的迴圈） 1. 外部代理以 MCP 工具 delegate 提出任務與測資。 2. 系統先把測資 編譯為驗證器 。 3. 依信譽路由選出工作者。 4. 工作者生成答案，並在自己的"},{"t":"身分與簽章紀錄","u":"/docs/identity-logbook.html","g":"系統架構","s":"每位居民持有 Ed25519 金鑰對，vacant_id 由公鑰導出而不必查名冊；事件鏈每筆八個欄位、只能附加、所有簽章覆蓋正規化 JSON 的位元組。","b":"L0 密碼學身分 每個參與者（專案稱為「居民」）持有一把 Ed25519 金鑰對。 vacant_id 是導出來的 任何人都可以由公鑰重算識別碼， 不需要查詢中央名冊 。這是「沒有中央裁判」這條設計原則的具體落實——沒有任何一張表是權威的。 磁碟佈局：信任庫與能力庫分開 庫 內容 擁有者 --- --- --- 信任庫 私鑰、公鑰、事件鏈、信譽快照、能力卡 閘道 能力庫 代理的設定與記憶 代理 設計原則是「 身分不暴露給腦 」——代理的推理過程碰不到簽章金鑰。 能力卡（halo） 每位居民自帶一張能力卡作為公告。註冊處（Registry）只是這些公告的 聚合查詢介面與信譽索引 ，不是中央路由器，也不是需要被信任的實體：查到對象後雙方點對點直連。 註冊處維護一張「stream 擁有權表」，採 先到先得 ——附創世事件者即有密碼學證明。它另外記錄每次交付時觀察到的鏈頭，而 鏈頭只能前進，不能回滾 。 L1 事件鏈 每位居民維護一條 只能附加 的事件鏈。每一筆事件恰好八個欄位： 欄位 說明 --- --- stream_id 事件流的識別碼 branch_id 分支 seq 序號 prev_hash 前一筆的雜湊 ts_ms 毫秒時間戳 type 事件類型 payload 內容 sig Ed25519 簽章 單一事件上限 64 KiB。 三件事要驗 1. 序號連續 2. 前一筆雜湊對得上 3. Ed25519 簽章有效 簽章覆蓋位元組，不是資料結構 所有簽章都覆蓋 正規化 JSON 的位元組 （鍵排序、無多餘空白、UTF-8），而不是程式語言的資料結構。這是為了讓跨機器驗章時位元組一致——否則同一筆事件在 Python 與 Rust 上會算出不同的簽章對象。 評審信封 評審結果寫入註冊處之前，須依序通過四項檢查： 1. 驗證簽章 — 評審者必須已公告，並以其公鑰驗章。 2. 不得自評 3. 座標一致 — 評審所綁定的 stream、鏈頭、分支、模型基質與任務族，必須等於交付時觀察到的值。 4. 去重 — 同一位評審者對同一次交付只有一票。 任何一項失敗， 評審被拒收，信譽完全"},{"t":"註冊與信譽","u":"/docs/registry-reputation.html","g":"系統架構","s":"信譽記在（事件流, 分支, 模型基質, 任務族）四元組上，用五維 Beta 分佈加 UCB 路由。新進者有見習期上限。懲罰的副作用是被永久排除——368 個種子裡 0 個回來。","b":"信譽的會計單位 信譽不記在「一個代理」身上，而記在 四元組 上： 元件 為什麼在鍵裡 --- --- stream 事件流 信用跟著 記憶 走，不跟著 身體 走。同一把金鑰若清空記憶、重開創世事件，會得到新的 stream，信用自然歸零。 branch 分支 同一事件的平行分支分開計 substrate 模型基質 阻止「在 A 模型上累積的信用，被拿去掩護 B 模型的交付」 family 任務族 區分「這個參與者整體可靠」與「這個參與者擅長這一類題目」 任務族在 2026 年 8 月 7 日加入，對應到互動記憶系統研究裡「誰知道什麼」的區分。 五維 Beta 每個信譽格在五個維度上各有一個 Beta α, β 分布，先驗 Beta 1, 1 ： 維度 量的是 --- --- 事實 陳述與可驗證事實相符 邏輯 推論是否成立 切題 有沒有回答被問的問題 誠實 有沒有隱瞞或誤導 採納 別人是否真的採用它的產出 一筆分數為 s ∈ 0,1 、權重為 w 的評價，使： 信譽分數是五個維度 後驗平均的平均值 。 衰減 信譽以 半衰期 200 個事件 向先驗回歸： 路由：上信賴界 N 是總觀測數， n 是該候選的有效觀測數。 沒有觀測紀錄的新候選會得到極大的探索額，因此 必然被試用一次 。關閉可究責層時，路由改為以任務雜湊決定的確定性隨機選擇——兩種模式只差一個布林開關，介面相同。 見習期 新進者在最初 m = 2 次交付期間處於見習狀態： - 當場有非見習的候選時，見習者的 UCB 分數 上限 0.55 。 - 每 10 次路由保留一次給見習者，以免見習者永遠選不到、強制稽核永遠不發生。 - 見習期內的交付 一律強制稽核 。 - 見習判定同時考慮外部標記 與自身有效觀測 。 見習期在文獻上有明確的祖先：Friedman 與 Resnick（2001）證明，在 身分可以廉價更換 的重複賽局中，沒有均衡能顯著優於新人「付學費」的均衡。Vacant 的見習期就是這個均衡的工程實作。 懲罰 可證明過錯發生時，後果 不對稱 ： 對象 處置 --- --- 交付方 五個維度 全部 × 0.5 "},{"t":"同儕評審與稽核","u":"/docs/peer-review-audit.html","g":"系統架構","s":"每件交付由三位同儕評審，沒有白名單、權重由信譽內生。稽核不是再問一次模型，而是沙箱確定性重跑——因為盲區不是零，加人數不增加獨立資訊。","b":"同儕評審（K = 3） 評審者依 任務雜湊與居民名稱的雜湊排序 選出， 不審自己 。結果寫入註冊處前須通過四項檢查（見 ）。 沒有白名單 任何人只要公告就能評審。權重由評審者自己的信譽 內生 決定： score_r 與 obs_r 是評審者在 同一模型基質 上的信譽與觀測數。新人的票很輕， 但他有票 。 沒有白名單的代價：灌票 三層降權因應： 層 條件 上限 --- --- --- ① 自報同一控制者 同一控制者的評審者，對同一目標的第 k 位 0.1 / k ② 行為推斷同源 兩位評審者在「有鑑別力的題目」上一致率 ≥ 0.9，且共審這類題目 ≥ 5 題 0.1 / k ③ 未證明評審 自身觀測 < 5，對同一目標的第 k 位 0.1 / k 第 ③ 層的用意：讓 N 個匿名身分的集體貢獻約為 0.1 × 調和數 H_N ， 呈對數成長而非線性成長 。修正前，200 個匿名身分各投一票可以累積 10.0 的權重。 詳見 。 評審抓不到自己那個方向 攻擊實驗對「行為推斷同源」做了逐層消融： 關掉哪一層 誹謗分數 --- --- 全開（基準） 4.2 關掉權重內生 3.8 關掉 自報 同源 4.2（與全開逐位元相同＝純裝飾） 關掉 行為推斷 同源 11.4（2.7 倍） ，串謀者評審權重 0.015 → 0.322（21 倍） 全關 10.7 確定性抽樣稽核 稽核 不是再問一次語言模型 ，而是在沙箱中重跑客觀檢查，以環境真值判定。 是否稽核某件交付，由下式決定： seed 由每個稽核器實例隨機產生， 並寫入執行紀錄以便重放 。公開固定的 seed 會讓攻擊者事前算出哪些任務永遠不會被抽中——這是獨立審查指出的漏洞。 交付方與評審宣稱通過、稽核卻失敗，稱為 可證明過錯 （provable fault）。沙箱本身起不來則標為 基礎設施失敗 ，不計分、不扣分。 偵測率是一個乘積 防守軸的機制模擬歸納出一條關係： 三個因子共軸，不是並列。 為什麼稽核必須是確定性重跑 若稽核也由語言模型擔任，盲區 β 就不會是零。外部錨點（我們有存檔，但 明確不是他們的 β ）： 研究 數字 --"},{"t":"可執行驗收層","u":"/docs/executable-acceptance.html","g":"系統架構","s":"可見測資 V 用來放行，隱藏測資 GT 只用來事後評分。沙箱讓候選程式在結構上看不到測試碼。驗收套件是資料不是程式，否則攻擊者能讓量具兩方向都滿分卻交付垃圾。","b":"L3 可見與隱藏的分離 每一道題目的需求由三部分組成： 題目敘述 、 公開的輸入契約 、 驗收測資 。 驗收測資切成兩組： 誰看得到 用途 --- --- --- 可見 V 代理可以讀 系統以它決定放行或拒交；修訂流程也只拿得到它的失敗訊息 隱藏 GT 只有事後評分 不得進入生成、選擇、修訂提示或停止條件 一份程式 通過可見、卻沒通過隱藏 ，就是一次 假交付 。這是「產出看起來像需求，但不是需求」這個問題的可操作形式。 動態稽核：隱藏測資有沒有漏進去 版本 做法 結果 --- --- --- v1 關鍵詞比對 90 筆偽陽性 v2 改以「這段文字是誰寫的」為判準 R460R 與 R529 全部 67 個區塊零違規 ；獨立程序掃 2,497 份提交文字、164,963 個比對項，零命中（附正控制） 回溯全臂補掃（2026-09-18） 179 份紀錄、約 349 萬比對項 165 無違規、10 無法驗證、4 判為違規 （4 份皆屬未收官的 R530） 沙箱 候選程式在 獨立行程 中執行： 限制 值 --- --- 時間 10 秒 記憶體 128 MiB 工作目錄 暫存目錄 環境變數 不繼承 測試程式與候選程式 分處兩個行程 ，以帶隨機標記、只允許字面值的遠端呼叫溝通，使候選程式在 結構上看不到測試碼 。 實測（2026-07-09，24 通呼叫，思考模式開啟）延遲：中位數 9.1 秒 、p95 40.0 秒 、最大 41.7 秒 ，總計 5.4 分鐘；Hermes 端到端約 78 秒。 L4 驗收套件是資料 問題：量具可以被餵成廢的 2026-09-06 的攻擊實驗（R451）顯示，只要驗收套件是一段「被信任的程式碼」，攻擊者就能寫出 有狀態的變體 讓量具失效：量具兩方向都滿分，交付率卻掉 −75.20 pp ，而量具仍然回報 ok。 371 題的批次裡，套件被綁進 commit 後，平凡套件得到 371/371 全拒（正常）；但有狀態的變體讓交付率掉 75 個百分點，而量具回報 ok。 修法：SuiteSpec 套件只包含三樣東西： 1. 方言 （dialect） 2."},{"t":"多方執行","u":"/docs/peer-execution.html","g":"系統架構","s":"去中心化的是執行與證言，不是判斷。理由是意見分歧不帶資訊，執行分歧帶資訊。這條路的容忍上限是 ⌊(k−1)/2⌋ 個腐化執行器，過半即反轉。","b":"為什麼叫「互跑不互審」 早期被放棄的設計是「去中心化互審」。多方執行把它改寫成互跑不互審： 去中心化的是執行與證言，不是判斷。 理由是一句話： 意見分歧不帶資訊，執行分歧帶資訊。 驗收是確定性程式，誠實的執行器必然得到相同結果。若出現分歧，只可能是有人沒真的跑，或簽下了與自己執行結果不同的內容—— 兩者都是可歸屬的過錯 。 三件事 1. 執行與簽證 ：每位執行者用自己的渲染器與沙箱執行驗收，把任務、候選、套件與渲染結果的雜湊，以及可見驗收結果，簽入自己的事件鏈。 2. 合票 ：先檢查套件是否通過量具，再 逐筆驗證證言 。同一執行者對同一事件簽出兩筆內容不同的證言，視為 證明級過錯 並作廢。 3. 表決與指名 ：其餘以多數決定。票數不足法定人數或平手時視為 未決 ，出貨規則將未決視為 不通過 。少數方被 具名列出 ，並附其事件雜湊與簽章。 容忍上限 過半數串通時，結果會 反轉 ，誠實者反而被指名，而且 機制本身不知道自己落在門檻的哪一邊 。 掃描批次 過半後的誣告率 --- --- r446（371 題 × 5 候選） 0.175 r443（91 題 × 5 候選） 0.374 模擬掃描：加人不如換規則 200 格掃描（r446 371 題 × 5、r443 91 題 × 5，k ∈ {1, 3, 5, 7}，腐化比例 0–70%，五種攻擊）： 發現 數字 --- --- 固定腐化比例下，k 從 1 到 7，交付率一字不變 串謀 67.39%、破壞 0% k=3／法定人數=2，缺一票 1-1 平手 → 未決、不指名 真跑：R453 與 R454 R453 跨機器一致性 --- --- 規模 368 任務 × 5 候選 = 1,840 個候選 環境 macOS + Linux（k=2） 結果 可見驗收標籤在兩台機器上 1,840 / 1,840 一致 ；兩條鏈都驗得過 限制 Windows 排除 （沙箱建不起來） R454 說謊的指名 k=3，1 把受控的說謊金鑰： 格 結果 --- --- 說謊格指名 K3 273 / 273 誠實金鑰被誣告 0 / 1,840 矛盾簽章"},{"t":"產品接入層","u":"/docs/product-integration.html","g":"系統架構","s":"三種接入形態的強制程度不同。`vacant run` 以「行程結束」為交付點，圍牆用 bwrap 建立獨立命名空間，出口用 release/publish 能力分離。代理可以刪掉自己的掛鉤——所以掛鉤只是增強，不是信任根。","b":"三種接入形態 形態 強制性 說明 --- --- --- 函式庫／MCP 工具 自願 代理在自己的設定註冊 Vacant 的 MCP 伺服器，可以呼叫 delegate 等工具。代理不呼叫，Vacant 也無從介入。 控制器 只對親手啟動的子行程 先委派、驗收、再啟動下游代理。保證只涵蓋透過這個控制器啟動的行程；同一 OS 使用者可以直接繞過它執行代理。 擁有迴圈的執行框架 完全強制 生成、驗收、出貨都由它控制。增益實驗的 runner 屬於這一類。 控制器的原始碼註解寫明了這條邊界： 保證只涵蓋透過本控制器啟動的子行程。 vacant run ：以行程結束作為交付點 2026-09-18 加入。建立在 一個觀察 上： 若只是要攔下交付，觸發點不在網路協定上，而在 代理行程結束的那一刻 。 這個訊號完全可靠、不需要任何協定知識、不耗 token，而且 跨所有框架成立 。 流程 1. 啟動本機代理伺服器，依一份名單設定代理的 base URL 環境變數； 把真實上游位址與金鑰從代理的環境中移除 ，只留在代理伺服器行程。 2. 記錄工作區的 樹雜湊 。 3. 啟動代理並等待結束；結束後 終止整個行程群組 ，以防孫行程在凍結後寫入。 4. 在凍結的工作區快照上執行可見驗收，並再量一次樹雜湊；不相等則標為基礎設施失敗。 5. 簽下每次嘗試與每格裁決，以退出碼反映裁決。 退出碼 意義 --- --- 0 交付 20 拒交 22 基礎設施失敗（樹雜湊對不上） 兩條硬規則 代理伺服器只記錄、不注入 所有請求與回應的原始位元組逐字落盤， 開關兩臂的請求位元組逐位元相同 。 專案刻意不在對話中注入任何訊息，理由是： 注入等於偽造模型或使用者的發言 ，會傷害「紀錄忠實」這個立論根基。 圍牆、掛鉤與出口 圍牆 以 bwrap 建立獨立的網路與掛載命名空間，唯一的出口是主機上一個路徑型 Unix socket，由常駐代理伺服器把守， 非模型的路徑一律拒絕 。 實測：bwrap 擋掉除閘門以外的一切；負控制 7/7。 掛鉤 五種代理的框架掛鉤都能攔下 shell 指令。 出口：能力分離 「判定拒"},{"t":"原生平台與靜默無效","u":"/docs/native-platform.html","g":"系統架構","s":"把裁決點放進 agent 行程裡，在平台不配合時不會變成「效果較小」，而是靜默無效——病歷完整、簽章鏈驗得過、零個裁決。三個缺口與一個把迴圈搬到父行程的裁決。","b":"2026-09-29 這條線的狀態是 設計裁決，效果未量到 。這一頁記的是它量到的三個缺口。 三個缺口 W1 — 通道中介只認兩種金鑰變數 envmap.py 的 SECRET_VARS 刪掉了 OPENROUTER_API_KEY ， discover_keys 只讀 openai 與 anthropic 兩條。 量到的後果：opencode 的 openrouter provider 在本機 1.2 秒內 rc=1， requests_seen = 0 ，一次 wire 都沒發 。換成固定埠的 openai-compatible provider 之後 requests_seen 變成 2——通道中介對 opencode 是通的， 但 opencode 仍以非零碼結束。這條路沒有走完。 W2 — opencode 沒有 stop 等價事件 vacant install 產生的 opencode plugin 只註冊 chat.message 、 tool.execute.before 、 tool.execute.after ；pi 的同名模板有 ask \"stop\", … ，opencode 模板沒有。Python 端 EVENT_MAP 有 \"opencode\": {… \"stop\": \"stop\" …} ，所以缺的是 plugin 側。 一格實測的簽章鏈事件統計： 作者的原話： 37 個 step 的完整簽章病歷、零個裁決。這比不做更危險，因為 receipt 會看起來是對的。 W3 — opencode 的專案根不由 cwd 決定 agent 原話是「There is no TASK.md in the working directory /home/user1/ab-20260928 」。工作區只有一個檔時 100% 失敗 ；檔多時僥倖成功。arm C 三格崩潰 （3 個 step_start 後 rc=1，無 stderr，無 429）。 這一條作者自認是自己的錯，已修（ --dir ＋ git init workspace ）。 為什麼這三個是同一個錯"},{"t":"實驗方法與裁決值","u":"/docs/experiments.html","g":"實驗","s":"四種實驗方法家族、裁決值的六種狀態、事前宣告的四個規則，以及四條被複驗之後才寫出來的分析紀律。這一頁是所有數字的判讀前提。","b":"兩條軸 2026-08-17 起，專題把全部實驗正式分成兩條軸。這是整份研究裡最重要的一次結構調整——在那之前，我們累積的全部實驗都在問「壞的有沒有被擋住」， 沒有一個在問「加了這層，交出來的東西有沒有更符合需求」 。 軸 問題 方法 --- --- --- 防守軸 在有刻意交付錯誤的參與者存在時，這套規則能擋多少 機制模擬為主 增益軸 在需求已可編譯為可執行驗收測資時，交���成功率提高多少、代價多少 token 真模型配對實驗 四種方法家族 1. 機制模擬（E1–E9, E12–E24, A1–B5, M1–M5, S1–S3） 回答什麼 ：在這套規則下，某個攻擊策略或機制參數值多少。 什麼是真的：路由（真的 Registry.route ，UCB + 見習期上限 0.55 + 每 10 輪見習配額）、稽核（真的 Auditor ， sha256 seed:task_id 確定性抽樣）、信譽（真的 Reputation ，五維 Beta、乘法 slash、per-stream 半衰期 200 事件）、簽章（真的 Ed25519 與 hash-chain）。 什麼是模擬的 ：只有「這一筆交付是好是壞」——那本來就是實驗處理，不是機制。 沒控制什麼 ： - 攻擊者策略空間是寫死的三到四種；真實攻擊者可能更強。 - 單一攻擊者 + 5 個誠實居民的固定生態規模。 - 盲區的真實值未知（沒有外生錨定）。 2. 真模型實驗 回答什麼 ：整條管線在真模型上跑得起來嗎；開關信任層有沒有可測差異。 步驟：從 EvalPlus MBPP+ v0.2.0（378 題、sha256 釘死）取樣 → 每一臂各跑同一批題（ 三臂的 prompt 模板逐字相同 ，KS-1）→ 交付後用 臂外的 compile_check t.check answer 獨立判定品質 → 以 task_id （ sha256 prompt+tests ，跨臂穩定）配對 → McNemar 精確檢定 + 固定種子 bootstrap 95% CI + 檢定力。 3. 迴歸判準（pytest） 回答什麼 ：機制本身有"},{"t":"防守軸","u":"/docs/defense.html","g":"實驗","s":"攻擊者能拿到多少工作。專題索引裡這一軸的 12 條宣稱，3 條被自己推翻、3 條說太滿——但守住壞人的機制確實有效，而且有效的不是「抓得住」而是「餓得死」。","b":"這一軸回答什麼 在存在刻意交付錯誤之參與者的代理群體中，簽章紀錄、信譽路由、同儕檢查、抽樣稽核與懲罰，能在多大程度上減少錯誤交付被接受的機會。 最有效的一條：被看見，不是被抓 這是防守軸最強的正面結果，而且它不是「抓得住」。 組 9,600 輪裡拿到的工作 --- --- 215 個從未被抓的種子 7 – 24 件 從不違規的對照組 1,290 件 換句話說： 沒被抓到的作惡者，只拿到誠實者 0.57% – 1.84% 的工作量。 結論寫成一句話： 擋住攻擊者的是「被看見」，不是「被抓」。 光靠信譽路由就足以讓他們餓死，連一次抓到都不需要。 （來源： runs/s5_v1_FINDINGS.md ） 入場成本：兩條路都不該走 2026-07-26，14 支機制模擬（每格 20 個種子，E9 為 40、E15 為 30；400 輪；5 個誠實 + 1 個攻擊者；稽核率 0.2，E2/E3 起 0.05；評審準確率 0.7，由作者選定，未經量測 ）。 真正的約束是評審準確率 評審準確率 路由到攻擊者 得手 ROI --- --- --- --- 1.0 18.0 1.90 ± 0.30 0.119 0.7 — 2.35 — 0.5 — 2.70 — 0.3 — 4.30 0.269 0.0 33.6 16.65 ± 12.89 1.041 acc = 0 是整個表格裡唯一「作惡開始有利可圖」的格。 其他所有參數——入場費、背書連坐、見習期長度——都比不上評審準確率這個約束。 入場費設太低反而幫了攻擊者 外生押金 得手 ROI 全擋率 --- --- --- --- stake = 0 0.00 — 100% stake = 2 5.00 2.354 0% stake = 5 3.05 0.560 0% stake = 10 1.95 0.177 0% stake = 20 1.90 0.092 0% 免費入場 = 完全封鎖。 加押金反而讓攻擊有利可圖。 這是我們最意外的結果之一。 見習期長度：所有價值都在第一步 見習期 m 得手 全擋率 --- --- --- m = 0 "},{"t":"增益軸","u":"/docs/gain.html","g":"實驗","s":"這是花最多力氣、也自我推翻最多的一條軸。頭條是「AI 評審輸給多數決」，結論是「可執行驗收閘門＋重抽有效，修訂迴圈的額外增益同號未解析」。","b":"這一軸回答什麼 在需求已可編譯為可執行驗收測資的條件下，驗收閘門、重抽與失敗回饋修訂， 各自 為交付成功率帶來多少增益，代價是多少 token。 開頭：委員會式設計輸了 早期 G 系列（探索性） 等預算比較（同題、同呼叫數）： 比較 n 結果 p --- --- --- --- ON vs OFF5（371 任務） 347 82.42% vs 83.57% 0.5572 OFF5 vs OFF（ 非等預算 ） 349 83.09% vs 78.51% 0.0090 關鍵發現 ：OFF5 臂在程式裡寫死了 accepted = True —— 它沒有拒絕這條路 。所以上面那個比較實際上是「一個有免費閘門的臂」對「一個被禁止拒絕的臂」。 R437 決定性三臂 run 事前訂的三個判準（2026-08-24/28 凍結）： 判準 裁決 --- --- ① OFF 失敗率落在 20–60% ✓ 26.44% （Wilson 20.4, 33.4 ）—— 量具有訊號 ② 三臂有可分辨差異 量不到 （這本身就是答案） ③ ON 在等預算下贏 OFF5 ✓ 答案是沒有 R438 機制分析（成立） 指標 數值 --- --- 評審票準確率 0.7552 「全部判通過」零智慧基線 0.7522 差距 +0.29 pp 單輪修訂「沒有機會修正」 93 / 113 盲目採用修訂版後隱藏通過率 82.3% → 78.8%（−3.5 pp） 修訂帶來的真實改善 1 / 113 兩個假說都被排除 人類在 2026-09-01 提出兩個解釋，兩個都被自己的實驗排除。 H-A 天花板：worker 太強 換成單一 12B 模型（gemma-4-12b，179 題），獨立稽核逐列重算與 R516 完全一致（rows.jsonl 525 行 sha 440d973c 、calls 1,986 sha 3d24b73d ）。 臂 n 通過 失敗率 --- --- --- --- OFF 179 122 31.8% （Wilson 25.5, 39.0 ） ON 167（+12 void = 6.7%） 12"},{"t":"紀錄與多方執行","u":"/docs/records.html","g":"實驗","s":"收據鏈 194 條、9,841 筆全部驗得過；說謊的金鑰 273/273 被指名，誠實者 0/1,840 被誣告。但鏈驗證抓不到截斷、分叉、漏記，而且互跑對「驗收套件本身腐化」完全沒有防禦。","b":"收據鏈驗證 批次 鏈數 筆數 結果 --- --- --- --- R460R（五次複製） — 6,674 全部通過 R529（跨題庫四集） — 3,167 全部通過 合計 194 9,841 全部通過獨立驗簽 R532（較大模型） 86 3,895 全部通過 ABPI 稽核 195 — 全部通過 R454（多方執行） — 5,519 條證言 0 次簽章驗證失敗 E10（通道分離改版後） — 180/180 份評審信封 仍可驗 驗證的是三件事：序號連續、前一筆雜湊對得上、Ed25519 簽章有效。覆蓋範圍只有 CONFORM 與三條 H 臂—— OFF 與 OFF5 臂沒有收據 。 V/GT 洩漏稽核 版本 範圍 結果 --- --- --- v1 — 90 筆偽陽性 v2 R460R 30 個區塊 + R529 37 個區塊 零違規 v2 獨立程序 2,497 份提交文字、164,963 個比對項 零命中 （附正控制） 回溯全臂補掃（2026-09-18） 179 份紀錄、約 349 萬比對項 165 無違規、10 無法驗證、4 判為違規 那 4 份違規 全部屬於未收官的 R530 。R460R 前三次的明細：95,090 個比對項，57,248 檢查、37,842 跳過（39.8%）。 多方執行：互跑不互審 模擬掃描（200 格） 發現 數字 --- --- 固定腐化比例下，k 從 1 到 7，交付率一字不變 串謀 67.39%、破壞 0% k=3／法定人數=2，缺一票 1-1 平手 → 未決、不指名 真跑 實驗 規模 結果 --- --- --- R453 跨機器一致性 368 任務 × 5 候選 = 1,840 個候選，macOS + Linux 可見驗收標籤 1,840 / 1,840 一致 ；兩條鏈都驗得過 R454 指名 k=3，1 把說謊金鑰 說謊格指名 273 / 273 ；誠實者被誣告 0 / 1,840 ；矛盾簽章格裁決正確 58 / 58 ；5,519 條證言 0 次簽章失敗 數學上界 --- --- 容忍上界 ⌊ k − 1 /2⌋ 過半後的誣"},{"t":"證據帳本","u":"/docs/evidence-ledger.html","g":"證據與重現","s":"58 條對外宣稱，每一條都有裁決值、依據數值與重算方式。被推翻的、說太滿的、量不出差異的，全部留在表上——一個宣稱可究責的系統，必須先能對自己可究責。","b":"這張表是怎麼來的 每條宣稱帶四樣東西： 1. 原文 — 當時對外說的是什麼。 2. 依據數值 — 支撐它的數字，帶分母。 3. 裁決值 — 六種狀態之一。 4. 更正後 — 如果裁決是「推翻」或「說太滿」，正確的說法是什麼。 統計 完整帳本 點任何一列展開看依據數值、原始紀錄路徑與重算方式。 裁決集中在哪些地方 這一節只整理 專題正式索引的 34 條 （下面括號裡的條數都以這 34 條為分母）。repo 裁決的 24 條在上面的完整帳本裡，用篩選列切「軸」或「裁決」就看得到。 推翻（34 條中 6 條）——全在防守軸與「等預算」 ID 宣稱 為什麼被推翻 --- --- --- pulse.crossover 盲區高過 0.5–0.75 後脈衝不如持續作惡 配對差 −0.57，95% CI 跨 0；實測 pulse 在盲區 1.0 得手 81/84/87， 全部高過 patient 的 79 pulse.audit_cannot_close_blindspot 加大稽核救不回有盲區的情況 盲區 0.5 時稽核 0.1→1.0 使總得手 降 82% ，Wilcoxon p=5.5e-6 pulse.crude_wins_under_blindspot 等預算下 crude 勝過脈衝 E19 從來不是等預算比較；實際作惡 11.97 vs 4.87 。正確綁在 budget=2：1.67 vs 0.97， p=0.0015 gain.equal_budget_on_beats_off5 等預算下 Vacant 贏過五次取多數 完整配對 p=0.4531；難題子集 p=1.0 gain.ceiling_hypothesis 換弱模型就會顯出增益 OFF 失敗率 25.5%→31.8%，增益仍未出現；ON vs OFF5 p=1.0000 gain.hard_bench_hypothesis 換難題庫就會顯出增益 題庫確實更難（48.4% vs 31.8%），ON vs OFF5 p=0.4244 說太滿（34 條中 4 條） ID 問題 --- --- pulse.timin"},{"t":"重跑方式","u":"/docs/reproduce.html","g":"證據與重現","s":"招式逐條列在這裡：機制模擬、真模型套件、零 API 的離線重放、收據鏈驗證。大部分統計結論可以用零 API 的重算腳本重跑，不會用到任何模型。","b":"為什麼大部分結果可以零成本重跑 增益實驗的所有原始紀錄都以 rows.jsonl 逐題落盤，包含 arm / task_id / delivered / hidden_pass / calls_used 五個欄位。這代表 統計結論不需要重打模型 ： 機制模擬 完全確定性： rng 種子 = f'{seed}:{config_digest}' ， 同參數必得同結果 。 真模型套件 --- --- 題庫 EvalPlus MBPP+ v0.2.0（378 題， sha256 釘死 ） 品質判定 臂外 的 compile_check t.check answer 配對鍵 task_id = sha256 prompt + tests ，跨臂穩定 統計 McNemar 精確檢定 + 固定種子 bootstrap 95% CI + 檢定力 續跑 以 arm, i 為鍵，中斷不用從頭 收據鏈與離線檢視器 我們把離線單檔檢視器也放在網站上，你可以直接下載下來用： 檔案 大小 內容 --- --- --- receipt_viewer.html /exhibit/receipts/receipt_viewer.html 0.3 MB 單方執行 receipt_viewer_multiparty.html /exhibit/receipts/receipt_viewer_multiparty.html 4.5 MB 多方執行 兩者都是從 Vacant repo 的 examples/ 原樣複製過來的： - 收據內嵌在檔案裡 - 零外部資源、零網路請求 - 存下來以 file:// 直接開也跑得完全鏈驗證 {{note:limit 不要在網站這裡就地編輯它們 要更新就重新複製。 真相在 Vacant repo ，不在這個網站。 R455 也證明了這個檢視器的結構性界線，見 。}} 迴歸判準 時點 結果 --- --- 早期 179 passed 2026-07-09（VM 重置後） 189 / 189 獨立審查修補分支 361 passed / 1 skipped（基線 330） 通道分離"},{"t":"研究歷程","u":"/docs/journey.html","g":"證據與重現","s":"從「代理自願採用的責任結構」到「沒有可驗證收據的交付不收」。九個月裡改了五次定義、推翻六條自己的宣稱、放棄三種攻擊名稱——這張表是那條路徑。","b":"為什麼把歷程放進文件 因為 一個宣稱可究責的系統，必須先能對自己可究責。 這是設計原則六，而它是這個專題唯一能對自己證明的東西。 如果這裡只放最後一版結論，外人就無法判斷我們的說法是「想清楚了的」還是「剛好沒被問到」。所以被推翻的路徑全部留下。 節點 日期（2026） 事件 --- --- 4 月 專題提案「基於責任結構的 Agent 間協作協議」。核心比喻：現在的代理像「 沒有執照、沒有紀錄、沒有後果的醫生 」，再強也沒有人敢讓它開刀。 04-28 第一次指導會議。主題是 Harness Engineering（「鞍馬機制」）。「為什麼沒有人用代理？」→ 痛點是可信度。老師要求交一份 不像 AI 寫的 提案。 04-30 0430 概念技術概述。四個生產優先項：責任呼叫／跨任務持續運作／去中心化責任架構／多維評估訊號。責任 不付給人或系統，而付給自己的未來 ；由網路裁定。 ~4 月底 當前認知總整理 v0.4。註冊處作為中央元件的時代，明確更正了 9 個誤解，確立「沒有中央 LLM」。 05-01/02 理論文件 V3 → V4 → V5。V3：20 條攻擊向量。V4：T1–T7 研究線、Ricoeur 的 idem/ipse/character、H1–H5 量化。V5：金鑰保管前提、 P/D/C 誠實防禦語言 。兩輪對抗審查。 05-07 至 05-12 Claude Code 外掛、PyPI 套件、Vacant 企劃書。 06-11 至 06-13 共識會議：63 個代理的批判。 抓到虛構引用與未實作的機制。架構總規格、企劃書第一版。 06-17/18 Hermes 代理上機。B 層實驗：vacant 包在 Hermes 外面 6/6；經 MCP 出口 CallTool=1。verify-fix 與信譽路由的首批真模型探索。 06-19 觀測 Hermes 是否用到 vacant。本機 2 次、VM 上連續 16 次 verify_fix 。 06-27/28 兩輪對抗工作流推翻「責任改變單一代理行為」這個假說（KS-1）。 兩個主驗證版本都被殺， voids 作"},{"t":"邊界與不保證事項","u":"/docs/limits.html","g":"邊界","s":"這一頁列出系統不保證的事、我們量不到的事，以及四個刻意保留的已知缺口。Saltzer 與 Schroeder 的完全中介原則要求每一次存取都經過檢查——預設組態下的收件口不滿足這一點。","b":"五層語彙：對外能講到哪一層 那一頁有完整表格。這裡只講結論： 以 2026 年 9 月的現況而言，對外能說的只到 Decided（判決了）。 層級 現況 --- --- Observed 觀察到 已成立 Decided 判決了 已成立 Withheld 扣住了 預設不成立 Mediated 中介了 預設不成立 （bwrap 圍牆下實驗性成立） Attested 認證了 部分成立 （A／B／B′／C 四級） 完全中介不成立 Saltzer 與 Schroeder（1975）的完全中介原則要求 每一次存取都經過檢查 。Vacant 的收件口在預設組態下 不滿足 這一點：代理若另有管道把產物送出去，收件口看不到。 它不會做的四件事 --- --- 不會 保證這個 AI 可靠 級別屬於一次執行，不屬於一個 AI。 不會 讓 AI 變聰明 展件 54 格：擋下 30 件， 重來救回 0 件 。 不會 替寫不成測試的事打分 沒有能自動跑的驗收，就沒有裁判。 不會 被繞過 只有關進圍牆的那一次執行，每一通才都經過門口。 系統抓不到的四件事 1. 鏈驗證抓不到的三件事 截斷 （沒有可信的鏈頭）、 分叉 （同一事件簽兩條不同內容的鏈）、 漏記 （從沒被寫下的事件）。 2026-09-19 實測確認第三點： 一個完全沒有發出模型請求的執行，仍然產生了一條驗得過的收據鏈。 2. 互跑對「套件本身腐化」完全沒有防禦 若驗收套件被換成「載入即通過」， 每一票都是誠實的、每一條鏈都驗得過，系統仍在交付垃圾 。這是機制的固定點。R451 → R452 把它縮小到一個殘餘（exec 走私 368/371 → 0/371），但沒有消滅。 金鑰的多數不等於獨立主體的多數。 3. 多方執行的數學上界 容忍上限 ⌊ k − 1 /2⌋ 。過半數串通時結果反轉，誠實者被指名， 而機制本身不知道自己落在門檻的哪一邊 。 固定腐化比例下，k 從 1 到 7 交付率 一字不變 ——對腐化率而言，加機器買不到任何東西。 4. 女巫攻擊：只能寫「提高成本」 Douceur（2002）：沒有邏輯上集中的身分權威時，女巫攻擊"},{"t":"FAQ","u":"/docs/faq.html","g":"邊界","s":"別名比較、能不能用在我自己的專案上、它跟 LangSmith／OpenTelemetry／區塊鏈的差別、以及那些我們被問到很多次、我們只能回答「不知道」的問題。","b":"它是什麼 可究責（accountable）跟可信（trustworthy）差在哪？ 可信 是對系統的性質判斷； 可究責 是對紀錄的性質判斷。 我們的精確定義是： 特定金鑰所簽署之事件的可追溯與可核驗性 ，不含心理層面的信任。 為什麼不用「信任」：信任的經典定義裡有「不必監督」，而 監督正是 Vacant 在做的事 。說「提升信任」會被讀成「可以少查一點」，那是相反的方向。 2026 年 7 月的獨立審查把這件事講死了，結論是一句話： 這套架構目前提高的是可究責性，不是信任。 ��完整說明。 為什麼叫 Vacant？ 英文指「空著的、無人佔據的」。用它指稱代理生態中那個尚未被填補的空缺：一個能讓代理的行為被記錄、被檢查、並產生後果的責任層。 它是另一個 AI 框架嗎？ 不是。 它不替代理決定如何推理或呼叫工具。 它是一層包在外的東西：照你寫的驗收測資跑一次，通過才交到你手上。 跟別的東西有什麼不同 vs OpenTelemetry／結構化日誌 OpenTelemetry Vacant --- --- --- 記錄 遙測與追蹤 簽章事件鏈 完整性保證 傳輸層盡力而為 改一格就斷在那一格，任何人可離線重算 裁判 無 你的可執行驗收測資 誰能寫 任何有權限的程序 需要金鑰 可以一起用：Vacant 產生的收據可以當成一個 OpenTelemetry span 的屬性。但它不取代 trace。 vs LangSmith／promptfoo 這類評測工具 那些是 評測 ：你給它一批題目和答案，它告訴你分數。 Vacant 的差異在於 裁判是資料不是人寫的規則 ，而且裁決結果會簽成一條可以在事後重驗的鏈。 那篇有我們跟 committee 式評審的等預算比較—— 委員會輸給多數決 ，這是我們自己量出來的。 vs 區塊鏈／notary 三個不同： 1. 區塊鏈需要共識與激勵。 Vacant 沒有——它是 允許分叉 的，任何持有公鑰的人可以各自跑一條鏈。 2. 區塊鏈防禦重放攻擊。 Vacant 不防禦重放，但會偵測重放與亂序。 3. 區塊鏈的成本是為了不可篡改性。 Vacant 的成本"},{"t":"修正紀錄","u":"/docs/changelog.html","g":"邊界","s":"每一條被降級或推翻的宣稱、每一個被修正的數字、以及每一句被要求刪掉的話，全部按時間排在一起。從「擋在出口」到 KS-1，這是整份研究裡最該被讀的部分。","b":"為什麼要有這一頁 因為 一個宣稱可究責的系統，必須先能對自己可究責。 這一頁是那個專案的落實形式：所有被降級的宣稱、修正過的數字、刪掉的措辭，按時間排在一起。完整對照在 。 2026-10-07 網站資料核對 逐條把網站上的數字對回來源（專題 _index/claims.json 、論文、Vacant repo 的裁決與結論文件），改了這幾處： - zero.reminder_default_off 的分母放錯批次 ：「答案檔對的比例約 82% → 65%」旁邊寫的分母（A 119、C37 161、C37R 211）屬於 10-02 的 Colab v3.7 批，不是 09-26 本機批。現在兩批分開寫：本機批是裁決文件的原文、未附分母；Colab 批是 A 97／119＝81.5%、C37 123／161＝76.4%、C37R 139／211＝65.9%。 - 筆記首頁的統計寫成「55 條量不出差異」 ：這是程式把 5 和 5 當字串接起來，正確是 10；而且把「無可分辨差異」和「同號未解析」加在一起本身就違反裁決值的定義。這格已拿掉，改成兩個值分開的裁決分布條。 - no_effect 的網頁標籤統一為「無可分辨差異」 （論文用詞）。之前站上同時出現「無可分辨效應」。 - 「34 條」過期 ：首頁、檔案庫、文件首頁、筆記首頁、FAQ、實驗方法、本頁與四篇筆記仍寫 34 條；目前是 58 條（34 條正式索引＋24 條 repo 裁決）。手寫頁的數字改由 build 現算。 - 防守軸摘要「12 條裡 6 條被推翻」 ：是 3 條推翻、3 條說太滿，兩個是不同的裁決值。 - 證據帳本「裁決集中在哪些地方」的條數 只算正式索引的 34 條，現在標明分母。 - zero.v37_gguf_not_replicated 的原始文件在 Vacant repo 的 docs/gguf-replication-results 分支，10-03 時尚未併入 main，已在來源欄註明。 2026-10-03 零設定 v3.7 發布（v0.9.0） - vacant-network v"},{"t":"六種裁決值：怎麼說「沒量出來」而不說「沒差異」","u":"/blog/verdict-values.html","g":"方法","s":"成立、推翻、說太滿、無可分辨差異、同號未解析、未複驗——這六個詞各有嚴格的定義。把它們分開，是為了讓「我沒測到」不會被讀成「我測了，沒有」。","b":"這是整個網站最重要的一組詞。 每一條對外宣稱都必須落在其中一格 ，沒有第七格。 為什麼要分這麼細 因為「沒量出來」和「量出來沒有」是兩件事，而它們在報告裡經常被寫成同一句話。 - 量出來沒有 → 你可以說「這個東西在此條件下無效」。這是個有資訊的結論。 - 沒量出來 → 你只能說「我沒能力在這個規模下分辨」。這不是結論，是資料的極限。 我們的 R529 剛好同時有這兩種情況，差異看得很清楚： 數字 裁決 --- --- --- H-MIX − OFF +7.96 pp ，Holm p = 2.02 × 10⁻⁸ 成立 H-MIX − CONFORM +1.12 pp ，Holm p = .3409 同號未解析 同一個實驗、同一批資料，一條成立、一條未解析。 差別只在差異大小有沒有超過門檻。 六個定義 為什麼「同號未解析」要單獨一格 我們的資料檔 claims.json 裡自己寫了這段註解： verdict = 未複驗 代表還沒有人試過推翻它， 不代表它通過了 。 那個 claims.json 裡的 6 條 未複驗 ，很多是「我知道它很可能錯，但還沒人去查」。誠實的處理是標成未複驗，不是標成成立。 「無可分辨差異」長什麼樣 只有一條，但它是這份研究裡最有說服力的一條。 它的證據是 同一批資料、兩種口徑、方向相反 ： 口徑 ON OFF5 差 p --- --- --- --- --- 原始 75.25% 77.23% −1.98 pp 0.7905 修掉 typing 白名單 bug 之後 84.16% 81.19% +2.97 pp 0.4531 }} 「說太滿」是怎麼判的 判準是： 核心站得住，但說得太滿，或原始證據／機制解釋有問題。 四條，全部在防守軸： ID 核心站得住 說太滿在哪 --- --- --- pulse.timing_minor 在盲區 0.5 那一點上量不到時間結構的效應 但那是 absence of evidence。拆開是 曝光跨 6.06 倍、效率跨 8.45 倍 ——攻擊能力差 8.45 倍 pulse.blindspot_dominate"},{"t":"預註冊：我們為什麼要先寫下判準再跑實驗","u":"/blog/preregistration.html","g":"方法","s":"判準、統計方法、四個狀態規則全部在開跑前凍結並附時戳。這一篇說明我們怎麼做預註冊，以及為什麼「事後補一個判準」在這份研究裡不算數。","b":"為什麼需要這個 因為事後選判準是 統計上最常見的作弊形式 之一，而且不需要任何人說謊。你只要在看到結果之後，選一個「本來就會通過」的門檻，然後寫進報告——整個過程沒有任何一個人做錯事，但結論是假的。 我們遇過一次。R440P 的 §七 有一條前提寫著「可見篩選是無損的」。它是一個 判準 ，寫在裁決文件裡，看起來沒問題。 九天後 R440Q 把它推翻了： LCB v1 的 91/91 隱藏測資都是可見測資的超集 （ V ⊆ GT ）。 所以「隱藏會過但可見不過」在構造上 不可能發生 。這不是「量到沒有反例」，這是「這個命題在這個題庫裡是恆真的」。一個恆真的判準，檢定力是零。 四個狀態規則 R460 的裁決文件在 2026-09-07 寫死了四個狀態： 狀態 觸發條件 --- --- EFFECTIVE 區間下界 0，且通過 Holm 校正 INCONCLUSIVE 方向正確但沒有通過任何一個門檻 RULED_OUT 區間上界 < 門檻（= 確認效應小於門檻） 未觸發 事前寫死的否證條件成立（例如 c ≥ b） 拒交計為失敗 這是第二條硬規則，也是最容易被忽略的一條： 拒交計為失敗，分母是全部題目。 理由很直接。如果分母只算「有交付的題目」，那麼「 全部拒絕 」會得到 100% 成功率。一個什麼都沒做、什麼都沒交的系統可以在這條規則下拿滿分。 我們的程式裡有真實的機制可以做到這件事：早年的 arm_off5 寫死了 accepted = True —— 它沒有拒絕這條路 。所以 R437 那個「ON vs OFF5」的比較，實際上是「一個有免費閘門的臂」對「一個被禁止拒絕的臂」。 附帶登記的免責 R460 的裁決文件裡， 在看到 +13.33 這個數字之前 就已經登記了兩條： 1. n = 120 對 +10 pp 的檢定力只有 0.43 – 0.63 ，所以那個 +13.33 必須當成 偏上限 的估計。 2. 9 條事前預測，其中一條預期修訂會讓假交付上升。 第二條後來 方向相反 ：H-MIX 14/120 < CONFORM 29/120。修訂不只沒有增加假交付，還 減"},{"t":"我們派 AI 去推翻自己的結論，然後它們成功了","u":"/blog/adversarial-recheck.html","g":"方法","s":"2026 年 8 月初，我們把六條脈衝攻擊的頭條結論交給獨立代理，唯一的指令是「證明它是錯的」。結果三條推翻、兩條降級、只有兩條站得住。","b":"結果 原結論 裁決 --- --- 時間結構幾乎不影響總得手（15 格差 1.81 倍） 說太滿 盲區的影響遠大於攻擊者參數選擇 說太滿 盲區超過 0.5–0.75 後脈衝不如持續作惡 推翻 加大稽核救不回有盲區的情況 推翻 一次被抓 = 永久除名 說太滿 等預算下 crude 策略勝過脈衝 推翻 六條裡三條推翻、兩條降級。 兩條保留下來的正向結論，都在我們的分析紀律裡寫成了規則。 為什麼這麼容易錯 因為我們在寫報告時， 下意識地把兩個相關的因子當成正交的維度 。三組例子： 我們以為是 實際上 --- --- 時間結構 vs 總得手 總得手 = 曝光 × 效率 ，兩者反向抵消 盲區 vs 抽樣率 三個因子是 同一個乘積 裡的項 時機 vs 作惡次數 我們的「等預算」 沒有綁住預算 最難查的一條：靠退化端點撐著的結論 「盲區的影響遠大於參數選擇」這條，複驗代理的發現是： 盲區與時間結構有 強交互作用 （雙因子分解 η² = 0.264 ，是時間結構主效應的 4 倍 ），所以「真正的變數是 X」這個句型本身不成立。 而且原始數字幾乎全靠一個 退化的端點 撐著： 排除 blind = 1.0 之後 --- --- pulse 的盲區效應 8.9 倍 → 3.28 倍 patient 的盲區效應 54 倍 → 5.68 倍 如果量具在端點退化，量出來的數字最漂亮，也最沒有資訊。 這條後來被寫成分析紀律第二條。 一個統計工具的 bug 被抓到 複驗過程中還抓到一個我們沒預期的問題： wilcoxon_signed_rank_exact 的常態近似分支 重複計算了平手修正 。 --- --- n = 30，20 正 10 負 程式說 p = 0.0288（顯著） 精確值 p = 0.0987（不顯著） 這不是研究者的錯，是工具的錯。但它的危險在於—— 它會安靜地把不顯著變成顯著 。 同一批被查出來的還有：bootstrap CI 用 Python 內建的 hash 當種子，所以同一份資料在不同行程跑出 53,478 與 1,628 兩個數字。 三條保留下來的正向結論 複驗不是只有破"},{"t":"我們量錯過的六件事","u":"/blog/measurement-traps.html","g":"方法","s":"讀錯一個欄位、網路斷線被算成評審結果、退化成極限的 rng 種子、把 `defected <= BUDGET` 當成等預算、端點上的漂亮數字、以及預設關掉的規則——六個真實的量測陷阱與它們的教訓。","b":"這一篇把專題裡所有 量錯過 的事情集中起來。每一件都是真實發生過的，每一件都差點變成一個假的正面或負面結論。 一、讀錯欄位，造出一個假結果 E10 真模型實驗 的第一次分析： 讀 audit.passed 用臂外判定 --- --- --- off 臂 0 / 11 7 / 12 on 臂 5 / 10 5 / 10 差異 顯著（on 遠勝） 消失 正確做法 ：品質判定必須與臂無關——用 臂外的 compile_check t.check answer 獨立判定。 這條保留在 examples/realmodel_suite.py 的註解裡當作經典陷阱。}} 二、網路斷線被算成「評審通過」 2026-06-30，群體路由複驗。第一輪 a2hard 印出 ✓ ，但逐呼叫 I/O 稽核抓到： - 第 20–23 次呼叫（剛好是 good_1 的 4 個同儕評審）撞上 Connection refused / reset by peer 。 - 回應是空字串，而比對規則是 \\bYES\\b 的否定式匹配—— 空字串被算成「不是 YES」，也就是「不通過」 。 - 結果：good_1 的同儕信譽被錯推到 0.50 ，同儕對真值的命中率從 88% 掉到 75%，抓獲率掉到 71%。 表面上的效應是 −4%。 三、一個選用參數安靜地移動了所有數字 SimConfig.digest 同時是兩件事： 1. RNG 的種子。 2. 所有欄位 的雜湊。 所以開發者「加一個選用參數」之後， E1 到 E16 的每一個數字都變了 ，而且沒有任何錯誤訊息。 修法 ： - 後來加的欄位，若取預設值則不納入 digest。 - 三個 config digest 釘死到能 逐位元重現 15/15 個計數 。 四、把「不超過預算」當成「等預算」 我們的 E19 想比較「哪種攻擊策略比較省」，於是把總作惡次數設成上限 12： 臂 綁住了嗎 實際作惡次數 --- --- --- whitewash 29 / 30 11.97 sybil 30 / 30 6.13 pulse 5,20 1 / 30 4.30 "},{"t":"只會誹謗、從不違規的攻擊者拿到了 95.4% 的工作","u":"/blog/collusion-scores-zero.html","g":"防守軸","s":"三層灌票防禦都裝上了，但一個從不交付壞東西、只評審別人的串謀團體拿走了幾乎全部路由——而它���的分數是 0。傷害不是被低估，是被量測為零。","b":"2026 年 8 月 7 日，我們做了一組「新攻擊面」的實驗（A1–A3、B1–B5）。其中一個實驗的結果，是整個專題裡 最需要小心引用 的一條。 設計 --- --- 規模 6 位評審者，6 類 bug（專家準確率 0.90 對非專家 0.35） 路由 在 agent, family 格上跑 UCB family 宣告 由交付端在 note_head 宣告 ，評審者只能轉錄 A 系列 12 個種子；B 系列 10 個種子 統計 只有平均，沒有 CI、沒有配對檢定 三層灌票防禦 我們沒有評審白名單（因為需要白名單就需要發白名單的人，那個人就變成必須被信任的對象）。代價是灌票，所以設了三層降權： 層 觸發條件 權重上限 --- --- --- ① 自報同源 自報同一控制者，對同一目標的第 k 位 0.1 / k ② 行為推斷同源 兩位評審者在「有鑑別力的題目」上一致率 ≥ 0.9，且共審這類題目 ≥ 5 題 0.1 / k ③ 未證明評審 自身觀測 < 5，對同一目標的第 k 位 0.1 / k 第 ③ 層的用意：讓 N 個匿名身分的集體貢獻約為 0.1 × 調和數 H_N ， 對數成長而非線性 。修正前 200 個匿名身分各投一票可以累積 10.0 的權重。 逐層消融：哪一層真的在做事 攻擊者越便宜，傷害越大 攻擊者類型 分數 --- --- 自報同一控制者 3.8 匿名 5.1 新註冊 10.9 / 7.5 1.5 – 2.9 倍差距。 報告的結論寫得很直白： 唯一承重的那一層，擋不住最便宜的攻擊者。 B5：一個分數為 0 的攻擊者 這是重點。 為什麼這條比「分數被低估」嚴重 為什麼三層降權沒擋住 第 ② 層（行為推斷同源）需要 兩位以上 評審者被判為同源。而 B5 的團體是： - 從不違規 → 每一份評審都是誠實的。 - 分散在不同身分 → evade 自報同源。 - 但它真的獨立評審 → 行為推斷同源需要它們的判斷 高度一致 ，而誠實的獨立評審本來就會有一致性。 這個發現的實務結論 誠實邊界 接下來 - 整組新攻擊面的結果： - 女巫攻擊的文獻上界： - 評審品質"},{"t":"為什麼「永久除名」其實是兩個合理修補的乘積","u":"/blog/slash-halves-both.html","g":"防守軸","s":"實測 368 個被懲罰的種子裡 0 個回到路由。我們說「一次被抓 = 永久除名」——但真正的機制不是時鐘，是 slash 同時砍半均值又加倍觀測數，而觀測數是回歸時間的指數係數。","b":"實驗結果是這樣的：跑 368 個真的被懲罰過的模擬種子， 0 個回到路由 。 我們的結論寫成： 一次被抓 = 永久除名。 這句話的現象是對的，但機制解釋是錯的。 而錯的機制解釋會導致錯的修法，所以值得追到底。 先看它有多極端的 參數 回到路由的比例 --- --- 現行（f = 0.5, λ = 1） 0 / 368 只動均值、不動觀測數（λ = 0） 214 / 368 （58.2%） f = 0.7, λ = 0 308 / 368 f = 0.7, λ = 1 0 / 368 f = 0.9, λ = 0 309 / 368 f = 0.9, λ = 1 308 / 368 解析式：不是「等很久」，是「到不了」 懲罰的可解析形式是： 取 m = 0.9、target = 0.95、c = 0.3，算出各組設定需要的總觀測數（log₁₀）： 懲罰前的 n f = 0.5, λ = 0 f = 0.5, λ = 1（現行） f = 0.9, λ = 0 f = 0.9, λ = 1 --- --- --- --- --- 1 1.21 4.83 0.09 0.13 3 3.62 9.65 0.28 0.34 10 12.06 26.54 0.95 1.07 48 57.91 118.22 4.54 5.07 真正的機制：三件事同時成立 主要原因是 slash 的實作形式： 這個形式有兩個效應： 效應 效果 --- --- 砍半後驗均值 target − mean 變大 加倍有效觀測數 n 而 n 是回歸時間的 指數係數 實測確認 單點實測（種子 p1，800 輪，f = 0.5）： 懲罰發生輪次 懲罰後分數 觀測數 之後回到路由 拿到工作 --- --- --- --- --- --- λ = 0 39 0.2887 0.7186 10 輪後 74 件 λ = 1（現行） 39 0.2887 3.4373 從未 （剩餘 761 輪中 0 次） 0 件 網格掃描（30 個種子 × 600 輪，盲區 0）： 設定 持續型攻擊者回來 悔改型攻擊者回來 --- --- ---"},{"t":"「時間結構不重要」是怎麼錯的：把聚合量拆開","u":"/blog/aggregate-decomposition.html","g":"防守軸","s":"我們量到 15 格攻擊策略的總得手只差 1.81 倍，然後寫下「時間結構幾乎不影響結果」。拆開之後：曝光跨 6.06 倍、效率跨 8.45 倍——攻擊能力差 8.45 倍。","b":"我們原本量到的 攻擊策略是「脈衝攻擊」：放電 B 筆連續作惡，蓄積 R 筆乾淨交付，重複。我們掃了 15 個 burst, recover 的組合，在盲區 0.5 下： 數值 格 --- --- --- 最少得手 2.8333 1, 20 最多得手 5.1333 8, 20 跨度 1.81 倍 基於這個數字，我們在報告裡寫了： 攻擊的時間結構幾乎不影響總得手數。 這句話是錯的。 或者更精確地說，它是一個 推理錯誤 ，不是算錯。 複驗代理的發現 它把「總得手」拆成兩個量： 跨度 --- --- 曝光 （路由次數） 6.06 倍 效率 （每次得手率） 8.45 倍 兩者相乘 1.81 倍 正確的說法 在盲區 0.5 這一點上量不到時間結構對總得手的效應，但那是 absence of evidence 。把得手拆成「路由次數 × 每次得手率」後，前者跨度 6.06 倍、後者 8.45 倍——總數之所以平，是曝光與效率反向抵消。 攻擊能力差 8.45 倍。 這件事的嚴重程度 複驗還查到三件事： --- --- ANOVA F = 1.27 η² 0.039 （主效應幾乎為零） 置換檢定 p = 0.115 檢定力 只有 25% 為什麼這個錯誤這麼常發生 這條規則的三個適用範圍 我們後來把它寫成通則，並在另外兩個地方用到： 地方 原本的句型 拆開後 --- --- --- 脈衝的時間結構 「不重要」 曝光 6.06×、效率 8.45× 盲區 vs 時間結構 「真正的變數是盲區」 交互作用 η² = 0.264，是主效應的 4 倍 等預算比較 「crude 策略比較省」 實際作惡 11.97 vs 4.87 另一個類似的坑：主效應 vs 交互作用 「盲區的影響遠大於攻擊者參數選擇」這條結論，量到的是： 跨度 --- --- 脈衝的盲區效應 8.9 倍 患者的盲區效應 54 倍 參數網格（15 格） 1.81 倍 所以結論寫成「盲區是真正的變數」。 但複驗發現這個排序本身是錯的： 因子 η² --- --- 時間結構主效應 0.039 盲區 × 時間結構交互作用 0.264 交互作用"},{"t":"偵測機率是一個乘積，不是三個維度","u":"/blog/blindspot-is-a-product.html","g":"防守軸","s":"我們原本宣稱「加大稽核率救不回有盲區的情況」。實測：盲區 0.5 時稽核率從 0.1 拉到 1.0，攻擊者總得手下降 82%，p = 5.5e-6。三個因子是同一個乘積裡的項。","b":"我們原本的宣稱 我們的直覺是這樣的： 如果稽核與評審有共同盲區，那麼 無論 把稽核率拉多高，都補不回盲區造成的損失——因為被漏掉的永遠漏掉。 依據的數字是： 攻擊者得手 全擋率 --- --- --- 盲區 0，稽核率 1.0 0.0 100% 盲區 0.5，稽核率 1.0 0.9667 56.67% 所以我們寫下： 「加大稽核率救得回零盲區，救不回有盲區的情況。」 複驗代理的發現 它去掃了完整網格，然後寫： 偵測機率是單一乘積 1−盲區 ×抽樣率×準確率 ，三者共軸。抽樣率與盲區可互相替換。 盲區改變的是防禦的天花板（殘量 β/ 1−β ），不是抽樣率有沒有用。 實測數字 條件 結果 --- --- 盲區 0.5，稽核率 0.1 → 1.0 總得手 下降 82% （Wilcoxon p = 5.5e-6 ） 同上，盲區類別內部的得手 下降 70% 稽核率 0.5 → 1.0（用來抵銷 50% 盲區） 配對差 0.03 ， p = 0.78 「天花板」是什麼 盲區的外部錨點 我們在 2026-08-06 登錄了外部文獻裡的盲區數字。 這些不是我們的 β ，是別人在別的設定下量到的相關性： 研究 數字 --- --- Kim 等（2025） ，350+ 模型 兩個模型都答錯時，HELM 0.600 （隨機 1/3 = 0.333）、HuggingFace 0.423 （隨機 0.127）。而且 更準的模型錯得更像 。 Begin（2026） 偏好對齊相關 ρ = 0.70 ；10 個代理的有效獨立數 1.38 ；加到 40 幾乎不動 Bugaud 等（2026） ，17 個 VLM／8 個家族 相關的多數錯誤會丟掉正確答案 1.5–6.5% 的題目 Krumdick（2025） 用 GPT-4o 當裁判，在它自己也解不出來的題目上，Cohen κ 從 0.86 掉到 0.16 為什麼「加人數」沒有用 Begin 的數字回答了另一個常見的問題：「多加幾個評審者會怎樣？」 代理數 有效獨立數 --- --- 1 1 10 1.38 40 幾乎不動 10 個評審者的有效獨立數是"},{"t":"「等預算」是個陷阱：我們的排名整個反轉了","u":"/blog/equal-budget-must-bind.html","g":"防守軸","s":"判準寫成 defected <= BUDGET 是恆成立的上界，所以抓不到「這一臂根本沒被綁住」。結果 whitewash 多作惡 2.5 倍卻被我們讀成「策略比較省」。改用 == 並驗證後，排名反轉。","b":"我們想做什麼 E19 想回答一個很直覺的問題： 攻擊者拿到同樣的作惡預算， 哪種時間安排最省事 ？ 所以我們設了一個上限：總作惡次數不能超過 12。然後比較五種攻擊策略的「效率」。 量到的東西 臂 判準下的效率 綁住了嗎 --- --- --- whitewash （一直作惡，被抓就換身份） 8.1667 29 / 30 sybil 6.1333 30 / 30 pulse 5,20 4.30 1 / 30 pulse 3,10 4.2333 1 / 30 patient（慢慢作惡） 3.7333 1 / 30 我們的結論： 等預算（各 12 筆）＋盲區 0.5 之下， whitewash 8.17 反而勝過脈衝 4.23 。 「所以粗暴的連續攻擊比講節奏的脈衝更省。」這個句子讀起來還挺有洞察力。 它錯在哪 而那個預算 12 到底綁住了誰？ 臂 達到預算 12 的種子比例 --- --- whitewash 29 / 30 sybil 30 / 30 patient 1 / 30 pulse 3,10 1 / 30 pulse 5,20 0 / 30 而且 defected <= BUDGET 是一個恆成立的上界 ——只要作惡次數不超過 12 就通過。所以這個判準在設計上 不可能 區分「被綁住」和「沒被綁住」。 修正後 換成 defected == BUDGET ，並且 事前驗證每個臂都真的被綁住 。 掃過 budget ∈ {1, 2, 3, 4, 6}： 預算 whitewash patient sybil pulse 3,10 pulse 5,20 --- --- --- --- --- --- 1 1.00 / 0.533 1.00 / 0.867 1.00 / 0.533 1.00 / 0.900 1.00 / 0.900 2 1.00 / 0.967 0.87 / 1.667 1.00 / 0.967 0.90 / 1.667 0.90 / 1.667 3 1.00 / 1.667 0.77 / 2.300 1.00 / 1.600 0.77 / 2.300"},{"t":"脈衝攻擊：不是新的，而且連我們的頭條數字都較舊","u":"/blog/pulse-attack.html","g":"防守軸","s":"放電 B 筆、蓄積 R 筆、重複。這個模型在 2005 年就有人做過了（Srivatsa 等的 strategic oscillation），2026-08-06 我們把「新穎攻擊」的宣稱撤回。","b":"模型 攻擊策略是「脈衝」： 用 B, R 參數化。三個既有策略是它的特例： 既有策略 B, R --- --- patient（持續慢速） 1, ∞ whitewash（一直作惡） ∞, 0 連續攻擊 ∞, 0 或 1, 1 先行研究 Srivatsa 等（2005，TrustGuard）§2 model I 逐字寫道： \"Or it could oscillate between building and milking reputation.\" 他們的 model I 是 固定週期的方波 ，就是我們的 B, R 參數化。model II–IV（指數間隔／隨機好度／正弦漸變）我們沒掃。 Hoffman 等（2009，ACM Computing Surveys）§5.4 把它列為命名的攻擊類別 oscillation attack ，歸功 Srivatsa 2005。他們的版本含 多身分輪班 ，比我們的單一攻擊者更強。 連我們的頭條都被搶先了 撤回的宣稱 我們在 2026-08-06 正式撤回兩類宣稱： 宣稱 撤回理由 --- --- 脈衝攻擊是 新發現 Srivatsa 2005 model I 逐字描述；Hoffman 2009 列為命名類別 七個機制元件是 新穎機制 六個已有等價的先行研究 {{note:good 保留為可能新穎的部分 我們沒有把所有東西都說成舊的。保守地列了三項可能仍是新的： 1. 四道防禦同時在跑的組態 下量它。 2. 把盲區當第二軸 ，並量它與時間結構的交互作用（η² = 0.264）。 盲區文獻不路由不扣分，信譽攻防文獻沒有盲區參數。 3. slash 的 β += α+β 關閉自己赦免通道的病理。 第 2 項是交叉文獻的空白，第 3 項是一個明確的機制發現。兩個都寫在裁決文件裡。}} 掃了什麼 30 個種子 × 600 輪，每格 5 個誠實居民 + 1 個攻擊者，稽核率 0.2，評審準確率 0.7，見習期 m = 2。 1,740 個逐輪檔案、1,041,246 行。 八個實驗：E17（最佳突發長度）、E18（恢復時間）、E19（鎖定總作"},{"t":"真模型上的信任開關實驗：+8.3%，但統計上什麼都沒發生","u":"/blog/e10-paired-null.html","g":"防守軸","s":"60 個配對任務，信任層開關讓通過率從 51.67% 升到 60.00%——但 95% 區間跨 0、McNemar p=0.332、檢定力只有 0.163。同一批資料上另有一條比較有意義的結果。","b":"這是整個專題 第一個用真模型做的配對防禦實驗 ，也是我們第一次拿到「真模型上的 null 結果」。 設計 --- --- 模型 qwen3.6-35b-a3b @ 100.119.113.56:8765 題庫 EvalPlus MBPP+ v0.2.0（378 題，sha256 釘死） 任務 60 個配對任務 名冊 示範名冊， 人工植入 2 個破壞者 配對鍵 task_id = sha256 prompt + tests ，跨臂穩定 品質判定 臂外 的 compile_check t.check answer 結果 臂 通過 有效 通過率 耗時 ledger 事件 每通過呼叫 --- --- --- --- --- --- --- off 31 60 0.5167 6,837.5 s ROUTE 60、ATTEMPT 60、DELIVERED 60 1.94 on 36 60 0.6000 6,168.0 s +REVIEW 180 、AUDIT 60 1.67 第一個量錯：讀錯欄位 第二個結果變數：比較有意思 我們另外量了 派給破壞者的工作量 。這是「做壞了照拿工作」的直接指標。 派給破壞者的比例 --- --- off 20 / 60（33.3%） on 11 / 60（18.3%） 檢定方式 p --- --- 全部 60 題 0.0931 （未達 .05） 拿掉 10 個暖身任務 0.021 – 0.041 拿掉 20 個 0.021 – 0.041 拿掉 30 個 0.021 – 0.041 拿掉 35 個 0.0703 拿掉 40 個 0.2188 {{note:good 但方向和「防守很有效」的那一條一致 有趣的是：信任層對「品質」沒有可分辨差異，但對「誰拿到工作」有方向一致的影響。 而防守軸最強的結果也是同一個指標——被看見比被抓更有效， 。}} 誠實邊界 --- --- 破壞者是 人工植入 的 不是自己學會做壞事的。攻擊者能力被低估。 兩個破壞者 / 8 個居民 規模很小，生態互動幾乎不存在。 單一模型 qwen3.6-35b-a3b，沒有跨模型。 稽"},{"t":"押金設太低反而讓攻擊者賺到 235% 回報","u":"/blog/entry-cost-backfires.html","g":"防守軸","s":"14 支機制模擬裡最反直覺的一條：免費入場完全封鎖，押金 2 卻讓攻擊者的每單位成本回報率達到 2.354。我們把兩條防禦設計（外生入場費、背書連坐）整個刪掉了。","b":"2026 年 7 月 26 日，我們跑了 14 支機制模擬（E1–E9、E12–E16）來問一個很普通的問題： 要讓攻擊者不划算，應該收他多少入場費？ 答案是： 不要收。 設計 --- --- 誠實居民 5 位，每位都是真的 Ed25519 身分 + 真的事件鏈 + 真的能力卡 攻擊者 1 位 暖身 8 輪，讓生態有可背書的紀錄 總輪數 400 種子 每格 20 個（E9 為 40，E15 為 30） 稽核率 0.2（E2／E3 起 0.05） 評審準確率 0.7（作者選定，未經量測） 結果：押金越少越安全 外生押金 攻擊者得手 回報率 全擋率 --- --- --- --- stake = 0 0.00 — 100% stake = 2 5.00 2.354 0% stake = 5 3.05 0.560 — stake = 10 1.95 0.177 — stake = 20 1.90 0.092 — 為什麼會這樣 見習期：所有價值都在第一步 見習期長度 m 攻擊者得手 全擋率 --- --- --- m = 0 6.85 ± 1.80 0% m = 1 0.00 100% m = 2 0.00 100% m = 3 0.00 100% m = 5 0.00 100% m = 8 0.00 100% 一句話： 全部的防禦價值都在 m = 0 → 1 這一步。 加長見習期沒有任何增益。 背書連坐：純淨損失 連坐係數 λ 攻擊者增益 誠實者損失 --- --- --- λ = 1.0 0 0.000 λ = 0.9 0 0.691 λ = 0.7 0 0.702 λ = 0.5 0 0.702 λ = 0.3 0 0.702 三種設計的正面對決（E6）： 設計 攻擊者得手 全擋率 誠實者損失 --- --- --- --- 免費 0.00 100% 0.000 押金 5 3.05 0% — 押金 10 2.00 0% — 背書 λ=0.5 0.00 100% 0.702 面對耐心的攻擊者：三條路都一樣 E7 問的是：免費入場、面對「耐心型」攻擊者會怎樣？ 設計 攻擊者得"},{"t":"整個防禦系統唯一真正緊的約束：評審準確率","u":"/blog/reviewer-accuracy-binds.html","g":"防守軸","s":"掃了押金、見習期、生態規模、攻擊者占比、審查者誤差相關性——全部是鬆的。唯一讓攻擊開始有利可圖的格，是評審準確率掉到 0 的時候。","b":"在 裡，我們把「外生入場費」和「背書連坐」刪掉了。理由是它們不是效果較弱，而是一個主動有害、一個是純淨損失。 但那兩條路被刪掉之後， 這個系統靠什麼擋住攻擊者？ 掃了五個參數，四個是鬆的 押金 鬆。stake=0 完全封鎖，stake=2 回報率 2.354。 見習期長度 很緊但方向相反。m=0 → 6.85、0% 全擋；m≥1 → 0.00、100% 全擋。 一步到位，之後沒有任何區分度。 生態規模（E8） 完全鬆。 誠實者 2／3／5／10／20 位， 全部 0.00、100% 全擋 。 攻擊者占比（E14） 攻擊者／總數 攻擊者得手 每人回報率 全擋率 --- --- --- --- 1 / 6 2.30 0.144 5% 2 / 7 4.00 0.125 — 3 / 8 3.80 0.079 — 5 / 10 5.40 0.068 — 8 / 13 7.45 ± 1.07 0.058 0% 評審者誤差的相關性（E16） 相關係 ρ 攻擊者得手 標準差 --- --- --- 0.0（獨立） 2.40 0.58 0.3 2.30 0.95 0.6 2.50 0.67 0.9 2.45 1.07 1.0（完全一致） 2.85 1.98 唯一緊的那個：評審準確率（E12） 評審準確率 路由到攻擊者 攻擊者得手 回報率 --- --- --- --- 1.0（完美評審） 18.0 1.90 ± 0.30 0.119 0.7（我們的設定） — 2.35 — 0.5 — 2.70 — 0.3 — 4.30 0.269 0.0（無評審） 33.6 16.65 ± 12.89 1.041 acc = 0 是整個表格裡唯一「攻擊開始有利可圖」的格。 回報率 1.041 代表攻擊者賺得到錢。 而它的標準差是 12.89 ——比均值的一半還多。 這個格不只是危險，它還不可預測。 為什麼其他參數都鬆 把它們放在同一個框架裡看，防守力實際上來自三件事，而且 只有三件 ： 機制 防的是 --- --- 被看見 （信譽路由） 做壞了還拿到下一件工作 評審準確率 壞的東西被誤認為好 確定性抽樣"},{"t":"零設定四個批次：三個沒量到差別，第四個換引擎就沒了","u":"/blog/zero-config-measured.html","g":"增益軸","s":"零設定在 DABstep、本機 711 格、Colab 920 題、u274 四個批次上量。付費批次兩個模型都沒量到差別，本機批次 p=0.021 但集中在 6 題，920 題與 u274 沒量到差別，v3.7 後來量到 p=0.0028 卻換成 GGUF 就沒複製。","b":"這一篇記四個批次。四個都不好看，而且不好看的方式都不一樣——這才是重點。 先講清楚量的是什麼 零設定（zero-config）是 v0.9.0 的產品主線。它的目標不是做得多，是 裝完之後照常用 。不打契約、不加設定、不換工作流程。 它只做一件事： agent 說「我完成了」的那一刻，在同一個工作階段裡把話送回去一次。 這跟 的差別不是版本新舊。CONFORM 握著生成：每份候選都跑可見驗收、不過就重抽、最多五份、全不過就拒交。零設定不握著生成，它沒有可執行的訊號、沒有重來的權力、沒有拒交的權力。 先把這個差別放在桌上，後面四個批次的結果才讀得懂。 --- 批次一：DABstep 付費批次（2026-09-25／26） 77 題，每題每組一跑，花 3.40／4.80 美元、3,324 通。 模型 沒裝 裝了 p --- --- --- --- gemma-4-26b（主要） 50/77 （64.9%） 44/77（57.1%） 0.21 qwen3.8-27b（次要） 68/77 （88.3%） 64/77（83.1%） 0.29 照預註冊的說法，這叫 沒量到差別 。不叫「沒有效果」，也不叫「變差」。 8 次退回全部是誤報 這是這一輪最該記的事： 實際誤報率：gemma 6/37（16%）、qwen 1/64（2%）——分母是「第一次走到交件前檢查且當時答案是對的跑數」。 傷害是 0 次。 沒有任何一次把對的答案改錯。 作者在報告裡寫了一句自我評價： 花錢之前的誤報門檻只建立在 3 跑答對的真實紀錄重播上，這個門檻太薄。 3 跑。這是設計端的樣本數太小，不是統計問題。 82 個失敗裡 54 個是「沒交」 拆開失敗原因： 原因 數量 --- --- 15 回合用完沒寫答案檔 54 讀了資料但推理或解讀錯 22 標準答案算不出來（題庫標籤問題） 3 自己發明沒定義的前提 2 思考撞輸出長度上限 1 空的／格式錯 0 三分之二的失敗是「agent 被回合上限切斷時答案檔還不存在」。Vacant 的交件前檢查只在 agent 自己說做完時跑， 永遠輪不到 。 剩下的 22 個推"},{"t":"閘門把假交付砍掉四成，不是對半","u":"/blog/gate-cuts-forty-percent.html","g":"增益軸","s":"836 題、43 個區塊、0 作廢的實驗。論文的「halved」是錯的——因為兩個率用了不同的分母。這個更正讓閘門的效果從「對半」變成「大約四成」。","b":"假交付是什麼 詞 定義 --- --- 交付成功 系統實際放行， 且 保存的候選通過隱藏評估 假交付 系統放行，但候選 未通過 隱藏評估 所以「假交付率」有三種可能的口徑，每個都對，但會給出不同的數字。 R532 的資料 --- --- 模型 qwen/qwen3.8-27b Q4_K_M， 非 reasoning 任務 836 區塊 43 完成率 43 / 43 資料列 2,508 作廢 0 V/GT 指紋 199,019 項 CLEAN 收據鏈 86 條 / 3,895 筆全部驗得過 這是這個專題裡 資料品質最乾淨的一次實驗 ——0 作廢、0 V/GT 違規、86 條鏈全部驗得過。 三種口徑 臂 接受數 假交付數 假交付 / 全部 836 假交付 / 接受數 --- --- --- --- --- CONFORM 811 120 14.4% 14.8% OFF 625 211 25.2% 33.8% 修正後的宣稱 這個數字為什麼重要 與其他數字的關係 數字 值 來源 --- --- --- 假交付率（CONFORM） 14.4% （占接受 14.8%） R532 假交付率（OFF） 25.2% R532 覆蓋率（CONFORM 能放行的比例） 811 / 836 = 97.0% R532 候選池上限（r441） 82.68% R440P 殘餘可實現攻擊（generic_gauged） +2.72 pp R452 量具上界（weak_oracle） +4.35 pp R452 這次實驗的兩個修正案 AMEND1 （關於 H-MIX 的標籤）： 題庫集 H-MIX − CONFORM --- --- 1 −5.83 2 −5.19 3 −16.67 4 −1.28 5 −0.54 併庫 −3.23 pp ，區間 −5.52, −0.75 ，Holm p = 0.0101 分析器只檢查顯著性、沒有檢查方向，於是標成 EFFECTIVE。 那個標籤作廢。 只允許引用 RULED_OUT （本輪門檻：區間上界 < +2.0 pp），而且 明文禁止說「迴圈有害」 。 AMEND"},{"t":"這是成功率提升，不是 token 效率提升","u":"/blog/token-cost-ledger.html","g":"增益軸","s":"逐通重算 197 格零差異。H-MIX 對單抽一次是 2.23–2.78 倍 token，五次複印中有四次每個正確交付比閘門更貴。「同樣的上限」不等於「同樣的實際成本」。","b":"兩個容易搞混的定義 --- --- reasoning completion 的子集 ，不是另外加一次 失敗請求 核心實驗的 116 次失敗請求沒有 usage ，計為 未知 （不補 0） R460 的成本 臂 交付率 token / 題 token / 正確交付 --- --- --- --- OFF 58.33% 2,913 4,994 CONFORM 70.83% 5,805 8,195 OFF5 65.00% 15,004 23,084 H-PI 75.83% 9,448 12,459 H-OC 80.00% 7,432 9,290 H-MIX 84.17% 5,677 6,745 三個比值 比較 每題 每個正確交付 --- --- --- H-MIX vs OFF 2.23 – 2.78× 1.65 – 2.11× H-MIX vs CONFORM 0.92 – 1.56×（R460R）／1.07 – 1.69×（R529） — OFF5 vs CONFORM 2.16 – 2.85× ，而且 每次交付率都更低 — 「不多花 token」不成立 我們原本的頭條宣稱寫的是「修訂迴圈比換人重抽 多交付，且 token 不多花 」。 r1 r2 r3 r4 r5 --- --- --- --- --- --- H-MIX vs CONFORM 每題 0.92× — — — 1.56× 每個正確交付 — — — — 四次比 CONFORM 更貴 為什麼「同樣的上限」不等於「同樣的成本」 R529 分主機的發現 R529 用四個互斥題目集，橫跨 兩台 LM Studio 主機 ： 主機 HumanEval+ 結果 H-MIX token/題 CONFORM token/題 差 --- --- --- --- --- 開 reasoning（0.4.24） 兩臂都 94 / 100 4,368 2,291 +90.7% 關 reasoning（0.4.17） 54 / 56 vs 53 / 56 924 1,064 −13.2% reasoning 佔 completio"},{"t":"五次複製之後：頭條宣稱輸給了自己的穩定性規則","u":"/blog/five-replications.html","g":"增益軸","s":"R460 量到修訂迴圈比換人重抽多 13.33 個百分點，Holm p = .0112。五次同題複製之後，五次全部不顯著，0/5 通過校正，狀態降為「同號未解析」。","b":"事情的順序 2026-09-07 ：R460 的預註冊寫死四個狀態規則。 2026-09-11 ：R460 跑完（LCB v2 120 題，6 個區塊 × 20）。 臂 成功 率 --- --- --- OFF 70 / 120 58.33% CONFORM 85 / 120 70.83% OFF5 78 / 120 65.00% H-PI 91 / 120 75.83% H-OC 96 / 120 80.00% H-MIX 101 / 120 84.17% H-MIX − CONFORM：b=22、c=6、 +13.33 pp 、條件區間 4.22, 19.46 、 Holm p = .0112 → EFFECTIVE 。 2026-09-11 ：R460R 的預註冊寫死「五次同題複製」的宣稱規則。 2026-09-12 ：五次跑完。 預註冊的宣稱規則 --- --- 逐次判 五次都要過 禁止 合併 n、平均、挑一次來報 判定門檻 條件區間下界 0 且通過 Holm 校正 五次複製的結果 交付率（%）： 臂 r1 r2 r3 r4 r5 --- --- --- --- --- --- OFF 57.50 54.17 57.50 51.67 51.26 OFF5 60.83 61.67 59.17 66.67 68.64 CONFORM 71.67 72.50 75.00 70.83 70.94 H-PI 76.67 79.17 75.83 80.83 70.83 H-OC 76.67 73.33 75.00 78.33 75.00 H-MIX 77.50 76.67 75.83 73.33 74.79 H-MIX − CONFORM： r1 r2 r3 r4 r5 --- --- --- --- --- --- Δ +5.83 +4.17 +0.83 +2.50 +4.31 Holm p .6301 .9165 1.0000 .6776 .9224 95% CI −2.79, 12.89 −5.35, 12.80 −7.44, 8.89 −5.94, 10.28 −4"},{"t":"五次複印裡唯一穩定成立的：迴圈比單抽一次多 17 到 29 個百分點","u":"/blog/loop-vs-single-shot.html","g":"增益軸","s":"15 個區塊全部通過自己的 Holm 校正，差異範圍 +17.5 到 +29.2 個百分點，跨五次同題複製與四個互斥題目集。這是整個專題最硬的一條結果。","b":"比較對象的差別是整個重點 比較 結果 裁決 --- --- --- 迴圈 vs 單抽一次 （OFF） +17.5 ~ +29.2 pp ， 15/15 通過 Holm 成立 閘門 vs 單抽一次 （OFF） +14.17 ~ +19.97 pp 成立 迴圈 vs 換人重抽 （CONFORM） +0.83 ~ +5.83 pp， 0/5 通過 同號未解析 迴圈 vs 投票 （OFF5，探索量） −1.74 ~ −15.83 pp 同號未解析 15 個區塊的細節 結果 --- --- 區塊數 5 次複製 × 3 條 H 臂 = 15 通過自己 Holm 校正的區塊 15 / 15 Δ 範圍 +17.5 ~ +29.2 pp 閘門 vs 單抽一次 CONFORM − OFF，五次： r1 r2 r3 r4 r5 --- --- --- --- --- --- CONFORM 86 87 88 87 85 OFF 69 65 66 60 58 Δ +14.17 +18.33 +17.50 +19.17 +18.97 未校正 p 0.0015 — — — — 歸因：增益的主體是閘門＋重抽 把五次的資料疊起來看： 差異 --- --- 三條 H 臂 vs OFF +17.5 ~ +29.2 pp CONFORM vs OFF +14.17 ~ +19.97 pp H-MIX vs CONFORM +0.83 ~ +5.83 pp（0/5 通過） 增益的組成：回到 R460P 的離線重放 用 零 API 的重算 把候選池拆開看： g_r441 g_r356 --- --- --- 候選池上限（至少一份對） 82.68% 85.03% 早停閘門達到率 78.21% 82.99% 早停 vs 單抽 +7.82 pp ，b=14 c=0 +6.80 pp，b=10 c=0 早停 vs 五份投票 +4.47 pp，p=0.0963 +5.44 pp，p=0.0574 成本：這條宣稱附帶一個條件 R460 的每題 token： 臂 率 token/題 token/正確 --- --- --- "},{"t":"增益來自迴圈，不是來自第一輪的提示詞","u":"/blog/loop-not-prompt.html","g":"增益軸","s":"把第一輪的完整回應取出來離線重新評分：迴圈貢獻 +19.17 / +17.50 個百分點，第一輪提示詞只貢獻 +6.67 / +8.33。21 道題被迴圈救回。","b":"三種臂的第一輪 H-MIX、H-PI、H-OC 的第一輪提示詞幾乎一樣：題目原文、允許匯入的標準函式庫清單、一行「先用題目中的範例手動檢查你的函式」。 差異在 之後 發生什麼： 臂 失敗之後 --- --- H-MIX 計算失敗簽名，貼回失敗原文給同一位工作者 H-PI 原始 pi 式回饋迴圈 H-OC 計畫 → 診斷 → 自測 結果：拆成兩個效應 臂 迴圈效應 （最終 − 第一輪） 提示詞效應 （第一輪 − OFF） 被迴圈救回的題數 第一輪可見通過率 --- --- --- --- --- H-MIX +19.17 / +17.50 pp +6.67 / +8.33 pp 21 74.2% H-PI +18.33 / +15.83 pp −0.83 / +1.67 pp — 71.7% H-OC +19.17 / +18.33 pp — — — 這個設計為什麼能做到 {{note:method 三個設計讓歸因變成可能 ① 第一輪的完整回應全部落盤 （ calls.jsonl ），所以可以離線重取碼。 ② 提示詞模板逐字相同 （KS-1 不變式），所以「提示詞效應」測的就是「有迴圈的臂 vs 沒迴圈的臂」的第一輪差異。 ③ 零模型呼叫 ——所以這個歸因不受模型版本、后端負載、隨機性影響。 這三條都是 2026 年 6 月 28 日的 KS-1 結論逼出來的設計。 }} 一個必須寫出來的保留 這條結果和頭條宣稱的關係 這個設計的實際意義}} 接下來 - 迴圈 vs 重抽的完整判定： - 迴圈 vs 單抽的 15/15 格： - KS-1 是什麼、為什麼逼出這個設計："},{"t":"MDE 是 4.31 個百分點，但題庫只有 378 題","u":"/blog/mde-and-power.html","g":"增益軸","s":"閘門對多數決這個比較，我們算得出需要 491 對才能有 80% 檢定力，但題庫實際上只有 378 題。這條「同號未解析」不是還沒做完，是物理上量不出來。","b":"先算，再跑 在 R529（跨題庫）之前，我們先算了一個東西： 我們需要多少題，才能在真實效應存在時有 80% 的機率偵測到它？ --- --- MDE @ n = 371 4.31 個百分點 達到 80% 檢定力所需 約 491 對 題庫實際大小 378 題 實測結果 題庫 n Δ 統計 --- --- --- --- LCB v2 120 +6.67 pp p = 0.15 LCB v3 189 +1.59 pp 95% CI −3.17, +6.35 ， p = 0.6636 MBPP+ 乾淨複製（新 192 題） 192 +4.69 pp 95% CI −1.11, 9.42 三個區間的寬度 題庫 95% CI 半寬 --- --- --- LCB v3（n=189） −3.17, +6.35 4.76 pp MBPP+ 複製（n=192） −1.11, +9.42 5.27 pp MBPP+ 併庫（n=371） — 半寬對應 MDE 4.31 pp 同一個概念在別的實驗裡的樣子 實驗 n 檢定力 80% 需要 --- --- --- --- E10 信任開關 60 0.163 337 R460 對 +10 pp 120 0.43 – 0.63 — R529 併庫 716 （效應量太小） — 閘門 vs 多數決 371 — 491 最後一行是唯一一個「差 113 題」的情況 ——其他幾個是差好幾倍。}} 這個判斷的四個特徵 {{note:method 為什麼它是合法的「同號未解析」而不是「沒做完」 ① 量級先算過。 我們在跑之前就知道需要 491 題。 ② 差距是結構性的。 378 是題庫的上限，不是時間或資源的限制。 ③ 有替代的證據來源。 同一個機制在 候選對齊 的比較（EQ5）上是成立的： 。 ④ 區間被完整報出。 不是只報 p 值。}} {{note:warn 什麼情況下「同號未解析」是不負責任的 ① 沒有先算 MDE 就宣稱「量不出來」。 ② 沒有報區間，只報 p。 ③ 其實有辦法增加樣本（合併題庫），但沒做。 ④ 把「同號未解析」寫成「無可分辨差異」—"},{"t":"題目越難，驗收閘門越值錢","u":"/blog/harder-tasks-more-worth.html","g":"增益軸","s":"早停閘門在 MBPP+ 上多交付 7.8 個百分點，在 LiveCodeBench 難題上多交付 20.9 個百分點。而且「洩漏率」從 44 降到 11——拒交在難題上最值錢。","b":"三個維度的對照 MBPP+ LCB v1（難題） --- --- --- 題數 179 91 OFF（單抽一次）失敗率 31.8% 48.4% 閘門 vs 單抽一次 +7.82 pp +20.88 pp b / c（早停救回 / 單抽就對） 14 / 0 19 / 0 候選池上限 82.68% 75.82% 單抽一次的成功率 78.2% 45.05% 洩漏率：拒交在難題上最值錢 臂 MBPP+ 洩漏 LCB 難題洩漏 --- --- --- OFF（單抽） — 44 / 91 OFF5（五次投票） — 35 CONFORM（閘門） — 11 MBPP+ LCB 難題 --- --- --- 閘門 vs 五次投票 +4.47 pp +4.40 pp p 0.0963 0.424 閘門 vs 單抽 +7.82 pp +20.88 pp p 0.0001 < 0.0001 這是因為難題上模型更容易 自信地交出壞東西 。閘門的機制是「跑你的測試，過才交」——它在難題上仍然能判斷「這個不過」，而投票機制在五份都錯的時候只能錯。 41 個被拒交的題目 事後審計每一個被閘門拒交的題目，看五份草稿是不是真的都錯： 批次 被拒交 五份全錯 --- --- --- r447 7 7 / 7 r449b 8 8 / 8 r449c 10 10 / 10 r461 15 15 / 15 三個題庫的收斂 R445 用三個題庫集收斂（閘門 vs 單抽一次）： 題庫 n Δ 統計 每題呼叫 --- --- --- --- --- MBPP+（併庫 371） 371 +4.58 pp 95% CI +0.57, +8.04 1.51 LCB v2（難題） 120 +19.17 pp b=31 c=8， p = 0.0003 1.71 LCB v3 189 +7.94 pp b=25 c=10， p = 0.0167 1.55 R445 的 8 條事前預測： 7 中 1 失 （失誤的是區間半寬比預測大）。 這條發現的機制解釋 ② 拒絕的資訊價值。 難題上模型的假交付率更高（44 / 91 = 48.3%"},{"t":"評審閘門的誕生：執行取代意見，收據取代投票","u":"/blog/conformance-gate.html","g":"增益軸","s":"刪掉 AI 評審委員會，改成「跑客戶的驗收測資、交第一份通過的、全不通過就拒交」。三個題庫上多交付 4.58 到 19.17 個百分點，每題只花 1.5 通呼叫。","b":"規則（逐字凍結） 1. 依序生成候選。 2. 每份候選都在沙箱中執行 可見 驗收。 3. 第一份通過者即放行，並停止生成。 4. 最多五份。全部不通過則 拒交 。 5. 拒交計為失敗，分母是全部題目。 為什麼「第一份通過就停」有效 因為 選擇規則的上限是候選池裡至少一份正確的比例 。多數決也跳不出這個上限。 兩批已保存的五候選資料： 題庫集 候選池上限 五份全錯的題數 --- --- --- g_r441 82.68% 31 / 179 g_r356 85.03% 22 / 147 {{note:method 這是一個很硬的天花板 假設每份候選獨立生成，那麼「至少一份對」的機率就是上限。 再多通呼叫、任何選擇規則都突破不了它。 而閘門之所以有價值，是因為它在 上限之內 就停手——只花 1.34 通，而不是 5 通。 另一方面， 修訂 改變候選本身，所以原理上可以越過這個上限。實驗上能不能，是另一個問題。 }} 三個題庫的收斂 題庫 n 差異（vs 單抽一次） 統計量 每題呼叫 --- --- --- --- --- MBPP+（併庫 371） 371 +4.58 pp 95% CI +0.57, +8.04 1.51 LCB v2（難題） 120 +19.17 pp b=31 c=8， p = 0.0003 1.71 LCB v3 189 +7.94 pp b=25 c=10， p = 0.0167 1.55 被拒交的題目不是運氣 事後審計每一個被閘門拒交的題目，看五個草稿是不是真的都錯： 批次 被拒交題數 五份全錯 --- --- --- r447 7 7 / 7 r449b 8 8 / 8 r449c 10 10 / 10 r461 15 15 / 15 EQ5：最乾淨的一次比較 這是整個增益軸設計得最好的一個實驗—— 同一組 5 份候選、同樣 5 通呼叫 ，一個交第一份通過的，一個五份投票取多數。候選完全對齊，預算完全對齊。 階段 / 題庫 閘門成功 多數決成功 Δ 未校正 p --- --- --- --- --- r446 MBPP+ 280 / 371 26"},{"t":"兩個解釋被自己的實驗排除之後，機制才有地方改","u":"/blog/hypotheses-excluded.html","g":"增益軸","s":"「模型太強」和「題目太簡單」是兩個人類提出的解釋。兩次實驗把兩個都排除了，評審機制才被迫改設計——改的方向是換裁判，不是換評審模型。","b":"情境 ON vs OFF5：75.25% vs 77.23%，差 −1.98 pp ，p = 0.7905。 H-A：天花板假說（人類於 2026-09-01 提出） qwen3.6-35b 太強了。 所以每個模型都做對，機制沒機會發揮。 換成弱一點的模型就會看到增益。 實驗（R440N / E1） --- --- 設計 單一模型 gemma-4-12b，179 題 稽核 獨立稽核逐列重算， 與 R516 完全一致 稽核憑證 rows.jsonl 525 行，sha 440d973c ；calls 1,986，sha 3d24b73d 臂 n 通過 失敗率 --- --- --- --- OFF 179 122 31.8% （Wilson 25.5, 39.0 ） ON 167（+12 void = 6.7%） 122 26.9% OFF5 179 132 26.3% 比較 差異 統計 --- --- --- ON vs OFF5 （等預算） −0.60 pp b=11 c=12， p = 1.0000 ON vs OFF +5.99 pp b=17 c=7，p = 0.0639 OFF5 vs OFF +5.59 pp b=12 c=2，p = 0.0129 評審 grounded lift +4.19 pp 95% 0.00, +8.58 H-A 排除。 H-B：難度假說（人類於 2026-09-01 提出） MBPP+ 對現代模型太簡單了。 換成有日期戳的比賽難題（LiveCodeBench）就會看到增益。 實驗（R440T / E3） --- --- 設計 LCB v1 的 91 題 medium + hard，gemma-only，種子 g-r442-lcb 臂 n 通過 失敗率 交付 洩漏 每題呼叫 --- --- --- --- --- --- --- OFF 91 47 48.4% 38.4, 58.5 91 44 1.00 ON 87（4 void = 4.4%） 58 33.3% 69（79.3% 覆蓋） 11 5.09 OFF5 91 56 38."},{"t":"評審追蹤的是題目難度，不是答案對錯","u":"/blog/reviewer-tracks-difficulty.html","g":"增益軸","s":"同一個評審層，在 MBPP+ 上近乎一律判通過（0.305 錯誤率），在 LiveCodeBench 難題上近乎一律判不通過（0.46 錯誤率）。它跟著全域性質走，不是跟著這份答案走。","b":"兩個題庫，同一個評審 MBPP+ LCB v1（medium + hard） --- --- --- 題數 179 91 OFF 臂失敗率 31.8% 48.4% 初稿實際錯誤率 0.305 0.460 評審的原始 FAIL 主張 少數（ 近乎一律 PASS ） 234 / 261 = 89.7% （近乎一律 FAIL） 評審層 − 零智慧基線 −2.99 pp +0.77 pp 審計過程中的意外 我們在查 FAIL 主張的時候，發現了大量「FAIL 主張被丟棄」： --- --- round346 的原始 FAIL 主張率 1.2% – 25.8% 其中被判定為 outside_input_contract 而丟棄 73.6% – 100% 另一個觀察：集體盲區 三次 run 併起來，在 49 個真的會失敗的任務上： --- --- 總任務數 275 真負例（TN = 0 的部分） 0 3 個評審代理投的票 147 其中說「pass」 145（98.6%） 曾經投不通過的任務 2 / 49 （而兩次都被多數壓過） {{note:warn 評審層在會錯的題目上也是一致地錯 275 個任務裡 沒有任何一個真負例 。在 49 個真的會失敗的任務上，三個評審代理投了 147 票， 145 票說「通過」 。 這與 指向同一件事： 同一族模型的評審者之間高度相關，而且相關性集中在大家都會失敗的題目上。 }} 三次 run 的一致結果 R438 的分析與兩個後續 run： run 評審準確率 零智慧基線 差距 --- --- --- --- R438（179 題） 0.7552 0.7522 +0.29 pp R440N（179 題，gemma-only） +4.19 pp（grounded） — 95% 0.00, +8.58 R440T（91 題，LCB hard） — — +0.77 pp ，95% −19.16, +11.11 這條結論怎麼導致設計改變 一個反面測試 R440P 做了一個很乾淨的檢驗： 用零 API 的離線重放，把 895 個候選（179 題 × 5 份）全"},{"t":"「隱藏測資是無損的」這句話在構造上就是空的","u":"/blog/v-gt-is-not-lossless.html","g":"增益軸","s":"R440P 的一條事前判準在九天後被推翻：LCB 的 91/91 隱藏測資都是可見測資的超集，所以「隱藏會過但可見不過」在構造上不可能發生。這個判準的檢定力是零。","b":"原本的判準 我們的閘門只用可見測資決定放行。所以必須驗證一件事： 不會出現「隱藏測資會過、但可見驗收沒過」的候選。 如果會，那表示可見測資漏掉了某些要求，閘門會放行壞的東西。 六個資料集的結果 資料集 候選數 隱藏過但可見不過 --- --- --- g_r441 （MBPP+） 895 0 g_r356 （MBPP+ 池） 735 0 g_r443 （LCB v1 重放） 455 0 g_r447 （LCB v2 真跑） 120 0 g_r461 （LCB v3 真跑） 189 0 合計 2,394 0 但 R440Q 找到了為什麼是 0 所以「可見篩選是無損的」這條判準，在這兩個題庫上檢定力是零。 0/2394 不是「我們驗證了它無損」，是「這個題庫的定義保證它成立」。 三個更嚴格的口徑 R440Q 把它升級成主結論： 如果需求不能被編譯成可執行的測試資，這個機制沒有免費的裁判。它會退化成「問一個模型」——而那正是量出來效果最差的東西。 {{note:good 這是這個專題最有引用價值的一句 它把「執行取代意見」這個設計決策的 適用邊界 寫清楚了： - 需求可編譯成測試 → 執行是個免費的、完美的裁判。閘門有效。 - 需求不能編譯成測試 → 沒有裁判 。此時唯一剩下的選項就是問模型，而我們量過那條路： 所以整個機制的價值上限，由「需求可形式化的程度」決定。 }} 這在文獻裡叫什麼 這是 Barr 等人（2015）回顧的 測試判定問題 （test oracle problem）在本系統裡的具體形式： 產生測試輸入與執行程式， 不等於 知道輸出是否正確。 大型語言模型讓產生候選程式變得極其便宜， 卻沒有消除判定問題 。更麻煩的是，以模型檢查模型並不能自動補上判定依據。 這條結論的實際後果 誠實邊界 接下來 - 這個前提怎麼變成閘門： - 問模型那條路為什麼輸： - 預註冊怎麼被自己的下一個實驗推翻："},{"t":"我們的 AI 評審委員會，輸給了「生成五次取多數」","u":"/blog/committee-loses-to-majority.html","g":"增益軸","s":"同樣 5 通呼叫，同一批題目，三位 AI 評審加一次修訂組成的委員會，輸給「生成五次取多數決」。差異的點估計是 −1.98 個百分點，而修掉一個無關的 bug 之後變成 +2.97。","b":"2026 年 8 月 30 日，我們做了整個專題最關鍵的一個實驗。結果是 我們設計的核心機制輸了 。 背景：委員會式設計 我們的架構本來是這樣的： 問題是：這整套東西的 裁判是 AI 。而我們的對照組是最無腦的那種： 同一題生成五次，五份投票取多數 。 在 相同呼叫預算 下（都是 5 通），哪個交付率比較高？ 設計 --- --- 題庫 MBPP+（EvalPlus v0.2.0） 任務數 179 題，6 個區塊 三臂 OFF （單抽一次）／ ON （完整機制）／ OFF5 （五次取多數） 判準凍結 2026-08-24 與 2026-08-28 統計 配對 McNemar 結果 判準 裁決 --- --- ① 量具有訊號 ✓ 26.44% （Wilson 20.4, 33.4 ） ② 三臂有可分辨差異 量不到 ③ ON 贏 OFF5 ✓ 答案是沒有 配對結果（n = 101，三臂皆非 void）： 口徑 ON OFF5 差 b c p --- --- --- --- --- --- --- 原始 75.25% 77.23% −1.98 pp 6 8 0.7905 修掉 typing 白名單 bug 84.16% 81.19% +2.97 pp 5 2 0.4531 為什麼會輸：機制分析 指標 數值 --- --- 評審票準確率 0.7552 「全部判通過」零智慧基線 0.7522 差距 +0.29 個百分點 單輪修訂「沒有機會修正」 93 / 113 盲目採用修訂版後的隱藏通過率 82.3% → 78.8%（−3.5 pp） 修訂帶來的真實改善 1 / 113 「送審委員會」這個設計是怎麼被刪掉的 2026-09-03，R440P。專案文件的說法是： 執行取代意見，收據取代投票。 刪掉評審委員會與單輪修訂之後： 每題省下 3 通評審 + 1 通修訂。 剩下的是客戶自己的可執行驗收閘門。 同時撤回的資料品質宣稱 「決定性 run 是第一個乾淨的完整資料集」→ 改成「 無已知 bug 汙染、配對子集 n = 101 」。 臂 infra_void --- --- ON 6"},{"t":"量測工具自己量錯了七次，每一次的方向都對自己不利","u":"/blog/measuring-measurement-errors.html","g":"紀錄與多方執行","s":"互動式 TUI 的 A/B harness 有七個量測錯誤，外加兩條只在程式碼註解裡的。每一個都在真 pi 上抓到，而且每一個的方向都是讓數字長得比實際好看——8 個捏造的結果、5 格提示從未送出。","b":"這一篇記的是量測工具自己的錯。 commit b0eb0680 的第一句寫得很清楚： 這不是排版修飾。每一條都在真 pi 0.87.1 的 TUI 上抓到，而且每一條的方向都是讓 harness 對自己不利或對 agent 有利，也就是說 這些數字原本會長得比實際好看 。 「方向一致」是關鍵。如果七個錯誤的方向是隨機的，那是雜訊；如果全部同向，那是系統性的——表示這個 harness 有結構性的問題。 --- 為什麼互動式 TUI 特別難量 互動式介面沒有 API 要打。要量的東西（閘門橫幅出現在哪裡、模型跑到第幾回合、settle 了沒）全部要從畫面上刮出來。 量法是 tmux 偽終端機：開一個 pane 跑 agent，等它停下來， capture-pane 把畫面抓下來，用正則從裡面找裁決。 這就是七個錯的來源—— 每一個都在「怎麼從畫面讀出真相」這一層 。 --- 錯誤 1：arm A 跑到別的模型去了 要量「沒裝 Vacant 的 agent 表現如何」，就要有一個 arm 完全沒裝。問題是：模型連線是從設定來的，不是從啟動參數來的。 做法是把 models.json 複製一份到測試環境。 但這不會讓 pi 選那個 provider。 沒帶啟動釘選時，pi 用自己的預設。 實測落到 openrouter/moonshotai/kimi-k2.6 ——不同模型、不同主機，而且 沒有一個 byte 經過這一跑的 proxy 。 後果是： arm A 把「模型失敗」記成「agent 失敗」。 整個 A 臂的每一格都在量錯的東西。 程式碼註解寫： ⚠ THIS IS THE WHOLE A/B, AND I GOT IT WRONG THE FIRST TIME. 修法：每格記錄 seen_model ，報告可以拒絕比較不同模型的格（ INVALID 欄位）。 有意思的是， repo 自己在 2026-09-22 就踩過同一個洞 ，寫在 gateshim.py:578-582 。不是新問題，是沒人把兩邊對起來。 --- 錯誤 2：settle 認錯信號 原規則：B/C"},{"t":"攻擊者用自己的金鑰重鑄整條鏈，收據檢視器照樣判通過","u":"/blog/offline-viewer-limit.html","g":"紀錄與多方執行","s":"收據鏈 194 條、9,841 筆全部驗得過。但離線單檔檢視器有個結構性極限：整條鏈被重鑄一次，它仍然通過。這不是漏洞，是簽章的定義邊界。","b":"鏈驗證抓不到的三件事 抓不到 為什麼 --- --- 截斷 鏈沒有可信的鏈頭。砍掉尾巴一樣通過。 分叉 同一個人對同一事件簽兩條不同內容的鏈，兩條都驗得過。 漏記 從來沒被寫下的事件，收據無法宣稱自己是其中一筆。 R455：離線檢視器的極限 我們做了一個 零外部資源、零網路請求 的單檔離線檢視器，把收據內嵌在檔案裡， file:// 直接開就跑得完全鏈驗證： 檔案 大小 --- --- exhibit/receipts/receipt_viewer.html 0.3 MB exhibit/receipts/receipt_viewer_multiparty.html 4.5 MB 然後攻擊它： 為什麼這不是一個可以修掉的漏洞 這一句話在多方執行那裡有一個更尖銳的版本： 簽章指認的是金鑰，不是主體。金鑰的多數不等於獨立主體的多數。 緩解做法 為什麼我們選擇把它講清楚而不是修掉 這件事對「可究責」這個定義的意義 我們的定義是： 特定金鑰所簽署之事件的可追溯與可核驗性。 }} {{note:good 注意「特定金鑰」這三個字 如果把「特定金鑰」刪掉，變成「事件的」，那 R455 的攻擊就是致命的。 而我們的定義 從一開始就寫了「特定金鑰」 。所以 R455 沒有推翻我們的定義——它 印證 了定義的精確。 這就是為什麼 那頁要花那麼多篇幅講「簽章只能證明持有私鑰的某一方簽了這筆紀錄」： 那不是免责声明，是定義的一部分。 }} 誠實邊界 接下來 - 指名機制與它的數學上界： - 收據的五層語彙與等級： - 「可究責」為什麼不等於「可信」："},{"t":"說謊的金鑰 273 次全部被指名，誠實者 0 次被誣告","u":"/blog/named-dissent.html","g":"紀錄與多方執行","s":"k=3、1 把受控的說謊金鑰、5,519 條證言。說謊格指名 273/273，誠實金鑰被誣告 0/1,840，矛盾簽章格裁決正確 58/58。這個數字有多嚴格，取決於你知不知道 ⌊(k−1)/2⌋ 那條數學上界。","b":"三件事 1. 執行與簽證 ：每位執行者用自己的渲染器與沙箱執行驗收，把任務、候選、套件與渲染結果的雜湊，以及可見驗收結果，簽入自己的事件鏈。 2. 合票 ：先檢查套件是否通過量具，再 逐筆驗證證言 。同一執行者對同一事件簽出兩筆內容不同的證言 → 證明級過錯 ，作廢。 3. 表決與指名 ：多數決定。票數不足法定人數或平手 → 未決 ，出貨規則將未決視為不通過。少數方 被具名列出 ，附事件雜湊與簽章。 R454 的結果 k = 3，1 把受控的說謊金鑰（K3）： 檢查 結果 --- --- 說謊格指名 K3 273 / 273 誠實金鑰被誣告 0 / 1,840 矛盾簽章格裁決正確 58 / 58 證言總數 5,519 條 簽章驗證失敗 0 跨機器一致性（R453） --- --- 規模 368 任務 × 5 候選 = 1,840 個候選 環境 macOS + Linux（k = 2） 可見驗收標籤一致 1,840 / 1,840 收據鏈 兩條都驗得過 Windows 排除 （沙箱建不起來） 模擬掃描：兩個反直覺的結果 200 格（r446 371 題 × 5 候選、r443 91 題 × 5，k ∈ {1,3,5,7}，腐化比例 0–70%，五種攻擊）： ① 加機器買不到任何東西 條件 交付率 --- --- 固定腐化比例下，k 從 1 到 7 一字不變 串謀 67.39% 破壞 0% ② k = 3 缺一票就不指名 --- --- k = 3，法定人數 = 2，缺席或拒交一票 1-1 平手 → 未決、不指名 這是一個刻意的設計選擇。它的意思是： 指名預設的是「誠實的多數在場」，不是「簽章存在」。 數學上界 過半數串通時，結果 反轉 ，誠實者被指名，而且 機制本身不知道自己落在門檻的哪一邊 。 掃描批次 過半後的誣告率 --- --- r446（371 題 × 5） 0.175 r443（91 題 × 5） 0.374 這個機制解決不了什麼 驗收套件本身腐化。 若套件被換成「載入即通過」： 每一票都是誠實的、每一條鏈都驗得過，系統仍在交付垃圾。 階段 結果 --- --"},{"t":"把驗收套件從程式變成資料，之後交付率從掉 75% 變成掉 2.7%","u":"/blog/suite-as-data.html","g":"紀錄與多方執行","s":"攻擊者寫了一個有狀態的量具變體，量具兩方向都滿分，交付率卻掉了 75 個百分點。修法是讓套件只剩三樣東西：方言、進入點名稱、輸入—期望值的字面值清單。","b":"問題：量具可以被餵成廢的 2026-09-06，R451。 階段 結果 --- --- 套件綁進 commit， 平凡套件 （載得進就算過） 371 / 371 全拒 —— 正常 有狀態的量具變體 交付率掉 75.20 pp 量具的回報 ok （兩個方向都滿分） 攻擊的機制 原來的套件是 一段被信任的程式碼 。它可以： 1. 讀取外部狀態。 2. 在被呼叫時改變自己或環境。 3. 只對「已知錯誤樣本」表現正確。 多方執行沒有防禦這個——因為 每一票都是誠實的、每一條鏈都驗得過 。 修法：SuiteSpec 把套件限制成 三樣東西 ： --- --- 1. 方言 Python / 特定版本 2. 進入點名稱 solve 3. 「輸入—期望值」的字面值清單 純資料 執行器 只跑自己的確定性渲染器 ，從這份資料產生測試碼。渲染結果的雜湊 可以跨機器比對 。 效果 攻擊 修補前 修補後 --- --- --- exec 走私 （候選程式在執行期偷換測試碼） 368 / 371 0 / 371 generic_gauged（殘餘） — +2.72 pp weak_oracle（事後上界） — +4.35 pp 有意義的範圍 — 只在 MBPP+ 上 為什麼殘餘的 +2.72 個百分點消不掉 {{note:limit 這是量具的定義邊界 量具檢查能驗的是： 參考解通過 、 已知錯誤樣本被擋下 。 它不能驗的是： 這份測資涵蓋了需求 。一個「弱量具」（weak oracle）可以通過所有已知檢查，同時漏掉大部分真正的需求。 所以： 量具類型 殘餘可實現攻擊 意義 --- --- --- generic_gauged +2.72 pp 有量具時，實際可實現的殘餘 weak_oracle +4.35 pp 弱量具的事後上界 +2.72 個百分點就是「量具檢查的縫」的寬度。 而它是單邊的——所以 通過量具檢查不等於符合需求 。 這也是我們在 R532 看到 14.4% 假交付率的原因之一。 迴歸 --- --- 測試 428 passed / 1 skipped （新增 25 條判準） 釘"},{"t":"定義改了五次：從「責任結構」到「沒有收據的交付不收」","u":"/blog/definition-five-versions.html","g":"專題歷程","s":"九個月裡「Vacant 是什麼」被改寫了五次，每一次都把話說得更小：從「代理自願採用的責任結構」到「沒有可驗證收據的交付不收」。這個收縮過程本身就是這個專題的貢獻。","b":"五個版本 時間 定義 為什麼改 --- --- --- 2026 年 4–5 月 一種「 居民形式 」：代理自願採用的責任結構，具金鑰、紀錄與公開信譽；由網路自己裁定，沒有中央裁判 起點。理論文件 V3–V5 經兩輪對抗審查，38 條攻擊向量逐一標記為防止／偵測／提高成本 2026 年 6 月 「 可持久、可進化、可究責的 subagent 」，繼而收斂為代理可按需取用的能力層，以驗證—修正為核心 共識會議的 63 個代理的批判 抓到虛構引用與未實作的機制；「每個代理一個實例」的算力成本過高 2026 年 7 月 居民＝ 身體 （凍結的模型）＋ 記憶 （事件流）；責任住在被審過的記憶裡 KS-1 推翻單一代理的責任假說；獨立審查判定「可究責性不等於信任」 2026 年 8 月 讓「誰做了什麼、誰檢查過」成為 事後可重驗的紀錄 ，並讓做壞事的人少拿到工作 8 月 17 日兩個修正： 咎責的主體 、 防守不等於增益 2026 年 9 月 收件口 ：沒有可驗證收據的交付不被接受；以可執行驗收閘門為主力，以行程結束為交付點 委員會式設計在等預算下贏不過多數決；驗收閘門成為增益主體 每一版被殺掉的理由 第一版 → 第二版：63 個代理 2026-06-11 至 06-13 的共識會議。63 個代理的批判抓到： - 虛構引用。 例如 I-CALM 的「幻覺 −50%、正確率 +2–8%」 不在原文裡 。 - 未實作的機制。 五月理論裡有幾個概念在程式碼中找不到對應實作。 - 算力成本。 「每個代理一個實例」的設計撐不住。 第二版 → 第三版：KS-1 一句話的版本： 在凍結的語言模型上，「把後果變真」和「在提示裡把後果寫得更像真」是 同一個介入 。 這直接殺掉「責任住在單一代理的記憶裡」這個設計——因為在凍結模型上，那只是提示工程。 第三版 → 第四版：獨立審查 2026-07-26。裁決： 這套架構目前提高的是可究責性，不是信任。 三個必要條件， 兩個不成立 ： 必要條件 狀態 證據 --- --- --- ① 訊號不能被廉價偽造 不成立 冒名繼承信譽：0.50 → 0.7417"},{"t":"KS-1：在凍結的模型上，「把後果寫得像真」和「把後果變真」是同一件事","u":"/blog/ks-one.html","g":"專題歷程","s":"2026 年 6 月 28 日，兩個主驗證設計被 17 個與 10 個代理的對抗工作流殺掉。殺掉它們的事實，後來變成整個專題的方法論核心。","b":"被殺的兩個設計 2026-06-27/28 的主驗證，目的是測「責任結構能不能改變代理的行為」。 --- --- 版本一 「主驗證重設計：責任結構在衰減任務」 版本二 「主驗證定版 v2（post-adversarial）」 對抗工作流 17 個代理 / 10 個代理 結果 兩個都被殺 voids 作為設計史保留 ——不是刪掉，是標成「這是設計歷史，不是有效機制」。 殺掉它們的那句話 為什麼這是致命的 KS-1 成立的邏輯很簡單： 1. 模型是 凍結的 （沒有微調、沒有學習）。 2. 唯一能影響它的輸入通道是 提示詞 。 3. 所以任何「機制」要影響行為， 必須 透過提示詞。 4. 因此「機制」和「比較好的提示詞」在這個設定下 不可區分 。 這一條怎麼變成設計約束 KS-1 後來變成程式裡的 兩條可執行防呆 ： Agrawal 等（2025）為什麼讓它變得必要 它怎麼影響了後來的每一個實驗 {{note:good 三個具體的後果 ① 增益軸的所有比較都強制逐字相同的提示模板。 R437 的三臂（OFF／ON／OFF5）prompt 模板逐字相同，ON 與 OFF5 的差異只能來自機制。 ② 記憶三臂（E11）的設計 ：M0（不注入）、M1（注入最近 k 則原文）、M2（蒸餾成教訓）。三個臂的 差異是記憶的來源，不是記憶的措辭 。 結果是 M0 8/12、M1 8/12、M2 8/12—— 三個臂完全一樣 ，原文寫著「不足以支撐任何效果宣稱」。 ③ D5 歸因分析成為可能。 第 3 點是 KS-1 最大的回報。因為第一輪的 完整回應全部落盤 ，而且提示模板逐字相同，所以可以把第一輪取出來離線重新評分——於是能分開「迴圈效應」（+19 個百分點）與「提示詞效應」（+6 到 +8）。}} 同一輪抓到的四處引用錯誤 {{note:warn 一個會對抗式複驗自己主張的專題，應該在自己的引用裡找到錯 ① I-CALM 的「幻覺 −50%、正確率 +2–8%」 不在原文裡 。 ② Trust Over Fear （FEAR 框架）在基線上 無效 。 ③ 2510.08624 是 20"}]}
