前言¶
DeepSeek Harness(DSH)的插件生態依賴社區目錄與 GitHub 上的各類擴展。日常開發裏,裝完插件後往往還要自己到倉庫或 npm 看有沒有新版本;官方插件市場 UI 的 README 也寫明沒有升級操作,已安裝插件若僅有新版本可用,多半隻能顯示狀態。官方 @deepseek-ai/dsh-plugin-manager 在 HMR 場景下對已安裝包直接返回 already-installed,社區插件常見做法是「去 GitHub 看 → 卸載 → 重裝」。下面介紹維護者 YukiSuoug 的 dsh-plugin-updater(分類:聯網工具):在插件頁增加「更新」標籤,複用官方 pnpm 安裝管線完成檢查與升級,而不是單獨實現一套下載器。
這是什麼¶
dsh-plugin-updater 面向已在 DSH 中安裝社區插件的用戶與開發者。瀏覽器半區在插件頁的第三個標籤「更新」(排在「已安裝 / 發現」之後);宿主半區提供 /dsh-plugin-updater/api/* 等只服務本機的接口。插件當前版本爲 0.2.4(MIT 許可證),倉庫:https://github.com/YukiSuoug/dsh-plugin-updater,社區目錄頁:https://www.skillhub.cn/plugins/YukiSuoug/dsh-plugin-updater。
核心功能¶
版本檢查¶
按 listBundles().source 區分安裝來源,採用不同判定方式:
| 安裝來源 | 判定方式 |
|---|---|
註冊表包(name / name@^1.2.3) |
依次問 pnpm 配置的源 → registry.npmjs.org → registry.npmmirror.com,讀 dist-tags,比 SemVer |
Git 源(git+… / github:…) |
git ls-remote <repo> HEAD 與 pnpm-lock.yaml 裏鎖定的 commit 比對 |
本地目錄(link: / file:) |
無遠程版本,標「本地目錄」 |
| 壓縮包地址 | 無法比對,提供「重裝」 |
隨 DSH 提供(無 source) |
跳過,寫明由 DSH 自己更新 |
註冊表結果緩存 5 分鐘,落盤在 $DSH_HOME/dsh-plugin-updater/cache.json;重開窗口仍可用緩存。點「刷新」或切換安裝源會強制重查。
安裝源¶
頁面右上角 安裝源 下拉與官方「添加插件」語義一致:自動(默認,pnpm 源 → npm 官方 → 中國大陸鏡像)、npm 官方源、中國大陸鏡像源、宿主 pluginManager.registries() 中的其它源(含私有源)、自定義地址。檢查與安裝共用同一源;選擇保存在瀏覽器 localStorage(dsh-plugin-updater:source:v1)。
兼容性預檢¶
對目標版本判定能否在當前 DSH 上運行,規則與官方 @deepseek-ai/dsh-app-boot 的 evaluatePluginCompatibility 一致:優先 engines.dsh;否則檢查 @deepseek-ai/dsh / @deepseek-ai/dsh-* 的 peerDependencies 範圍。不兼容的行帶標籤且「更新」置灰;服務端 /update 也會返回 400。
列表與快捷打開¶
列表按 已啓用 / 已停用 分組並帶數量;組內按「有更新 > 查詢失敗 > 可重裝 > 已最新 > 本地/隨包」排序。每行可按安裝方式打開本地 node_modules 真實路徑(文件夾圖標)或倉庫 / npm 外鏈(經 repository 等字段歸一化後的 https 地址)。
一鍵更新¶
確認後執行:
removeBundle(name) → installBundle('name@<最新>', { enabled: 原啓用狀態, saveExact: false, registry: 查出該版本的源 })
必須先卸載再安裝,以避免 HMR 下 already-installed;失敗時插件可能處於未安裝狀態,彈窗內可重試。一次只允許一個更新任務。
安裝與啓用¶
推薦與「添加插件」相同:DSH 側欄 → 插件 → 添加插件,粘貼倉庫地址:
https://github.com/YukiSuoug/dsh-plugin-updater
或命令行(<你的 profile> 通常爲 desktop 或 web):
dsh plugin --profile <你的 profile> add github:YukiSuoug/dsh-plugin-updater
裝完後打開 插件 → 更新 即可使用。
本地改代碼開發時,可在 clone 後 npm install && npm run build,再用 dsh plugin --profile <你的 profile> add link:<絕對路徑> 鏈接安裝;改 src/ 需重新 build,改宿主側 index.js 需重啓 DSH。
典型用法¶
- 打開 插件 → 更新,查看已安裝插件的當前版本與最新版本。
- 若網絡或鏡像策略需要,在右上角選擇 安裝源(例如中國大陸鏡像源),列表會按新源重查。
- 對有更新且兼容性通過的條目,點 更新,在確認框中核對將使用的源與風險說明,等待卸載 / 安裝進度與 pnpm 輸出。
- 需要對照源碼時,點行右側圖標:本地
link:裝法則打開開發目錄,遠程裝法則在瀏覽器打開歸一化後的倉庫或 npm 頁面。 - 查詢 stale 時點 刷新,或帶
refresh=1調用狀態接口(由界面觸發)。
宿主 API 概覽(均僅同源可寫):
| 方法 | 路徑 | 說明 |
|---|---|---|
| GET | /dsh-plugin-updater/api/state[?refresh=1][®istry=<url>] |
已安裝插件與版本信息 |
| POST | /dsh-plugin-updater/api/update |
{ name } 啓動更新任務 |
| GET | /dsh-plugin-updater/api/job?id= |
輪詢任務狀態 |
| POST | /dsh-plugin-updater/api/cancel |
{ id } 取消 |
| POST | /dsh-plugin-updater/api/open |
{ name } 打開目錄或網址 |
適用場景與注意¶
適合經常安裝社區 DSH 插件、希望在一處完成版本對比與升級的用戶。DSH 生態理念是「一切皆插件」;SkillHub 等社區目錄爲獨立站點,與 DeepSeek / 幻方無官方從屬關係,本文僅介紹該插件能力。
使用前請注意:
- 插件以當前 DSH 進程權限運行,更新會修改 profile 與依賴;安裝前應自行審查源碼與 MIT 許可證條款。
- 本地
link:插件無遠程版本概念;別名安裝(foo@npm:bar@1.2.3)不參與版本比對。 - 註冊表查詢走 Node
fetch,不讀 pnpm 代理;企業代理下可能查不到最新版(安裝仍走 pnpm)。 - 第三方插件在 profile 授權文件中的兼容性例外,本插件界面不做判斷;已授權但仍標不兼容時,需用「添加插件」手動安裝。
Node 引擎要求:>=22.19.0(見 package.json)。
結尾¶
dsh-plugin-updater 把「查新版本 + 換源 + 卸載重裝」收成插件頁裏的一次操作,並沿用官方 plugin-manager 的 inspect、源回退、鏡像與失敗回滾行爲。需要詳情與 issue 請見 GitHub:https://github.com/YukiSuoug/dsh-plugin-updater;目錄索引:https://www.skillhub.cn/plugins/YukiSuoug/dsh-plugin-updater。