前言¶
DeepSeek Harness(以下簡稱 DSH,命令行工具是 dsh)默認入口是網頁:裝好 Node.js 之後執行 npx @deepseek-ai/dsh web,瀏覽器裏就能開智能體會話。對習慣在終端裏寫代碼的人來說,這套流程並不總合適。你已經開着 tmux 或分屏編輯器,再切出去盯一個本機 Web UI,會話、權限、模型切換都要離開命令行。Claude Code、Codex CLI 這類工具把編碼智能體放在終端裏,斜槓命令、會話恢復、審批條都在同一塊屏幕上完成;很多人在 DSH 上也想要類似的工作方式。
DSH 的核心理念是「一切皆插件」。官方倉庫 deepseek-ai/deepseek-harness 寫得很直接:模型、工具、技能、會話、沙箱、存儲、循環調度和界面都可以換成插件,不必改 Harness 源碼。界面既然也是插件,社區就可以在官方 @deepseek-ai/dsh-base 上面疊一層終端 UI,而不是再寫一套 Agent 循環。
dsh-code 做的就是這件事。它由 UNLINEARITY 維護,社區目錄把它歸在「界面增強」。本文按插件目錄頁、GitHub 倉庫 README、許可證、排障文檔和 npm 包頁面交叉覈對後整理:它是什麼、裝哪條命令、終端裏怎麼用,以及安裝前要看清的權限邊界。
需要先分清兩件事。DeepSeek Harness 本體在上面的官方倉庫,目前仍是 developer preview,接口可能出現破壞兼容性的變化。下面用到的插件目錄 deepseek-harness-plugin.com 是社區站點,和 DeepSeek / 幻方沒有官方從屬關係,不是官方應用商店。
這是什麼¶
dsh-code 是一款 DeepSeek Harness 的終端編碼界面插件,目錄分類爲「界面增強」,由 UNLINEARITY 維護,倉庫地址爲 UNLINEARITY/dsh-code。許可證爲 MIT(Copyright (c) 2026 unlinearity),主要語言是 TypeScript。npm 上的包名同樣是 dsh-code,本文覈對到的發佈版本爲 0.9.0。GitHub API 當前顯示該倉庫 25 星;社區目錄頁上的星標數字可能滯後,以倉庫即時數據爲準。
目錄頁的定位是:帶斜槓命令補全的 DeepSeek Harness 終端體驗,用來在命令行裏跑智能體對話。倉庫 README 寫得更具體:它以樹外 bundle 的形式組合在官方 @deepseek-ai/dsh-base 之上,和 Harness Web UI 使用同一套 Agent、Session、工具、命令、技能、權限、sandbox、上下文壓縮與插件服務。DSH-Code 沒有另外實現一套 Agent loop,只是在 DSH 運行時上增加面向編碼工作的 TUI。
交互上,它分別參考了兩個已有工具:會話處理參考 Codex CLI(會話導航、有界浮層、歷史檢查、穩定底部佈局),終端交互參考 Claude Code(斜槓命令發現、思考摺疊、審批、提問與 turn steering)。README 同時寫明:這是獨立的 MIT 社區項目,與 OpenAI 或 Anthropic 無隸屬關係。界面看起來眼熟,運行行爲仍由 DSH 的服務和配置決定。
同一目錄分類裏還有 dsh-TUI 等其他終端界面插件。它們都是社區方案,安裝源、profile 名稱和啓動命令並不相同,不要把倉庫名混着用。
核心功能¶
下面這些能力都來自倉庫 README,不是演示案例。
1. 不另起 Agent,只換界面¶
DSH-Code 讀取 Harness 的即時註冊表,不在本地維護另一套模型、工具或命令副本。模型適配器、工具 provider、技能來源、命令、權限策略、持久化後端、sandbox 和 subagent provider 都可以通過 DSH 的組合機制添加或替換。/plugin 提供當前 Cordis loader 的只讀視圖:loader 條目、啓用狀態、模塊身份和 fiber 階段。
整個進程只保留一個 Ink owner。/new 和 /resume 替換的是活動 Agent,而不是把終端拆掉重掛。Agent 忙碌時,切換會等到當前 turn 自然結束;最新請求優先,目標加載失敗也不會把當前會話弄壞。
2. 按會話選擇 Agent Preset¶
Host 層共享註冊表、持久化、會話查詢、權限和 sandbox 策略;每個會話有自己的 Agent scope,由 Agent Preset 組合工具、提示詞、技能、上下文壓縮、plan mode 和委派能力。README 列出的內置 preset 包括:
standard:功能完整的通用編碼 Agentcode:面向 Code Mode / PTC 的多操作工作流minimal:只保留持久 shell 和str_replace_editorcordis:完整 Agent,外加運行時檢查與 Preset 編寫指導- 用戶預設:自行定義工具、提示詞段落、技能、上下文壓縮、plan mode 與 subagent 行爲
第一次 turn 之前可以用 /mode 查看或選擇;也可以在啓動時加 --mode。選中的 preset 會寫入會話,恢復時還原。
3. 斜槓命令、模型與憑據¶
斜槓命令和用戶技能從共享 Harness 註冊表即時發現,不是寫死在 TUI 裏。進入界面後常用操作包括:
| 操作 | 用途 |
|---|---|
/new [preset] |
不重啓終端,創建並進入另一個會話 |
/resume [id\|前綴] |
搜索根會話或全部對話,可按 cwd、排序和密度篩選 |
/mode [preset] |
檢查或選擇空會話的 Agent 組合 |
/model |
在即時 LLM 註冊表提供的模型間切換;按 a 管理 provider 與 API key |
/plugin [query] |
檢查 loader 條目、啓用狀態、模塊身份和 fiber 階段 |
/permission |
切換權限預設;Shift+Tab 可循環切換 |
/help |
瀏覽本地命令、Harness 命令、技能和快捷鍵 |
Ctrl+O |
打開獨佔歷史詳情視圖 |
Ctrl+R |
摺疊或展開模型思考過程 |
@ |
引用工作區文件或持久會話的有界快照 |
Esc / Ctrl+C |
關閉最上層界面或中斷當前 turn |
/model 的 provider 面板只讀取憑據的已配置狀態、來源和可寫性;輸入內容會遮蔽,並直接交給 Harness 持久化。由啓動環境提供的 key 會標成只讀,不能在 TUI 裏覆蓋或移除。DEEPSEEK_API_KEY 不是啓動前置條件:沒配 key 也可以進 TUI、查看會話、使用不依賴模型的功能,再在 /model 裏按 a 添加。
4. 會話恢復與上下文¶
提示詞、流式 chunk、工具調用與結果、模型選擇、plan 狀態、權限、標題和 preset 選擇,都由持久 Session 事件投影得到。會話恢復、導出、歷史檢查、上下文統計和終端重放用同一份記錄。React state 只保存輸入草稿、光標、當前面板、選中項和滾動位置這類臨時界面狀態。
和會話相關的能力還包括:裸啓動會延遲到首次真實輸入才創建會話,未輸入就退出不會留下空會話;全局輸入歷史可以用 Up/Down 跨會話召回,/history 搜索面板能回填輸入框;subagent 對話可以只讀檢查,也可以通過 @ 注入有界會話引用。界面會顯示上下文佔用、緩存、token、TTFT 與耗時指標,並支持 Markdown 導出。
5. 審批、提問和終端佈局¶
sandbox 升級與 hook 的 ask 決策會走一次性工具審批條。結構化 ask_user_question 與 plan review 菜單支持多選和自定義答案。turn steering 發生在下一個 step 邊界,中斷語義是明確的。Agent mode、plan、權限 preset、goal 與 sandbox 狀態相互獨立,不會因爲切一個開關把另外幾個一起改掉。
渲染上,已落定的歷史只追加,流式可變區域有視口約束。思考過程可摺疊,工具調用有緊湊摘要和完整結構化詳情。雙行狀態欄裏,mode 與 context 在第二行,context 用藍色進度條表示。輸入框始終緊貼狀態欄上方;固定底部順序是:內容或面板 → notice → 輸入框 → 狀態欄。歡迎頭會顯示已安裝版本,以及倉庫寫明的雙語 slogan「Into the Unknown 探索未至之境」。
另外,切換到 DeepSeek 路由、或在同一路由切換 reasoning effort 時,輸入框會隨機播放 Wave、Aurora 或 Pulse 三種局部動畫,Flash 檔位和其它 DeepSeek 模型的波段數不同。這是界面裝飾,不改變 Agent 行爲。
安裝與啓用¶
目錄頁給出的安裝命令如下。在 DeepSeek Harness 終端中運行即可,dsh CLI 會從 GitHub 解析插件並裝到當前配置:
dsh plugin add github:UNLINEARITY/dsh-code
如需可復現安裝,目錄頁要求固定 commit 哈希:
dsh plugin add github:UNLINEARITY/dsh-code#commit
把 #commit 換成實際提交哈希。插件以當前 dsh 進程的權限運行,安裝時可能執行代碼。安裝前請檢查源代碼倉庫和許可證。
上面這條是目錄頁上的官方安裝入口。若要按倉庫 README 配出可啓動的終端界面,還需要 Node ^22.19 || >=24、預覽版 dsh CLI,以及 pnpm。README 當前推薦的安裝步驟是:
npm install -g @deepseek-ai/dsh dsh-code
npm install -g pnpm
dsh plugin --profile cli add dsh-code@0.9.0
dsh-code@0.9.0 是 README 在本文覈實時寫明的版本。提示裏說:pnpm 會忽略發佈不足 24 小時的包,發佈首日要用精確版本號;24 小時後可以省略版本,寫成 dsh plugin --profile cli add dsh-code。npm 安裝不受這個限制。只使用、不參與源碼開發時,README 和排障文檔都更推薦 npm 發佈包,因爲它已經包含 lib/ 構建產物。
裝好之後,下面三條啓動命令是並列的:
deepseek
dsh --profile cli
dsh-code
deepseek 與 dsh-code 都是 dsh --profile cli 的全局別名,後續參數會原樣轉發,例如 deepseek --resume abc123。
從 GitHub 源碼安裝(用於開發)時,README 寫的是:
dsh plugin --profile cli add github:unlinearity/dsh-code
Git 包會在安裝階段構建。若 pnpm 要求添加 allowBuilds,需要把輸出的完整條目複製到 ~/.dsh/profiles/cli/pnpm-workspace.yaml,再重新執行命令。該鍵包含 Git URL 與 commit,不能只寫 dsh-code: true。本地 checkout 則使用 dsh plugin --profile cli add file:C:/path/to/dsh-code,把路徑換成本機目錄。
卸載要分兩步,兩條都執行纔是全量卸載:
dsh plugin --profile cli remove dsh-code
npm uninstall -g dsh-code
第一條只解除 cli profile 的插件掛載,此時 deepseek 命令可能還在,並提示 the cli profile does not mount dsh-code yet;第二條纔去掉全局 npm 包和啓動別名。卸載不影響 @deepseek-ai/dsh 本體,也不刪除已經持久化的會話數據。
典型用法¶
下面的命令和操作都來自倉庫 README,可以按原樣復現。
先用 cli profile 起一個會話。默認是 standard preset:
dsh --profile cli
要用面向編碼工作流的 preset,加上 --mode:
dsh --profile cli --mode code
恢復當前目錄最近一次會話、按 id(或唯一前綴)恢復、或指定新會話 id:
dsh --profile cli --continue
dsh --profile cli --resume abc123
dsh --profile cli --session my-id
進入 TUI 之後,一個常見順序是:
- 第一次發消息前執行
/mode,確認當前 Agent Preset。 - 執行
/model,需要的話按a添加 provider 和 API key。 - 用
/help查看本地命令、Harness 命令、技能和快捷鍵。 - 編碼過程中用
@引用工作區文件;需要對照歷史時用Ctrl+O。 - 模型思考太長時用
Ctrl+R摺疊;工具調用需要批准時走界面上的審批條。 - 另開一個會話用
/new,找回舊會話用/resume,不必退出終端。
插件有沒有掛上,可以用下面這條檢查。排障文檔要求輸出裏能看到 dsh-code/startup:
dsh --profile cli --dump-config
適用場景與注意事項¶
適合已經在用 DSH、又希望把編碼智能體留在終端裏的人:需要斜槓命令、會話恢復、權限切換、模型管理和工具審批,但不想離開命令行去開 Web UI。它依賴官方 dsh-base 的 Agent、會話和工具服務,所以 DSH 生態裏其它插件(技能、模型適配器、sandbox 策略)仍然可以按 Harness 的組合方式疊加。不適合把 DSH-Code 理解成「另一個獨立 Agent 產品」——README 反覆強調,它沒有自己的 Agent loop。
使用前有幾件事需要看清楚。
- 權限與許可證。 插件以當前
dsh進程的權限運行,安裝時可能執行代碼。安裝前應檢查 源代碼倉庫 和 MIT 許可證。目錄頁也寫了同一條警告。 - 預覽版接口。 DeepSeek Harness 仍處於 developer preview,可能出現破壞兼容性的變化;DSH-Code 會跟隨插件接口演進,但不保證某次
dsh升級後舊版本界面一定還能啓動。 - 運行時依賴。 需要 Node
^22.19 || >=24,以及 PATH 上的pnpm。缺少 pnpm 時,啓動會提示dsh: pnpm not found on PATH — install pnpm to manage profile plugins。 - Linux 上的
pty.node。 排障文檔記錄:DSH 的本地子進程插件依賴node-pty,在部分 Linux x64 / Node 24 環境裏可能找不到預構建的pty.node。需要先安裝build-essential、Python 和make,再進入全局 DSH 安裝裏的node-pty執行npx node-gyp rebuild。這與 DeepSeek Harness 上游討論一致,不是 DSH-Code 單獨引入的問題,但用終端界面時更容易碰到。 - GitHub 源碼安裝。 走
github:unlinearity/dsh-code時,pnpm 可能攔截prepare構建。只使用發佈包更省事;必須跟倉庫源碼時,按 pnpm 輸出的完整allowBuilds鍵授權,不要簡化成包名。 - 憑據不要寫進對話。 環境變量裏的 key 在 TUI 中是隻讀的;在
/model裏新增的 key 會交給 Harness 持久化,輸入過程是遮蔽的。不要把密鑰貼進聊天記錄。
小結¶
dsh-code 把 DeepSeek Harness 的編碼智能體從瀏覽器挪回終端:斜槓命令、會話恢復、Agent Preset、模型與憑據、審批和思考摺疊都在同一個 TUI 裏完成,底層仍用官方 dsh-base 的 Agent、Session 和工具服務。它是 UNLINEARITY 維護的 MIT 社區插件,不是 DeepSeek 官方界面,也和 Claude Code、Codex CLI 沒有產品從屬關係。
目錄頁:https://deepseek-harness-plugin.com/zh-CN/plugins/dsh-code/
GitHub:https://github.com/UNLINEARITY/dsh-code