dsh-plugin-manager:在設置頁檢測並更新 GitHub 來源的 DSH 插件

前言

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/repo
  • https://github.com/owner/repo/tree/<分支或標籤>
  • git@github.com:owner/repo.git

包檢查、pnpm 下載、構建腳本審批、兼容性檢查與失敗恢復均由原生安裝對話框完成。

典型用法

  1. 用原生「添加插件」安裝若干 github: 組合包,重啓或刷新 profile 後確認已啓用。
  2. 打開 設置 → 插件管理器,首次進入會自動檢測;或點擊 「刷新並檢測」 查看「待更新」標籤。
  3. 對單個插件點 檢查 / 更新,或一次性 全部更新;若提示需要重啓,按 DSH 提示操作。
  4. 若希望少動手:在設置頁打開「啓動自動檢測」「定時自動檢測」;需要靜默升級則再打開「開啓自動更新」,否則保留彈窗確認。
  5. 在 組合包詳情頁 也可查看 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
羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜