DeepSeek Harness 是一套開源 Agent 執行框架,模型、工具、技能、工作階段、沙箱、儲存、迴圈、排程與介面都能以插件替換。 它把一般程式碼 Agent 藏在產品內部的能力,改成開發者可以查看、組合與卸載的執行元件。

這個設計的價值不在於多一個聊天介面,而是讓團隊能改造 Agent 的執行環境。代價也很明確:官方仍將專案標為開發者預覽版,並警告後續可能出現破壞相容性的變更。若你只想要成熟的程式碼助手,它目前未必比整合式產品省事;若你正在研究工具編排、稽核軌跡或客製 Agent,它提供了難得的實驗空間。

先理解公式:Agent = Model + Harness

模型負責推理與產生文字,Harness 則讓模型讀取環境、呼叫工具、保存工作階段,並在真實任務中持續運作。換句話說,同一個模型放進不同 Harness,可能得到完全不同的可靠度、權限邊界與開發體驗。

DeepSeek Harness 的核心原則是「一切皆插件」。官方列出的插件能力包括:

  • 模型供應商與模型路由
  • 檔案、Shell、搜尋等工具
  • Skills、規劃、目標與工作流程
  • 工作階段、上下文與儲存
  • 沙箱、權限與核准流程
  • 子 Agent、排程與背景任務
  • Web UI 本身
DeepSeek Harness 官方插件設定畫面,顯示已安裝插件與啟用狀態

底層的 Cordis 核心負責插件掛載、卸載與相依關係。相關論文把問題拆成兩個面向:時間可組合性關心卸載元件後能否撤銷副作用;空間可組合性關心相依服務出現、消失或變更時,元件能否重新協調。論文仍是持續修訂的預印本,適合用來理解設計方向,不宜把所有形式化結論視為已定案規格。

五分鐘啟動 Web UI

最快的方式需要 Node.js。請在你打算讓 Agent 存取的專案目錄執行:

npx @deepseek-ai/dsh web

預設 Web UI 會在本機 http://127.0.0.1:3080 提供服務。首次進入後依序完成三件事:

  1. Settings → Models 設定 DeepSeek API 金鑰,或設定其他相容的模型供應商。
  2. 選擇工作區。新介面在指定工作區前不會開放工作階段輸入框。
  3. 建立 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 配置 實驗能力高,不適合直接承接敏感正式工作
DeepSeek Harness 官方展示影片封面,示範以插件客製使用者介面

第一次使用請從 Standard 開始。當你確認任務被大量「呼叫工具、取得結果、再呼叫下一個工具」的往返拖慢,再測試 Code mode。Minimal 適合基準測試;Creator 則應放在隔離工作區,專門用來開發與驗證新能力。

工作階段記錄讓失敗可以重播

DeepSeek Harness 把模型看到的內容寫入只追加的工作階段事件流。系統提示、使用者訊息、推理、工具呼叫與結果、子 Agent 排程、權限變更和上下文注入都能成為事件。Trajectory 檢視可依來源查看每次執行,恢復、分支、搜尋與重播也共用這條事件流。

DeepSeek Harness 官方 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 會等待必要服務就緒後才載入插件。這比在程式各處手動猜測初始化順序可靠,也使插件在服務變更時有清楚的相依契約。

正式採用前的四道檢查

  1. 固定版本。 開發者預覽版可能破壞相容性,請鎖定套件與提交版本,升級前先跑回歸測試。
  2. 縮小工作區。 讓每個 Agent 只看到完成任務所需的檔案,避免以便利為由開放整個使用者目錄。
  3. 審查第三方插件。 插件與本機工具有相同的執行風險。安裝前檢查來源、權限、更新紀錄與卸載行為。
  4. 保存可驗證軌跡。 對重要自動化設定成功條件、核准點與測試輸出,避免只靠模型自述任務完成。

DeepSeek Harness 最值得關注的地方,是它把 Agent 競爭從「哪個聊天產品功能最多」推向「哪個執行環境最容易組合、觀察與治理」。這條路會犧牲部分開箱即用體驗,也會把版本管理與安全責任交回開發團隊。對要建立專用 Agent 平台的人來說,這正是它的價值;對一般使用者而言,預覽版標籤仍應被當成真正的風險提示。

權威來源

Author Insight

我會把 Harness 評估分成三層:模型能不能完成任務、執行環境能不能限制與觀察它、團隊能不能安全升級。DeepSeek Harness 在第二層提出了鮮明答案,但第三層仍取決於開發者如何固定版本、審查插件與設計權限。能動態插拔能力不等於應該在正式環境隨時改造自己;可組合性只有和治理一起設計,才會變成生產力。

術語表

  • Harness:讓模型存取環境、工具、狀態與工作流程的 Agent 執行層。
  • Cordis:DeepSeek Harness 使用的插件核心,負責生命週期與相依服務協調。
  • Trajectory:依事件檢視 Agent 執行過程的軌跡介面。
  • Disposer:插件卸載時用來釋放資源或撤銷副作用的清理函式。
Share this post
Erik (EKC)

With over 20 years of experience in technology, and the startup industry, I am passionate about AI and driving innovation. Keeping the engine running

Loading...