跳至主要內容
科技 科普

模型決定 Agent 的上限,Harness 決定下限:這層「馬具」程式碼到底在馴什麼

從掘金一篇長文談起,說明 Harness 這層包在模型外面的程式碼,為何是 Agent 從「會說話」走到「能做事」的關鍵,以及六件套各自的職責。

刊登:(台北時間) 閱讀約 5 分鐘

2026 年 10 月 4 日,掘金作者「老馬識碼」發布了一篇約 13 分鐘閱讀量的長文,題目就叫「Harness:Agent 運行時架構」。文章開宗明義給了一個定義:Harness 是包在模型外面、把「會說話的模型」變成「能可靠做事的系統」的那層程式碼。

這個詞對多數人可能陌生,但它對應的東西你多半已經用過。Claude Code、各種 coding agent 背後都有一整套循環調度、工具呼叫、上下文管理的機制,那套機制就是 Harness。原文用了一個貼切的比喻:馬具(harness 的本義)並不限制馬的力量,只是讓力量可以被駕馭。同理,Harness 不是削弱模型,而是讓模型的能力可以被依賴。

原文還給了一句值得單獨抄下來的話:模型決定上限,Harness 決定下限,而生產系統要的恰恰是下限。

為什麼這些事不能寫在提示詞裡

文章把讀者最容易忽略的問題放在了選型的勝負手位置:為什麼這些職責必須由程式碼承擔,而不是寫在提示詞裡?

答案的關鍵詞是「資料與指令同通道」。模型收到的每一則訊息,無論是使用者輸入、工具回傳結果還是系統指示,都走同一條文字通道。這意味著任何一段外部內容,理論上都可能被模型當成指令來執行。提示詞是「拜託模型配合」,程式碼是「不管模型怎麼想,閘門都在」。權限檢查、超時、重試這些事,寫在提示詞裡只是願望,寫在程式碼裡才是約束。

這個區分對照我們先前討論過的把生成模型換成判斷模型的分工思路可以看出同樣的邏輯:有些可靠性問題,本來就不該寄望模型自己解決,而該交給確定性的機制。

六件套:一個 Agent 運行時的標配零件

原文把 Harness 的運行時拆成六個組件,原文稱之為「六件套」。

Agent Loop 是控制流核心,負責循環與終止條件,決定 Agent 何時繼續、何時停。Tool Executor 負責工具的呼叫、校驗、權限與錯誤處理。Context Manager 管 token 預算分配、壓縮時機與上下文組裝。State Store 負責 checkpoint 與跨進程恢復。Guardrails 做輸入過濾、輸出校驗與人工審核掛點。Observability 則記錄 trace、成本與審計痕跡。

配套的示範程式把一次「退款訂單」請求串起來,輸出一棵 span 樹:context_manager 準備了 4000 token 的上下文,llm.decide 消耗約 4060 token 做決策,tool.create_refund 執行退款,總成本約 0.0014 美元。這棵樹的意義在於,它讓每一次 Agent 的行為都可以被攤開檢視,哪一步花錢、哪一步出錯,一目了然。

Tool Executor 是最難做好的一件

六件套裡,原文花最多筆墨在 Tool Executor,並直言它至少要處理八件事:schema 校驗、權限檢查、參數規範化、超時、冪等鍵、重試策略、結果截斷與壓縮、結構化錯誤回傳。

這裡有幾個漏了就會出事的例子。模型傳錯參數類型,工具直接崩;寫入操作不帶冪等鍵,一次重試就可能造成重複退款;工具沒有時限,整個循環掛死。而其中最容易被輕視的是結構化錯誤:回傳格式是 {code, message, retryable} 這樣的結構,而不是人類可讀的一段話。示範中,普通使用者越權呼叫退款工具時,系統回傳 PERMISSION_DENIED 且 retryable: false,明確告訴上層「重試也沒用」。

結構化錯誤是模型能否自我糾正的前提。如果錯誤訊息只是一段自然語言,模型可能讀不懂、可能繼續硬試;給它 code 和 retryable 欄位,它才有機會做出正確的下一步判斷。這與我們先前分析的Agent 開發者踩出的五道工程題中提到的錯誤恢復難題,指向同一個工程現實:Agent 的可靠性瓶頸,多半不在模型本身,而在它周圍那層基礎設施做得扎不紮實。

所以呢:自研還是用框架

原文最後回到選型問題:自研還是用框架。術語上,Runtime、Scaffold、Agent Framework、Harness 基本同義,但 Harness 更強調「馴服不確定性」這個目的。

對一般開發者的啟示可以收斂成一句話:當你評估一套 Agent 方案時,與其追問它接了哪個模型,不如先看它的六件套做得如何。模型每季都在換,接 API 只是開始;真正決定這套系統能不能上線、敢不敢交給它碰生產資料的,是權限閘門在哪、錯誤怎麼回傳、狀態能不能恢復這些不起眼的工程細節。這也是為什麼同樣一個頂級模型,包在不同的 Harness 裡,表現可以天差地遠。

(依據掘金 2026 年 10 月 4 日文章撰寫;Context Manager 壓縮細節、State Store 恢復機制原文另有專篇,本文僅及於架構層面的說明。)

#aiagent+軟體架構#harness+系統可靠性#toolexecutor+工程實務