049 · 七步打造更聰明的 harness
講者用同一段修 bug 任務,讓同一顆模型換上七種不同的 harness,示範表現如何從完全不能動手一路進化到能自我優化。
原標題:What if the harness mattered more than the model? - Aditya Bhargava, Etsy
重點摘要
- 好模型不代表可以省略 harness講者觀察到業界流行「模型夠強、harness 可以做簡單」的說法,但他認為方向反了:好的 harness 才能讓便宜、能在本機跑的開源模型追上頂尖模型的表現。
- Harness Bench 量出 20 個百分點的差距一份評測用同一顆模型換上不同 harness,分數從 52.4% 一路跳到 76.2%,而且模型越弱,harness 帶來的差距越明顯。
- 現有框架不夠用,索性自己做語言講者花六個月打造一個叫 agency 的新語言,語法接近 TypeScript,把工具、安全機制、sub-agent 都做進語言層級。
- 同一個修 bug 任務,七個版本只給模型不給工具連檔案都讀不到,接著加讀寫工具卻不安全,再靠 handler 加上人工核可、partial function application 讓 agent 自動又安全,最後靠推理迴圈真正把程式修好。
- sub-agent 用來分工,不是拿來炫技換一個任務時,讓 coding agent 跟負責查 Wikipedia 的 sub-agent 平行工作,各自帶自己的工具集,減少單一 agent 要塞進去的 context 與工具數。
- 自我優化取代亂試agency 內建的 optimizer 能自動改寫陽春的 prompt,用量測分數取代人工試錯,讓 harness 的進步有系統可循。
時間軸
時碼點下去會跳到影片的那一段。
| 時碼 | 段落 | 重點 |
|---|---|---|
| 00:00 | 開場 | Etsy 的 staff engineer 拋出反主流看法:業界覺得模型夠強、harness 可以做簡單,但方向可能反了。 |
| 01:49 | Harness Bench 數據 | 同一顆模型換不同 harness,分數從 52.4% 跳到 76.2%,模型越弱、harness 帶來的差距越大。 |
| 03:53 | 決定自造語言 agency | 覺得現有框架都做不到想要的效果,花六個月做出一個叫 agency 的新語言,直接把 harness 需要的功能做進語言層級。 |
| 05:50 | 示範任務說明 | 用同一段「修中位數函式錯誤」的程式與同一顆模型,讓 harness 依序升級七次,觀察表現如何跟著變好。 |
| 09:07 | 第一版:只有模型 | 只把 prompt 丟給模型,沒給任何工具,模型直接回覆看不到程式碼、無法動手修正。 |
| 11:29 | 加工具但不安全 | 給 agent 讀寫檔案的工具後可以動手改程式,但因為沒設防護,agency 預設擋下並丟出未處理的錯誤。 |
| 13:05 | handler 補安全 | 用 handler 接住錯誤、讓使用者逐步核可每個讀寫動作,安全了,但每一步都要人手動同意,速度變慢。 |
| 15:43 | PFA:安全又自動 | 用 partial function application 把可存取的目錄鎖死在工具參數上,agent 不用再問人也不會跑出目錄外。 |
| 17:57 | 加推理迴圈修好 | 導入「推理、行動、觀察」的迴圈,讓 agent 讀檔、跑測試、看到失敗再改一次,最後測試真的通過。 |
| 21:29 | 換題:sub-agent 分工 | 讓 coding agent 跟一個查 Wikipedia 的 sub-agent 平行工作,各自帶自己的工具集,減少單一 agent 要處理的 context。 |
| 25:25 | 自我優化取代試錯 | agency 內建的 optimizer 自動改寫兩段很陽春的 prompt,用量測分數一路把目標往上推,不用再靠人工亂試。 |
| 29:19 | agency 語言特色 | 整理 agency 提供的東西:簡單的工具語法,以及能真正暫停、之後從原處恢復執行的中斷機制。 |
| 31:31 | 結語與試用方式 | 用套件安裝指令就能試用,最後把結論收成一句:agent 等於模型加 harness,好 harness 才是效能關鍵。 |
值得記的話
名詞與人物
| agency | 講者利用個人研究時間、花六個月打造的新程式語言,語法接近 TypeScript,把工具定義、安全機制、sub-agent 都做進語言層級,用來寫 agent。 |
|---|---|
| Harness Bench | 用來比較不同 harness 表現的評測,同一顆模型換上不同 harness,分數落差可以超過 20 個百分點。 |
| partial function application(PFA) | 借自函數式編程的技巧,把工具函式的某個參數(例如可存取的目錄)先鎖死,讓 agent 拿到工具時看不到、也改不了那個參數。 |
| ReAct | Reason and Act 的縮寫,讓 agent 不斷「推理、行動、觀察結果、再推理」的循環模式。 |
| GEPA optimizer | agency 內建的自我優化功能,能自動改寫標記過的 prompt,用量測分數取代人工試錯。 |
| Wikipedia agent | 範例裡的一個 sub-agent,帶著查詢 Wikipedia 的工具,跟 coding agent 平行工作、各自處理自己的任務。 |
| Aditya Bhargava | 這場講者,Etsy 的 staff engineer,也是該公司 agentic commerce 專案的負責人,agency 語言的作者。 |
| Alan Kay | 電腦科學家,講者引用他「simple things should be simple, complex things should be possible」這句話,說明 agency 的設計哲學。 |
延伸
- 講者另著有《Grokking Algorithms》這本書,也做過一系列 illustrated posts,開場帶過,沒有進一步展開。
- agencylang.com 官網與講者的 BlueSky 帳號,只在結尾提過,方便延伸追蹤。
- GEPA optimizer 背後的演算法邏輯,這場只展示執行結果,沒有細講原理。