DeepSeek Harness(dsh)是 DeepSeek AI 開發的開源 agent harness。它以 Cordis 組合 plugin tree,讓模型轉接器、工具登錄、session log、agent loop 與介面都能透過設定替換。
DeepSeek Harness 將 agent 執行環境拆成 Cordis 外掛。模型轉接器、工具登錄、session log、agent loop、持久化、sandbox 與介面都是可替換的組件。
執行中的 dsh 是開機時組成的 plugin tree。Profile 定義要堆疊的 bundles;bundle 攜帶 Cordis 設定列與外掛程式碼;cordis.patch.yml 再於上層替換或新增設定列。
內建 web 與 headless profile 範本。前者加入瀏覽器應用,後者提供不啟動伺服器的單次執行器。
安裝 Node.js 後,直接以 npm 套件啟動 Web UI。伺服器預設使用 http://127.0.0.1:3080。
參與開發時使用官方原始碼流程。專案要求 Node.js 22.19 以上或 24 以上,並將 pnpm 固定為 11.7.0。
Settings → Models 儲存 API key,再選擇啟動 dsh 的專案目錄。尚未選定工作區時,session composer 不會開放。
官方架構將能力分成 Service Definition、Service Provider 與 Consumer。替換 provider 時,使用同一服務介面的消費者不需要建立專屬分支。
deepseek-harness-sdk 建立最小 agent 組合,並自訂 workspace 與 session ID。| 使用情境 | 入口 | 適合動作 |
|---|---|---|
| 本機互動使用 | npx @deepseek-ai/dsh web |
模型設定、工作區選擇、任務對話 |
| 單次自動化 | headless profile |
不需要 Web 伺服器的任務執行 |
| 嵌入 Python 程式 | deepseek-harness-sdk |
自訂組合、workspace 與 session ID |
| 擴充執行環境 | --patch 或 dsh plugin |
載入本機外掛、bundle 或新 profile |
以下原則來自官方 README、架構文件、Web UI 指南與外掛教學。先確認組合層次、權限與安裝來源,再將 agent 放入實際工作區。
首次使用時啟動 web,完成模型與工作區設定後再進入自訂組合。
新的 Web UI 不會自動選中工作區。加入啟動 dsh 的專案目錄,再啟動 session composer。
Profile 記錄 bundles 順序、外部外掛與使用者 patch。使用 dsh --profile <name> 啟動指定組合。
Bundle 的 package.json 以 dsh.bundle 指向 patch 檔。未宣告這個欄位的套件只是依賴,不會自動啟用設定層。
執行 dsh --profile web --dump-config 檢查本機實際啟動的 plugin tree。每個列都可以由上層 patch 替換。
透過 ctx 註冊的 event listener、tool 與 timer 會在外掛卸載時清除。新行為應建立於這個生命週期。
外掛使用 inject 宣告 tools、llm 等必要服務。Cordis 會等待依賴可用後才載入外掛。
$DSH_HOME/cordis.patch.yml 會套用到每個 profile。用它保存本機共用的設定,不要直接修改 bundle。
pnpm 10 以上需要明確允許 git dependency 的 build script。只允許已檢查來源,並以 #<sha> 固定內容。
核准決定操作是否需要使用者確認;sandbox 限制執行環境。啟動實際專案前同時檢查兩者。
來源 · 官方架構與 Web UI 指南以官方指南的專案摘要任務驗證安裝。範例只描述可觀察的介面狀態與執行順序,不預設 agent 的實際回答內容。
頁面可儲存模型設定,選定工作區後 session composer 可用。任務送出後,介面顯示 agent 的回應與 session 記錄。
任何需要核准的檔案修改或命令執行都應在介面中出現明確請求。若策略未如預期生效,先檢查當前 profile 與實際組合設定。
pnpm run typecheck 作為完成條件。
--dump-config 檢查當前列。
THIRD_PARTY_NOTICES.md。
DeepSeek Harness 的擴充路徑從本機 TypeScript 外掛開始,再進入工具、設定 schema、bundle 與 profile。使用官方教學的 --patch 流程驗證生命週期後,再打包分發。
1. 建立第一個外掛。建立匯出 apply 的 TypeScript 模組,以絕對路徑寫入 cordis.yml,再執行 pnpm dsh web --patch ./scratch-plugin/cordis.yml。
2. 註冊自訂工具。宣告 tools 依賴,註冊工具名稱、說明、輸入 schema 與 handler,再於 Web UI 中要求 agent 呼叫它。
3. 加入外掛設定。定義 TypeScript Config 型別與 Cordis Schema,使無效設定在載入階段明確失敗。
4. 打包 bundle。在 npm 套件的 package.json 宣告 dsh.bundle,以 patch 插入或替換外掛列。
5. 安裝到 profile。執行 dsh plugin --profile demo add ./hello-plugin,再以 dsh --profile demo --dump-config 檢查設定層。
① Web UI 指南:模型、工作區與第一個任務。
② 架構文件:Cordis、profiles、bundles、turn flow 與 capability seams。
③ 第一個外掛:外掛模組、patch、自動清理與依賴宣告。