說明: 本文由 AI(Claude)根據我的初始筆記與想法完成。
上一篇〈唯一一道等人的閘〉的結尾留了一句話:我沒辦法證明模型守得住那八段,所以下一步不是再加規則,而是去量它到底守了多少。
這篇就是量了之後的心得。先講結論:打分不難,難的是決定分母。 我改了三次分母,分數從 11% 一路升到 24%,而模型的行為一次都沒變。
每一條規則都有一個可以在逐字稿裡找到的痕跡:閘門的 block 寫出來了沒、審查的判決那一行有沒有出現、測試跑了之後回傳的是不是 error。所以量法就是——把所有 session 的逐字稿撈出來,切成一段一段,每段問一次「這條規則該在這裡發生嗎?發生了嗎?」
分子是「發生了」的段數,分母是「該發生」的段數。分子幾乎不會出錯,因為痕跡就是痕跡。所有的坑都在分母。
最早的版本把每一個會動手的段落都算進「該審查」的分母裡。結果一看,有 163 段裡面只跑了 git commit、mkdir、install.sh、tee 這類東西——它們佔分母的三成,合規率 1%。
當然是 1%。這些段落沒有作品可審,審查的規則本來就不該在這裡發生。把它們拿掉之後,合規率從 11% 變成 15%。
拿掉雜訊之後還是有東西不對勁。390 個「欠審查」的段落裡有 58 個,判決那一行明明在段落裡,只是不在最後一次編輯之後。
追下去發現是段落的邊界切錯了。兩件相接的任務被折成同一段:第一件做完、審查了、判決寫了,接著第二件開始編輯,沒審查就結束。從那一整段來看,最後一次編輯之後沒有判決,所以判失分。
但這個讀數是整個反過來的:審查過的第一件被扣了分,沒審查的第二件躲在同一段裡,完全沒被計到。
改法是「判決一寫下,這一段就關掉」。之後合規率從 15% 變成 24%。
把這三個數字排在一起:
| 分母的版本 | 合規率 | 模型行為 |
|---|---|---|
| 含純指令段落 | 11% | — |
| 拿掉純指令段落 | 15% | 沒變 |
| 判決一寫下就關段 | 24% | 還是沒變 |
每一次都是分母變得更真,不是紀律變得更好。這件事是整篇文章的骨:如果你看到一個「agent 合規率」的數字,先問它的分母是誰、什麼時候改過。 一個沒有分母歷史的分數,不能拿來跟上個月比。
第二類坑跟分母無關,跟「誰給誰打分」有關。
規則是這樣寫的:審查有發現就先修,修完才能寫完工報告,報告的最後一行寫 Compliance Review: PASS。這條規則本身沒錯。但如果量法去讀的是那一行,它只可能是 100%——因為寫那行的正是被審查的那個主線,而主線永遠會等到自己覺得過了才寫。
所以判決只能讀審查者自己的逐字稿:那個被派出去、唯讀、跟主線沒有共同記憶的 agent 到底說了什麼。主線的那一行是宣稱,審查者的紀錄才是證據。
同一個陷阱換了個樣子出現在閘門的接受率上。閘門停下來等人時,使用者是從幾個選項裡挑一個回答。如果「挑了一個」一律算成「接受了計畫」,那分母裡就有十分之一會結構性地卡在 100%,不管計畫寫得多爛。
我把判定分成兩層。結構性的判定只讀 tool_result 的 error 旗標,完全不解析輸出字串——所以它不會被格式改壞。聽起來很可靠。
然後上一篇那個坑回來了,這次帶著數字:
flutter analyze 2>&1 | tail -6
沒有 set -o pipefail,shell 回報的是 tail 的離開狀態。從逐字稿看,99% 被 pipe 過的 lint 執行都回報乾淨,不管 linter 抓到什麼。這些不能算通過。我把它們另立一類叫「無法量測」,印在那一列的下方,兩邊都不計。
同一列還挖出幾個小的:
command -v 探測混進分母,每一次都「失敗」,只因為那個工具不在機器上。tsc,那 grep -n tsc file 也會被當成一次型別檢查,還拿 grep 的離開狀態捏造出一次通過。結構性的意思是「不靠模型判讀」,不是「不會錯」。
第三類坑是:量法遇到它不確定的事情時,怎麼辦。我的答案是兩邊都不計,另外記一筆。
abandoned。沉默不是對計畫的判決。丟掉資料很痛,但一個假設錯了的歸屬,會讓整列的數字往錯的方向偏,而且你看不出來。
前面說判定分兩層:結構性讀離開狀態,啟發式讓模型讀一段逐字稿判斷意圖(按 session 與回合快取,不重複問)。
這兩層的可信度差很多,所以標題數字分成兩個報,不用一個平均數假裝確定。另外按模型切分——Opus、Sonnet、Fable 各一欄——因為「模型會忘規則」這件事本來就跟模型有關,混在一起就看不到差異了。

儀表板在 2026-08-31 的樣子。每一列下方的小字,就是被排除在分母之外的東西;合規審查那一列在本文寫成時已走到 37%。
三件事要先說:
想知道 agent 有沒有守規矩,先別看分數。先問三件事:這個分數的分母是誰、誰在給誰打分、不知道的時候它怎麼辦。三個問題都答得出來,那個數字才開始有意義。