前言¶
DeepSeek Harness(dsh)把運行時拆成可疊加的插件層:工具、會話、沙箱、UI 都可以做成 bundle,裝進某個 Profile,下次啓動再按層合成。官方倉庫把這件事概括成「一切皆插件」。對使用者來說,改能力往往不是去改 Harness 源碼,而是選、換、裝一層配置。
真正動手時,發現和安裝社區插件仍然比較散。官方建議給倉庫加上 GitHub Topic dsh-plugin 方便檢索;安裝則走 dsh plugin add,由 CLI 在 Profile 目錄裏轉發給 pnpm。命令本身不復雜,麻煩在後面幾步:這個倉庫是不是聲明瞭 dsh.bundle.patch、該不該固定到某個 commit、有沒有現成的 Release 安裝包、裝完要不要重啓、以及裝到哪個 Web Profile。社區裏已經有獨立的插件目錄站,也有人做了命令行市場;它們能減輕檢索成本,但多數還是要把人帶回終端。
Toukaiteio 維護的 dsh-plugin-installer 走的是另一條路:在官方 Web UI 的「設置 → 插件」裏增加「插件市場」標籤頁,把發現、校驗、安裝、更新和 Profile 切換留在同一個界面裏。下面按社區目錄頁、GitHub README / package.json 以及 DeepSeek Harness 官方文檔覈對後的內容,說明它是什麼、能做什麼、怎麼裝、怎麼用。
這是什麼¶
dsh-plugin-installer 是一款面向 DeepSeek Harness 的界面增強插件,由 Toukaiteio 維護,許可證爲 MIT,主要語言是 JavaScript。社區目錄頁的定位是「市場插件:快速把 DeepSeek Harness 接入 GitHub 插件生態」;倉庫 README 寫得更具體:它是內置於 Web UI 的插件市場,同時也是 Web Profile 切換工具。
它解決的不是「再寫一個插件」,而是這幾件日常操作:
- 從 GitHub 的
dsh-plugin、dshTopic 瀏覽候選倉庫 - 安裝前確認倉庫根目錄
package.json聲明瞭dsh.bundle.patch - 優先用 GitHub Release 裏已經構建好的
.tgz,並在有摘要時做 SHA-256 校驗 - 把插件裝進選定的 Profile,並在頁面裏更新或刪除
- 打開、創建其他 Web Profile,不必離開當前界面
截至本文寫作時(2026-08-18),社區目錄頁與 GitHub 倉庫均顯示 6 顆星。最新穩定版是 v0.2.0(2026-08-16 發佈),package.json 中的版本號與之一致。需要說明的是:社區插件目錄是獨立站點,和 DeepSeek / 幻方沒有官方從屬關係,不能把它理解成官方應用商店;這個安裝器本身也是社區插件,不是 Harness 內置功能。
核心功能¶
從 GitHub Topic 發現,而不是維護私有索引¶
插件市場在線檢索 GitHub 上帶 dsh-plugin 和 dsh Topic 的倉庫,並自動排除 DeepSeek Harness 本體倉庫,避免把宿主程序當成插件列出來。列表支持兩種 GitHub 官方支持的倉庫排序:按更新時間和按星標數。接近列表底部時會預取下一頁,形成無限滾動。
README 把 Topic 的含義寫得很明確:它只是發現信號,不代表安全審覈,也不代表官方背書。倉庫出現在列表裏,只說明它打了相應標籤,不說明代碼已經被審查過。
爲了降低 GitHub API 壓力,搜索結果會按「搜索詞 + 排序方式 + 頁碼」在服務端和客戶端各緩存十二分鐘。匿名額度用盡時,可以在同一標籤頁的「GitHub 請求設置」裏粘貼 Token;無人值守場景也可以用服務端環境變量 GITHUB_TOKEN 作爲後備。
安裝前先確認這是 DSH bundle¶
用戶點擊安裝後,host 端按 README 記載的順序處理:
- 讀取倉庫元數據和最新 GitHub Release
- 讀取根目錄
package.json - 要求存在有效的
dsh.bundle.patch聲明 - 優先使用 Release 中與版本匹配的
<包名>-<版本>.tgz;GitHub 提供摘要時校驗內容,並把歸檔保存在DSH_HOME/plugin-archives/後再安裝 - 沒有合適 Release 時,僅在確認該提交裏確實存在包所聲明的 JavaScript 入口後,才允許固定 commit 的源碼安裝
這和 DeepSeek Harness 官方發佈文檔是對齊的:沒有 dsh.bundle 聲明的包可以當成普通依賴裝上,但不會成爲 Profile 的一層;從 Git 安裝拿到的是源碼而不是構建產物,TypeScript 包如果沒提交 lib/,加載會失敗。這個安裝器選擇「有 Release 就裝構建包;源碼回退必須能看到入口文件」,並且源碼路徑如果還需要跑 prepare,必須針對該插件再確認一次。既沒有可用 Release、也沒有可驗證入口時,市場會拒絕安裝並說明原因。
裝完之後可以更新、刪除,也可以先管自己¶
「已安裝插件」區域對應當前選定的 Profile。頁面打開時,會優先把市場安裝的插件和倉庫最新 Release 比較;沒有 Release 時再比較源碼提交。頁面上的狀態包括:
- 有可用更新:下載並安裝經過驗證的最新 Release 安裝包
- 已是最新:已安裝包版本與最新 Release 版本一致
- 暫無法檢查更新:Release 和源碼狀態都覈對不上時的保守提示,不會在比較失敗時聲稱「有更新」
- 刪除:確認後再調用 DSH 自己的
plugin remove,讓 Profile 的 bundle 清單和實際包狀態一致
從 v0.2.0 起,打開插件市場時還會檢查安裝器自身有沒有新的穩定 Release。一鍵更新只作用於當前 Profile,重啓後生效;重啓前舊構建繼續提供服務,其他 Profile 不受影響。
文案和倉庫日期格式會跟隨 DSH「設置 → 通用設置 → 語言」。安裝到當前 Web Profile 後,頁面會提示重啓,並提供「立即重啓 DSH」:先拉起新進程,確認新地址可用再跳轉,然後關掉舊進程。
在同一頁切換 Web Profile¶
除了裝插件,這個界面還提供 Profile 相關操作:
- 打開 Profile:在新的本地端口啓動所選 Web Profile,再跳轉到新地址;當前進程暫時保留,切換失敗時不丟掉當前會話
- 創建並打開:初始化一個包含官方 Web bundle 和本插件的新 Profile,然後打開
README 同時記錄了一個上游限制:當前 DSH 預覽版裏,npm 包 @deepseek-ai/dsh-web-app 可能依賴倉庫中不存在的 @deepseek-ai/dsh-frontend。遇到這種情況時,創建全新 Web Profile 會被上游包阻斷,已經能正常運行的 Web Profile 不受影響。這是 Harness 預覽版的打包問題,不是安裝器自己能繞開的。
安裝與啓用¶
環境要求以倉庫 README 和 package.json 爲準:
- Node.js
>=22.19.0 - pnpm
>=10 - DeepSeek Harness
0.1.0-rc.6或兼容版本 - 一個已經能打開的 DSH Web Profile(應用內界面掛在 Web UI 上)
社區目錄頁給出的安裝命令如下,在 DeepSeek Harness 終端中運行即可:
dsh plugin add github:Toukaiteio/dsh-plugin-installer
如需可復現安裝,目錄頁建議固定 commit:
dsh plugin add github:Toukaiteio/dsh-plugin-installer#commit
把上面的 commit 換成實際的 40 位哈希。倉庫 README 更明確地要求裝進正在使用的 Web Profile,並從 GitHub 指定提交安裝時倉庫裏必須已經包含構建後的 lib/:
dsh plugin --profile web add github:Toukaiteio/dsh-plugin-installer#<commit>
dsh web
如果希望直接用已經構建好的安裝包,可以從 GitHub Releases 下載最新穩定版 .tgz(當前爲 dsh-plugin-installer-0.2.0.tgz),再加入 Web Profile:
dsh plugin --profile web add ./dsh-plugin-installer-0.2.0.tgz
dsh web
Windows 也可以用倉庫提供的 PowerShell 一鍵腳本:下載最新穩定 Release,在 GitHub 提供 SHA-256 摘要時校驗,把歸檔留在 DSH_HOME/plugin-archives/dsh-plugin-installer/,安裝到 web Profile 並啓動 DSH Web:
irm https://raw.githubusercontent.com/Toukaiteio/dsh-plugin-installer/main/scripts/Install-DshPluginInstaller.ps1 | iex
指定其他 Profile、或不自動啓動 Web 時,先下載腳本再傳參數:
$script = "$env:TEMP\Install-DshPluginInstaller.ps1"
Invoke-WebRequest https://raw.githubusercontent.com/Toukaiteio/dsh-plugin-installer/main/scripts/Install-DshPluginInstaller.ps1 -OutFile $script
& $script -Profile work -NoStart
macOS 和 Linux 對應的是 Bash 腳本,流程與 Windows 相同,額外需要 bash、curl 和 Node.js:
curl --fail --location --remote-name https://raw.githubusercontent.com/Toukaiteio/dsh-plugin-installer/main/scripts/install-dsh-plugin-installer.sh
bash ./install-dsh-plugin-installer.sh
指定 Profile 或只安裝不啓動:
bash ./install-dsh-plugin-installer.sh --profile work --no-start
Web UI 起來之後,打開 設置 → 插件 → 插件市場。
典型用法¶
下面的步驟來自倉庫中的 SKILL.md 和中文 README,可以按界面直接做。
- 確認當前是一個正在運行的 Web Profile,進入 設置 → 插件 → 插件市場。
- 在在線列表裏按更新時間或星標瀏覽,或輸入搜索詞過濾。
- 選中倉庫後先看審查結果,確認它被識別爲 DSH bundle,再執行安裝。目標 Profile 要在安裝前選好。
- 如果審查提示存在
prepare腳本,說明安裝階段會執行第三方代碼。不要在沒有明確確認的情況下放行構建權限。 - 安裝到當前 Web Profile 後,使用 立即重啓 DSH,讓新的 bundle 疊加層生效。
- 之後可在「已安裝插件」裏查看更新狀態,需要時更新或刪除。
GitHub 匿名請求被限流時,展開同一標籤頁裏的 GitHub 請求設置,粘貼 Token 並保存。保存後 Token 不會回顯到瀏覽器,插件把它寫到:
$DSH_HOME/config/dsh-plugin-installer.json
未設置 DSH_HOME 時使用 DSH 默認目錄。保存空值會清除本插件存過的 Token。Token 只在服務端讀取,可以來自上述配置,也可以來自環境變量 GITHUB_TOKEN;README 建議只授予訪問公開倉庫元數據所需的最小權限。
在 Windows 上如果還開了 FastGitHub、steamcommunity_302 這類本地 HTTPS 加速或代理,市場可能連不上 GitHub,並提示無法驗證 TLS 證書。倉庫 Issue #1 記錄了這種情況:代理根證書已被 Windows 信任,但 Node.js 默認沒有用系統證書存儲。處理方式是先完全退出 DSH,在同一個 CMD 窗口裏讓 Node.js 使用系統 CA,再啓動:
set "NODE_OPTIONS=%NODE_OPTIONS% --use-system-ca"
dsh web
該選項需要 Node.js 22 或更高版本,加速器根證書仍須安裝並被 Windows 信任。不要用 NODE_TLS_REJECT_UNAUTHORIZED=0 關掉證書校驗。
如果目的是自己發一個能被這個市場發現的插件,倉庫 SKILL.md 給出的最小條件是:根目錄 package.json 聲明 dsh.bundle.patch,cordis.patch.yml 插入 host 模塊,host 模塊導出 apply(ctx),並把 dsh-plugin Topic(可選再加 dsh)打到 GitHub 倉庫上。從 Git 安裝的倉庫應提交構建後的 lib/,避免安裝時再跑構建腳本。Skill 描述工作流,Plugin 修改運行時或 UI,兩者不是同一類東西。
適用場景與注意事項¶
比較適合這些情況:
- 已經在用 DSH 官方 Web UI,希望在設置頁裏瀏覽、安裝社區插件,而不是每次回到終端抄命令
- 需要在多個 Web Profile 之間切換,或者偶爾建一個帶官方 Web bundle 的新 Profile
- 給自己的 DSH 插件打上
dsh-pluginTopic 後,想確認市場側會怎樣發現和校驗它
使用前有幾條邊界需要看清楚。
插件以當前 dsh 進程的權限運行,安裝時可能執行代碼。社區目錄頁和倉庫 README 都要求:安裝前檢查源代碼倉庫和許可證。GitHub Topic 不是安全審查。安裝器能做的是校驗 bundle 形狀、固定 commit、優先使用帶摘要的 Release 包;它不能代替你閱讀第三方源碼,尤其是帶安裝腳本或構建腳本的倉庫。
目錄頁上的 dsh plugin add github:Toukaiteio/dsh-plugin-installer 沒有寫死 Profile。應用內界面依賴 Web Profile,實際使用時按 README 加上 --profile web(或你正在用的 Profile 名),需要可復現安裝時再釘死 commit。DeepSeek Harness 目前仍是開發者預覽,官方 README 寫明會有破壞性變更;本插件聲明兼容 0.1.0-rc.6,升級 Harness 後應再覈對一次。
創建全新 Web Profile 還受上游 @deepseek-ai/dsh-frontend 打包問題影響。已有可用的 Web Profile 時,繼續在現有 Profile 裏裝插件即可,不必爲了「乾淨環境」強行新建。
小結¶
dsh-plugin-installer 把 GitHub 上的 DSH 插件發現和安裝收進官方 Web UI 的「設置 → 插件」頁:用 Topic 檢索,用 dsh.bundle.patch 過濾,優先裝校驗過的 Release 包,並附帶更新、刪除和 Profile 切換。它降低的是操作路徑,並不改變「插件在當前進程權限下運行」這件事。
目錄頁:https://deepseek-harness-plugin.com/zh-CN/plugins/dsh-plugin-installer/
GitHub:https://github.com/Toukaiteio/dsh-plugin-installer
DeepSeek Harness:https://github.com/deepseek-ai/deepseek-harness