昨天結尾說,每個會進化的系統都預設自己知道什麼叫「變好」,而那個標準就是 evaluation function。今天把這件事講透。它是 L4 的最後一課,也是整條技術線的收口:你能把問題量化成什麼,系統就能優化什麼。
先看這個結構有多普遍。Andrej Karpathy(Day 8 引過他的 context engineering 定義)做過一個實驗專案 AutoResearch:讓 agent 自己跑 Kaggle 比賽,自己設計實驗、看分數、迭代。HuggingFace 的 ml-intern 把用戶的工作 session 收集成訓練資料,篩選標準是任務有沒有真的完成。Meta 的 AutoData(Jason Weston 團隊的研究)讓 agent 迭代生成訓練資料,再遞迴地把同一套機制對準 agent 系統本身。三個方法、三個領域,運作邏輯是同一個:定義什麼叫進步、跑實驗、量測、從結果提取信號繼續改。差別只在「什麼叫進步」怎麼回答。
Kaggle 分數是最乾淨的 eval:一個數字、自動計算、無法爭議,所以 Karpathy 的系統可以直接開跑。ml-intern 的「任務完成與否」是隱式的,從任務本身的結果自然產生,大量 session 可以全自動標注。Meta AutoData 的 eval 則是設計出來的:用弱模型和強模型的答題差距當「訓練資料品質」的代理,論文花了顯著篇幅論證這個設計為什麼成立。
三個方法落在一個光譜上:eval 現成、eval 隱式、eval 要自己設計並論證,越往後你要先解決的問題越多。反過來看模糊的目標:「程式碼品質」「回答有用嗎」,人工評估貴且不一致、judge 的標準會漂移,信號越嘈雜,系統從每次迭代學到的越少,甚至根本改進不到正確的方向。改進到哪裡,取決於你能把目標量化到多精準。Eval 的天花板,就是系統的天花板。
可以自動計算。 需要人工介入的 eval 撐不起大量迭代。Day 24 說確定性驗證是黃金標準,在這裡加倍成立。
難以被 hack。 Meta AutoData 的論文記錄了真實案例:agent 學會修改弱模型的 prompt,讓它刻意表現差,製造出漂亮的假差距。eval 一旦可以被直接最佳化(而不是最佳化它代理的真實目標),系統就全速往錯的方向跑。Day 24 引過 Osmani 對驗證不足的警告,這是它最陰險的形態:驗證還在,只是被系統自己攻破了。
跟真實目標相關。 eval 永遠是代理指標,Kaggle 分數代理「機器學習能力」、答題差距代理「資料品質」。代理和真實目標的相關性,決定最大化 eval 能不能真的帶來你要的改進。
對改進有感度。 最常被忽略的一個:前三個都滿足,但小的進步淹沒在輸出的隨機波動裡,系統一樣學不到東西。有團隊的做法是用多個隨機種子的平均分代替單次最高分,把信噪比拉高。
第二和第四個條件之間有根本的張力:越敏感的 eval 越容易被 hack,防 hack 防得越死信號越弱。平衡點沒有公式,取決於你的任務特性。這四個條件也可以反著用:一個問題如果找得到滿足四條件的 eval,它就是自我改進的候選目標;找不到,先別急著上 loop。
這件事離你不遠。Day 24 提過 Claude Code 的 /goal:你在它後面打的那行完成條件,就是親手寫的一個最小 eval function。寫得可自動驗證,loop 就轉得動;寫得模糊,它就在「看起來好了」的地方停下來。四個條件聽起來像論文尺度的事,其實每天都發生在你的鍵盤上。
還有一個反覆出現的模式。ml-intern 收集的 session 裡,最有價值的是「研究、實作、測試、失敗、除錯、修好」這種完整軌跡:它記錄了 agent 在哪裡卡住、用了什麼假設、怎麼修正,這種資料用合成的方式幾乎產生不出來。Meta AutoData 也是在失敗軌跡裡找到最重要的 bug:某條評分規則在懲罰本該表現好的模型,所有成功的軌跡裡都看不到這件事。
成功告訴你「做什麼」,失敗告訴你「哪裡卡住」。這跟 Day 25 說 production failures 是最有價值的測資、Day 27 說 HermesAgent 把成功和失敗的軌跡分開存,是同一個道理:只保留成功案例的系統,學到的是結果,學不到過程中的判斷。
照每一層的慣例,收官前誠實面對極限。如果 eval function 本身也需要被優化,你需要一個 meta-eval 來評估它;meta-eval 也是一個 eval,它又需要自己的 meta-eval。這個遞迴的出口不在技術裡:在某個層級,必須有人說「這個 eval 抓到了正確的東西」或「這個 eval 被 hack 了」。
Eval function 的設計需要領域判斷力,而這份判斷力沒辦法被自動化掉,至少不是在這個層級。這句話值得反著讀一次:四層地圖走到頂,L4 把人從迴圈裡拿出來,但系統能自己走多遠,取決於留在迴圈外面的那個人,把「什麼叫好」定義得多準。
技術線到今天走完了:Prompt、Context、Harness、Loop,二十八天。剩下兩天跳出技術。明天從一個七月才冒出來的新名詞開始,聊聊這個名詞永遠追不完的產業;最後一天,回到工程師自己身上。