DeepSeek Harness 是一套開源 Agent 執行框架,模型、工具、技能、工作階段、沙箱、儲存、迴圈、排程與介面都能以插件替換。 它把一般程式碼 Agent 藏在產品內部的能力,改成開發者可以查看、組合與卸載的執行元件。
這個設計的價值不在於多一個聊天介面,而是讓團隊能改造 Agent 的執行環境。代價也很明確:官方仍將專案標為開發者預覽版,並警告後續可能出現破壞相容性的變更。若你只想要成熟的程式碼助手,它目前未必比整合式產品省事;若你正在研究工具編排、稽核軌跡或客製 Agent,它提供了難得的實驗空間。
先理解公式:Agent = Model + Harness
模型負責推理與產生文字,Harness 則讓模型讀取環境、呼叫工具、保存工作階段,並在真實任務中持續運作。換句話說,同一個模型放進不同 Harness,可能得到完全不同的可靠度、權限邊界與開發體驗。
DeepSeek Harness 的核心原則是「一切皆插件」。官方列出的插件能力包括:
- 模型供應商與模型路由
- 檔案、Shell、搜尋等工具
- Skills、規劃、目標與工作流程
- 工作階段、上下文與儲存
- 沙箱、權限與核准流程
- 子 Agent、排程與背景任務
- Web UI 本身

底層的 Cordis 核心負責插件掛載、卸載與相依關係。相關論文把問題拆成兩個面向:時間可組合性關心卸載元件後能否撤銷副作用;空間可組合性關心相依服務出現、消失或變更時,元件能否重新協調。論文仍是持續修訂的預印本,適合用來理解設計方向,不宜把所有形式化結論視為已定案規格。
五分鐘啟動 Web UI
最快的方式需要 Node.js。請在你打算讓 Agent 存取的專案目錄執行:
npx @deepseek-ai/dsh web
預設 Web UI 會在本機 http://127.0.0.1:3080 提供服務。首次進入後依序完成三件事:
- 到
Settings → Models設定 DeepSeek API 金鑰,或設定其他相容的模型供應商。 - 選擇工作區。新介面在指定工作區前不會開放工作階段輸入框。
- 建立 Standard mode 工作階段,先要求它摘要儲存庫與列出主要套件,確認讀取範圍與核准流程符合預期。
不要直接從包含私密金鑰、整個家目錄或大量無關專案的上層資料夾啟動。工作區是第一層範圍控制,權限政策則決定寫檔、執行命令與其他敏感操作何時需要核准。
若要修改框架本身,再從原始碼啟動:
git clone https://github.com/deepseek-ai/deepseek-harness.git
cd deepseek-harness
pnpm install
pnpm run build
pnpm dsh web
四種模式不是能力排行榜
官方 Landing Page 將內建配置分成 Standard、Code、Minimal 與 Creator。選擇時應看任務需要,而不是把名稱當成由弱到強的等級。
| 模式 | 核心設計 | 適合情境 | 主要風險 |
|---|---|---|---|
| Standard | 完整程式碼 Agent 工具組 | 日常讀寫程式碼、搜尋、Shell、規劃與子 Agent | 工具面較大,權限政策要先設定 |
| Code | 讓模型以 TypeScript 程式組合多輪工具操作 | 結構化、多步驟、可平行的工具編排 | 除錯較難,模型必須能穩定寫出編排程式 |
| Minimal | 只保留持久 Bash 與檔案編輯器 | 比較模型在最小環境下的 Agent 能力 | 缺少日常工作所需的輔助能力 |
| Creator | 完整工具組加上執行環境檢查、記憶體內插件實驗與 preset 製作 | 開發新工具、插件或專用 Agent 配置 | 實驗能力高,不適合直接承接敏感正式工作 |

第一次使用請從 Standard 開始。當你確認任務被大量「呼叫工具、取得結果、再呼叫下一個工具」的往返拖慢,再測試 Code mode。Minimal 適合基準測試;Creator 則應放在隔離工作區,專門用來開發與驗證新能力。
工作階段記錄讓失敗可以重播
DeepSeek Harness 把模型看到的內容寫入只追加的工作階段事件流。系統提示、使用者訊息、推理、工具呼叫與結果、子 Agent 排程、權限變更和上下文注入都能成為事件。Trajectory 檢視可依來源查看每次執行,恢復、分支、搜尋與重播也共用這條事件流。

這對 Agent 工程很實用。團隊不必只看到「任務失敗」,而能找出是哪次工具結果、權限決策或上下文壓縮開始偏離。不過,完整軌跡也可能保存原始碼、命令輸出與機密內容;正式環境仍需訂定保留期限、存取權限與清理規則。
第一個插件先從生命週期開始
官方教學把插件定義為匯出 apply 函式的 TypeScript 模組。以下是最小骨架:
import type { Context } from '@deepseek-ai/cordis'
export const name = 'hello-plugin'
export function apply(ctx: Context) {
console.log('[hello-plugin] plugin loaded')
}
透過 ctx 註冊的事件監聽器、工具與計時器會在插件卸載時自動清理。需要關閉網路連線等自訂資源時,使用 ctx.effect() 回傳 disposer。若插件依賴工具服務,則以 inject 宣告:
export const inject = ['tools']
Cordis 會等待必要服務就緒後才載入插件。這比在程式各處手動猜測初始化順序可靠,也使插件在服務變更時有清楚的相依契約。
正式採用前的四道檢查
- 固定版本。 開發者預覽版可能破壞相容性,請鎖定套件與提交版本,升級前先跑回歸測試。
- 縮小工作區。 讓每個 Agent 只看到完成任務所需的檔案,避免以便利為由開放整個使用者目錄。
- 審查第三方插件。 插件與本機工具有相同的執行風險。安裝前檢查來源、權限、更新紀錄與卸載行為。
- 保存可驗證軌跡。 對重要自動化設定成功條件、核准點與測試輸出,避免只靠模型自述任務完成。
DeepSeek Harness 最值得關注的地方,是它把 Agent 競爭從「哪個聊天產品功能最多」推向「哪個執行環境最容易組合、觀察與治理」。這條路會犧牲部分開箱即用體驗,也會把版本管理與安全責任交回開發團隊。對要建立專用 Agent 平台的人來說,這正是它的價值;對一般使用者而言,預覽版標籤仍應被當成真正的風險提示。
權威來源
- DeepSeek Harness 官方 Landing Page
- DeepSeek Harness 官方 GitHub 儲存庫
- DeepSeek Harness:Web UI 快速入門
- DeepSeek Harness:第一個插件教學
- Cordis:A Programming Paradigm for Spatiotemporal Composability
Author Insight
我會把 Harness 評估分成三層:模型能不能完成任務、執行環境能不能限制與觀察它、團隊能不能安全升級。DeepSeek Harness 在第二層提出了鮮明答案,但第三層仍取決於開發者如何固定版本、審查插件與設計權限。能動態插拔能力不等於應該在正式環境隨時改造自己;可組合性只有和治理一起設計,才會變成生產力。
術語表
- Harness:讓模型存取環境、工具、狀態與工作流程的 Agent 執行層。
- Cordis:DeepSeek Harness 使用的插件核心,負責生命週期與相依服務協調。
- Trajectory:依事件檢視 Agent 執行過程的軌跡介面。
- Disposer:插件卸載時用來釋放資源或撤銷副作用的清理函式。
