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 負責。