Agentic Research
首頁/學習/Agent Harness 是什麼:模型外面那層普通程式

Agent Harness 是什麼:模型外面那層普通程式

2026/09/309 分鐘Bryan Chan最後更新 2026/09/30
這篇屬於學習主題HarnessArchitectureAI Agent

比較 AI 編程工具時,大多數人的目光落在模型上:誰家的模型更聰明。但用過兩三個工具的人會發現一件怪事——同一個模型,裝在不同工具裡,表現可以差一大截。有時候差在能力,更多時候差在「模型外面那層程式」的工程品質。那層程式有個名字:harness。這篇是它的概念專文,也是理解 工具地圖 上所有工具的鑰匙。

馬與挽具

Harness 這個英文字,本義是套在馬身上的挽具:韁繩、套包、轡頭那一整套裝備。

一匹馬力氣再大,光靠它自己拉不了車——力量沒有被傳到車上,方向也沒有地方控制。挽具做的事有兩件:把馬的力量傳導到車軸上,以及把韁繩交到車夫手裡。有了挽具,馬力才變成運輸力,而且是可以轉向、可以剎車的運輸力。

把三個角色換掉,這個比喻就是 AI Agent 的架構:

  • 馬 = LLM 模型。 力量的來源,但它的本領只是「接文字、吐文字」(見 LLM(大型語言模型))。
  • 車 = 你的任務。 改程式碼、處理工單、做調研——真正要被拖動的東西。
  • 挽具 = harness。 一層普通的工程程式,把模型的「文字能力」傳導成「做事能力」,同時把控制權留給你。

馬再好,挽具差,車照樣翻。而市面上大多數「AI 工具翻車」的故事,翻的其實是挽具,不是馬。

Harness 具體是哪些程式

AI Agent 的定義是四個零件:LLM、上下文、工具、循環。注意一個常被忽略的事實:四個零件裡只有第一個是模型,其餘三個全是工程師寫的普通程式——那三個,就是 harness 的主體。展開來,一個成熟的 harness 至少管這幾件事:

  1. 組上下文。 這一輪要給模型看什麼:你的指令、對話歷史、相關檔案、工具回傳的結果。Context Window(上下文視窗) 有額度上限,塞什麼、裁什麼、怎麼壓縮,全是 harness 的策略。策略差,同一個模型在長任務裡就會「提前變笨」。
  2. 定義與執行工具。 給模型一份動作清單(讀檔、寫檔、執行指令、搜尋),解析它吐出的 Tool Call(工具呼叫) 請求,真正去執行,把結果餵回去。模型自己動不了任何東西——動手的一直是 harness。
  3. 跑循環。 「問模型下一步 → 執行 → 回灌結果 → 再問」這個迴圈轉到什麼時候停:模型說完成就停?撞上迭代上限強制停?連續重複同一動作要不要攔截?停止條件寫在 harness 裡。
  4. 管權限。 哪些動作直接放行、哪些要先問你、哪些一律拒絕——Permission Gate(權限閘門) 的邏輯與 Sandbox(沙箱) 的圍欄,都是 harness 的代碼。
  5. 管狀態。 會話的保存與恢復、記憶的寫入與檢索、日誌與重放。Agent 斷線重連之後還記不記得自己是誰,看這裡。
Harness 的運行流程流程圖:使用者請求進入 harness 後,先組裝上下文(系統提示、工具清單、記憶),呼叫 LLM 做一次 forward pass,解析輸出。若輸出是純文字就直接收斂成最終答案;若是工具呼叫,則先過權限閘門(放行、詢問或拒絕),在沙箱執行,再把觀察結果回灌到上下文,重新呼叫模型。這個迴圈會一直轉到模型不再要求工具為止。HARNESS(執行環境)工具呼叫純文字回灌使用者請求一句話或一段任務組裝上下文系統提示 + 工具清單 + 記憶呼叫 LLM一次 forward pass解析輸出純文字?還是工具呼叫?權限閘門放行 / 詢問 / 拒絕沙箱執行在受限環境跑工具觀察回灌結果併回上下文最終答案不再要求工具,收斂
1/8使用者請求
任務用自然語言進來。harness 要把它變成模型能處理的東西。
第 1 步,共 8 步 使用者請求
圖:harness 的運行流程。下排是前進路徑,上排是工具迴圈——模型只負責「決定」,每個「執行」都發生在 harness 裡,經過權限閘門與沙箱。

所以:選工具就是選 harness

現在可以解釋開頭那件怪事了。Claude 模型同時出現在 Cursor 和 Claude Code 裡,體驗卻不同——因為上下文怎麼組、diff 怎麼呈現、什麼動作要問你,兩家寫的是不同的 harness。開源的 trae-agent 更極端:模型隨便換(OpenAI、Anthropic、本地模型都行),但它作為一個研究平台被認可的,恰恰是那層刻意做透明、做模塊化的 harness。

推論有三條,每條都直接影響你挑工具:

第一,模型會過時,harness 的工程品質留在產品裡。 各家模型你追我趕,差距以月計地縮小;但權限模型設計得好不好、上下文策略精不精、日誌能不能重放,這些是累積出來的工程。

第二,失敗模式大部分發生在 harness 層。 幻覺是模型的毛病,但「幻覺被當成真、還被執行」是 harness 沒設驗證閘門;迴圈失控燒光預算,是 harness 沒設停止條件;Agent 被網頁裡藏的一句話劫持(Prompt Injection(提示詞注入)),是 harness 沒把工具回傳的內容當「資料」隔離。循環工程的失敗分析 整篇講的就是這件事。

第三,harness 是普通程式碼,所以可以被讀、被換、被自建。 這不是玄學黑箱。DeepSeek Harness 把這句話做到字面意義上的極致——開源、連 agent 循環本身都是可拔插的插件;OpenClaw 把模型和 harness 都做成可替換的組件。你甚至可以照著 你的第一個 Agent 親手寫一個最小 harness,兩百行以內。

Harness 還決定你的帳單

一個常被忽略的推論:循環的每一輪都是一次真實的 API 呼叫,按 Token(詞元) 計費。harness 每輪往上下文裡塞多少東西、裁掉多少歷史、跑幾輪才肯停,直接決定同一個任務花多少錢。模型的單價是廠商定的,一個任務燒多少 token,很大程度是 harness 決定的——這就是為什麼讀一個開源 harness 時,它的上下文管理策略值得跟工具定義一樣認真看。本站的 token 效率偏差分析 專門拆過這件事:harness 省 token 的方式,會反過來形塑 Agent 的行為。

Harness 不是什麼

它不是模型。 模型是租來的算力與知識,harness 是包在外面的殼。殼裡換什麼模型,往往是個設定項。

它不是「提示詞模板」。 系統提示詞只是 harness 的零件之一。解析模型輸出、執行工具、管權限、存狀態、處理錯誤與重試——它的大部分代碼跟「提示」兩個字沒有關係。把 harness 理解成提示詞,等於把整台車理解成方向盤。

它不是 Agent 本身,而是 Agent 的骨架。 「Agent = 模型 + harness」這個說法更準確:harness 沒有大腦,模型沒有手腳,合起來才會做事。

它也不是什麼新發明的神秘概念。 從最早的聊天機器人介面到今天跑一整晚的編程 Agent,模型外面一直有一層程式——只是這層程式越來越厚、越來越決定成敗,厚到大家不得不給它一個名字。這層程式怎麼一步步長成今天的樣子,是 下一篇文章的主題。

評估一個工具時,你其實在問這些

下次看任何 AI 工具,把官網的功能清單翻譯成 harness 問題:

  • 上下文:它怎麼決定給模型看哪些檔案?長任務中怎麼壓縮歷史?
  • 權限:哪些動作會先問我?能不能按目錄、按指令類型設邊界?
  • 沙箱:它執行的程式碼跑在哪裡?碰到我的真實環境嗎?
  • 可觀測:出了事,我能回放它每一步的決策與工具回傳嗎?
  • 擴展:工具生態是封閉的,還是走 MCP(模型上下文協議)、插件這類標準接口?
  • 狀態:會話中斷了,記憶和進度還在嗎?

這六個問題的答案,比任何跑分都更能預測你三個月後還用不用得下去。

下一步