前言¶
DSH 的理念是「一切皆插件」。但落到實際操作,裝插件通常只有兩條路:開終端執行 dsh plugin add,或者去插件市場裏找。前者對不常碰命令行的人不夠友好,後者覆蓋有限——市場沒收錄的插件,界面上就沒有安裝入口。dsh-plugin-install 補的就是這一段:它在 dsh 設置頁裏新增一個「安裝」標籤頁,輸入包名即可安裝任意第三方插件,不必開終端,也不必經過插件市場。下面介紹它的功能、安裝方式與注意事項。
這是什麼¶
dsh-plugin-install 是 qinyre 維護的、面向 Web 端的客戶端插件(package.json 中 dsh.client.platform 爲 "web"),當前版本 0.3.10,MIT 許可。運行時依賴很輕:peer 依賴 @deepseek-ai/cordis ^4.0.1,另依賴 yaml ^2.9.0。
一句話定位:在設置頁裏按包名安裝任意 dsh 插件。包名支持三種寫法——npm spec、github:user/repo 或本地路徑。
核心功能¶
安裝、卸載、更新走同一條 CLI 路徑¶
插件不維護第二套狀態。界面上的安裝、卸載與更新,全部經由 dsh plugin add / remove 執行,與在命令行手動操作完全一致,dsh.profile.bundles 的同步由 CLI 負責。
一鍵檢查更新,不把更新變成降級¶
已安裝列表可以一鍵檢查更新,檢查方式按來源區分:
- npm 安裝:對照 registry 的 latest 版本號;
- github 安裝:對照倉庫 HEAD 提交;
- 本地鏈接:如實標註,不做檢查。
更新前會覈對方向:registry 的 latest 不高於已裝版本時拒絕執行。更新完成後還會覈對實際落地的版本號,與 registry latest 不一致時如實提示,而不是謊報成功。
正面處理 pnpm 11 的發佈冷靜期¶
pnpm 11 默認開啓 24 小時發佈冷靜期。插件在每次 add 與 remove 時附帶 --config.minimum-release-age=0 規避;舊版 pnpm 不認識該參數時,會自動去掉重試。
同時,每次操作前會對整個 lockfile 做策略校驗,發現窗口內發佈的條目時以 ERR_PNPM_MINIMUM_RELEASE_AGE_VIOLATION 攔截。操作失敗時,失敗橫幅會帶出 pnpm 打印在標準輸出裏的真實診斷,而不是隻剩轉發器的一句總結。
生效方式與重啓¶
純客戶端插件刷新頁面即可生效;組合較複雜的插件會明確提示需要重啓,頁面上的「重啓服務」按鈕在兩種宿主下均可用:DSH Desktop,以及獨立運行 dsh web。
寫操作的安全防護¶
- spec 採用字符白名單校驗,拒絕參數注入與 shell 元字符;
- 更新目標只能取自已安裝清單;
- POST 請求要求同源;
- 同一時刻僅允許一個寫操作。
服務本身只綁定迴環地址,與上述措施構成縱深防禦。
安裝與啓用¶
執行安裝命令:
dsh plugin --profile web add dsh-plugin-install
經過上面的步驟,打開 Web UI 的 設置 → 插件,即可看到「安裝」標籤頁。卸載在同一頁面完成,或執行:
dsh plugin --profile web remove dsh-plugin-install
如果你用的是桌面客戶端 DSH Desktop(github.com/qinyre/dsh-Desktop),它開箱已預裝此插件,無需手動安裝。
典型用法¶
在「安裝」標籤頁輸入包名即可安裝,npm spec、github:user/repo、本地路徑三種形式都接受。
開發者也可以從命令行直接安裝本地源碼檢出,包內的 prepare 腳本會自動構建出 lib/:
dsh plugin --profile web add file:/path/to/dsh-plugin-install
參與開發時,先拉取依賴,再按需執行類型檢查、測試與構建:
npm install
npm run typecheck
npm test
npm run build
端到端 smoke 默認關閉,要求同級目錄存在 deepseek-harness 源碼檢出,且 Node ≥ 22.19:
DSH_DESKTOP_PLUGIN_SMOKE=1 npm test
適用場景與注意¶
適合的人羣:
- 日常主要在 Web UI 裏操作 dsh,不想爲裝一個插件單獨開終端;
- 想嘗試市場沒收錄的第三方插件;
- 本地開發插件,希望快速裝進 web profile 驗證效果。
兩點注意:其一,第三方插件以當前 dsh 進程的權限運行,安裝來源不明的插件前,應先檢查其源碼與許可證,再決定是否裝入;其二,插件內置的 spec 白名單、同源校驗等防護針對的是注入類風險,不能替代對插件本身源碼的審查。
結語¶
dsh-plugin-install 把「裝插件」這件事從終端搬進了設置頁,同時沒有另起一套狀態——所有操作仍走 dsh plugin add / remove,配合對 pnpm 11 冷靜期的處理與更新方向的核對,在界面上點的每一次安裝與更新,結果都與命令行一致。
項目地址:
- GitHub:https://github.com/qinyre/dsh-plugin-install
- 社區目錄頁:https://www.skillhub.cn/plugins/qinyre/dsh-plugin-install
其中目錄頁來自社區維護的獨立插件目錄,與 DeepSeek、幻方無官方從屬關係。