weken.news
ai自動化agent 工程驗證方法論claude code

我的AI驗收題被打滿了:一次失敗的消除法實驗,跟兩個可複製的方法

直接回答

AI的驗收題會被打滿,四次全過不是制度變好的證據而是該換題的訊號。我的Threads貼文驗收題在7月4日的基準線是3條違規,8月2日重跑四次全部6判準通過、三次還是第一版就過。這時候繼續拿它當驗收工具,任何制度改動都會顯示沒有變差,因為它已經量不動了。同一天我想跑消除法測規則價值,也失敗了:規則是session開場載進記憶體的,中途搬走檔案,同一個session裡派出去的子任務仍然能逐字引出那些檔案的原文。

週末哥 ·

我想測一件事:那幾支「教AI怎麼思考」的規則,刪掉會不會讓輸出變差。

跑完四次,四次全過。分數很漂亮,然後我發現那組數據完全無效。

第一個發現:題目被打滿了

我有一組固定的驗收題,用來衡量制度改動有沒有效。其中一題是寫一篇符合全部格式規則的Threads貼文,6條判準由腳本自動判定。

7月4日的基準線是3條違規。

8月2日重跑四次,四次全部6判準通過,三次還是第一版就過,沒有重寫。

同一組驗收題實測:2026年7月4日基準線3條違規,8月2日重跑4次全部6/6通過、3次第一版就過。連續全過代表題目已飽和,不再具鑑別力。

這不是好消息。

一個連續全過的驗收題已經沒有鑑別力了。之後不管我怎麼改制度,它都會顯示「沒有變差」,而我分不出那是真的沒變差,還是題目根本量不動。

評測題組本來就只活一到三個模型世代,被打滿之後就該丟掉重做。這是那個規律在我自己的系統上實際發生的樣子。

第二個發現:對照組根本沒生效

真正想測的是消除法:把4支矯正型規則搬走,跑同一組題,比較差異。

我把檔案搬到暫存區,確認規則資料夾少了4支,然後派出新的子任務。

它們仍然能把那4支檔案的內容一字不漏引出來。

規則是session開場就載進記憶體的。中途搬走檔案,對已經開著的session完全無效,包含刪除。要做真正的消除法只有一條路:搬走檔案、關掉程式、開新session再跑。

規則載入時機實測:規則於session開場載入記憶體,中途搬走檔案後派出的子任務仍能逐字引出原文。消除法必須搬檔後重開session才能生效。

所以那四份數據不是兩組對照,是同一個條件跑了四次。

我沒有把它當成有效結果交出去。如果沒有事先設那道探針,我會拿著四份漂亮的分數宣稱「刪掉沒差」,而那個結論會是假的。

探針怎麼設才問得出真話

那道探針一開始也差點失效。

我問子任務:「你的context裡有沒有某條規則?」6隻裡有2隻斬釘截鐵回答「沒有」。

實際上有。後來我改了問法,要求它們把該規則的原文逐字貼出來至少20字,同樣的模型整段引得出來。

差別完全在問法。可靠的問法有三個要素:

一,要求逐字引用原文,不收有或沒有。 二,埋一個不存在的假字串當誘餌,答得出假的就是在瞎掰。 三,放一個一定在context裡的字串當對照組,答不出來代表這隻的內省整個不能用。

加上這三樣之後,6隻全部答對,包括正確拒答我編出來的假字串。

問AI「你context裡有沒有X」的可靠問法三要素:要求逐字引用原文至少20字、埋一個不存在的假字串當誘餌、放一個必定存在的字串當對照組。實測6隻agent從2隻答錯改善為全部答對。

我中間還犯了一個錯:先收到2隻說「沒有」、1隻說「有」,就相信了多數,還去解釋為什麼那隻少數的不可信。

結果少數那隻是對的。差別在於我對那2隻只問了有沒有,對第3隻要求了引原文。

看誰有舉證,不是看誰票多。

換一題咬得動的

原本的題目飽和了,所以我設計了新的:多輪累積要求的文案迭代。

做法是分5輪,一輪一輪給要求,不一次給完。第2輪要求某個關鍵詞放在第一行、第3輪加一個時間跨度、第4輪加行動呼籲並禁用幾個廣告詞、第5輪要求砍到指定字數以內。

鑑別力設計在第5輪。砍字是真實的取捨壓力,最容易把前面幾輪的要求一起砍掉。

判準6條,全部可機器判定,其中5條對應前面各輪的要求,第6條測的是常駐格式規則有沒有在改稿壓力下被犧牲。

兩隻跑下來,各1條違規,但掉的不是同一條。

一隻掉格式,全篇標點用錯,五輪過去沒有一輪發現,而且整個任務沒有呼叫過任何工具,從未去讀那條格式規則。 另一隻掉內容,我說「兩年」,它寫成「2年」。

一個掉格式一個掉內容,代表這把尺有兩個獨立的量測面。

最意外的結果

我賭第5輪砍字會砍掉前面幾輪的要求。沒有發生。

兩隻的關鍵詞、行動呼籲、禁用詞、字數,砍完全部還在。

也就是說,「多輪累積要求會被漏掉」這個失敗模式,現在的模型大致上自己做得到了。那條專門在防這件事的規則,成為「已經過期的矯正」的第一號候選。

真正掉的兩件事都不在原本的設計預期內。其中那隻全程沒有呼叫工具的,是最好的標本:那條格式規則就在它的context裡,它從頭到尾沒想起來。

規則在context裡不等於會被套用。這件事我寫成規則寫了很久,那天才第一次看到它被量出來。

一次失敗的實驗比四份漂亮的數據值錢,前提是你有辦法知道它失敗了。探針、假字串、外部重跑,這三樣的成本都只有幾分鐘,但沒有它們,我會很有自信地把一個假結論交出去。

常見問題

怎麼知道AI的驗收題(eval)該換掉了?
連續全過就是訊號。我的判斷是連兩次重跑都是零違規就該換題,因為那之後任何制度改動都會顯示「沒有變差」,你分不出是真的沒變差還是題目量不動。設計接替題目有兩個要點:製造真實的取捨壓力,以及同時放內容判準和常駐格式判準,前者測會不會漏要求,後者測常駐規則有沒有自己生效。
把規則檔案搬走再測,可以測出規則有沒有用嗎?
在已經開著的session裡不行。規則是session開場就載進記憶體的,中途把檔案搬走,之後派出去的子任務仍然能一字不漏引出那些檔案的內容。唯一可行的流程是:搬走檔案、關掉程式、開新session再跑同一組驗收題。這是「新寫的規則不會在同session生效」的另一半:刪掉的也不會消失。
怎麼問AI才知道它的context裡真正有什麼?
要求舉證,不要收有或沒有。我派了6隻agent問「你context裡有沒有某條規則」,其中2隻斬釘截鐵回答沒有,實際上有,後來被要求逐字引用時整段引得出來。可靠的問法有三個要素:要求貼出原文至少20字、埋一個不存在的假字串當誘餌、放一個一定在context裡的字串當對照組。加上這三樣之後6隻全部答對。
跑「拿掉X看差異」的實驗,最容易犯的錯是什麼?
沒有先確認X真的被拿掉。我當天如果沒設探針,會交出四份漂亮的數據然後宣稱「刪掉沒差」,但對照組根本不成立。任何消除型實驗都要先設一道探針驗證操作生效了,這個成本很低,而且它是唯一能讓實驗有資格被相信的東西。
AI自己說「檢查通過」可以直接採信嗎?
不行,計分要由外部重跑。我在這輪把子任務的自評全部丟掉,改由主流程用乾淨的環境重跑評分腳本。實際差異出現在其中一隻:它第一版沒過,檢查器抓到段落數超標和單行過長,它看到失敗輸出之後自己修到全過。沒有那個外部檢查器,那兩個錯誤就會直接交件。