跳至主要內容

    Agent 駕馭工程懶人包 (5)|自評、旁觀裁判與獨立 Grader 差在哪

    Agent 回報「已完成」,誰說了算?整理 Codex goals、Claude Code /goal、Anthropic Outcomes 的驗收做法,附裁判獨立度、資訊量、成本的對照表,並用 Jie Huang 等人(ICLR 2024)的自我修正研究與 Anthropic 的自評觀察說明適用限制。

    sunny 桑尼· · 15 MIN READ · 118 次瀏覽

    Agent 駕馭工程懶人包 (5)|自評、旁觀裁判與獨立 Grader 差在哪
    本文目錄

    Agent 回你一句「已完成」,你得自己點開 diff 和測試報告,確認它說的是真的。這句「已完成」由誰說了算,是 Agent 驗收架構的核心問題。三個產品給了三種答案,本站依裁判與執行者的距離,分別稱為自評(self-evaluation)、旁觀裁判(observer judge)與獨立 Grader(grader,判斷結果有沒有達標的評分角色)。

    快速回答 三種架構差在裁判離執行者多遠:Codex goals 由執行任務的模型自評,Claude Code /goal 另叫模型只讀對話,Anthropic Outcomes 則讓獨立評分角色(Grader)在另一份模型可讀的資料(context)中,對照逐條標準(rubric)。指令輸出能證明完成時,我建議自評或旁觀裁判就夠;要逐條判斷產出物好壞時,再考慮獨立 Grader。標準寫不出來,三種都判不準。

    圖 1 四條結論,分別對應自評、旁觀裁判、獨立 Grader 與 Jie Huang 等人(ICLR 2024)的自我修正研究。資料來源見文末參考資料。

    卡上每條結論都附一個來源裡的具體說法,下面逐項展開。

    三種驗收架構差在哪裡?

    三種架構差在裁判與執行者的距離:自評由同一個模型審核,旁觀裁判是另一次模型呼叫只讀對話,獨立 Grader 在新的 context 裡對照 rubric 評分。下表把三者在裁判獨立度、資訊量與成本三欄並排。

    架構代表裁判獨立度(本站歸納)裁判看得到什麼成本

    自評
    代表
    Codex goals
    裁判獨立度(本站歸納)
    無:同一模型、同一條 context
    裁判看得到什麼
    對話,加工作樹與指令輸出
    成本
    無額外評分呼叫
    旁觀裁判
    代表
    Claude Code /goal
    裁判獨立度(本站歸納)
    中:另一次呼叫,讀執行者的對話
    裁判看得到什麼
    對話中已出現的內容,不呼叫工具
    成本
    每次評估一次小模型呼叫;有背景工作時跳過。官方稱成本通常可忽略
    獨立 Grader
    代表
    Anthropic Outcomes
    裁判獨立度(本站歸納)
    高:獨立 context window
    裁判看得到什麼
    rubric 與產出物
    成本
    每輪一次評估;迭代上限預設 3、可設至 20;單次價格未說明

    表 1 驗收架構對照。欄位內容來自 Codex 原始碼、Claude Code 文件與 Managed Agents 文件,查閱於 2026-10-23;「無、中、高」是本站歸納。

    三種裁判可以這樣想:自評像自己改考卷,旁觀裁判像旁聽的監考只看答案卷,獨立 Grader 像另請閱卷老師拿評分標準來改。這張表只整理三者的驗收機制。我查閱的範圍內,沒有找到三者互相比較準確率的資料。

    自評:Codex 的 goal 怎麼讓同一個模型審自己?

    Codex 的 goal 功能由同一個模型在每輪結束後,自己對照目標做完成審核,我在原始碼裡沒找到另外的評分模型。依據是 OpenAI 開源 repo openai/codex 的 codex-rs/ext/goal 目錄,我在 2026-10-23 讀的是 main 分支(commit 60adfa8)。

    機制很直接:對話(thread)閒置、目標(goal)仍在進行中(active)時,on_thread_idle 會呼叫 continue_if_idle,把續跑提示(continuation.md)加進同一段對話。提示裡有一段「完成審核」,開頭要求先假設沒完成:

    "Treat uncertain or indirect evidence as not achieved; gather stronger evidence or continue the work." "The audit must prove completion, not merely fail to find obvious remaining work." (OpenAI, codex-rs/ext/goal/templates/goals/continuation.md,2026-10-23 讀取)

    宣告完成的方式是模型自己呼叫 update_goal,狀態有 complete、blocked、paused 三種。blocked 的條件寫在工具描述裡:同一個阻礙至少連續三個 goal 回合;paused 只能在使用者明確要求時使用。續跑提示還帶著已用 token、token 預算與剩餘量。

    我另外用 grader、judge、reviewer、spawn、subagent 等關鍵字搜過 ext/goal/src 的 11 個檔案,找不到呼叫另一個模型的程式。這只是關鍵字搜尋,範圍限於這個目錄,不等於逐行稽核。

    工程上的意思: 這一格的裁判是一段 prompt 加上模型自己的紀律,要調的是續跑提示、update_goal 的工具描述和 token 預算。它的好處是審核時可以直接查工作樹與指令輸出;代價是裁判和執行者共用同一份判斷。

    旁觀裁判:Claude Code 的 /goal 讓誰判斷做完沒?

    Claude Code 的 /goal 在每回合結束後,另叫一次小而快的模型(文件稱 small fast model),拿完成條件和目前為止的對話,判斷「已達成、未達成、不可能」。依 Anthropic 文件,/goal 只在目前這段對話(session)中生效,透過提示詞(prompt)設定回合結束時的自訂檢查(Stop hook)。

    "It does not call tools, so it can only judge what Claude has already surfaced in the conversation." (Anthropic, Keep Claude working toward a goal,查閱於 2026-10-23)

    所以條件要寫成執行者自己的輸出就能證明的句子。文件的例子是「test/auth 底下的測試全過、lint 乾淨」,因為 Claude 會跑測試,結果會出現在對話裡。條件最長 4,000 字元,可以加「或在 20 回合後停止」來限制上限。判定「未達成」時,理由會成為下一回合的指引;「不可能」或「已達成」時 goal 自動清除。

    圖 2 把三種架構的裁判位置並排畫出來。

    圖 2 三種架構的裁判位置。名稱出處:Codex 原始碼、Claude Code /goal 文件、Managed Agents 文件(皆查閱於 2026-10-23)。分成三類是本站歸納。

    文件也寫了幾個防呆:連續好幾回合沒有使用工具,迴圈會停下來交還控制權;子代理或背景指令還在跑時,該回合跳過評估。成本方面,文件說評估用的 token 以小模型計價,相比主回合花費通常可忽略。

    /goal 的行為也隨版本改變。v2.1.246(2026-08-25 發布)起,每個 goal 在兩次使用者輸入之間,最多進行三次閒置檢查(check-in,列出還在跑的背景工作並請 Claude 處理)。v2.1.269(2026-09-11 發布)起,互動式 session 會印出失敗原因;可自行復原的錯誤,例如伺服器過載,會自動重試,三次後暫停。

    本站的歸納:這個裁判獨立於執行者的模型呼叫,但讀的是執行者寫下的對話,所以仍然依賴執行者把證據印出來。

    工程上的意思: 條件裡要寫明檢查指令,例如「pytest 結束碼為 0」。只寫「功能完成」,評估器只能相信執行者的敘述。

    獨立 Grader:Anthropic Outcomes 多了哪些東西?

    Anthropic 的 Outcomes 在 Claude Managed Agents 裡另外配一個 grader,在獨立的 context window 中拿 rubric 檢查產出物,並把逐條回饋交回 Agent 做下一輪。這個功能在文件中標示為 beta(beta header managed-agents-2026-04-01),以下依 2026-10-23 的 Define outcomes 文件。

    "The grader uses a separate context window to avoid being influenced by the main agent's implementation choices." (Anthropic, Define outcomes,Managed Agents 文件)

    rubric 是必填的 markdown 文件,逐條計分。文件舉的好條件是「CSV 含有數值型的 price 欄」,並提醒:條件寫得含糊,評分結果就容易不一致。max_iterations 預設 3、上限 20;每次評估結束會回報 satisfied、needs_revision、max_iterations_reached、failed 或 interrupted,事件裡附 token 用量,各結果的後續見表 2。

    結果接下來發生什麼

    satisfied
    對話工作階段(session)轉為閒置(idle)
    needs_revision
    Agent 開始新一輪
    max_iterations_reached
    補上確認訊息後,工作階段轉為閒置,不再評估
    failed
    轉為閒置;rubric 與交付物不相符時回報
    interrupted
    評估期間被中斷時回報

    表 2 Outcomes 每次評估結束的結果與後續。來源:Managed Agents 的 Define outcomes 文件,查閱於 2026-10-23。

    效果數字來自 Anthropic 2026-05-19 的公告:Outcomes 的任務成功率比一般提示迴圈最多高 10 點(原文 up to 10 points),內部評測的檔案生成,docx 為 +8.4%、pptx 為 +10.1%。這是 Anthropic 自己的內部評測,我沒有找到第三方驗證。

    文件沒有說明的事:grader 用哪個模型、能不能執行工具、單次評估的價格。Anthropic 2026-03-24 的工程文章另有一個相關實驗:評估角色用 Playwright 實際操作執行中的應用,同一個任務單獨跑約 20 分鐘、9 美元,加上獨立評估角色的完整駕馭層跑約 6 小時、200 美元。那是研究用的駕馭層,與 Outcomes 產品不同,只能當成本量級的參考。

    工程上的意思: rubric 要寫成逐條可判的句子,迭代上限要依預算設,因為每多一輪都是整份產出物再評一次。

    為什麼要把裁判拆出來?兩份一手證據怎麼說

    拆出裁判的依據有兩份:Jie Huang 等人的 ICLR 2024 論文發現推理題在沒有外部回饋時難以自我修正,Anthropic 的工程文章說 Agent 評自己的成果會偏向給好評。

    Jie Huang 等七位作者的論文 Large Language Models Cannot Self-Correct Reasoning Yet,2023-10-03 投到 arXiv,收錄於 ICLR 2024。摘要的結論是:

    "LLMs struggle to self-correct their responses without external feedback" (Jie Huang 等, arXiv:2310.01798,v2 修訂於 2024-03-14)

    摘要接著說,自我修正之後表現甚至會下降(原文:their performance even degrades after self-correction)。研究對象是只靠模型自身能力的修正(intrinsic self-correction),題目是推理題。

    Anthropic 在 2026-03-24 的〈Harness design for long-running apps〉寫得更直接:

    "reliably skew positive when grading their own work" "Separating the agent doing the work from the agent judging it proves to be a strong lever" (Anthropic Engineering, 2026-03-24)

    同一篇文章也提醒,獨立的評估者仍然是 LLM,對 LLM 的產出容易寬鬆,需要調成帶懷疑的角色。

    本站的歸納:Huang 等人的研究針對沒有外部回饋的推理題自我修正,Anthropic 的文章則指出 Agent 自評偏向給好評,兩份證據的範圍不同。Codex 的自評可以查檔案、跑測試,這些外部證據不在 Huang 等人的測試範圍。該論文支持的是:推理題在沒有外部回饋時,只靠模型自身能力難以修正答案;這不足以判定能查檔案、跑測試的 Codex 自評是否可靠。Outcomes 公布的數字比較對象是一般提示迴圈,沒有拿旁觀裁判或 Codex 式自評當對照;三者互比的公開數據,我在查閱範圍內沒找到。

    證據研究對象沒有涵蓋的

    Huang 等人,ICLR 2024
    研究對象
    推理題,只靠模型自身能力的修正
    沒有涵蓋的
    能查檔案、跑測試的 Agent
    Anthropic Engineering,2026-03-24
    研究對象
    Agent 評自己的長任務成果
    沒有涵蓋的
    自評與旁觀裁判的互比數據
    Anthropic 公告,2026-05-19
    研究對象
    Outcomes 對一般提示迴圈
    沒有涵蓋的
    對旁觀裁判、Codex 式自評

    表 3 三份證據的範圍。「沒有涵蓋的」是本站歸納。

    自己的 Agent 該落在哪一格?

    完成條件能由測試或指令輸出直接證明時,自評或旁觀裁判就夠;產出物要靠逐條 rubric 才判得出好壞時,才值得付獨立 Grader 的成本。這項選型建議是我的歸納,三家文件並未訂出共同的選型規則。

    要檢查自己的系統落在哪一格,問三件事。完成標準寫得出一行指令嗎?寫得出來,條件裡寫明指令,裁判再簡單也有證據可看。裁判讀得到的東西,是執行者自己的敘述,還是產出物本身?前者要在條件裡逼執行者印出證據。每多評一輪要付多少?旁觀裁判的單次呼叫便宜,獨立 Grader 每輪要重評整份產出物,上限要先設。

    裁判離執行者越遠,越能減少執行者判斷的影響;值得付多少成本,要看完成標準需要哪種檢查。

    驗收沒過就再跑一輪,外層迴圈怎麼排、狀態存在哪、什麼時候停,下一篇接著談。

    常見問題

    /goal 的評估器會自己跑測試嗎?

    不會。Claude Code 文件寫明評估器不呼叫工具,只能判斷 Claude 已經在對話裡呈現的內容。所以條件要寫成 Claude 自己的輸出能證明的句子,例如測試指令的結束碼,評估器才有證據可讀。

    Codex 的 goal 有另外的評分模型嗎?

    我在 codex-rs/ext/goal/src 的 11 個檔案裡,用 grader、judge、reviewer 等關鍵字搜過,找不到呼叫另一個模型的程式。完成由主模型呼叫 update_goal 宣告,續跑提示要求完成必須有證據。這是 2026-10-23 對 main 分支的關鍵字搜尋結果。

    Outcomes 一定要寫 rubric 嗎?最多跑幾輪?

    要。Anthropic Outcomes 必須提供逐條驗收標準(rubric),以 markdown 文件撰寫並逐條計分。最多迭代輪數(max_iterations)預設 3,可設至 20。此功能在文件中標示為 beta,細節可能改變。

    自評一定比獨立 Grader 差嗎?

    我查閱的資料中,沒有自評、旁觀裁判與獨立 Grader 的準確率互比。Huang 等人的研究限於推理題在沒有外部回饋時的自我修正,不能直接說明 Codex 的自評可不可靠;Anthropic 指出 Agent 自評偏向給好評;Codex 的自評能查工作樹與指令輸出,超出該論文的測試範圍。

    延伸閱讀

    參考資料

    留言0

    登入後就能留言。

    登入