iT邦幫忙

2026 iThome 鐵人賽

DAY 4
0

Agent = Model + Harness 這個等式常被引用,右邊那個 harness 裝了什麼,各家文件的寫法各有出入。以下依序釐清三個問題:等式兩邊各自負責什麼、既有文獻把 harness 拆成哪六項執行期職責、這六項之間怎麼互相牽動。


等式的兩邊

harness 這個詞怎麼界定,Birgitta Böckeler 在 martinfowler.com 的文章裡說得很明確:

harness 已經成為一種簡稱,指的是 AI agent 裡除了 Model 本身以外的所有東西

這是個排除式定義,好處是邊界清楚:

Model Harness
提供什麼 推論 其餘全部
狀態
副作用
可替換性 換推論端點即可 換掉等於換整個系統

Guo 等人 2026 年的調查則從實作角度給了同一個結構,論文摘要的寫法是:

把 LLM agent 的實作觀點視為一個基礎模型耦合一個執行 harness

兩個來源用不同路徑得到同一條分界線,一邊從定義排除,一邊從實作拆解。

同一篇 martinfowler.com 文章還把 harness 的作用拆成兩種機制:

  • guides:預期 agent 的行為,在它動作之前先引導
  • sensors:在它動作之後觀察,協助它自我修正

Hashimoto 的定義決定了除錯紀錄怎麼寫

harness engineering 這個說法最早出自 Mitchell Hashimoto,2026 年 2 月,他在自己的部落格上這樣說:

每當發現 agent 犯了一個錯,就投入時間工程化一個解法,讓它再也不會犯同一個錯

這句話隱含了一個要求,錯誤必須能被描述成一種形式。「重新啟動後,先前寫入的偏好遺失」講得出形式,工程化才有對象,「agent 壞了」則停在後果。

Hashimoto 也提到工程化一個解法有兩種形式,兩者正好落在 harness 的不同位置:

  • 更新給 agent 看的說明文件:事前的 guides
  • 寫程式化的工具讓它驗證自己的工作:事後的 sensors

依這個定義,除錯紀錄採固定四段結構:

段落 寫什麼 成立條件
現象 可重現的觀察 依步驟能再次觸發
根本原因 為什麼會這樣 指得出程式碼或組態的位置
修正方式 動了哪一項職責、改了什麼 改動落在該職責的機制上
迴歸測試 同一種錯誤再次出現時怎麼擋下 有一個會因該錯誤而失敗的檢查

執行 harness 的六項職責

Guo 等人的調查把執行 harness 分解成六項耦合的執行期職責,論文摘要列出的原文是 observation、context、control、action、state、verification。各項的定義與涵蓋範圍如下,取自該論文的職責定義一節:

職責 決定什麼 涵蓋的機制
Observation Interface 把原始環境訊號轉成模型可用的觀察 終端輸出、file diff、螢幕截圖、DOM 狀態、API 回應、日誌、檢索到的段落、事件串流
Context Manager 什麼資訊進入模型 context、何時進、以什麼形式進 prompt 構造、system instructions、檢索、記憶選取、壓縮、摘要、工具描述、當前任務狀態
Control Loop 編排觀察、推理、行動、回饋這個循環 步驟排程、停止條件、重試、反思、委派、交接、多 agent 協調、模型路由與角色指派
Action Interface 把模型輸出對映成可執行的操作 函式呼叫、MCP 工具、shell 與程式碼執行、瀏覽器操作、檔案操作、API 呼叫、子 agent 呼叫
State and Artifact Store 保存執行狀態與產物 對話歷史、計畫、scratchpad、checkpoints、日誌、traces、diff、記憶紀錄、產生的檔案與任務產物
Verification and Governance 透過檢查、約束與修復管理執行 測試、斷言、verifier 模型、沙箱政策、權限閘門、rollback、重試、預算控制、安全約束、稽核軌跡

Model 位在這六項之外,是可替換的推論端點。

其中兩項牽涉合併與拆分:

  • 權限與測試同屬一項。 沙箱政策、權限閘門與測試、斷言全在 Verification and Governance 底下,論文的說法是這一項決定 harness 被允許做什麼、被要求做什麼
  • 記憶被拆到兩處。 「這一輪要撈哪幾筆記憶」屬於 Context Manager 的記憶選取,「記憶紀錄保存在哪」屬於 State and Artifact Store

六項之間怎麼耦合

論文強調這六項是互相耦合的職責,並指出三組具體的牽動關係:

Day04HarnessSixRuntimeResponsibilitiesSimplified

這兩項 怎麼互相牽動
Observation 與 Context 觀察給得越豐富,context 的處理成本越高,兩者緊密互動
Action 與 Verification 行動介面越有表達力,需要的權限控制越強
State 對 Context 與 Verification 保存下來的產物決定了什麼能被重新端上來、以及有哪些證據可供查核

這三組關係說明的是同一件事:動其中一項會把成本或風險推到另一項身上,六項要一起看。

論文另外把 Action Interface 的品質稱為 agent 可靠性的主要來源之一,並把工具粒度、結構化 schema 與協定式生態列為該項底下的議題。


這套組合對應到哪幾項

以下是這次實作的建構順序,屬於自訂的排程,論文本身只定義職責:

職責 這次怎麼處理
Observation Interface 這次的範圍限於對話與排程兩種輸入,環境訊號的轉換留在範圍外
Context Manager 量測固定 prompt 的預算佔用、壓縮行為、工具 schema 的佔比、SOUL.md 的注入
State and Artifact Store 記憶的寫入與讀回、checkpoints 與 session 的回溯
Action Interface MCP 協定、自建 MCP server、工具實際被呼叫的紀錄
Control Loop 排程觸發、失敗與成功路徑分流、模型替換與路由
Verification and Governance profile 的沙箱政策、授權邊界、稽核軌跡、輸出驗證與驗收

有一項機制的位置要自己指定:身分宣告。該論文討論的是多 agent 的角色指派,agent 自身的 identity 屬於另一個議題。這次仍然要做,因為它對應到一個實際發生過的失效。


心得

身分宣告的歸屬要自己決定,而它是我遇過最難查的一種失效。

把 agent 接進一個多人聊天平台之後,它開始用其他人的名字自稱。原因是群組訊息以「顯示名稱: 內容」的格式進入 context,模型把前綴解析成自己的身分。

身分宣告本來寫在 system prompt 裡,只出現一次,對話變長之後 context 被壓縮,那段宣告被移除,剩下唯一能判斷身分的線索就是訊息開頭那個名字。

用六項職責的語彙來描述,這是 Context Manager 的壓縮行為把一段應該長期存在的內容清掉了,而它原本該待的位置是 State and Artifact Store。只依賴 Context Manager 注入的內容,存活期就等於一次壓縮的間隔。

一個機制要不要做,取決於它對應到哪一種失效,它在既有分解裡的位置由實作者自己指定


明天

盤點 2026 年的 agent 生態系,比較 MCP、A2A、Agent Skills 與 Plugin 各自的定位。


上一篇
【Day 3】名詞定義(下):Agent 工程的四個範式與相關方法論
下一篇
【Day 5】2026 Agent 生態系:協定、擴充機制與框架的分工
系列文
打造具備記憶與執行能力的常駐 AI Agent:Hermes Agent × Gemini × MCP 的 Harness 設計6
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言