前言¶
DeepSeek Harness(DSH)用組合包管理插件,github: 依賴在安裝時會把 commit 寫進 profile 的鎖文件。上游倉庫繼續 push 之後,本地不會自動跟上,原生插件頁主要負責組合包的啓停與安裝,也不跟蹤第三方 GitHub 依賴的遠端變化。
如果你已經用原生「添加插件」裝了一批來自 GitHub 的插件,需要知道「有沒有新版本、要不要更新」,又不想換掉原生插件頁或額外佔一個頁籤,社區維護的 dsh-plugin-manager(維護者 longyi-0x0,分類:客戶端)做的是增量補位:不動原生插件頁、原生「添加插件」對話框和內置插件配置,只在設置頁和組合包詳情裏補上檢測與更新能力。
這是什麼¶
DSH 插件管理器(npm 包名 dsh-plugin-manager,當前資料中版本 0.5.0,MIT 許可)只做一件事:列出當前 profile 裏來源爲 github.com 的已安裝組合包,對比鎖文件裏的本地 commit 與遠端 ref,給出「待更新」狀態,並支持手動或自動更新。安裝 GitHub 插件仍走插件頁原生的「添加插件」;本插件不重複實現安裝表單,也不使用 plugins.tab 或添加菜單。
目錄頁:longyi-0x0/dsh-plugin-manager
源碼:github.com/longyi-0x0/dsh-plugin-manager
界面插在哪¶
本插件不佔插件頁 tab,不改原生「已安裝插件」列表的行內標籤、頂部刷新按鈕和標題右側區域(這些位置沒有對應插件插槽)。能力分佈在以下插槽:
| 插槽 | 位置 | 內容 |
|---|---|---|
settings.section |
設置頁側欄「插件管理器」 | 自動檢測/自動更新開關、全局列表、「待更新」標籤、「刷新並檢測」、「全部更新」、逐項檢查/更新 |
shell.overlay |
任意頁面 | 發現更新的「立即更新 / 稍後」彈窗、自動更新結果提示條 |
plugins.detail.badge |
組合包詳情頁標題旁 | 有更新或檢測失敗時的狀態 |
plugins.detail.actions |
組合包詳情頁頁頭 | 「檢查 / 更新」按鈕 |
plugins.detail.section |
組合包詳情頁底部 | 來源 spec、本地/遠端 commit、最近檢查時間與單項操作 |
重啓 DSH 後,設置頁側欄會出現「插件管理器」;GitHub 來源的組合包詳情頁會多出更新相關 UI,原生插件頁本身保持不變。
核心功能¶
清單與手動檢測、更新¶
打開 設置 → 插件管理器。頁面第一次打開時會自動做一次全部檢測:從 profile 的 pnpm-lock.yaml 讀本地 commit,用 git ls-remote 取遠端;不一致即視爲有更新。
- 「刷新並檢測」:重新讀取清單並檢查全部 GitHub 來源插件(設置頁頂部按鈕;原生插件頁的刷新沒有 hook,不會聯動)。
- 「全部更新」:對已檢出有更新的項逐個更新;本插件自己排在最後,避免自更新重載打斷其他項。
- 單行仍可「檢查 / 更新」;有更新的行顯示「待更新」標籤。
檢測只讀遠端,不改文件;結果只存在宿主內存裏,DSH 重啓後需要重新檢測。
自動檢測與自動更新¶
設置頁頂部有三個開關,屬於當前 profile,寫在 profile 目錄的 dsh-plugin-manager.json(與 compatibility.json 並列);換 profile 需重新設置。
| 開關 | 開啓後 |
|---|---|
| 啓動自動檢測 | DSH 啓動約 3 秒後自動做一次「刷新並檢測」 |
| 定時自動檢測 | 每小時自動做一次檢測 |
| 開啓自動更新 | 檢測到更新後直接更新;關閉時則彈窗提示 |
關閉自動更新時,任意頁面可能彈出「發現插件更新」對話框,可選「稍後」或「立即更新」。開啓自動更新時,成功或失敗以會自動消失的提示條告知;單個失敗不阻塞其它項。設置卡下方展示最近自動檢測時間、下次定時檢測時間與最近一次結果;定時檢測在宿主進程計時,不依賴頁面是否打開。
更新判定範圍¶
只處理已安裝且來源爲 GitHub 的組合包,例如 github:owner/repo(可帶 #分支或標籤)、https://github.com/...、git+https://github.com/...、git@github.com:...。本地 link:、npm 包、其他 Git 主機不在列表內。釘死到 40 位 commit 的 spec 顯示「釘住 commit」且不提供更新(本插件自更新後的 pinned spec 例外,仍跟遠端默認分支 HEAD 比對)。
更新實現方式¶
更新走 DSH 自帶的 pluginManager:對普通插件先 removeBundle 再 installBundle(原 spec, { enabled: 原啓用狀態 })。自更新不能先卸載更新器,改爲用 github:owner/repo#<remote commit> 調 installBundle,由 DSH 在 pnpm 之後 HMR 替換運行中的插件;可能觸發重載,無變化時需重啓 DSH。
安裝與啓用¶
產物已提交到 GitHub,安裝不需要現場構建。插件以當前 DSH 進程權限運行,安裝前請自行查看源碼與 MIT 許可證。
macOS / Linux(桌面版也可寫 dsh 的完整路徑):
dsh plugin --profile desktop add "github:longyi-0x0/dsh-plugin-manager"
Windows 使用桌面版自帶 CLI:
& "$env:LOCALAPPDATA\Programs\DeepSeek Harness\resources\runtime\cli\bin\dsh.cmd" `
plugin --profile desktop add "github:longyi-0x0/dsh-plugin-manager"
開發倉庫本地副本時用 link:(路徑換成你的目錄):
dsh plugin --profile desktop add "link:/path/to/dsh-plugin-manager"
安裝完成後重啓 DSH,再進入設置頁的「插件管理器」使用。
從 GitHub 安裝其它插件仍用原生「添加插件」,例如:
github:owner/repo,可帶#分支或標籤https://github.com/owner/repohttps://github.com/owner/repo/tree/<分支或標籤>git@github.com:owner/repo.git
包檢查、pnpm 下載、構建腳本審批、兼容性檢查與失敗恢復均由原生安裝對話框完成。
典型用法¶
- 用原生「添加插件」安裝若干
github:組合包,重啓或刷新 profile 後確認已啓用。 - 打開 設置 → 插件管理器,首次進入會自動檢測;或點擊 「刷新並檢測」 查看「待更新」標籤。
- 對單個插件點 檢查 / 更新,或一次性 全部更新;若提示需要重啓,按 DSH 提示操作。
- 若希望少動手:在設置頁打開「啓動自動檢測」「定時自動檢測」;需要靜默升級則再打開「開啓自動更新」,否則保留彈窗確認。
- 在 組合包詳情頁 也可查看 commit 對比並執行檢查/更新,與設置頁列表一致。
宿主在 webServer 上提供 /dsh-plugin-manager/api(僅本機迴環同源 POST/GET);遠程訪問模式下界面會顯示不可用。請在主 DSH 窗口使用;guest/無 profile 管理的二級窗口裏接口不可用。
適用場景與注意¶
適合:profile 裏有多項從 GitHub 安裝的 DSH 插件,希望集中看遠端是否有新 commit,並在不改動原生插件頁的前提下批量或自動更新。
注意:
- 只列 github.com 來源;gitcode、自建 Git、npm、
link:本地依賴不在管理範圍內。 - 檢測結果不持久化,重啓後要重新檢測;自動開關寫在
dsh-plugin-manager.json,跟着 profile 走。 - 卸載成功而安裝失敗時組合包可能處於未安裝狀態,設置頁會保留錯誤信息,可用原生「添加插件」按原 spec 重裝。
- bundle patch 的行 id 必須是
dsh-plugin-manager(實現備註);誤寫成plugin-manager會與內置 profile 管理服務衝突。 - SkillHub 等社區目錄爲獨立站點,與 DeepSeek / 幻方無官方從屬關係;本文事實來自項目 README 與 package 元數據。
結尾¶
dsh-plugin-manager 補的是 DSH 原生插件頁未覆蓋的一段:GitHub 鎖 commit 與遠端 HEAD/分支的差異。安裝仍用原生入口,管理集中在設置頁「插件管理器」與組合包詳情,可選啓動/定時檢測與自動更新。
- 目錄頁:https://www.skillhub.cn/plugins/longyi-0x0/dsh-plugin-manager
- GitHub:https://github.com/longyi-0x0/dsh-plugin-manager