[Daily Questions Challenge 14]
什麼是 Harness Engineering ?
2026-06-08
![[Daily Questions Challenge 14] 什麼是 Harness Engineering ?](/daily-questions-challenge.png)
⬆
如果我們使用 Claude Code 或 Codex 協作進行開發,有可能會遇到 AI Agent 執行到一半突然收尾、明明跑完了卻輸出錯誤結果、每次換台機器或新開一個 session 就「忘記規矩」、或是因為 context 快滿了就開始草率交差?
問題不一定出在模型本身,很多時候是 Agent 工作的環境出了問題,這時候就需要 Harness Engineering 來幫忙了。
「Harness」原意是馬具或安全索——讓強大但不可控的力量被引導與約束。Harness Engineering 要處理的,正是這個「模型以外的一切」:圍繞 LLM 的基礎設施工程,目的是讓 AI Agent 能可靠、持續、可稽核地完成工作。
Harness Engineering 是怎麼來的 ?
Harness Engineering 由 HashiCorp 創辦人 Mitchell Hashimoto(Terraform 共同開發者)於 2026 年 2 月 5 日在個人部落格首次定義:
每次 agent 犯錯,就把修正方案永久工程化進環境裡,讓同樣的錯誤不再發生。
這句話背後有個重要的思維轉移:工程師的產出從「寫程式碼」變成「設計讓 agent 能可靠產出程式碼的環境」。
幾天後,OpenAI Codex 團隊發表實驗報告,在五個月內透過 Harness Engineering 的概念,以零人工撰寫程式碼交付約一百萬行 production code,成為業界第一份大規模的實務驗證。
Anthropic 則從 Claude Code 的實際運行數據出發,揭露了模型無法自行解決、必須由 harness 層介入的兩個系統性問題:Context Anxiety(context 快滿時 Agent 提前收尾)與自我評估偏差(Agent 審查自己的輸出時系統性高估品質)。
2026 年 4 月,Martin Fowler 在 martinfowler.com 發表系統性的分類框架,將 harness 元件分成 Guides(在 agent 行動前介入)與 Sensors(在 agent 行動後介入),為整個領域建立了共同語言,harness engineering 作為一門獨立學科的理論基礎正式成形。
AI Engineering 的演進
從一開始的 Prompt Engineering 發展到後來的 Context Engineering、Harness Engineering,各自的關係及職責可以參考如下:
| 層次 | 範圍 | 例子 |
|---|---|---|
| Prompt Engineering | 單次對話內 | 指令清晰度、角色設定 |
| Context Engineering | 每一輪的資訊管理 | 壓縮、召回、context 視窗策略 |
| Harness Engineering | 對話之外的整個環境 | 工具設定、權限、跨 session 記憶 |
Harness Engineering 五大核心
1. Memory(記憶)
Agent 沒有跨 session 的記憶,每次對話都是從零開始。CLAUDE.md、AGENTS.md 這類規則檔案,讓你跑在不同 session 的 Agent 都能「知道規矩」——它的存在就是為了補上模型先天缺乏長期記憶的問題。
2. Tools(工具)
Agent 光靠語言能力做不了太多事。你必須給它「手」——讀寫檔案、執行指令、呼叫 API 等能力,讓它可以在環境中真正採取行動,而不只是輸出文字。
3. Permissions(權限)
工具越多,能惹的麻煩也越大。透過 allow-list 與 deny-list,你可以定義 Agent 無人值守時能做什麼、不能做什麼,避免一個 bug 演變成刪庫事故。
4. Hooks(鉤子)
PreToolUse / PostToolUse,在執行層攔截 tool call 的機制。讓你可以在 Agent 行動前後插入邏輯,例如執行前記 log、執行後自動驗證結果,或是危險操作先觸發人工確認。
5. Observability(可觀測性)
你無法管理你看不到的東西。建立 log、trace、評估機制,讓你知道 Agent 做了什麼、在哪裡失敗——這是建立可信任 AI 系統最基礎的要求。
Harness Engineering 實務上的注意事項
- Context 管理 — 主 context 只做排程,高成本操作丟給 subagent。避免主流程的 context 被耗盡後讓 Agent 開始草率決策。
- 狀態持久化 — 架構決策都必須推進 repo 才能被 Agent 使用,否則下個 session 一切歸零。
- 工具設計 — 給足夠的工具,不是更多的工具。工具越多反而讓 Agent 選擇困難,降低準確性。
- 驗證機制 — 透過可讓 Agent 驗證的方式進行驗收,而非自行宣告完成。讓 Agent 跑測試、跑 lint、截圖確認,比讓它說「我完成了」可靠得多。
- 指令檔案 — AGENTS.md 控制在 100 行以內,作為目錄指向
docs/。過大的指令檔會擠掉任務的 context 空間,並隨時間腐化。 - Session 紀律 — 一個 session 只做一個任務,防止 context 耗盡。
實務範例:最小可用的 Harness 設定
可以參考 Learn Harness Engineering 的建議,以下四個檔案是讓 Agent 能跨 session 穩定工作的最小組合:
| 檔案 | 對應核心 | 用途 |
|---|---|---|
AGENTS.md / CLAUDE.md | Memory | Agent 開始工作前必讀的規則與流程 |
feature_list.json | Memory + Observability | 以 JSON 追蹤每個功能的狀態與驗證步驟 |
claude-progress.md | Memory + Observability | 跨 session 的進度紀錄與阻礙說明 |
init.sh | Tools | 自動化環境啟動(安裝、驗證、啟動指令) |
AGENTS.md — 規則入口
Agent 每次開啟 session 時會先讀這份檔案。與其把所有規矩塞進去,建議只放核心規則與目錄指引,細節交給 docs/ 下的文件:
markdown
# 規則
- 開始工作前先讀 claude-progress.md,確認目前狀態
- 功能完成前必須通過 feature_list.json 中定義的 verification 步驟
- 不得自行宣告完成,需提供驗證證據
# 目錄
- 功能規格:docs/spec.md
- 架構決策:docs/decisions.mdfeature_list.json — 功能狀態追蹤
讓 Agent 知道目前有哪些功能、各自的優先度與完成標準,避免它自己決定要做什麼:
json
{
"features": [
{
"id": "user-auth",
"priority": "high",
"area": "backend",
"status": "in_progress",
"verification": "npm run test:auth",
"evidence": ""
}
]
}status 有四種值:not_started、in_progress、blocked、passing。Agent 必須把 evidence(例如測試通過截圖或指令輸出)填入才算完成,而非自行宣告。
claude-progress.md — 跨 session 的唯一真相來源
這是讓下一個 session 的 Agent 知道「現在在哪裡」的檔案:
markdown
## 目前驗證狀態
- [x] 資料庫 migration 完成
- [ ] user-auth 模組測試通過
## 當前阻礙
無
## 下一步
實作 auth/login endpoint,完成後執行 npm run test:auth 驗證Harness Engineering 代表 AI 工程的一次典範轉移:工程師的工作重心從「寫程式碼」轉向「設計讓 agent 能可靠工作的環境」。Memory、Tools、Permissions、Hooks、Observability 五個核心元件共同構成這套環境的骨架,讓 AI Agent 的行為從不可控變得可引導、可稽核。
參考
- Learn Harness Engineering — Walking Labs
- My AI Adoption Journey — Mitchell Hashimoto
- Harness engineering for coding agent users — Martin Fowler
- How to Build an Agent Harness: A Practical Guide from Teams Who Actually Did It | Study Notes
- AI 圈新名詞「Harness Engineering」是什麼? 一文看懂 駕馭工程
- Harness Engineering是什麼?台大教授80字實驗揭:AI為何仍需人類引導,還會越罵越笨?
- GitHub: deusyu/harness-engineering
- From Sequential to Parallel: Building a Claude Code Harness
- The Complete Claude Code Harness Engineering Guide: 5 Layers, 8 Deep Dives