跳至主要內容

    Agent 駕馭工程懶人包 (7)|Agent 自我改進的前提與風險,6 方路線一次對照

    讓 Agent 依執行紀錄修改自己的 prompt、工具與 skill,LangChain、NeoSigma、Stanford Meta-Harness、GEPA、Garry Tan 與反方論文(改進者強弱與增益的研究)各怎麼做?一張對照表看路線、前提與風險。

    sunny 桑尼· · 22 MIN READ · 284 次瀏覽

    Agent 駕馭工程懶人包 (7)|Agent 自我改進的前提與風險,6 方路線一次對照
    本文目錄

    "Next run uses them automatically. The skill rewrites itself." (Garry Tan, Thin Harness, Fat Skills, gbrain 程式庫 docs/ethos,2026-04)

    Garry Tan 在 gbrain 的 README 自稱 Y Combinator 的總裁暨執行長(President and CEO of Y Combinator)。這裡的 skill 是教模型怎麼做事的 Markdown 流程。這句話描述的是:活動結束後,Agent 讀完問卷,把新規則寫回這份流程,下一輪直接生效。你的 Agent 每天在跑,失敗紀錄越堆越高,改 prompt、改工具描述、補 skill 都要人手。讓 Agent 自己改,聽起來省事,但改完以後誰說它真的變好了?

    這篇的「自我改進(self-improvement)」指模型權重不動,駕馭層(harness;prompt、工具、skill、驗收程式)依執行紀錄被修改。誰來改,各方不同:同一個 Agent、另一個 coding agent,或一個最佳化演算法。先對一下用詞:優化集(optimization set)是改進者看得到、拿來調整的題目;保留集(holdout set)是它看不到、只用來驗收的題目;回歸集(regression set)是過去失敗過的題目,用來檢查舊問題有沒有回來;trace 是 Agent 每一步的執行紀錄;rollout 是實際跑完一次任務取得的樣本。

    快速回答 在能算分數、評測可重跑的任務上,Agent 能在權重不動的情況下修改自己的駕馭層,但關卡仍可能漏掉過擬合。NeoSigma 在一次模擬流量的實驗中從 0.560 升到 0.780;Lin 等人發現 9B 改進者的增益與 Opus 4.6 相近,使用新版駕馭層的模型影響更大。第一次先只開放 prompt 與工具描述,由人審後合併。

    6 方各自讓 Agent 改什麼?

    6 方改的東西從一段 prompt 到整份程式碼都有,共同前提是有一組可重跑的分數,風險則集中在過擬合與改完沒人驗。下表只寫各方文件有寫的內容。

    路線改什麼需要的前提風險

    LangChain Better Harness
    改什麼
    2026-04-08:prompt、工具與工具描述
    需要的前提
    標記過的評測,切成優化集與保留集(定義見上)
    風險
    對優化題目過擬合,需人工審查
    NeoSigma auto-harness
    改什麼
    2026-03-31:一個檔案裡的 system prompt 與工具
    需要的前提
    驗證集,加自動累積的回歸集
    風險
    回歸集變成代理驗證集;只報一次實驗
    Stanford Meta-Harness
    改什麼
    2026-03-30:整份 harness 程式碼
    需要的前提
    每個候選的原始碼、分數、trace 存檔案系統
    風險
    搜尋與最終評測用同 89 題
    GEPA
    改什麼
    2025-07,ICLR 2026:系統內的文字 prompt
    需要的前提
    少量 rollouts 加文字回饋
    風險
    只改 prompt;比較對象是 GRPO 與 MIPROv2
    Garry Tan 的 skill 路線
    改什麼
    2026-04 起:skill 的 markdown 做法與規則
    需要的前提
    每個 skill 有 eval 合約與不退步關卡
    風險
    文中的成效數字沒附原始資料
    反方論文 Lin 等人
    改什麼
    2026-05-28:量測 skills、prompts、memories 的更新
    需要的前提
    固定任務模型,換 7 種改進者
    風險
    未測權重微調

    表 1 6 方路線對照。各列依據見後文各節與參考資料,查閱於 2026-10-23。

    圖 1 自我改進迴圈的四步,與各方把關卡放在哪。四步的分法是本站歸納。

    LangChain 部落格作者 Vivek Trivedy 把這件事叫 harness hill-climbing(駕馭層爬坡),他的前提是一句話:

    "Evals encode the behavior we want our agent to exhibit in production." (Vivek Trivedy, Better Harness, LangChain Blog, 2026-04-08)

    他的意思是把評測題目當成駕馭工程的訓練資料。接下來四節,每節拿一個爭點,把兩邊並排。

    改完以後,誰來判斷真的變好了?

    LangChain 與 NeoSigma 用「不許退步」的自動關卡,LangChain 另加改進者看不到的保留集與人工審查;爭點是關卡的分數能不能代表泛化。Meta-Harness 的搜尋集與測試集分開,只有在 TerminalBench-2 上沒有另切保留集,改用人工檢查與字串稽核。

    一邊用自動關卡擋住退步。LangChain 再由人做最後審查,NeoSigma 則保留需要時加入人審的選項。 NeoSigma 的 Gauri Gupta、Ritvik Kapila 與 Kartik Gupta 在 2026-03-31 的文章裡,讓 coding agent 改 system prompt 與工具,模型固定為 GPT-5.4(不開推理)。一個修改要保留,必須同時滿足兩條:回歸集通過率至少 80%,驗證分數不低於歷史最佳。18 批、每批 10 題,共 96 次 harness 實驗,驗證分數從 0.560 到 0.780,回歸集從 0 條長到 17 條。LangChain 的 Better Harness 把流程寫成六步:蒐集並標記評測、切優化集與保留集、跑基準、每次只改一處、驗證不退步,最後由人審查。

    另一邊指出關卡的分數不等於泛化。 NeoSigma 自己寫到,回歸集最後會開始像代理驗證集(原文:begins to act as a proxy validation set),也就難以分辨是泛化還是記住了舊失敗。NeoSigma 的 gating.py 程式碼裡,gate_split 預設為 test,也就是預設用測試分數決定修改留不留。他們的「生產流量」是從基準的訓練題模擬出來的,文章只報了一次 18 批的實驗,沒有重複實驗的變異數。Trivedy 同樣寫明,這個最佳化迴圈本身不知道什麼是泛化(原文:doesn't know about generalization),所以要補保留集與人工審查;他建議用少量、標記清楚、品質高的評測,避免大量雜訊多的題目。Better Harness 的開源版本只是研究用骨架(原文:A research version is open sourced),樣本也很小(small representative sample)。

    Meta-Harness 在這點上最坦白。這是 Stanford 的 Yoonho Lee 等人的論文,寫它的搜尋與最終評測用同一組 89 題 TerminalBench-2,理由是題目少又貴,再切一份會削弱搜尋訊號;作者另外做人工檢查,並用正規表示式查有沒有任務專屬字串漏進被演化出的 harness。這個設定下的結果是:Claude Opus 4.6 搭配演化出的 harness 通過率 76.4%,在 Opus 4.6 的 agent 中排第 2(榜上更高的 ForgeCode 81.8%,作者表示無法只靠公開程式碼重現);Claude Haiku 4.5 搭配同一方法得 37.6%,高於榜上次高的 Goose(35.5%)。

    圖 2 Meta-Harness 論文 Figure 1。原作:Yoonho Lee 等人,〈Meta-Harness: End-to-End Optimization of Model Harnesses〉,arXiv 2603.28052(https://arxiv.org/abs/2603.28052),2026-03-30,CC BY 4.0;右圖 37.6% 與正文一致。

    工程上的意思: 驗收用的題目要和改進者分開存放;改進者讀得到的 trace 裡,不該有保留集的答案。回歸集由 Agent 自己累積時,要另外留一份它碰不到的題目,否則通過率無法分辨泛化還是記住舊失敗。

    改進的功勞算改的那個模型,還是用的那個模型?

    Lin 等人的實驗把功勞指向用駕馭層的那個模型,Meta-Harness 的設計則押注在改進者讀到夠多的原始資料。

    Meta-Harness 的改進者是一個 coding agent(論文實際用的是 Claude Code),透過檔案系統自己 grep 與 cat 所有先前候選的原始碼、分數與 trace。論文寫,在最苛刻的設定下,提案者每一輪讀檔的中位數是 82 個;在他們研究的設定中,單次評測最多能產生 1,000 萬 token 的診斷資料,約比先前文字最佳化方法用過的最大回饋量高出三個數量級。作者自己也承認,只驗證了「一個很強的 coding agent 當提案者」,換成其他提案者的效果留待未來研究。

    Lin 等人(Minhua Lin 與 Juncheng Wu 為共同第一作者,共 17 位作者,單位包括賓州州立大學、UC Santa Cruz、Amazon)在 2026-05-28 把兩種能力拆開量:harness-updating(寫出有用的更新)與 harness-benefit(從更新中得益)。他們固定任務模型、換 7 種模型當改進者,在 SWE-bench Verified、MCP-Atlas 與 SkillsBench 三個基準上跑。摘要的結論是:

    "even Qwen3.5-9B's updates yield gains comparable to those of Claude Opus 4.6." (Minhua Lin 等人, Harness Updating Is Not Harness Benefit, arXiv 2605.30621, 2026-05-28)

    論文的數字是,各改進者之間最好與最差的增益差距,在任一基準上最多 3.1 個百分點;Qwen3.5-9B 在 SkillsBench 的增益 3.8 個百分點,是該基準上最高的。反過來,在 MCP-Atlas 上,同一個任務模型換 7 種改進者,成績差距最多 5.1 個百分點(Qwen3-235B),遠小於 Opus 4.6 與 Qwen3-235B 的 36.0 個百分點基礎差距;SkillsBench 上的差距最大到 9.3 個百分點,仍小於 20.9。另一個發現是,用新版駕馭層得益最多的是中階模型,弱模型可能沒有載入該用的內容,或載入後沒照做。論文據此建議,把能力預算放在做任務的模型上。這項研究只涵蓋固定權重、改外部 harness 的設定,沒測權重微調或兩者混合。

    兩邊不能直接相減:Lin 等人量的是 skills、prompts、memories 這類文字產物,Meta-Harness 改的是程式碼。

    路線改進者改什麼結果

    Meta-Harness(Lee 等)
    改進者
    Claude Code
    改什麼
    harness 程式碼
    結果
    Opus 4.6 76.4%;Haiku 4.5 37.6%
    Lin 等人
    改進者
    7 種模型輪流
    改什麼
    skills、prompts、memories
    結果
    改進者之間增益差最多 3.1 個百分點

    表 2 改進者強度的兩組實驗。數字出自兩篇論文,不在同一基準上,不能比大小。

    本站歸納: 改進者負責提出修改,使用新版駕馭層的模型則影響增益多大;Meta-Harness 沒有比較不同改進者,兩邊結論不能互相替代。

    改文字和改程式碼,風險差在哪?

    改文字的風險集中在改了沒人驗;改程式碼還可能讓整個流程跑不起來。GEPA 與 Garry Tan 改的是文字,Meta-Harness 與 Darwin Gödel Machine 改的是程式碼;Meta-Harness 的作者認為,程式碼裡的過擬合比模型權重裡的過擬合容易靠檢查發現。

    GEPA(Genetic-Pareto,Lakshya Agrawal 等 17 位作者,2025-07-25 初稿,ICLR 2026 口頭報告)處理「含一或多段 LLM prompt 的 AI 系統」:取樣執行軌跡,用自然語言反思來診斷問題、提出並測試 prompt 修改,再從自己歷次嘗試的 Pareto 前緣(在不同任務上各有勝場的候選池)合併互補的教訓。六項任務上,GEPA 平均比 GRPO 高 6%、最高 20%,用的 rollouts 最多少 35 倍;比當時領先的 prompt 最佳化器 MIPROv2 高過 10%(例如 AIME-2025 準確率 +12%)。GRPO 是一種更新權重的強化學習方法,所以這組比較說的是「用文字回饋改 prompt,比改權重省樣本」,沒有說它能改程式碼。

    Garry Tan 把 skill 當成「教模型怎麼做的 markdown 流程」,並寫道「markdown 其實就是程式碼」(原文:Markdown is actually code)。他的 skillify 技能(gbrain 程式庫,2026-10-23 查閱的版本)要求每個 skill 先有 eval 合約,再由三個不同公司的模型依合約評分;任何修改的分數必須不低於前一版。它還寫了一句理由:

    "Tests lock in behavior. If the behavior is mediocre, tests lock in mediocrity." (garrytan/gbrain, skills/skillify/SKILL.md)

    意思是,先評品質再寫測試,否則測試只會把平庸的行為固定下來。同一個程式庫的 skillopt 教學把 SKILL.md 當成可訓練的參數,優化器提出修改,只保留分數明顯提高的版本。至於 Tan 在文章裡舉的「問卷『普通』評價從 12% 降到 4%」,文中沒有附原始調查資料,那篇文章在程式庫裡的標記也還是 draft-v4,我不把它當成已驗證的成效。

    Darwin Gödel Machine(Jenny Zhang 等五位作者,arXiv 2505.22954,2025-05-29)讓 coding agent 反覆修改自己的程式碼,並以基準測試驗證每次修改;摘要的數字是 SWE-bench 從 20.0% 到 50.0%,Polyglot 從 14.2% 到 30.7%,實驗都在沙箱與人工監督下進行。

    路線改的載體怎麼擋退步代表數字

    GEPA
    改的載體
    文字 prompt
    怎麼擋退步
    Pareto 前緣候選池
    代表數字
    平均比 GRPO 高 6%
    Garry Tan skillify
    改的載體
    skill 的 markdown
    怎麼擋退步
    新版分數不低於前一版
    代表數字
    成效數字未附原始資料
    Meta-Harness
    改的載體
    harness 程式碼
    怎麼擋退步
    搜尋集與測試集分開;Terminal-Bench 2.0 例外,靠人工檢查與字串稽核
    代表數字
    Haiku 4.5 37.6%
    Darwin Gödel Machine
    改的載體
    自己的程式碼
    怎麼擋退步
    基準驗證,沙箱與人工監督
    代表數字
    SWE-bench 20.0% 到 50.0%

    表 3 改文字與改程式碼的四條路線。數字各自來自原論文,基準不同。

    Meta-Harness 的論文討論段寫了一句對照:

    "Overfitting in code space is also more inspectable: brittle if-chains or hard-coded class mappings are visible on inspection in a way that weight-space overfitting is not." (Yoonho Lee 等人, Meta-Harness, arXiv 2603.28052)

    同一篇論文把「讓 harness 與模型權重一起演化」列為下一步,也就是它自己還沒做這件事。

    改好的版本換個模型還管用嗎?

    證據分歧:LangChain 建議依模型調整、HarnessBank 認為增益有模型專屬的成分,Meta-Harness 在數學任務上測到跨模型的增益。

    LangChain 的 Trivedy 在 2026-02-17 的〈Improving Deep Agents with harness engineering〉裡,固定 gpt-5.2-codex,只改 harness,Terminal Bench 2.0(89 題)從 52.8% 到 66.5%。LangChain 建議依模型調整 harness(原文:models require different prompting),同一段也說許多原則可以通用,例如先備齊模型做任務需要的資訊,並把重點放在驗證(good context preparation、a focus on verification)。Claude Opus 4.6 用較早版本的 harness 跑 Terminal Bench 2.0 得 59.6%,作者把差距歸因於沒有對它跑同一輪改進。他也警告,針對單一任務過擬合的修改對泛化有害,可能讓其他任務退步。

    Meta-Harness 另用五個模型驗證數學檢索 harness 的跨模型效果:在 200 題國際數學奧林匹亞(IMO)等級題目上,準確率平均提高 4.7 個百分點。論文也說,搜尋得到的 harness 能用於與原本資料分布不同的分類資料集。HarnessBank(Xiaotian Luo 等,arXiv 2607.13683,2026-07-15 提交)的跨模型實驗,則讓作者認為增益來自「針對特定模型的自我演化過程」,沒有一個放諸四海的最佳 harness。

    2026 年 7、8 月的新資料怎麼說?

    2026 年 7 到 8 月的三份新資料都支持「能改進」,也都把限制寫得更具體:受限於底層模型的能力,改好的版本有模型專屬的成分。以下三篇我只讀到 arXiv 摘要頁,沒有逐段核對全文。

    路線日期基準結果與限制

    HarnessBank
    日期
    2026-07-15
    基準
    7 個 agent 基準
    結果與限制
    改進 5.1% 到 15.4%;程式碼待公開
    Hierarchical Self-Improvement
    日期
    2026-08-09
    基準
    BALROG
    結果與限制
    BabyAI +39.3 個百分點;NLE 沒有改進
    Self-Harness
    日期
    第 3 版 2026-08-20
    基準
    3 基準乘 3 模型
    結果與限制
    九組都進步,相對增幅最高 132%

    表 4 2026 年 7、8 月的三份新資料。數字來自 arXiv 摘要頁。

    HarnessBank(Xiaotian Luo 等)讓一個任務 Agent 搭配另一個負責診斷與生成修改的 evolver,保存高分 harness 的「基因庫」,並用關卡篩選降低評估成本。Hierarchical Self-Improvement(Tailin Zhou)讓同一個凍結的模型分三層:任務 harness、改 harness 的 evolver、改 evolver 策略的 meta-evolver;BALROG 的進度數字另有 Crafter +33.0、TextWorld +25.0、MiniHack +15.0(皆為進度百分點,相對初始 harness),作者把 NLE 的零改進歸因於底層模型能力不夠,並指出兩個上限:回饋訊號要夠準,以及 harness 重設計超不過底層模型本身。Self-Harness(Hangfan Zhang 等,2026-06-08 初稿)在 Terminal-Bench 2.0、SWE-bench Verified、AppWorld 與三個模型的九種組合上,最終 harness 的已見題與保留題通過率都提高,「最高 132%」指最大值。

    落到系統上,要補哪幾個元件?

    要讓 Agent 改自己的駕馭層,系統至少要有五個元件:存 trace 的地方、切好的評測集、不退步的關卡、可回滾的版本,以及人審查的位置。這份清單是本站歸納;圖 3 把五個元件並排,標出各方對應的做法。

    圖 3 讓 Agent 改自己之前,系統要先有的五個元件。
    • 存 trace 的地方: Meta-Harness 用檔案系統,LangChain 用 LangSmith 的 trace 加一個分析 skill,NeoSigma 把每輪的學習紀錄寫進檔案。
    • 切好的評測集: Better Harness 的優化集與保留集,是最直接的做法。
    • 不退步的關卡: NeoSigma 的兩條規則(回歸集 80%、分數不低於歷史最佳),README 寫明沒有同時通過評測集與完整測試分數兩道關卡的修改,不會 commit。
    • 版本與回滾: 各方原文沒有獨立描述這個元件;用 git 管理被改的檔案(NeoSigma 改的是單一檔案)是最小做法。
    • 人審查的位置: Better Harness 的第六步,抓的是指標看不出的問題,例如對優化集過度擬合、分數沒變差但多耗 token 的指令;LangChain 2026-02 那篇讓人可選擇審查修改;NeoSigma 的 PROGRAM.md 是人決定方向的檔案。NeoSigma 的文章說這個流程保留了「需要時加入人工審查」的選項,沒有說明實驗中何時、如何審。

    先開放哪些範圍給 Agent 改?

    先只開放 prompt 與工具描述,每個修改由人看過再合併。這兩類改動容易讀懂,出錯時一行就能退回。

    這個做法成立的前提是評測能重跑,而且保留集在 Agent 讀不到的地方。如果驗收只用 Agent 自己產生或累積的題目,沒有另留一份它讀不到的保留集,關卡就無法分辨它是能處理新題,還是記住舊失敗。要改程式碼或讓 skill 自動寫回,我會等上面五個元件都有、並先在一個低風險任務上跑幾輪,看保留集的分數有沒有跟著優化集一起上升。

    如果改進者和被驗收的對象是同一個模型,誰來證明關卡沒有跟著一起被改得好看?

    下一篇談換了模型以後,調好的 harness 為什麼會失靈,看 Cursor、Armin Ronacher 與 Anthropic 各自觀察到什麼。

    常見問題

    自我改進會改到模型權重嗎?

    本篇各方都只改 prompt、工具、skill 或 harness 程式碼,權重不動。Lin 等人明說沒測權重微調;Meta-Harness 把 harness 與權重一起演化列為下一步;GEPA 比較的 GRPO 才改權重。

    要多少評測題目才能開始?

    我讀到的各方文件都沒有給最低數量。NeoSigma 的一批是 10 題,18 批後回歸集有 17 條;Meta-Harness 的 TerminalBench-2 是 89 題;Trivedy 的建議是用少量、標記清楚、品質高的評測,避開大量雜訊多的題目。能重跑、分得出優化集與保留集,比題數更重要。

    改好的駕馭層換模型還能用嗎?

    證據分歧,換模型就重測。LangChain 建議依模型調整,但許多原則可通用;HarnessBank 認為部分增益有模型專屬成分;Meta-Harness 的數學檢索 harness 在五個保留模型上平均 +4.7 個百分點。

    可以完全不要人審嗎?

    LangChain 與 NeoSigma 的流程都留了人的位置,我讀到的文件裡沒有「完全不審」的實測。Better Harness 把人工審查列為第六步,用來抓指標漏掉的問題;NeoSigma 說流程保留了需要時加入人工審查的選項。在沒有保留集的系統上,我不會拿掉這一步。

    延伸閱讀

    參考資料

    留言0

    登入後就能留言。

    登入