前段時間我們在講LLM與環境的交互關係時,有講解到Harness的架構。看到這裡,你也已經稍微理解了Agent的工作原理 ---LLM通過ReAct循環,在上下文的輔助下使用工具完成任務。
ㄟ,但是、但是,這套基本機制是有效的,同時也暴露了明顯的缺點,模型可能產生幻覺(編造不存在的工具或參數)、選錯工具、卡在思考循環而無法恢復。一個能跑的Demo和一個可靠的產品之間差異還是非常大的,而這些脆弱則是Harness Engineering要解決的問題。
前面的章節建立了 "Agent = LLM + 上下文 + 工具" 的最小公式。也明確了Agent與Environment的邊界。從Harness engineering的角度去看,可以把LLM視為核心組件Model,把Agent邊界負責支撐模型運行與環境交互的程式、配置、服務統稱為"Harness"。
這兩個視角並非替代關係,而是不同抽象層次上對同 --Agent實現的描述。 Harness的核心是原公式中的"上下文管理 + 工具接口",再加上3層保障機制:約束(限定Agent能/不能做的事)、驗證(檢查Agent做得對或錯)、糾正(做錯如何補救)。

最小Demo只需Model和能構造上下文、暴露工具的Harness;生產系統還要在同一邊界內加入約束、驗證、糾正。
例如:退款Agent可以把規則放進上下文、用權限和金額規則約束調用、用數據庫狀態驗證結果,並在超時時重視或回退。
Harness工程研究的就是這層"模型之外、環境之內"的運行與治理程式。
更準確地來說,"Harness不是模型之外的一切,而是Agent邊界內、模型之外的運行與管理層"。它負責協調Model與Environment的交互,但不包含"與之交互的環境本身":工具定義、調用適配器、沙盒的權限與重置機制屬於Harness; 沙盒內隨行動變化的進程、外部數據庫、網頁、用戶及物理世界屬於Environment。物理部署位置也不能決定概念歸屬 --即便仿真環境與Agent運行在同一過程中,它仍然是Environment。Harness的核心是上下文管理與工具接口,圍繞他們建構"3類工程化保障機制"。![]()
| 功能 | 職責與原則 | 例子 |
|---|---|---|
| Context(上下文) | 為模型提供感知訊息;訊息要充分,讓 Agent 在每个決策點都基于足夠的訊息判斷 | Prompt、知識庫、狀態欄 |
| Tools(工具接口) | 為模型提供觀察與行動手段;接口要清晰、命名直觀、參數有例子、邊界要說明 | Claude code每個工具默認需要用戶授權 |
| Constrain(約束) | 設定行為邊界;採用故障安全默認值、所有能力默認關閉、必須顯示開放 | MCP工具、搜索工具 |
| Verify(驗證) | 自動判斷操作結果對錯;安全檢查只看結構化數據(ex.工具返回看JSON),而不看模型自由生成的文本,因為候這可能被提示注入操縱 | Linter檢查、類型系統、工具調用結果校驗 |
| Correct(糾正) | 發現問題時自動修正或回退;在確認無法恢復錢不暴露中間態,ex.工具調用失敗時先靜默重試,不把半成品呈現 | 靜默重試、連續生成 |
好了,今天講得內容有些抽象還有些多,該下課了,明天繼續。![]()
分享一個私藏已久的repo,關於深度學習的知識,大家可以反覆觀看,非常好的東西
GitHub: https://github.com/scutan90/DeepLearning-500-questions