實測要點
- DeepSeek Harness 是開源 Agent 底盤,CLI 叫
dsh;它不是 DeepSeek 模型,也不是一張 API 價目表。 - 我們用
npx @deepseek-ai/dsh拉到 0.1.5-rc.1(Node.js v24.14.1)。dsh --help把產品說成「依序疊加的外掛組合包」。 dsh --profile web --dump-default-config打出 152 條外掛;預設模型deepseek-official/deepseek-flash;Web 預設127.0.0.1:3080;Agent preset 預設standard。- 模型走
ctx.llm適配器,工具走ctx.tools,循環走ctx.agentLoop。換模型 ≠ 換工具,也 ≠ 換循環。 - 開發者預覽會破壞相容。官方入口:deepseek.com/harness、GitHub。
先分清「模型 / 工具 / 循環」三層,再決定要不要把 dsh 當日常編碼 Agent。
DeepSeek Harness 是什麼
DeepSeek Harness 是 DeepSeek 開源的 Agent 執行時。倉庫 README 寫得很直:它由 Cordis 撐起「一切皆外掛」——模型適配器、工具登錄、工作階段日誌、沙箱,以及 Agent 循環本身,都可以在設定層替換,而不必去改 Harness 源碼。產品頁同樣把能力列成外掛:模型、工具、技能、工作階段、沙箱、儲存、循環、排程、UI。
命令列名字是 dsh。這和「DeepSeek V4-Flash 多少錢」不是同一類搜尋。後者買的是模型推理;前者裝的是把模型、工具和工作階段串起來的底盤。Token 帳單仍看模型提供方,見 DeepSeek V4-Flash API 價格。
官方同步標明:這是開發者預覽,會有破壞性變更。2026-08-13 倉庫公開後,文件比行銷頁細,但預設把讀者當成要寫外掛的人。本文只回答「是什麼、怎麼組合、我們實際跑出了什麼」,不把 Cordis 事件域當入門課文。
我們測了什麼:環境、命令、原始數字
標題若寫「實測」,就必須有環境、任務、方法和原始輸出。下面是我們本機跑過的部分,不是官網截圖複述。
環境:macOS(darwin 25.4.0),Node.js v24.14.1。用 npx --yes @deepseek-ai/dsh,不 clone 源碼。為避免寫進預設 ~/.dsh,把 DSH_HOME 指到隔離目錄後再 dump 設定。
任務:① 讀 CLI 說明與版本;② 讀 web 子命令說明;③ 匯出 web profile 的預設組合樹(不含使用者層、不含 --patch)。我們沒有在這篇裡跑帶 API Key 的完整編碼任務,因此下面不把「改了某個倉庫」寫成實測。
npx --yes @deepseek-ai/dsh --version # 0.1.5-rc.1 npx --yes @deepseek-ai/dsh --help npx --yes @deepseek-ai/dsh web --help export DSH_HOME="$PWD/.tmp_dsh_home" npx --yes @deepseek-ai/dsh --profile web --dump-default-config
dsh --help 原文把產品定義為:在使用者覆蓋之下,依序疊加外掛組合包。子命令只有兩條主線:web(--profile web 的別名)和 plugin(把剩餘參數轉給該 profile 目錄裡的 pnpm)。範例裡還有 headless 一次一任務、--dump-config 列印組合樹、--from-default-profile 從範本派生自訂 profile。
dsh web --help 印出的監聽預設值與文件一致:--host、--port(0 讓作業系統選空閒埠)、--no-open、--trusted-host。設定樹裡 webserver 預設 127.0.0.1、3080。
| 項 | 測到的值 | 證據 |
|---|---|---|
| npm 套件版本 | 0.1.5-rc.1 | dsh --version |
| 預設模型 | deepseek-official / deepseek-flash | dump 裡 agent-default-model |
| Web 監聽 | 127.0.0.1:3080 | dump 裡 webserver |
| 預設 preset | standard | dump 裡 agent-presets |
| 預設組合樹行數 | 539 行 YAML / 152 條 id | --dump-default-config |
| 標記 disabled | 26 條(多為 tool-*) | 同一份 dump |
26 條 disabled: true 主要是 tool-bash、tool-fs、tool-skill、tool-web 這類面向模型的工具:dsh-web-app 先把它們關掉,等工作區 / preset 再開。所以「dump 裡工具是灰的」不等於「Web UI 沒有 bash」。這是組合層的細節,行銷頁不會寫。
模型、工具、循環怎麼組合
架構文件把執行中的 dsh 寫成一棵啟動時按層疊加的外掛樹。你日常只碰四樣東西:
- Profile:
$DSH_HOME/profiles/<name>裡的具名組裝。隨附範本有web、headless、sdk、sdk-minimal、acp。 - Bundle:帶
dsh.bundle的 npm 套件,貢獻一份 patch。第一次初始化時,@deepseek-ai/dsh-base是第一層。 - 外掛模組:匯出
apply(ctx)的 TypeScript。模型適配器ctx.llm.registerAdapter();工具ctx.tools;循環是ctx.agentLoop。 - 覆蓋順序:各 bundle patch → profile 自己的
cordis.patch.yml→ home 級 patch → 命令列--patch。
| 層 | 你碰什麼 | 換成什麼 | 別搞混 |
|---|---|---|---|
| 模型 | Settings → Models,或 $DSH_HOME/settings.yaml | 官方卡、內建提供方、自訂閘道 | 換模型不會自動換 bash 實作 |
| 工具 | preset / DSH_TOOLS_MODE / 工具外掛 | 標準全套、極簡雙工具、自己註冊 | 工具 schema 進提示詞,和模型目錄是兩本帳 |
| 循環 | 預設 dsh-agent-loop,可整段替換 | 另一個 loop 外掛 | 大多數產品把 loop 寫死,dsh 故意不寫死 |
| 入口 | dsh web / headless / sdk / acp | 同一套 CLI,不同 profile | 不要再發明第二個可執行檔 |
裝第三方外掛的官方路徑是 dsh plugin --profile web add <套件名或 git>。我們跑 dsh plugin --profile web --help 時,它直接把 pnpm 的說明打出來——文件說「轉發給 pnpm」不是比喻。本地試驗可以 dsh web --patch ./cordis.yml,教學見 第一個外掛。發佈到 GitHub 時加上 dsh-plugin topic。
綁模型時,DeepSeek 官方卡只收一把 API Key,金鑰進 $DSH_HOME/.credentials.yaml。自訂閘道要小寫 Provider ID、base URL、協定(openai-completions / openai-responses / anthropic-messages)。Provider ID 不能改名:工作階段和預設模型都指向它。閘道能通 Key 仍可能 400——推理模型可能把系統提示發成 developer 角色、輸出上限發成 max_completion_tokens。官方要你在 settings.yaml 寫 compat.supportsDeveloperRole: false 和 maxTokensField: max_tokens。步驟見 Configure models。
Web UI 還要先選 workspace,否則輸入框不可用;官方建議先發一句「總結這個倉庫」。見 Use the Web UI。技能(Skills)是另一套程序性說明,和 dsh 外掛不是同一個東西;背景見 Hermes Agent Skills 清單。
四種模式怎麼選
產品頁列了四種執行模式。我們 dump 到的預設 preset 是 standard,與「標準模式」對齊。其餘三種以官方說明為準,下表不把未跑過的模式寫成「我們測了」。
| 模式 | 官方給什麼 | 什麼時候用 | 別指望 |
|---|---|---|---|
| 標準 | 檔案編輯、Shell、檢索、Skills、計畫、目標、子代理、工作流程 | 日常編碼 Agent | 它不會替你選對模型價 |
| PTC | 標準能力 + Code Mode SDK,模型用一段 TypeScript 組合多步工具 | 工具呼叫鏈很長、想少來回 | 閘道協定不對時一樣失敗 |
| 極簡 | 持久 bash + str_replace_editor | 給模型做最小工具基準 | 沒有完整檢索/工作流程 |
| 創造 | 標準能力 + 檢查執行時、記憶體裡試外掛、寫新 preset | 你要自製組合,而不是只聊天 | 預覽期 API 會變 |
權限另有三檔,寫在 dump 的 permission 外掛裡:read-only、workspace-write(預設,可用 DSH_PERMISSION_MODE 改)、danger-full-access。標準模式不等於「已經放開寫整個磁碟」。
和 Claude Code / Hermes 誰該用
把 dsh 理解成「可拆的底盤」,選擇會清楚很多。
- 要可替換的模型、工具、循環,並準備寫外掛:用 DeepSeek Harness。預覽期請鎖版本。
- 要產品化編碼 Agent、帳單按套餐走:先看 Claude Code 2026 價格,不要指望 dsh 複製同一套訂閱體驗。
- 要 Skills / Gateway 那套程序性記憶:Hermes 更貼;dsh 也有
dsh-skill,但預設 dump 裡 filesystem skill 是關掉的,直到組合打開它。 - 已經在跑 MCP:協定層仍獨立,見 MCP 開發者指南。dsh 文件把它當作用戶端能力,不是「裝了 dsh 就不用 MCP」。
第三方評測提到可選 bundle 能把任務委派給 Claude Code / Codex。我們這份預設 web dump 沒有出現 subagent-claude-code 這類條目,所以不寫成「開箱即委派」。Agent 技術棧怎麼疊,見 2026 AI Agent 技術棧。
FAQ
DeepSeek Harness 和 DeepSeek 模型是一回事嗎?
不是。Harness 是執行時;模型是推理服務。預設路由指向官方 DeepSeek,但你可以加 OpenAI、Anthropic 或自訂閘道。帳單跟你選的提供方走。
dsh 怎麼安裝、Web UI 預設埠?
官方:npx @deepseek-ai/dsh web。我們測到套件版本 0.1.5-rc.1,預設 127.0.0.1:3080。SSH 場景加 --no-open。源碼路徑是 clone 後 pnpm install && pnpm run build && pnpm dsh web。
模型、工具到底怎麼組合?
Profile 疊 bundle,bundle 用 patch 插入外掛。模型註冊在 ctx.llm,工具在 ctx.tools,循環在 ctx.agentLoop。看自己機器上的樹:dsh --profile web --dump-config。
四種模式怎麼選?
日常編碼用標準(預設)。要比模型本身,用極簡。工具鏈很長,看 PTC。要自製 preset,用創造。預覽期名稱和能力可能改。
開發者預覽能不能上生產?
官方警告會有破壞性變更。可以在隔離目錄、鎖 npm 版本做實驗;不要把未鎖定的 npx 直接掛到生產憑證機。
小結
DeepSeek Harness 回答的是「Agent 底盤怎麼拆」,不是「DeepSeek 模型排第幾」。我們在 0.1.5-rc.1 上看到的硬事實:web 預設樹 152 條外掛、預設 Flash、3080 埠、preset=standard。組合順序是 profile → bundle → 模型適配器 / 工具登錄 / 循環,而不是在一個二進位檔裡寫死。