Harness Engineering

模型之外的戰場:
DeepSeek 開源 Harness 框架,
AI Coding 正在發生另一個變化

當模型愈來愈強,真正決定 AI Agent 能力的,
開始不只是 Model,而是包在模型外面的整套 Harness。

DeepSeek 最近除了新模型之外,又丟出了一個我覺得很值得開發人員注意的東西:DeepSeek Harness。

這次不是模型,而是一個真正開源的 Agent Harness Framework。

DeepSeek Harness,簡稱 dsh,以 MIT License 開源。官方對它的介紹很直接:

Everything is a Plugin.

模型是 Plugin、Tool 是 Plugin、Session 是 Plugin,甚至連 Agent Loop 本身都是 Plugin。

目前它仍屬於 Developer Preview。比起「現在能不能立刻拿來上 Production」,另一件事情更值得注意:

為什麼 DeepSeek 現在要特別做一個 Harness 框架?
這其實反映了 AI Coding 正在發生的一個重要轉折。

到底什麼是 Harness?

過去我們談 LLM,通常很直覺的是:

傳統 LLM 使用方式
Prompt
↓
LLM
↓
Answer

在上面這樣的情況下,模型越強,用戶得到的答案就越好。

但到了 Agent,尤其是 Coding Agent 時代,事情早就不是這麼單純。

Agent 時代:Model 被 Harness 包住
Model
↓
HARNESS
Context
Instructions
Tools
Agent Loop
Session / Memory
Sandbox
Permission
Validation
↓
Result

中間包著模型、讓模型真正有辦法「做事」的這整套環境,就是現在大家講的 Harness。

LLM 是大腦,Harness 是讓這顆大腦能夠工作的整套環境。

所以 Harness 不是單純一個 Prompt,也不是某一個 Framework。
它比較接近:

Agent Runtime+ Context+ Tools+ Workflow+ Feedback Loop

一個(一套) Harness 應該有哪些東西?

不同產品的實作當然不一樣,但我認為至少會包含以下幾個核心元素。拿一套用來幫助開發人員的 Agent 來說(像是 GitHub Copilot App, Codex App),它的 Harness 應該要有底下這些...

1. Model

首先當然是模型,例如 GPT、Claude、Gemini、DeepSeek、Kimi 或 Local Model。

但真正重要的轉變是:Model 開始只是 Harness 裡面的一個元件。

2. Context

因為有 Context Window 的限制,因此 AI 在這一刻到底能知道多少東西?知道哪些東西?例如 Repository、Architecture Document、Current Files、Issue / PBI、Git History、Previous Conversation、Business Rules、Coding Convention。這一塊就是 Context。

3. Instructions / Rules

例如 AGENTS.md、copilot-instructions.md、CLAUDE.md、Skills、Custom Instructions、Architecture Rules。這些東西在告訴 Agent:這個專案怎麼寫、哪些事情不能做、完成的 Definition of Done 是什麼。

4. Tools

LLM 本身其實什麼都做不了,它只會輸出 Token。真正讓它變成 Agent 的,是 Harness 給它工具(Tools)。

✓
檔案
Read / Write File
✓
執行
Shell / Terminal
✓
版本控制
Git
✓
外部能力
Browser / Database / MCP / API

5. Agent Loop / Workflow

Agent 不只是「回答」,而是持續進行 Think → Act → Observe → Adjust。

典型 Coding Agent Loop
理解需求 閱讀程式碼 規劃 修改程式 Build Test 失敗 → 分析原因 → 修正 → 再測

6. Session / State / Memory

Agent 做長時間任務時,不可能每一次都從零開始。它需要知道目前做到哪裡、剛才改過哪些東西、上一個 Tool Call 發生什麼事,以及哪些 Context 還需要留下。

7. Sandbox / Permission

當 AI 可以執行 Shell、git push、安裝套件、連資料庫與修改檔案之後,哪些事情可以直接做、哪些事情需要 Human Approval,就會變成 Harness 的基本能力。

8. Validation / Feedback

這可能是最重要的一層。
真正好的 Harness,不是叫 AI「確認自己寫對了」,而是讓環境可以實際驗證它。

真正有效的 Feedback Loop
Agent 修改 Code
↓
dotnet build / dotnet test
↓
❌ Tests Failed
↓
把 Error 餵回 Agent
↓
Agent 修正
↓
✅ Tests Passed
不是讓 AI 覺得自己做對了,而是讓環境證明它到底有沒有做對。

為什麼 Harness 開始變得重要?

因為我們正在慢慢發現一件事情:

模型真正展現出來的能力,不等於模型本身的能力。

以前我們很習慣比較 GPT、Claude、Gemini、DeepSeek 的 Benchmark。但到了 Agent 時代,尤其是 Coding Agent,真正的體驗開始比較接近:

實際能力= Model× Context× Tools× Agent Loop× Rules× Validation

所以同樣一顆 Model ,放在不同 Coding Agent 裡面,你真的可能會覺得「怎麼明明是同一個模型,但是在這裡好像比較聰明?」

不一定是模型變聰明了。可能只是 Harness 比較好。

現在真正應該比較的是「Model + Harness」

真正面向使用者的產品組合(Model + Harness)
Claude
+ Claude Code
GPT
+ Codex
DeepSeek
+ DeepSeek Harness
Claude / GPT / Gemini
+ GitHub Copilot

DeepSeek 自己也正在證明這件事。當 Coding Agent 的 Benchmark ,其實都是透過特定 Harness 來執行時,我們看到的其實已經不只是「模型裸能力」,而是某個 Model + Harness 組合的能力。

DeepSeek Model + DeepSeek Harness → Agent Benchmark Result

換一個 Harness,結果就可能不一樣。

GitHub Copilot App 其實也是 Harness

如果用這個角度重新看 GitHub Copilot App 這類的 AI Coding Tool,整個架構就會變得很好理解。

GitHub Copilot App 不只是「一個可以跟 AI 聊天的 App」,而是一套已經產品化的 Agent Harness。它可以取得 Repository / Local Folder 、Context、閱讀檔案、修改程式、執行 Terminal、維持 Session、處理 Workflow,並選擇不同模型。

以前的想法

我要用哪個 AI?

  • 我要用 Claude
  • 我要用 GPT
  • 我要用 Gemini

現在的想法

我要用哪一套 Harness?

  • 這個 Task 要掛哪一顆 Model?
  • 需要什麼 Context?
  • 需要什麼 Tools 與 Validation?

而 GitHub Copilot 很值得注意的一點,是它讓 Model 可以切換。當同一套 Harness 可以使用不同模型時,「模型只是 Runtime 裡的一顆引擎」這件事就變得非常具體。

同一套 Copilot Harness,底層模型可替換
GPT
Claude
Gemini
↓
GitHub Copilot Harness
Repository Context
Tools
Agent Workflow
Terminal / Git
↓
實際開發工作
Model 正在逐漸從「產品」變成「Runtime 裡可以換的一顆引擎」。

那 DeepSeek Harness 特別在哪?

這次 DeepSeek 做得更直接。它不是只做一套 Coding Agent 給你用,而是把 Agent Harness 本身給開源了。

Everything is a Plugin.

最有趣的地方是,它讓 Model Adapter、Tools、Session Log、Persistence、Sandbox、Approval、Skills、UI,甚至 Agent Loop 都被設計成可替換元件。

DeepSeek Harness:Plugin-first 架構
DeepSeek Harness / Cordis Plugin Runtime
Model Adapter
Tools
Session
Agent Loop
Persistence
Sandbox
Approval
Skills
UI

換句話說,DeepSeek Harness 不是:

「我幫你做一個 Agent。」

而更接近:

「我給你一個 Runtime,你自己決定裡面的 Agent 要長成什麼樣子。」

它很像 Agent 世界的 DI Container

如果是 .NET 開發人員,我覺得可以用一個很熟悉的東西理解:Dependency Injection。

從 .NET DI 到 Agent Runtime

.NET 世界

IRepository ILogger IStorage

Runtime 決定真正注入哪一個 implementation。

Agent 世界

IModel ITool ISession ISandbox IAgentLoop

Harness 決定真正掛入哪一個 Agent 能力與模型。

今天 Model 換 DeepSeek,明天可以換 Claude;今天是 Coding Agent Loop,明天也可能換成 Research Agent Loop;今天用 Local Sandbox,明天可以換 Container。

它代表了一個很重要的轉折

我們過去一年一直在討論:GPT、Claude、Gemini、DeepSeek,到底哪一顆模型比較強?

這個問題當然還是重要,但可能已經沒有以前那麼重要了。

因為當模型能力逐漸接近,而且模型開始可以被替換,真正形成差異的東西會慢慢往上一層移動。

競爭層次正在上移
Model
↓
Model + Harness
↓
真正形成差異的完整系統
Model
Harness
Context
Rules
Tools
Verification

真正好的 Agent,未來不一定是用了世界上最強的 Model,而是...

它有沒有把正確的資訊,在正確的時間,交給正確的模型;提供正確的工具,並且有一套機制可以持續驗證、修正它的工作。

這其實跟軟體工程過去幾十年的發展很像。我們從來不會說「只要 Developer 夠強,其他都不重要」。
我們還是需要 Architecture、Framework、Library、CI/CD、Testing、Coding Standard、Code Review、Monitoring、DevOps...。這一切搭配起來,才是最終的成果。

AI Agent 也開始走到同一條路上。

模型是能力。Harness 是工程。

AI 時代下一個競爭的戰場,
可能即將開始從 Model,往 Harness 移動。

以前我們在 Engineering the Code。
接下來,我們會花愈來愈多時間在:

Engineering the environment that
lets AI engineer the code.

延伸閱讀

  1. DeepSeek Harness — GitHub
  2. DeepSeek Harness — Architecture
  3. GitHub Copilot — Supported AI models
  4. GitHub Blog — GitHub Copilot App