![]()
新智元報道
![]()
【新智元導讀】Anthropic實錘:Claude裸跑模型,9美元全廢;但是套上Harness花200美元效果直接起飛。AI效果不好?別再糾結換模型了!OpenAI和Anthropic都在用的Harness工程,一文講透。
最近,AI圈子里一個逃不開的話題就是Harness。
甚至,連DeepSeek最近也在開始招聘Harness工程師。
![]()
那么,到底什么是Harness?
![]()
Harness,圍繞AI編程智能體搭建的一整套工程基礎設施,由五個子系統組成:指令、工具、環境、狀態、反饋。
![]()
為什么值得專門講它?
因為2026年前后,Anthropic和OpenAI幾乎同時在各自的工程實驗里給出了同一個結論——AI編程智能體頻頻失敗,問題不在模型,在模型之外的Harness。
兩家分別用一組對照實驗當證據。先看數據。
兩組數據對照
Anthropic對照實驗——同一個Opus 4.5模型,同一道編程題:
多花的191美元,全花在驗證循環上——每寫一段代碼就跑測試,不通過就改,直到真正通過。
![]()
OpenAI百萬行實驗,Codex團隊在真實倉庫上驗證:
實驗只改了一件事——倉庫根目錄加了一個AGENTS.md文件,不到100行markdown。
![]()
Harness是什么
Harness不是工具,也不是提示詞技巧,是圍繞智能體的一整套工程基礎設施,由五個子系統組成,每一個對應一種具體失敗模式。
![]()
指令子系統(Instructions)
倉庫根目錄的一個markdown文件——OpenAI陣營叫AGENTS.md,Anthropic陣營叫CLAUDE.md。
Codex、Claude Code、Cursor啟動時自動讀取并注入「系統提示詞」。
解決:智能體不知道項目約定,瞎寫代碼(風格不一致、用錯包管理器、隨手執行破壞性命令)。
![]()
不到15行,把項目約定從反復重申變成啟動時自動注入。
工具子系統(Tools)
限定智能體能調用哪些命令。
Claude Code用.claude/settings.json,Codex用~/.codex/config.toml。
解決:越權操作(rm-rf誤刪、gitpush--force覆蓋遠端、不該聯網時調外部API)。
![]()
允許的直接跑,禁止的直接拒,灰色地帶的彈確認。
環境子系統(Environment)
鎖定依賴版本、運行時配置、數據庫狀態。
實現:setup.sh/Dockerfile/devcontainer.json。
解決:這臺機器上能跑的虛假環境(本地通過,CI一跑就廢)。
![]()
關鍵一行--frozen-lockfile——智能體無法擅自升級任何依賴。
狀態子系統(State)
把跨會話進度、斷點、未完成任務持久化到PROGRESS.md,新會話第一件事讀它。
解決:跨會話失憶(第二個會話從零開始,寫出和第一個會話沖突的代碼)。
![]()
在AGENTS.md固化約定:新會話第一件事讀PROGRESS.md;任務完成或斷點變化,立即回寫。
反饋子系統(Feedback)
機器可執行的驗證命令——測試、lint、類型檢查、構建。
智能體宣布完成前必須跑通,退出碼不為0就不算完成。
解決:過早宣布勝利(說Done!但一行跑不通)——Anthropic 9美元裸跑實驗的核心死因。
![]()
三大致命失敗模式
Anthropic和OpenAI的實驗,不約而同指向了智能體最常見的三種致命失敗模式。
![]()
過早宣布勝利
場景:智能體寫完500行功能,輸出已完成。合并代碼——CI紅屏,type check報12個錯,單測一個沒跑過。
根因:沒有強制反饋循環。判定來自自我感覺,不來自機器可驗證的事實。
解法:反饋子系統。把判定權移交給退出碼——退出碼≠0,任務≠完成。
上下文焦慮(ContextAnxiety)
場景:長任務做到70%,上下文Token數快撐滿窗口。智能體開始趕進度——跳過測試、刪邊界處理、寫stub收尾、宣布完成。
根因:沒有斷點續傳。感知到上下文壓力時,智能體會試圖在這個會話內做完所有事,哪怕代價是質量崩塌。
解法:狀態子系統+主動重啟。每完成一個子任務立即回寫PROGRESS.md;上下文Token用量超70%,主動停下、寫完斷點、開新會話。
跨會話失憶(Cross-SessionAmnesia)
場景:第一個會話寫了用戶模塊,第二個會話寫訂單模塊——智能體不知道用戶模塊已存在,又寫了一遍getUserById,跟前一版接口簽名沖突。
根因:沒有持久化狀態+沒有首讀約定。
解法:狀態子系統+指令子系統組合。PROGRESS.md維護已完成功能清單;AGENTS.md寫明開會話第一件事讀PROGRESS.md;沖突時以代碼為準——倉庫本身是唯一事實來源。
五步從零搭一個Harness
搭建一個Harness,并不難。
下面五步用文本編輯器即可完成,加起來不超過200行配置。
![]()
第1步·根目錄建AGENTS.md
touch AGENTS.md。至少三塊:項目說明、禁止操作、完成定義。
第2步·配permissions
.claude/settings.json或~/.codex/config.toml。最小兩條:
第3步·寫setup.sh鎖環境
已有Dockerfile/devcontainer.json可跳過。
否則寫一個setup.sh,把所有版本寫死。最關鍵一行:pnpminstall--frozen-lockfile。
第4步·建PROGRESS.md
touchPROGRESS.md,四塊:已完成、進行中、待辦、已知問題。提交進git,當成項目自身的一部分維護。
第5步·在AGENTS.md末尾固化完成定義
寫明pnpm type check/test/lint/build四個命令,退出碼不為0就不算完成。如果項目還沒有這些命令,今天就配上。
沒有反饋循環,Harness等于沒裝——這是Anthropic 9美元實驗的核心教訓:前四步全做對,第五步缺位,依然全廢。
兩家殊途同歸
過去一年所有人都在追下一個更強的模型。
2026年,Anthropic和OpenAI用兩組不同的實驗給出了同一個答案——別先換模型,先把Harness裝好。
模型能力決定上限,Harness決定你能用到上限的幾成。
沒有Harness,Opus 4.5跑出的代碼連編譯都過不去;有了Harness,小一檔的模型也能穩定交付。
下一個更強的模型當然會再抬一截上限。但今天連Harness都沒裝,下一個模型來了,成功率依然停在20%。
與其等下一個模型,現在就安裝Harness。
參考資料:
https://walkinglabs.github.io/learn-harness-engineering/en/
編輯:大衛
特別聲明:以上內容(如有圖片或視頻亦包括在內)為自媒體平臺“網易號”用戶上傳并發布,本平臺僅提供信息存儲服務。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.