UrsaKit 挑選與自架編碼 agent harness 的指南封面

三年前,「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用七個問題做決定

  1. 它能跑哪個模型? 若答案只有一家廠商,你選的是模型,不是 harness。可攜性在兩年尺度上最重要。
  2. 它如何管理脈絡? 問它面對 20 萬行的 monorepo 怎麼做:索引、檢索、摘要,還是盲目截斷?
  3. 權限模型是什麼? 優先選可依工具、路徑與指令設定的規則,而不是單一「全部允許」開關。
  4. 能否沙箱化? 容器、唯讀掛載與網絡輸出規則,能把事故變成不便。
  5. 工作階段狀態存在哪裡? 本機檔案、代管服務,或你自己的資料庫——這決定你的資料姿態。
  6. 你如何審查它的成果? 產出可審查 diff 與紀錄的 harness 才適合團隊;直接寫進分支的不適合。
  7. 擴充成本多少? 在投入插件優先設計前,先數清楚你真正需要的插件數量。

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 讓你從代管模型起步,之後再切到本機端點,工作流不必改變。

返回文章列表

相關文章

相關工具