Harness engineering 在 2026 年 3 月 Claude Code 原始碼外洩事件後,從 Anthropic 內部術語一夜變成 AI 工程師的必修課。 這個事件揭露了一件業界長期忽略的事實:讓 AI agent 真正可靠運作的關鍵,從來不是模型本身,而是包在模型外面那層 harness——agent loop、工具調度、權限控管、context 管理的整合架構。Anthropic 的 Claude Code 在 2025 年 5 月公開上線後,不到九個月就達到 USD 2,500,000,000(約 NTD 80,000,000,000)的年化營收,這個速度在 B2B 軟體史上沒有先例。而推動這個成績的核心,不是更好的 prompt,是更好的 harness。
外洩事件:一個 .npmignore 的疏忽
2026 年 3 月 31 日,Anthropic 發布 @anthropic-ai/claude-code npm 套件的 2.1.88 版本時,一個 59.8 MB 的 source map 檔案(cli.js.map)被意外打包進去。這個檔案把壓縮過的 JavaScript 直接對應回完整的 TypeScript 原始碼,大約 1,906 個檔案、512,000 行程式碼,全部可讀。
安全研究員 Chaofan Shou 在凌晨 4:23(ET)率先在 X 上公開發現。幾個小時內,整份程式碼被鏡像到 GitHub,開始被全球開發者分析。根因是 Bun runtime 的一個已知 bug(#28001,3 月 11 日提出),在 production build 中預設產生 source map,而團隊漏了在 .npmignore 中排除 *.map 檔案。
Claude Code 負責人 Boris Cherny 確認這是「單純的開發者疏失」。Anthropic 聲明未涉及客戶資料或憑證,但這已經是 13 個月內的第二次類似事件——2025 年 2 月也發生過一次 source map 外洩。更尷尬的是,同一週還有 Mythos 模型規格因 CMS 設定錯誤而曝光,五天內出了兩個外洩事件。
這次外洩的 GitHub repo 在 24 小時內拿到超過 100,000 顆星,是 GitHub 歷史上最快的紀錄。一位韓國開發者當天就用 Python 從頭重寫了核心架構。
Harness Engineering 到底是什麼?
Birgitta Böckeler 在 Thoughtworks 提出的公式說得最清楚:Agent = Model + Harness。
模型負責推理,harness 負責讓推理落地。當 agent 要讀檔案,是 harness 決定這次讀取有沒有權限、結果怎麼處理、有多少東西可以塞進下一次的 prompt。模型永遠不直接碰檔案系統。
用 Anthropic 工程團隊的說法:harness 是「把語言模型變成有能力的 coding agent」的那一層。沒有這層,模型只是一個很厲害的文字接龍;有了這層,模型能夠在真實環境中連續工作數小時。
Claude Code 外洩後,業界看到的 harness 架構主要包含五個核心子系統:
| 子系統 | 功能 | Claude Code 實作細節 |
|---|---|---|
| Agent Loop | 驅動感知→推理→工具執行的循環 | 單線程主迴圈,每輪循環結束後把工具結果注入 context |
| Tool Dispatch | 把模型的工具呼叫路由到對應的 handler | 約 40 個工具,每個都有獨立的 input schema 和權限閘門 |
| Permission System | 控制工具存取權限 | 規則式 pipeline:allow / ask / deny,deny 永遠優先。Auto mode 用獨立模型實例做背景分類,刻意不看 agent 的文字輸出以防 prompt injection |
| Context Management | 管理 context window 的使用效率 | 三層記憶系統:即時 context、compaction 摘要、持久化記憶目錄 |
| Session Persistence | 跨 session 的狀態保存 | 檔案式記憶目錄,儲存使用者偏好、專案 context、跨 session 學習 |
外洩也揭露了 44 個未公開的 feature flag,包括一個叫 KAIROS 的背景 agent、一個叫 ULTRAPLAN 的遠端規劃模式(30 分鐘 thinking 預算),以及一個讓 Anthropic 員工在開源專案中隱藏貢獻的「Undercover Mode」。

Anthropic 的 Harness 演進:從 Sonnet 4.5 到 Managed Agents
Anthropic 工程團隊在過去一年發表了多篇技術文章,記錄 harness 設計的演進。最關鍵的轉折是他們發現的兩個問題:
第一是 context anxiety。Sonnet 4.5 在感覺 context window 快用完時會提前結束任務,即使工作還沒做完。團隊的解法是 context reset——清空整個 context window,用結構化的交接文件把狀態傳給新的 agent 實例。這跟 compaction(在原地摘要早期對話)不同:compaction 保留了連續性,但沒辦法給 agent 一個乾淨的起點,context anxiety 可能持續。
有趣的是,Opus 4.5 基本上自己消除了 context anxiety 行為,所以 Labs 團隊成員 Prithvi Rajasekaran 在 2026 年 3 月的長時間 coding harness 實驗中,直接拿掉了 context reset,改用 Claude Agent SDK 的自動 compaction 處理 context 成長。
第二是 self-evaluation 的問題。當 agent 被要求評估自己的工作品質時,傾向於過度正面的評價,即使在人類觀察者看來品質很普通。Rajasekaran 的解法借鑑了 GAN(生成對抗網路)的概念,把「做事」和「評估」拆成獨立的 agent。這在前端設計領域特別有效——他開發了四個評分標準(設計品質、原創性、工藝、功能性),讓 evaluator 用 Playwright MCP 實際操作頁面後才打分。
這套 generator-evaluator 架構後來擴展成三 agent 系統:
| Agent 角色 | 職責 | 設計考量 |
|---|---|---|
| Planner | 把 1-4 句 prompt 展開成完整的產品規格 | 刻意不做細部技術設計,避免錯誤規格向下游傳遞 |
| Generator | 逐 sprint 實作功能 | 每個 sprint 結束後先自評,再交給 QA |
| Evaluator | 用 Playwright 實際測試 UI、API、DB | 每個評分標準有硬門檻,低於門檻整個 sprint 退回重做 |
Sprint 開始前,generator 和 evaluator 先談 sprint contract——達成「什麼算做完」的共識。溝通透過檔案進行:一個 agent 寫檔案,另一個讀了之後在同一個檔案或新檔案裡回應。
Managed Agents:從 harness 到 meta-harness
2026 年 4 月 8 日,Anthropic 正式推出 Claude Managed Agents 公開測試版,把 harness 的概念再往上拉一個抽象層。

核心設計借用了作業系統的虛擬化思路。幾十年前,OS 把硬體虛擬化成 process、file 這些抽象層,讓還沒被寫出來的程式也能用。Managed Agents 做了同樣的事,把 agent 的三個組成部分虛擬化:
| 組件 | 定義 | 介面 |
|---|---|---|
| Session | 所有事件的 append-only log | getEvents() 查詢任意事件切片;rewind 回溯到任意時間點 |
| Harness | 呼叫 Claude 並路由工具呼叫的迴圈 | 任何 harness 實例可以接手任何 session 繼續執行 |
| Sandbox | Claude 可以執行程式碼和編輯檔案的環境 | execute(name, input) → string,不管底層是 container、手機還是 Pokémon 模擬器 |
這三個組件各自獨立,可以分別失敗和替換。Anthropic 工程團隊用「brain」(大腦:Claude + harness)和「hands」(手:sandbox + 工具)的比喻來描述這個架構。brain 不需要知道 hand 是什麼——只要實作 execute(name, input) → string 的介面就行。
最關鍵的設計決策是把 session 從 context window 中抽離出來。傳統的 context 管理(compaction、trimming、summarization)做的是不可逆的決定——丟掉的 token 就真的丟了。Managed Agents 的 session log 延遲這個決定:所有事件都永久保存,harness 在執行時根據當前需要,從 event stream 中撈取需要的片段注入 context。五次 context reset 前的某個工具結果,在 session log 裡還是查得到。
安全面的結構性設計也值得注意:credential 永遠不進入 sandbox。Git access token 在 sandbox 初始化時注入但保持在 agent 不可觸及的位置;MCP 的 OAuth token 放在安全保管庫裡,透過 proxy 存取。這是結構性隔離,不是靠模型的能力邊界來防護——Anthropic 認為模型能力不斷提升,今天模型做不到的事情明天可能就做得到,所以從架構上讓 credential 根本不可達。
Managed Agents 的定價是消費制:標準 Claude API token 費率加上每 session-hour USD 0.08 的 runtime 費用。

Harness Engineering 的產業生態:不只 Anthropic 在做
外洩事件後,harness engineering 成為一個被明確命名的工程學科。NxCode 的指南指出,這個領域結合了傳統軟體工程和 AI 特定知識。幾個主要的 agentic coding 平台都有自己的 harness 設計:
| 平台 | Harness 特色 | 配置方式 |
|---|---|---|
| Claude Code | 權限模型 + hooks 系統 + 多 session 支援 | CLAUDE.md 檔案、hooks、skills |
| OpenAI Codex | 3 人團隊平均每天 3.5 個 merged PR | AGENTS.md 檔案 |
| Cursor | IDE 整合 + 循環偵測 + 模型特定 prompt 調適 | .cursor/rules 檔案 |
| LangChain / LangGraph | 換 harness 不換模型就能從中等跳到頂尖 | Python 程式碼定義 |
HumanLayer 的實戰報告提供了幾個具體的 harness 工程經驗:
關於工具輸出管理:他們發現讓 agent 看到完整的測試輸出會導致「上下文中毒」——agent 開始對剛讀過的測試檔案產生幻覺。現在他們的做法是只讓錯誤訊息浮出來,成功的輸出靜默處理。build 結果也一樣,成功不說話,失敗才給詳細日誌。
關於 MCP 工具管理:如果一個 MCP server 複製了 CLI 已經有的功能(像 GitHub、Docker、大部分資料庫),直接用 CLI 效果更好。模型在訓練資料中已經看過這些工具夠多次了,知道怎麼用,而且可以跟 grep、jq 組合使用。
關於 skills 的 progressive disclosure:把所有指令和工具塞進 system prompt 會讓 agent 越來越差。Skills 的解法是漸進揭露——agent 在決定需要的時候才載入特定的指令、知識或工具。不過 HumanLayer 也警告:skill 登錄處已經被發現散佈數百個惡意 skill,對待 skill 要像對待 npm install random-package 一樣謹慎。
外洩的安全後果
這次外洩本身不涉及客戶資料或模型權重,但產生了連鎖的安全問題。
外洩當天(3 月 31 日 00:21-03:29 UTC),一個獨立的惡意 Axios npm 供應鏈攻擊恰好同時發生。在這段時間內透過 npm 安裝或更新 Claude Code 的使用者,可能拉到了含有遠端存取木馬(RAT)的 Axios 1.14.1 或 0.30.4 版本。Zscaler ThreatLabz 的分析指出,已知漏洞(CVE-2025-59536、CVE-2026-21852)現在更容易被武器化——攻擊者只要製作精心設計的惡意 repo 或專案檔案,就能在使用者 clone 或開啟 repo 時觸發任意程式碼執行或 credential 竊取。
攻擊者也在利用外洩做社交工程誘餌。Huntress 在 3 月偵測到的一個行動,是把搜尋引擎上搜「OpenClaw Windows」的使用者導向 GitHub 上的假安裝程式。外洩後的幾個小時內,冒充「官方外洩 Claude Code 原始碼」的 repo 開始散佈 Vidar Stealer 和加密貨幣挖礦程式。
Anthropic 現在建議使用 Native Installer(curl -fsSL https://claude.ai/install.sh | bash)取代 npm 安裝,因為 standalone binary 不依賴 npm 的依賴鏈。
這對你的 AI 開發策略意味著什麼
外洩後,Claude Code 的架構不再是黑箱。記憶層、工具沙箱模式、context 管理策略,所有競爭對手——Cursor、Windsurf、Cline、OpenCode——現在都有了架構藍圖。
但這不代表 Claude Code 的護城河消失了。Productboard 工程團隊的分析區分了兩種 harness engineering:通用 harness engineering 和領域特定 harness engineering。通用的架構模式可以被複製;領域專家知識不能。Claude Code 之所以從結構上拉開距離,是因為 Anthropic 對 context engineering、工具沙箱、session persistence 的工程投入是在數千個真實使用場景中迭代出來的,不是看了架構圖就能複製的。
真正的護城河在迭代速度。Anthropic 從 Claude Code 到 Managed Agents 的產品演進,展現的是一個基礎設施正在被虛擬化的趨勢——就像 OS 虛擬化硬體讓軟體創新加速,agent 基礎設施虛擬化會讓 agent 應用開發加速。目前 Managed Agents 的定價(每 session-hour USD 0.08,約 NTD 2.6)低到足以壓過大部分自建基礎設施的成本,但把整個 agent runtime 交給單一供應商,對處理敏感資料的組織來說仍然是個未解的問題。
Harness engineering 跟傳統的 prompt engineering 有什麼不同?
Prompt engineering 處理的是模型收到什麼輸入、怎麼回應。Harness engineering 處理的是模型周圍的整個執行環境:工具調度、權限控管、context 管理、session 持久化、錯誤恢復。Anthropic 的工程文件反覆強調一個觀點:harness 編碼了「模型自己做不到的事情」的假設,而這些假設會隨著模型能力提升而過時——Sonnet 4.5 需要 context reset 來解決 context anxiety,到了 Opus 4.5 這個問題就自動消失了。
Claude Code 原始碼外洩對使用者有什麼實際影響?
外洩不涉及客戶資料或模型權重。主要風險是在 3 月 31 日 00:21-03:29 UTC 期間透過 npm 安裝的使用者可能中了供應鏈攻擊,需要檢查 lockfile 中是否有 Axios 1.14.1 或 0.30.4 版本。長期影響是安全研究者可以更精確地針對已知漏洞設計攻擊——hook 和權限邏輯公開後,製作惡意 repo 的門檻降低了。
Claude Managed Agents 跟自建 agent 框架相比,什麼時候該選哪個?
Managed Agents 適合需要快速從原型到上線的場景:內建沙箱、長時間 session、自動 compaction。NxCode 的評估指出,從零到第一個 agent 大約 30 分鐘,自建方案通常要 1-2 週。但 Managed Agents 有供應商鎖定的代價,而且客製化受限於 API surface。處理高度敏感資料或需要完全控制 runtime 的組織,自建(用 LangGraph、Pydantic AI 或自訂工具鏈)仍然是合理選擇。
為什麼 Anthropic 說 harness 編碼的假設會「過時」?
每個 harness 設計決策都基於當時模型的能力限制。例如 context reset 機制是為了應對 Sonnet 4.5 的 context anxiety——模型接近 context window 上限時會提前收工。當 Opus 4.5 推出後,這個行為消失了,原本的 context reset 機制變成多餘的工程複雜度。Managed Agents 的 meta-harness 設計就是為了應對這種情況:介面保持穩定,底下的 harness 可以隨時替換。
Harness engineering 會成為獨立的工程職位嗎?
已經在發生了。NxCode 的指南指出,harness engineer 負責設計 agent 的運作環境、撰寫配置檔(AGENTS.md、CLAUDE.md)、建立和調整回饋迴路、分析 agent 日誌找出失敗模式、定義架構約束。這個技能組合介於傳統後端工程和 AI/ML 工程之間。隨著 agentic coding 在企業端的採用率上升,這個角色的需求預計會持續成長。
引用來源
- Anthropic Engineering — Harness design for long-running application development
- Anthropic Engineering — Scaling Managed Agents: Decoupling the brain from the hands
- Zscaler ThreatLabz — Anthropic Claude Code Leak Analysis
- HumanLayer — Skill Issue: Harness Engineering for Coding Agents
Author Insight
我們團隊在過去半年多從 Cursor 遷移到 Claude Code 作為主要的 agentic coding 工作流。在協助客戶評估 AI 開發工具時,harness 配置品質對最終成果的影響,比模型選擇的影響大得多。一個配置良好的 CLAUDE.md 加上針對專案需求設計的 hooks,可以把同一個模型的有效完成率從不到 50% 拉到 80% 以上。Managed Agents 的推出對我們來說是一個明確的信號——agent 基礎設施正在被標準化,未來的差異化會在領域知識和工作流整合上,不在底層管線上。
