Harness Engineering:2026 年 AI 工程師必備的核心知識

@sairahul1
英語1 個月前 · 2026年6月07日
1.1M
1.0K
177
54
3.3K

TL;DR

本指南深入探討 Harness Engineering,這是一門 2026 年興起的學科,旨在透過建構約束條件與回饋迴圈,將原始 AI 模型轉化為可靠的生產系統。

2026 年 2 月,一個小型 OpenAI 團隊交付了 100 萬行生產級程式碼。

他們一行程式碼都沒親手寫。

是 AI Agent 寫的。

人類設計了讓這些 Agent 變得可靠的系統。

這個系統現在有個名字。

「Harness 工程」

幾週內,Anthropic 發表了 3 篇相關論文。

ThoughtWorks 將其正式化為一套框架。

Hugging Face 的 Philipp Schmid 稱其為「2026 年最重要的學科」。

一個新的工程學科在 90 天內誕生了。

而 AI 基礎架構團隊以外的人,幾乎還不了解它。

這篇文章會解釋一切。

不廢話。沒有學術術語。只有你實際運用時需要的思維模型。

請收藏這篇。你會讀兩次。

第一部分:Harness 到底是什麼(一個改變你對 AI 看法的概念)

1. Harness 的定義

Rahul - inline image

最簡單的定義來自 ThoughtWorks:

Agent = 模型 + Harness

Harness 就是模型以外的一切。

那些讓 Agent 保持在正軌上的限制條件。那些能捕捉錯誤的回饋迴路。那些告訴 Agent 身在何處的文件。那些它被允許使用的工具。

拿掉 Harness → 原始語言模型在你的程式碼庫中瞎猜。

加上正確的 Harness → 能夠交付生產級程式碼的系統。

這個名字來自馬具。

Harness 就是韁繩、馬鞍和馬銜,用來引導一頭強大但難以預測的動物往有用的方向前進。

你不是讓馬變得更聰明。你是設計讓牠的力量得以發揮的裝備。

2. 作業系統的比喻

Rahul - inline image

Philipp Schmid 給出了最好的技術框架:

把它想成一台電腦。

模型 = CPU(原始運算能力)

上下文視窗 = RAM(有限、易失的工作記憶體)

Harness = 作業系統(管理 CPU 看到什麼以及何時看到)

Agent = 在上面運行的應用程式

你的模型很強大。

但如果沒有作業系統來管理記憶體、排程任務和執行規則——它就只是塊矽晶片。

大多數人都在沒有作業系統的情況下運行應用程式。

這就是他們的 Agent 在生產環境中失敗的原因。

3. 2026 年發生了什麼改變

Rahul - inline image

LangChain 在 Terminal Bench 2.0 上對同一個模型測試了兩次。

同一個模型。不同的 Harness。

→ 舊 Harness:52.8% 分數

→ 新 Harness:66.5% 分數

Vercel 則走了相反的方向。

他們移除了 Agent 80% 的工具。

結果呢?效能更好了。

不是更差。

2026 年令人不安的真相:

→ Agent 從來都不是最難的部分。

→ Harness 才是。

如果說 2025 年是 AI Agent 證明自己能寫程式碼的一年……

那麼 2026 年就是我們發現環境比模型更重要的一年。

第二部分:5 種 Harness 產出物(Harness 在實務上長什麼樣子)

4. AGENT.md / CLAUDE.md 檔案

Rahul - inline image

最普遍的 Harness 產出物。

分散在程式碼庫各處的 Markdown 檔案。

Agent 在每次工作階段開始時讀取它們——就像新工程師加入團隊時的入職文件。

裡面包含什麼:

→ 專案背景

→ 編碼慣例

→ 架構決策

→ 「我們這裡怎麼做事」的指引

→ 目前正在進行的事項

OpenAI 稱它們為 AGENT.md。

Anthropic 稱它們為 CLAUDE.md。

Cursor 使用 .cursorrules。

名稱不同。原理相同。

每個主要模組一個檔案。隨著專案演進而更新。

沒有它們:Agent 每次工作階段都從零開始,一無所知。有了它們:Agent 每次工作階段都資訊充足地開始。

5. JSON 功能列表(進度追蹤器)

Rahul - inline image

當 Agent 跨越多個工作階段建立一個完整應用程式時,它每次工作階段開始時,上下文視窗都是空白的。

它怎麼知道哪些已經完成了?

靠一個 JSON 檔案。

每個條目定義了:

→ 一個功能

→ 如何驗證它是否正常運作

→ 通過 / 失敗狀態

Agent 在工作階段開始時讀取這個檔案。挑選優先級最高且狀態為失敗的功能。實作它。將其標記為通過。提交。重複。

為什麼用 JSON 而不是 Markdown?

Anthropic 發現 Agent 意外覆寫 JSON 的可能性比覆寫 Markdown 低。

小細節。在長達 6 小時的自動運行中影響巨大。

6. 工作階段初始化流程

Rahul - inline image

每次工作階段都以相同方式開始。

每一次。毫無例外。

Anthropic 的 7 步驟啟動順序:

  1. 確認工作目錄
  2. 讀取 git 日誌和進度檔案
  3. 檢查功能列表,找出優先級最高的未完成項目
  4. 啟動開發伺服器
  5. 執行基本端到端驗證
  6. 實作一個功能
  7. 提交並附上描述性訊息 + 更新進度

沒有這個流程:

Agent 會浪費前 20 分鐘搞清楚已經存在什麼。

每次工作階段都在重新發明輪子。

有了它:

Agent 立即資訊充足地開始,並直接投入工作。

7. Sprint 合約

Rahul - inline image

在 Agent 寫下任何一行程式碼之前:

兩個 Agent 會進行協商。

生成 Agent 提議:

→ 它將要建置什麼

→ 如何驗證成功

評估 Agent 審查:

→ 提案是否完整?

→ 成功標準是否明確?

只有在雙方都同意之後,實作才開始。

這是一場設計審查。

只不過參與雙方都是 AI。

為什麼這很重要?

在同一次執行中同時規劃和執行的 Agent,會產出不可靠的輸出。

規劃步驟——即使是由 AI 完成——也能顯著提升輸出品質。

8. 結構化任務模板

Rahul - inline image

在任何編碼開始之前:

Harness 會分析真實的程式碼庫。

它會產出一個基於實際情況的影響圖:

→ 真實的檔案路徑(不是幻覺產生的)

→ 實際存在的真實符號名稱

→ 要遵循的現有模式

→ 具體的驗收標準

然後才開始實作。

這聽起來很理所當然。

但大多數團隊都跳過這一步。

Agent 猜測檔案結構。發明不存在的 API 端點。建置出不符合程式碼庫的東西。

在執行之前提供基於實際情況的上下文 → 輸出品質大幅提升。

第三部分:三大陣營(三個團隊撞上同一堵牆——並建造了三種不同的梯子)

9. OpenAI:環境優先

Rahul - inline image

OpenAI 的 Codex 團隊遇到了一個荒謬的問題。

100 萬行生產級程式碼。沒有一行是手寫的。

在那樣的規模下,你不可能審查每一行程式碼。

所以他們沒有這麼做。

取而代之的是:

他們如此徹底地設計了環境,以至於 Agent 一開始就能產出可審查的輸出。

他們的做法:

→ 嚴格的依賴流程(類型 → 設定 → 儲存庫 → 服務 → 執行環境 → UI)

→ 整個程式碼庫中的 AGENT.md 檔案

→ Agent 直接整合到 CI/CD 管線中

理念是:設計好環境。然後放 Agent 出去。

證明:Sora Android 應用程式。4 名工程師。28 天。Play Store 排名第一。99.9% 無崩潰率。

Codex 每週處理了 70% 的內部 Pull Request。

10. Anthropic:將執行者與評判者分開

Rahul - inline image

Anthropic 遇到了不同的問題。

當他們要求 Agent 評估自己的輸出時:

它會自信地讚揚自己的工作。

即使,在人類觀察者看來,品質明顯平庸。

自我評估行不通。

Agent 同時是學生和老師。

而且它給自己打的全是 A。

他們的解決方案:三個專門的 Agent。

規劃者 — 將 2 句話的提示轉換成完整的產品規格

生成者 — 一次一個 Sprint 地實作功能

評估者 — 使用瀏覽器自動化來像真實使用者一樣測試運行中的應用程式

關鍵洞察:讓一個獨立的評估者保持懷疑,遠比讓生成者對自己的工作保持批判要容易得多。

結果:單一 Agent(無 Harness):9 美元,20 分鐘 → 壞掉的應用程式。完整 Harness:200 美元,6 小時 → 可運作的軟體,精美的 UI。

11. ThoughtWorks:2×2 框架

Rahul - inline image

ThoughtWorks 從不同的角度切入。

他們不是在建置產品。

他們在觀察 50 多個工程團隊在同樣的事情上失敗。

他們的洞察:沿著兩個軸線對每個 Harness 控制項進行分類。

軸線 1: 它何時運作?

→ 前饋 = 在 Agent 行動之前(引導)

→ 回饋 = 在 Agent 行動之後(感測器)

軸線 2: 它如何運作?

→ 計算型 = 確定性,毫秒級(linter、型別檢查器、測試套件)

→ 推論型 = 使用 LLM,秒級(程式碼審查 Agent、語意分析)

2×2 矩陣:

→ 計算型前饋:型別系統、linter、架構規則

→ 計算型回饋:測試套件、覆蓋率分析、突變測試

→ 推論型前饋:規格文件、約束描述

→ 推論型回饋:LLM 程式碼審查者、行為驗證器

單靠前饋或單靠回饋都行不通。

你需要兩者兼備。

第四部分:每個陣營都同意的 5 項原則(三個團隊從未協調過。他們獨立得出了相同的結論。)

12. 原則 1:上下文勝過指令

Rahul - inline image

OpenAI:「給一張地圖,而不是一本 1000 頁的操作手冊。」

Anthropic:JSON 功能列表和進度檔案,讓 Agent 永遠知道自己的位置。

Red Hat:在生成任何任務之前,先分析真實的程式碼庫。

ThoughtWorks:「前饋。」

不同的詞彙。同樣的發現。

向 Agent 展示世界的當前狀態,始終優於抽象地告訴它該做什麼。

→ 基於真實檔案路徑 → 符合程式碼庫的程式碼

→ 根據模糊描述工作 → 幻覺產生的檔案路徑和發明的 API

教訓:在 Agent 輸入任何東西之前,確保它確切知道自己在哪裡。

13. 原則 2:規劃與執行必須分離

Rahul - inline image

OpenAI:人類設計環境,Agent 執行。

Anthropic:專職的規劃者 Agent 在生成者接觸任何程式碼之前運行。

ThoughtWorks:在規劃和實作之間設置強制的人工審查檢查點。

Red Hat:第一階段(影響圖)和第二階段(實作)之間設有嚴格的關卡。

每個陣營都獨立發現了這一點:

讓 Agent 在同一次執行中規劃和執行,會產出不可靠的輸出。

規劃步驟不一定得由人類完成。

但它必須是一個獨立的步驟,並且在實作開始之前,其輸出需要經過審查。

14. 原則 3:回饋迴路是無可妥協的

Rahul - inline image

OpenAI:Agent 整合到 CI/CD 和可觀測性系統中。

Anthropic:使用瀏覽器自動化的專職評估者 Agent。

ThoughtWorks:將其正式化為「感測器」。警告說,僅前饋的方法永遠無法確認引導是否真的有效。

同一原則的三種方法:

→ OpenAI 使用自動化測試和 CI

→ Anthropic 使用另一個 LLM

→ ThoughtWorks 說兩者都用,分層實施

他們在由誰提供回饋這點上意見不一。

但他們對於是否需要回饋這一點上並無分歧。

沒有回饋的 Harness 只是一個多了幾個步驟的提示詞。

15. 原則 4:一次只做一件事

Rahul - inline image

OpenAI:將目標分解成較小的建構區塊,深度優先地工作。

Anthropic:強制每個 Sprint 只做一個功能,並在每個功能後提交。

ThoughtWorks:分階段的生命週期(整合前 → 整合後 → 持續監控)。

試圖一次做太多事的 Agent:

→ 耗盡上下文

→ 失去連貫性

→ 默默地遺漏需求

Anthropic 的例行程序:

讀取進度 → 挑選一個功能 → 實作 → 提交 → 重複

強制性的漸進主義是所有成功的 Harness 中普遍存在的原則。

16. 原則 5:程式碼庫本身就是文件

Rahul - inline image

OpenAI:將 AGENT.md 檔案嵌入儲存庫中。

Anthropic:將功能列表、進度檔案和 git 歷史作為 Agent 的連續性機制。

ThoughtWorks:衡量「Harness 適應性」——程式碼庫對 Agent 而言的可讀性。

沒有人為 Agent 維護一個單獨的知識庫。

儲存庫是唯一的真相來源。

如果一個慣例、約束或架構決策不在程式碼庫中——Agent 就不會知道它。

實際影響:

→ 投資於程式碼組織的團隊,可以免費獲得更好的 Agent 效能。

→ 混亂的儲存庫 + AI Agent = 混亂,而且是規模化的混亂。

第五部分:悖論——為了刪除而建置(Harness 工程中最反直覺的真相)

17. Harness 衰減是真實存在的

Rahul - inline image

當 Anthropic 從 Opus 4.5 升級到 Opus 4.6 時:

Sprint 分解——之前至關重要的步驟——變成了累贅。

模型改進後的規劃能力使其變得冗餘。

一個在三月份還是承重結構的 Harness 組件,到了四月份就成了開銷。

然後 Opus 4.7 來了。

模型開始驗證自己的輸出。

評估者 Agent 的工作描述開始縮減。

這就是 Harness 衰減

Harness 中的每個組件都編碼了一個關於模型無法做到什麼的假設。

隨著模型改進 → 這些假設過期 → 該組件變成開銷。

Opus 4.5:Sprint 分解 + 每個 Sprint 評估

Opus 4.6:無 Sprint 分解 + 單次評估(節省 38% 成本)

Opus 4.7:模型開始自我驗證 → 評估者角色進一步縮減

18. 為了刪除而建置

Rahul - inline image

Philipp Schmid 的建議:

「為了刪除而建置。」

將每個 Harness 組件設計成可移除的。

定期測試每個組件:關閉它,並衡量輸出品質是否改變。

如果沒有改變:刪除它。

Manus 在 6 個月內重構了他們的 Harness 5 次。LangChain 在 1 年內重組了 3 次。Vercel 移除了 80% 的工具 → 獲得了更好的效能。

這些不是工程品質差的跡象。

它們是在快速改進的模型之上建置的自然結果。

攜帶無用的 Harness 組件會在每次運行中消耗 Token。零額外品質。純粹的浪費。

19. 成本現實

Rahul - inline image

來自 Anthropic A/B 測試的真實數據:

→ 單一 Agent(無 Harness):9 美元,20 分鐘 → 可運作的 UI,損壞的核心功能

→ 完整 Harness(Opus 4.5):200 美元,6 小時 → 可運作的軟體,精美的 UI,正確的物理效果

這是 22 倍的成本增加。

換來一個功能完整的產品,對比一個只在螢幕截圖中看起來不錯的展示品。

這算是昂貴還是便宜,完全取決於一次有問題的發布會讓你的團隊付出什麼代價。

但這裡有件沒人談論的事:

Harness + 模型的組合會演進。

那個 200 美元的 Harness,在一次模型升級後變成了 124 美元。

趨勢線:

→ 更好的模型 = 更簡單的 Harness = 更便宜的運行 = 更快的輸出

2026 年勝出的工程師,不是寫出最好程式碼的人。

他們是設計出最佳限制條件的人。

並且願意在這些限制條件不再值得保留的那一刻,就將它們拋棄。

結語

Rahul - inline image

你剛剛學到的一切:

什麼是 Harness:

→ 1. Agent = 模型 + Harness

→ 2. 模型 = CPU。Harness = 作業系統。

→ 3. 同一個模型,更好的 Harness = +13% 效能

5 種 Harness 產出物:

→ 4. CLAUDE.md / AGENT.md — Agent 的入職文件

→ 5. JSON 功能列表 — 進度追蹤器 + 測試套件二合一

→ 6. 工作階段初始化流程 — 每次都執行相同的 7 步驟啟動

→ 7. Sprint 合約 — Agent 在編碼前進行協商

→ 8. 結構化任務模板 — 真實的檔案路徑,真實的模式

三大陣營:

→ 9. OpenAI:設計環境,放 Agent 出去

→ 10. Anthropic:將執行者與評判者分開

→ 11. ThoughtWorks:2×2 前饋/回饋框架

5 項普遍原則:

→ 12. 上下文勝過指令

→ 13. 規劃與執行必須分離

→ 14. 回饋迴路是無可妥協的

→ 15. 一次只做一件事

→ 16. 程式碼庫本身就是文件

悖論:

→ 17. Harness 衰減 — 上個月有效的東西,這個月可能有害

→ 18. 為了刪除而建置 — 測試並移除無用的組件

→ 19. 成本現實 — 更好的模型 = 更簡單的 Harness = 更便宜的運行

2026 年勝出的工程師,不是寫出最好程式碼的人。

他們是設計出最佳限制條件的人。

並且願意在這些限制條件不再值得保留的那一刻,就將它們拋棄。

如果這篇文章對你有幫助:

→ 轉發給你的社群,讓更多建構者看到

→ 追蹤 @sairahul1 每週獲取更多類似內容

→ 收藏這篇 — 當你的 Agent 開始出問題時,你會回來參考它

我撰寫關於 AI、產品建置,以及 2026 年真正有效的方法。

一鍵儲存

使用 YouMind AI 深度閱讀爆款文章

保存原文、追問細節、總結觀點,並在一個 AI 工作空間裡把爆款文章沉澱成可複用筆記。

了解 YouMind
寫給創作者

把你的 Markdown 變成乾淨的 𝕏 文章

圖片上傳、表格、程式碼區塊,往 𝕏 上手動重排太痛苦。YouMind 把整篇 Markdown 一鍵轉成乾淨、可直接發佈的 𝕏 文章草稿。

試試 Markdown 轉 𝕏

更多可拆解樣本

近期爆款文章

探索更多爆款文章