Harness 工程:定義與運作方式

這份淺顯易懂的指南將說明什麼是 AI harness,以及 harness 工程如何形塑 AI 代理程式的能力。

Diagram of an AI harness: an AI model that reads and writes text sits at the center, connected to six parts: agent loop, context management, tools, memory, permissions, and verification.

什麼是 harness 工程

Harness 工程是打造 AI 工具 harness 的工作,而 harness 指的是工具中除了 AI 模型以外的所有部分。

模型是 AI 系統本身,經過大量文字訓練,因此能夠閱讀與撰寫語言。AI 模型的例子包括 OpenAI 的 GPT、Anthropic 的 Claude 和 Google 的 Gemini。

模型本身只能接收文字(有時也包括圖片或音訊),再以文字回覆。它無法記住過去的對話、查詢最新資訊,也無法執行程式碼。因此,模型需要一套 harness 來管理它能取得哪些資訊、可以使用哪些應用程式、獲准做哪些事,以及如何檢查它的成果。

即使是基本的聊天助理也需要 harness。模型每回答完一次,就會忘記這段交流,因此由 harness 負責保存對話紀錄。如果有人先問了巴黎的事,接著追問「它的人口有多少?」,harness 會把兩個問題一起傳送給模型。模型就是這樣知道「它」指的是巴黎。

以相同模型打造的兩個工具,表現卻可能天差地別,harness 工程正是原因之一。舉例來說,在一項獨立測試中,研究人員維持相同的模型(GPT5),只更換了 harness,結果該模型在一項程式設計測試中的分數變動幅度高達 11%。

Anthropic 和 OpenAI 等 AI 模型開發商會為自家 AI 產品(例如 Claude Code 和 Codex)打造 harness。而開發 AI 產品的公司,則會為自己選用的底層模型設計 harness。使用 AI 工具的人也會塑造 harness 的一部分。許多工具都讓使用者新增常設指示、連結應用程式,並選擇在工具繼續執行前,哪些動作需要經過他們核准。

AI 代理程式的 harness 工程

每個 AI 工具都有 harness,但在使用 AI 代理程式時,harness 工程就顯得格外重要。AI 代理程式能自行處理多步驟任務,例如研究競爭對手並將調查結果整理成試算表,而每個步驟都由 harness 執行。因此,如果 harness 出錯,例如抓取了去年的價格,後續的所有步驟也會受到影響。

大多數 AI 代理程式 harness 都有六個主要部分:

1. AI 代理程式迴圈

AI 代理程式迴圈是 harness 中的一段程式碼,負責讓任務一步一步持續推進。

AI 模型會決定完成任務所需的下一個步驟,並撰寫一個工具呼叫:這是一則簡短的請求,指明 harness 中的某個工具(例如網路搜尋),以及該工具應執行的動作。

Harness 會偵測到這項請求、執行搜尋,並將結果加入模型可看到的內容中。模型讀取結果後,再決定下一步要做什麼。

2. 上下文管理

模型在訓練過程中學習一般知識,但這些知識僅止於訓練結束的日期。其中不包含任何與當前任務相關的特定資訊,例如公司的檔案、今天的新聞,或是對話中稍早提過的內容。

這些資訊全都得仰賴模型的上下文視窗:也就是 harness 在每次回應前提供給模型的文字,例如指示、查詢、目前為止的對話,以及搜尋結果。

上下文視窗只能容納固定份量的文字。而且即使視窗還沒填滿,模型有時也會遺漏埋藏在長篇輸入中間的資訊。

因此,harness 會負責上下文管理,只挑選每個步驟所需的資訊。舉例來說,如果任務是比較五家競爭對手的定價,harness 可能只會納入各家公司的定價頁面,而不是整個網站。在耗時較長的任務中,harness 也可以將先前步驟的詳細紀錄替換成簡短摘要,讓模型掌握自己已完成的工作,又不會讓這些歷程塞滿上下文視窗。

3. 工具

工具是負責執行模型所要求動作的程式碼。每個工具負責處理一種動作,例如搜尋網路、開啟並閱讀網頁、執行程式碼或編輯檔案。當模型撰寫工具呼叫時,harness 會將其傳遞給正確的工具,並傳回結果。

許多 harness 也包含連接器,這類工具會透過使用者授予的存取權,將 AI 代理程式連結到特定應用程式,例如電子郵件、行事曆或共用雲端硬碟。舉例來說,有了行事曆連接器,AI 代理程式就能在建議會議時間之前,先查看對方是否有空。

4. 記憶

記憶是儲存下來、能從一個工作階段延續到下一個工作階段的資訊。Harness 會在工作階段中儲存簡短的筆記,例如某人的偏好或專案的進度。到了下一個工作階段開始時,harness 會將這些筆記加入上下文視窗,讓模型在閱讀新查詢之前先讀到它們。舉例來說,AI 代理程式就是這樣才能從上次中斷的地方接續撰寫每週報告,而不必從頭開始。

5. 權限

權限是規範 AI 代理程式可以存取哪些內容、執行哪些動作的規則。存取規則決定它可以開啟哪些檔案、應用程式或網站。核准規則則決定哪些動作必須等待使用者同意,例如傳送訊息或進行購買。

開發 AI 代理程式的公司會在 harness 的程式碼中設定部分規則。接著,組織的管理員可以新增自己的規則,個別使用者則可以選擇要連結哪些帳戶等設定。

6. 驗證

驗證是在 AI 代理程式的成果交到使用者手上之前,負責檢查的程式碼。它使用兩種檢查方式:

  • 固定規則:也就是每次都以相同方式判定通過或失敗的特定測試,例如確認報告中的每個數字,都出現在 AI 代理程式實際讀過的文件中。
  • 由另一個 AI 模型進行審查:該模型會閱讀成果並加以評斷。它能發現難以轉化為規則的問題,例如摘要遺漏了重要論點。

沒有任何單一檢查能發現所有問題,因此 harness 通常會結合這兩種檢查。當檢查發現問題時,harness 會將問題描述加入模型的上下文視窗,並把任務送回 AI 代理程式迴圈。模型會修正問題並再次嘗試,因此許多錯誤在使用者看到結果之前就已經獲得修正。

Harness 工程範例

準備客戶會議

任務:一位客戶經理請 AI 代理程式為明天與客戶的會議準備一份簡報資料,內容涵蓋待解決的問題和議程草稿。

Harness 的作用:

  • AI 代理程式透過電子郵件連接器,在這位經理的收件匣中搜尋與該客戶往來的郵件。
  • 權限設定讓它可以讀取電子郵件,但無法傳送任何郵件。
  • 上下文管理只會將最近三個月與該客戶往來的郵件傳遞給模型,而不是整個收件匣。
  • AI 代理程式迴圈會執行數輪搜尋與閱讀,模型則將找到的內容歸納成待解決的問題。
  • 接著,驗證機制會確認簡報資料中的每個問題,都能對應到一封真實的電子郵件。

可能的結果:經理會收到一份一頁的簡報資料,其中每個重點都能追溯到原始的電子郵件。

更新每月銷售報告

任務:一位營運主管請 AI 代理程式用本月的數字更新每月銷售報告。

Harness 的作用:

  • 記憶功能會載入上個月工作階段的筆記,包括報告的格式,以及這位主管要求將數字四捨五入到千位的指示。
  • 檔案工具會開啟團隊共用雲端硬碟上的銷售試算表。
  • 權限設定讓 AI 代理程式可以編輯報告草稿,但不能編輯來源試算表,因此原始數字不會被意外更改。
  • 驗證機制會檢查報告中的總計是否與試算表一致。

可能的結果:報告會以和上個月相同的格式產出,使用者不必再重新說明一次。

整理共用收件匣

任務:一個支援團隊請 AI 代理程式依主題整理早上收到的請求,並為常見請求草擬回覆。

Harness 的作用:

  • AI 代理程式迴圈會逐一處理收件匣中的每封郵件。
  • 針對每封郵件,模型會選擇一個主題標籤,再由 harness 透過電子郵件連接器套用該標籤。
  • 任務開始時,harness 會將團隊核准的回覆範本加入上下文視窗作為參考,讓模型以範本為基礎撰寫每份草稿。
  • 核准規則會將每則回覆保留為草稿,直到團隊中有人審閱並傳送為止。

可能的結果:團隊一天開始時,請求已分類完成,回覆也已準備好等待審閱。

修正網站中的錯誤

任務:一位開發人員請程式設計 AI 代理程式修正一個導致結帳按鈕無法運作的錯誤。

Harness 的作用:

  • AI 代理程式會在沙箱中工作。沙箱是程式碼的隔離副本,在其中所做的變更不會影響正式網站。
  • 程式碼工具讓模型可以讀取與編輯檔案。
  • 每次變更後,驗證機制都會執行專案的自動化測試。
  • 任何失敗結果都會作為新資訊傳回給模型。

可能的結果:AI 代理程式會持續調整修正內容,直到測試通過為止。接著,開發人員會在變更上線前進行審查。

Harness 工程、提示工程與上下文工程的比較

提示工程是建構並最佳化單一查詢的工作。上下文工程是管理模型所見一切內容的工作。Harness 工程則是設計並改善模型運作所處整個系統的過程。

術語

通常由誰負責

以競爭對手研究任務為例

提示工程

任何撰寫查詢的人

要求「每個競爭對手一列,每個定價方案一欄」

上下文工程

打造 harness 的人員,以及附加檔案或範本的使用者

提供模型每個競爭對手的定價頁面,以及團隊的試算表範本

Harness 工程

開發 AI 產品的公司,以及選擇設定與偏好、上傳資訊的團隊和使用者

決定 AI 代理程式可以使用哪些工具、哪些動作需要核准,以及如何檢查其成果

使用者如何影響 AI harness

AI 代理程式 harness 大部分來自開發該 AI 代理程式的公司,但許多 AI 產品都允許使用者透過自訂指示、已連結的應用程式和核准等設定,調整其中一部分。

使用者可以透過四種方式塑造 AI 代理程式 harness,並改善 AI 代理程式的成果:

1. 常設指示

常設指示是使用者只需撰寫一次的說明,harness 會在每項任務開始時將其加入上下文視窗。凡是原本需要在一次又一次的查詢中重複說明的內容,都值得設定成常設指示:例如自己的身分與工作內容、偏好的寫作方式,或是週期性工作的規則,像是某位客戶的月報。

許多 AI 產品提供兩個層級的常設指示。帳戶層級的指示適用於所有工作都通用的事項,例如拼寫偏好。專案指示則適用於單一客戶或工作流程,讓針對某項工作的指引不會延續到另一項工作中。

常設指示在聊天助理和 AI 代理程式中的運作方式相同,但 AI 代理程式更依賴它們。在聊天中,使用者可以在每次回答後糾正 AI。AI 代理程式則可能在任何人看到成果之前就已執行許多步驟,因此事先提供的指示,是少數能在過程中引導它的方法之一。

如何撰寫有效的常設指示

  • 從簡短的指示開始,例如:「我是一家軟體公司的行銷經理。請用淺顯易懂的英文撰寫,摘要保持在 200 字以內,並使用美式拼法。」
  • 當 AI 出錯時,就補充指示。如果團隊需要精確數字,AI 卻一直將數字四捨五入,就新增一行說明這一點。
  • 讓指示具體明確:「提供精確數字,切勿四捨五入」比「要準確」更有效。
  • 保持清單簡短,並在某些內容不再有用時將其刪除,因為每一行都會占用上下文視窗的空間。

2. 已連結的應用程式

已連結的應用程式可將 AI 產品連結到使用者已在使用的工具,例如電子郵件、行事曆或共用雲端硬碟。連結應用程式後,AI 就能處理使用者自己的資訊,而不僅限於貼到聊天中的內容。

當任務需要用到存放在這些應用程式中的資訊時,就值得設定連結,例如根據電子郵件往來準備會議簡報資料,或彙整共用雲端硬碟上的文件摘要。

如何安全地連結應用程式

  • 只連結任務所需的應用程式,因為每多一個連結,就多一個出錯的機會。
  • 如果有提供唯讀存取權,請選擇唯讀存取權。舉例來說,準備會議簡報資料的 AI 代理程式需要讀取電子郵件,而不需要傳送郵件。
  • 在產品允許的情況下,依專案設定連結。舉例來說,在 Perplexity 中,使用者可以選擇每個專案要使用哪些連接器。
  • 記得中斷不再使用的應用程式連結。

3. 核准設定

核准設定決定哪些動作必須等待使用者同意,AI 才能繼續執行。有些核准機制內建於產品中,有些產品則讓使用者自行選擇其他哪些動作需要核准。

如何設定核准規則

  • 對於無法復原的動作,例如傳送訊息、進行購買或刪除檔案,應要求先取得核准。
  • 需要核准的項目應盡量精簡。如果 AI 代理程式每個小步驟都要求簽核,大家就會開始不看內容直接核准。

4. 標準與檢查

多數 AI 產品都內建了一些標準。例如,Perplexity 會在答案中附上引用來源,讓每項說法都能查證。使用者自訂的標準則能補足產品本身無從得知的部分,例如團隊偏好的報告格式。

如何為 AI 工作設定標準

  • 為例行工作提供範本,讓 AI 有固定的架構可以填寫。
  • 分享團隊滿意的過往工作成果作為範例,讓 AI 能比照其語氣與詳細程度。
  • 要求在每個數據旁附上來源連結。
  • 仔細檢視初期成果,並將反覆出現的缺漏轉化為新的常設指示。

Perplexity 打造 AI 代理程式 harness 的方式

Perplexity Computer 運行於不受限於特定模型的 harness 之上,將 20 多種先進模型整合至單一系統。它會將每項任務拆解為子任務,交給子代理程式(各自負責其中一部分的獨立 AI 代理程式),並將每項工作分派給最適合的模型。

請參閱Perplexity 專案指南,了解如何設定指示、檔案和連接器。

常見問題

什麼是 harness 工程師?

Harness 工程師負責設計並維護讓 AI 模型能可靠完成工作的系統。這可能包括新增供 AI 代理程式使用的工具、追查 AI 代理程式為何一再犯同樣的錯誤,或是強化它在完成任務前執行的檢查。這並非標準職稱,不過未來可能會改變。這類工作通常由 AI 公司的軟體工程師,或是打造 AI 代理程式的團隊負責。在製造業中,同一個職稱指的是設計線束的人員,也就是汽車和機器內部成束的纜線。

什麼是 AI 代理程式 harness?

AI 代理程式 harness 通常是指 AI 代理程式中除了模型本身以外的一切,包括執行代理程式迴圈、管理脈絡、執行工具呼叫、儲存記憶、強制執行權限,以及在 AI 代理程式的工作成果交到人手上之前進行檢查的程式碼。

每個 AI 工具都有 harness 嗎?

是的。即使是基本的聊天助理,也要仰賴 harness 來記錄對話內容,因為模型本身不會記得先前的訊息。

開發人員也可以透過 API(讓一個程式能向另一個程式傳送請求的連線),從自己的軟體向模型傳送請求來使用模型。在這種情況下,開發人員自己的程式碼就承擔了 harness 的工作。

更好的模型會讓 harness 變得不再必要嗎?

更好的模型或許不需要那麼多逐步指引,因此 harness 目前承擔的部分工作可能會減少。但模型本身只能將文字轉換成文字,既沒有網際網路連線,也無法存取其他應用程式。存取檔案、執行動作和強制執行核准規則,都是在模型周邊的軟體中進行,因此無論模型變得多強大,這些工作很可能仍會由 harness 負責。