
三年前,「coding agent」指的還是自動補完插件。現在它指的是會讀你的倉庫、規劃修改、跑測試並開 pull request 的執行環境;而產品之間真正有意思的差異在執行環境——也就是 harness——而不是它們剛好呼叫的模型。
這個類別本週正式浮上檯面:Earendil 推出 Pi 1.0,定位為「強化、極簡、可擴充的 agent harness」;DeepSeek 發布以「一切都是插件」為核心的 harness;Offrun 則把自己定位成管理所有 coding agent 的單一工作區。要在它們之間選擇,是架構決策,所以請評估架構,而不是 demo。
01編碼 agent harness 實際上做什麼
模型無法讀你的檔案,也無法跑你的測試。harness 做這些事,再把結果餵回去。實務上它負責四件事:
- 脈絡組裝 —— 哪些檔案、diff、log 與指令進入提示,以及視窗滿了之後什麼被摘要或丟棄。
- 工具執行 —— 模型可要求的 shell 指令、檔案修改、搜尋與網絡呼叫。
- 權限強制 —— 哪些呼叫自動執行、哪些需要批准、哪些禁止。
- 工作階段狀態 —— 哪些東西在回合之間、工作階段之間、機器之間保留下來。
其餘都是包裝。當兩個 harness 在同一個模型上感覺天差地遠,原因通常是這四件事之一。
02當前選項的誠實比較
| Harness | 形態 | 什麼情況該評估 | 採用前要問 |
|---|---|---|---|
| Pi 1.0 | 極簡、可擴充、刻意緩慢地強化 | 你想要可自行擴充的小表面 | 多少功能內置、多少要靠擴充? |
| DeepSeek Harness | 插件優先 | 你想把能力自由組進組出 | 插件的信任模型是什麼? |
| Offrun | 多 agent 工作區 | 你要同時管理多個 agent 與模型 | 集中管理是否也集中了風險? |
| 廠商 CLI | 與單一模型廠商整合 | 設定速度比可攜性重要 | 能否指向非廠商或本機模型? |
插件優先的設計最有趣,也最難評估,因為一旦 harness 載入第三方擴充,那些擴充就繼承了它的權限。插件模型既是功能決策,也是供應鏈決策。
插件以 harness 的權限執行
能讀檔、執行 shell 或呼叫網絡的擴充,會放大每次模型失誤的影響半徑。請把插件註冊表當成相依樹,而不是佈景主題商店。
03用七個問題做決定
- 它能跑哪個模型? 若答案只有一家廠商,你選的是模型,不是 harness。可攜性在兩年尺度上最重要。
- 它如何管理脈絡? 問它面對 20 萬行的 monorepo 怎麼做:索引、檢索、摘要,還是盲目截斷?
- 權限模型是什麼? 優先選可依工具、路徑與指令設定的規則,而不是單一「全部允許」開關。
- 能否沙箱化? 容器、唯讀掛載與網絡輸出規則,能把事故變成不便。
- 工作階段狀態存在哪裡? 本機檔案、代管服務,或你自己的資料庫——這決定你的資料姿態。
- 你如何審查它的成果? 產出可審查 diff 與紀錄的 harness 才適合團隊;直接寫進分支的不適合。
- 擴充成本多少? 在投入插件優先設計前,先數清楚你真正需要的插件數量。
04自架,但不把倉庫交出去
部署形態與功能清單一樣重要。可辯護的基準如下:
- 在容器內執行 harness,倉庫以讀寫掛載,其他什麼都不掛。
- 預設拒絕網絡輸出,再把模型端點與你實際使用的套件庫列入允許清單。
- 憑證不要放進容器;若 agent 需要,在呼叫時注入短效權杖。
git push、安裝套件與刪除檔案都需要批准。- 保留完整逐字紀錄,讓審查者看見跑過的每個指令,而不只是最終 diff。
# 限制型 agent 政策的形態:明確路徑,拒絕規則優先。
permissions:
read: ["src/**", "tests/**", "docs/**"]
write: ["src/**", "tests/**"]
shell:
allow: ["pnpm test", "pnpm lint", "git diff", "git status"]
deny: ["git push", "rm -rf", "curl"]
network: ["api.example.internal"]
拒絕規則要放在允許規則前面,否則像 pnpm * 這樣的樣式會吞掉 pnpm publish。這份設定就是普通的 YAML 或 JSON,請像倉庫裡其他設定一樣格式化並驗證它。
05指向你能控制的模型
模型無關的 harness 在這裡展現價值。會說 OpenAI 相容 chat API 的 harness,今天可以指向代管模型,明天可以指向 localhost 上的 llama-server,而工作流不變。若你跑本機端點,記得較小的模型需要更多鷹架:更緊的脈絡、更明確的工具描述與更嚴格的審查步驟。
反過來也成立。全世界最大的模型也救不了把整個倉庫塞進每次提示的 harness,因為在幾乎所有真實任務裡,脈絡質素都勝過脈絡數量。
06用一小時在真實任務上評估
跳過廠商 demo,給每個候選同一份工作:你倉庫裡一個不平凡的 bug,並附上能重現它的測試。替四件事評分。
| 訊號 | 該看什麼 |
|---|---|
| 脈絡處理 | 它有沒有在沒被告知的情況下找到正確檔案? |
| 權限摩擦 | 做完真實工作需要幾次批准? |
| 復原能力 | 測試失敗時,它有沒有讀錯誤並自我修正? |
| 可審查性 | 同事能否從逐字紀錄理解這個修改? |
勝出的 harness 通常是意外最少的那個,而不是在精心安排的任務上最快完成的那個。
07常見錯誤與修正
| 錯誤 | 為何有害 | 修正 |
|---|---|---|
| 依 benchmark demo 選擇 | demo 用精心挑選的倉庫 | 在自己的程式碼上測試 |
| 使用「全部允許」權限模式 | 任何模型錯誤都變成事故 | 限定工具、路徑與指令 |
| 一開始就採插件很多的 harness | 擴充放大攻擊面 | 先只用內置功能 |
| 在主機上直接執行 | agent 能觸及你的一切 | 用掛載最少的容器 |
| 不保留逐字紀錄 | 無法稽核跑過什麼 | 記錄每次 tool call 與輸出 |
誠實的總結是:harness 現在就是產品。挑一個它的權限模型、脈絡策略與擴充表面你受得了的,然後在你最糟的倉庫上驗證它,而不是在廠商最好的 demo 上。
常見問題
什麼是編碼 agent harness?
它是模型周圍的軟件,提供循環、工具組、權限模型,以及看見你倉庫的方式。模型提議動作,harness 決定哪些真的執行。
harness 與 coding agent 有何不同?
兩個詞重疊。agent 是模型加上它的策略;harness 是執行 tool call、管理脈絡並強制限制的執行環境。
我該自架,還是用廠商 CLI?
當你需要控制哪個模型看見你的程式、工作階段能保存多久、資料存在哪裡時,就自架。設定速度比這些限制更重要時,就用廠商 CLI。
agent harness 最大的風險是什麼?
權限範圍。擁有廣泛檔案系統、shell 與網絡權限的 harness,會把模型失誤變成真實事故,所以權限模型是第一個要評估的東西。
harness 該用哪個模型?
在隱私預算內符合你質素門檻的那個。模型無關的 harness 讓你從代管模型起步,之後再切到本機端點,工作流不必改變。
相關文章
- 如何在本機執行開源權重 LLM
供應 harness 要指向的模型。
- 如何驗證 AI 助理建議的套件
harness 會安裝模型建議的東西。
相關工具
- JSON 格式化工具
讀懂 JSON 形式的 harness 與工具設定。
- JSON 驗證工具
執行前先驗證 agent 與工具設定。
- Diff 比對工具
提交前審查 agent 產生的修改。