SSD Nodes Learn Hosting plans →
指南 Matt Connor作者: Matt Connor · 已更新 2026-09-03

什麼是 Agent Harness?與 LLM 模型的差異解析

Agent Harness 是圍繞 AI 模型運作的程式,負責處理迴圈、工具呼叫、權限與會話狀態。本文解析為何安裝在磁碟上的工具程式與雲端模型不同,並說明 harness 如何透過五步驟迴圈執行指令。

什麼是代理程式外殼 (agent harness)

代理程式外殼是圍繞語言模型運作的程式,負責將模型轉化為代理程式。它包含維持模型持續運作的迴圈、模型可呼叫的工具定義、決定哪些呼叫實際執行的權限規則、跨回合存續的會話狀態,以及執行工作的作業目錄。模型可在此外殼內進行替換。

最後一句話最為關鍵。模型本身在回答問題後就會將你遺忘。外殼則會詢問模型下一步該做什麼、執行模型要求的指令、將結果回饋給模型,並再次詢問。這種重複過程正是人們所稱的「代理程式」。若對相關術語仍感到模糊,AI 代理程式、LLM 與助理之間的差異 可在您選擇工具前釐清這些詞彙。

工具程式並非模型

兩者常被混淆,因為供應商將它們以同一個品牌名稱發布。

dsh 與 DeepSeek 是不同的產品。DeepSeek Harness 於 2026 年 8 月 13 日在 github.com/deepseek-ai/deepseek-harness 發布,採用 MIT 授權,是一個安裝在機器上的 Node 程式。DeepSeek 模型則是透過 API(應用程式介面)提供服務的權重檔。將 dsh 指向其他供應商的模型,它依然能運作,因為工具程式只需要一個能接收訊息並回傳工具呼叫的介面。

Claude Code 與 Claude 是同樣的組合。Claude Code 是一個工具程式:一個具備迴圈、權限系統以及檔案與 shell 工具的終端機程式。Claude 則是它預設呼叫的模型系列。Codex 與 Gemini CLI 的架構劃分方式相同。

以下是每次都能釐清兩者的測試方法。你安裝的是工具程式。你呼叫的是模型。如果該軟體在你的磁碟上有版本號,且在你的家目錄中有設定檔,它就是工具程式。如果它是該設定檔內的一個字串,例如 deepseek-chat,那才是模型。

迴圈的實際運作方式

一個 harness 迴圈的單次執行流程如下。請仔細閱讀,因為 harness 之間的絕大多數差異,都源自這五個步驟內部的細節。

  1. Harness 將目前的對話紀錄以及工具定義列表傳送給模型。
  2. 模型回覆文字,或是要求呼叫其中一項工具。
  3. Harness 根據權限規則檢查該請求,決定直接執行或暫停並詢問使用者。
  4. Harness 執行工具、擷取輸出結果與結束代碼,若輸出過長則會進行截斷。
  5. Harness 將結果附加至對話紀錄中,並回到步驟 1。

步驟 3 是 harness 在日常使用中差異最大的地方。會在每個指令執行前詢問的 harness 非常安全,但也很耗費心力。從不詢問的 harness 終究會在模型判斷錯誤的路徑上執行破壞性指令。目前所有嚴謹的 harness 都具備中間設定:建立一份允許清單(allowlist),清單內的指令可直接執行,其餘指令則需提示確認。

其餘差異則存在於步驟 1。Harness 會寫入隨附於每次請求的系統提示詞(system prompt),而 Claude Code 直接將此控制權交給使用者,因為 輸出樣式會編輯其傳送的系統提示詞,進而改變後續的每一次回覆。對話會隨著每一輪執行而增長,但模型有固定的上下文視窗(context window),因此 harness 必須決定哪些內容要捨棄、哪些要摘要,以及哪些要寫入檔案以便日後讀取。這項決策是導致兩個 harness 在驅動相同模型時,工作品質產生差異的主因。如果這五個步驟對您來說仍過於抽象,解決方法是親手編寫一個簡易的迴圈,這正是 AI 代理學習的階段性路徑 在初期要求您建立的內容。

目前大多數 harness 透過 MCP (model context protocol) 連接外部工具,這是一種讓任何支援該協定的 harness 都能使用工具的標準,因此單一整合即可適用於多個 harness。在 VPS 上執行 MCP 伺服器 涵蓋了這部分的內容。網頁搜尋通常是使用者最先加裝的工具,而 將代理指向您自己的 SearXNG 執行個體 不僅能讓查詢避開第三方,同時也清楚表明代理後續讀取的每一頁內容,都是進入迴圈內部的未受信任輸入。

Agent harness 與 agent framework 的區別

每當有新的 harness 出現,這個問題就會被提出,且各方說法不一,部分原因是廠商對定義的看法不同。以下是目前最站得住腳的解釋。

Framework(框架)是你匯入的程式庫。由你編寫迴圈、決定何時呼叫模型,並自行處理工具執行結果。LangChain 是最著名的例子:你取得建構組件,並以程式碼組裝出 agent。

Harness(工具套件)是你執行的程式。迴圈已經寫好,工具已經存在,權限模型也有預設值。你執行第一個指令就能得到一個可運作的 agent,並從該基礎進行設定。

安裝測試通常能決定其分類。如果你安裝後需要寫程式,它就是 framework。如果你安裝後直接與其互動,它就是 harness。

這條界線確實存在爭議,最明顯的證據在於 LangChain 自身的說明文件。截至 2026 年 8 月,它將 Deep Agents 描述為建立在 LangGraph 之上、具備「特定觀點且功能完備 (opinionated, batteries-included)」的 framework,而 langchain-ai/deepagents 儲存庫則自稱為「功能完備的 agent harness」。兩種描述都合理。Deep Agents 是一個你匯入的 Python SDK (software development kit),因此安裝測試將其歸類為程式庫,但它內建了足夠的預設行為,使人們能像使用 harness 一樣使用它。Microsoft 於 2026 年 8 月發布了 harness 與託管式 agent 的正式版本,這顯示該詞彙現在已成為產品類別,而非僅是技術術語。

因此,請改問能預測你工作負載的問題。如果你編寫迴圈,你就必須負責迴圈的運作:包含重試機制、上下文修剪、權限提示以及執行紀錄。如果迴圈是內建的,你就繼承了他人對上述所有問題的解決方案,這能大幅加快啟動速度,但日後若要修改則較為困難。

Harness 與聊天視窗的差異

聊天視窗與 Harness 皆會顯示模型輸出,兩者的差異在於運算作業執行的位置。在聊天視窗中,模型執行的任何程式碼皆於供應商的沙盒環境內運作,處理您上傳的檔案,且該工作階段結束後資料即會消失。Harness 則是在您啟動它的機器上執行工具,並以啟動該工具的使用者身分,直接針對您的真實檔案進行操作,且其環境中包含您的真實憑證。

這兩句話概括了其全部優勢與風險。代理程式終於能夠執行實際工作,但同時,代理程式也可能刪除這些工作成果。

目前實際運作中的開發輔助工具

此清單刻意標註日期為 2026 年 8 月 19 日。此領域變動極快,任何彙整資訊都容易過時。

  • Claude CodeCodex 為廠商提供的輔助工具。以終端機為優先,預設綁定各家廠商的模型,並具備最完善的權限控管機制。Claude Code、Cursor、Codex 與 Copilot 的比較 有詳細說明。
  • DeepSeek Harness (dsh) 採用 MIT 授權,核心理念為「一切皆為外掛」,因此模型、工具、工作階段、沙盒與使用者介面均可替換。每個安裝的外掛皆以代理程式的權限執行,因此在安裝前 檢查 dsh 外掛的存取權限 比起固定工具集的輔助工具更為重要。截至 2026 年 8 月 19 日(發布後六天),其 GitHub 星數約為 166,800。
  • Hermes(由 Nous Research 開發)屬於通用自主代理程式,而非單純的程式碼工具。它於 2026 年 2 月以 MIT 授權發布,並將記憶與技能儲存於本機的 SQLite 資料庫中。在 VPS 上自架 Hermes 有詳細操作指南。
  • Omnigent 是一種元輔助工具(meta-harness):它能整合 Claude Code 與 Codex 等其他工具,透過單一 API 進行管理,並提供共享工作階段、支出上限與作業系統層級的沙盒。Omnigent 作為多代理程式輔助工具的優勢 說明了其效益。
  • OneCLI 是一款針對團隊設計的沙盒化輔助工具,其核心為一個閘道器,能將真實憑證注入對外請求中,確保代理程式本身僅能接觸到佔位符金鑰。

其中三款工具經常同時出現在候選清單中,建議閱讀 DeepSeek Harness、Claude Code 與 Omnigent 的綜合比較,了解模型耦合、授權、成熟度以及在伺服器上運行的需求。

dsh 的快速啟動僅需單一指令,執行一次即可最快了解該工具的運作方式。機器上需預先安裝 Node.js。

npx @deepseek-ai/dsh web

上述指令會在 http://127.0.0.1:3080 啟動網頁介面(user interface)。在使用前請務必閱讀 README,因為 dsh 明確標示為開發者預覽版,並註明未來將會有破壞性更新。若該指令執行失敗或下載了非預期的版本,通常透過 鎖定特定 dsh 版本並清除 npx 快取 即可解決。在 VPS 上執行 DeepSeek Harness 涵蓋了伺服器安裝流程,而 為何該位址預設為 127.0.0.1 則解釋了 loopback 的預設設定原因。

路由器位於 harness 之上

模型路由器是 harness 與供應商 API 之間的本地代理。Claude Code Router 即為常見範例:它預設綁定至 127.0.0.1:3456,接收 Claude Code 原本會發送給其供應商的請求,並將其轉發至您設定的任何供應商。Harness 本身不會察覺任何變動。

路由器之所以存在,是因為模型可隨意替換,這也驗證了本文的核心觀點。由於代理層會檢視所有提示詞(prompt)並持有所有供應商金鑰,這也集中了風險。請將其視為基礎設施,而非便利工具。Harness 存放 API 金鑰與模型設定的位置 與此處面臨的問題屬於同一層級。

當 harness 在 VPS 上執行時的變更

當 harness 從您的筆記型電腦移至租用的伺服器時,會有四項變更。

它會在您闔上螢幕後持續執行。 長時間執行的任務不會受到通勤或電池電量影響。請在 tmux 內啟動它並與其分離:

tmux new -s agent
# start the harness, then press Ctrl-b and then d to detach
tmux attach -t agent

對於需要在重新開機後自動恢復的任務,使用使用者服務(user service)比終端機連線更穩定:

loginctl enable-linger $USER
systemctl --user status my-agent.service

loginctl enable-linger 是最容易被忽略的部分。若未設定此項,systemd 會在您關閉最後一個 SSH (secure shell) 連線時立即停止您的使用者服務,導致 agent 在您登出時終止,且不會顯示任何錯誤訊息。在 systemd 下以無頭模式執行 dsh 頁面提供了單元檔案(unit file)。一旦伺服器上已有一個連線,開啟第二個連線並不會增加額外成本,且 同一台機器上的兩個 Claude Code 連線可以互相傳遞訊息,因此您早上啟動的連線可以將工作交接給另一個,無需手動中轉。

它會保存您的金鑰。 提供者金鑰(provider key)現在存放在該伺服器的設定檔中。請檢查誰有權讀取它:

ls -l ~/.config

任何以您的使用者身分執行的處理程序(process)皆可讀取該檔案,這包含 agent 本身以及任何由 agent 執行的程式。

它可以存取您的其他機器。 若 VPS 與您的其他機器位於同一個私有網路,agent 便能連線至這些機器。這正是其目的所在,但同時也擴大了潛在的影響範圍(blast radius)。

它可以從任何地方被存取。 大多數 harness 都會提供網頁介面(web UI),且通常會將其綁定至 loopback 位址,這是為了安全考量。請檢查您的設定:

ss -tlnp | grep 3080

127.0.0.1:3080 代表只有伺服器本身可以連線。0.0.0.0:3080 代表任何找到該位址的人皆可連線。請透過 SSH 通道(SSH tunnel)存取 loopback 介面,而非更改綁定位址:

ssh -N -L 3080:127.0.0.1:3080 you@your-server

接著在您筆記型電腦的瀏覽器中開啟 http://127.0.0.1:3080。流量會經由 SSH 連線傳輸,因此不會有新的內容暴露在網際網路上。

上述每一點同時也是安全性的論據

請以攻擊者的視角重新審視這四項特性。

由於它在無人看管下執行,因此沒人會注意到模型誤讀路徑的轉折點。它持有您的金鑰,所以任何一個可讀的設定檔都可能導致您的整個供應商帳號遭竊。它能存取您的其他機器,因此提示詞注入(即隱藏在網頁或代理程式讀取的檔案中的指令)現在有了通往資料庫主機的路徑。它可從任何地方存取,因此綁定在 0.0.0.0 且未設密碼的網頁介面,等同於在公用網際網路上開啟了一個 shell。

針對上述每種情況的修復方式都很枯燥,且每次的解法都一樣。請為代理程式建立專屬的無特權使用者帳號,而非使用您的帳號:

sudo adduser --disabled-password --gecos "" agent

將網頁介面維持在 loopback,並透過 SSH 進行存取。給予代理程式能完成任務所需的最小權限憑證,關於此點,將機密資訊排除在 AI 代理程式之外 有詳細說明。對於任何在您未監控時執行的程式,拋棄式機器比精心維護的機器更安全:在拋棄式 VM 中執行程式設計代理程式安全地在 VPS 上執行 Claude Code 皆採用此路徑。

您需要代理程式(agent)工具鏈嗎?

如果您的工作是單次提問,聊天視窗已足夠使用,而工具鏈只會增加您必須監控的迴圈。當任務需要針對真實檔案執行多個步驟,或是必須在您休息時持續運作,工具鏈的價值才會顯現。

此類工具大多尚處於早期階段。dsh 在其 README 中註明截至 2026 年 8 月仍為開發者預覽版,其餘工具的更新速度也極快,您今天編寫的設定檔下個月可能就需要修改。這正是您應保持設定精簡且可重現,並記錄所有變更的原因。同樣的節制原則也適用於迴圈內部,透過 推動代理程式採取最小可行變更的技巧,能讓您在無人值守的執行結束後,獲得易於閱讀的 diff。請先從一台伺服器上的一個工具鏈開始,指派一項任務並給予受限的權限金鑰,待該任務穩定執行一週後,再逐步擴大其存取權限。目前值得執行的自架代理程式 是選擇首個工具的合適參考。

FAQ

什麼是 Agent harness?請用簡單的話說明。

它是圍繞著模型運作的程式。模型負責產生文字並請求使用工具。Harness 負責執行迴圈以維持運作、執行模型所請求的工具、強制執行哪些工具無需許可即可執行的規則,並在各個回合之間維護工作階段狀態與檔案。你可以更換模型,而 Harness 依然能運作,這就是兩者相互獨立最明顯的證明。

Claude Code 是模型還是 Harness?

Claude Code 是一個 Harness。它是一個包含迴圈、權限系統以及內建檔案與 shell 工具的終端機程式。Claude 是它預設呼叫的模型系列。同樣的區分也適用於 DeepSeek Harness (dsh),這是一個你安裝的 Node 程式,而 DeepSeek 模型則是透過 API 提供服務。你將 Harness 安裝在機器上,並透過網路呼叫模型。

Agent harness 與 Agent framework 有什麼不同?

Framework 是你匯入並據此撰寫程式碼的函式庫,因此你必須自行處理迴圈、重試機制與上下文管理。Harness 是一個你直接執行的程式,所有上述功能都已內建,你只需進行設定而非撰寫程式碼。在實務上兩者的界線較為模糊:截至 2026 年 8 月,LangChain 的 Deep Agents 既是一個可匯入的 SDK,其儲存庫也稱其為「內建完整功能的 Agent harness」。判斷標準在於:你是否需要親自撰寫迴圈?這個答案決定了哪個詞彙適合你的情況。

我需要 VPS 才能執行 Agent harness 嗎?

不需要。此處提到的每個 Harness 都能在筆記型電腦上執行。使用伺服器會改變四件事:當你闔上筆電時 Agent 仍會持續運作、它將你的金鑰存放在一台常駐的機器上、它可以存取你的其他伺服器,且你可以從任何裝置回到同一個工作階段。每一點都涉及安全性考量,因此請為 Agent 建立專屬的使用者帳號,並將任何網頁 UI 綁定在 127.0.0.1

我可以在同一個 Harness 內使用不同的模型嗎?

通常可以,這也是 Harness 的定義特徵。大多數 Harness 在設定檔中都接受模型名稱與 base URL,因此將其指向另一個供應商只需修改設定,而非重寫程式。若遇到不支援的 Harness,可以在 Harness 與供應商之間架設如 Claude Code Router 之類的本地路由器來轉換請求,該路由器預設綁定在 127.0.0.1:3456。請謹慎使用此代理程式,因為它會讀取所有提示詞並持有所有金鑰。