dsh-installed-plugins:在 DSH 設置頁統一管理已裝插件

前言

DeepSeek Harness(DSH)走「一切皆插件」的路線:profile 裏堆多了第三方包之後,很難一眼看清每個插件在做什麼、版本是多少、有沒有新版本。手工翻 package.json、進 npm 查版本,再對照各倉庫 README,既慢又容易漏。

下面介紹社區維護的客戶端插件 dsh-installed-plugins(倉庫 Maxkun2333/dsh-plugin-catalog)。它在 DSH 設置頁增加「插件目錄」標籤頁,用一份列表彙總當前 profile 裏的第三方插件,並在你安裝或卸載插件時自動重建目錄。

這是什麼

項 內容
npm 包名 dsh-installed-plugins
維護者 Maxkun2333
分類 客戶端(注入 Web 設置頁)
許可證 MIT
當前版本 0.2.4(以倉庫 package.json 爲準)
運行環境 Node >=20

該包未發佈到 npm(名稱 dsh-plugin-catalog 已被無關項目佔用)。安裝需從 GitHub Release 提供的 tarball 添加,不能直接 npm install。

核心功能

下列能力均來自項目 README 與 package.json 描述,可按需在面板中使用。

目錄與自動同步

  • 在 Settings → 插件目錄 展示 profile 中每個第三方插件:通俗說明、已裝版本、是否已組裝(assembled)、npm 上是否有更新。
  • 宿主監聽 profile 的 package.json;安裝或移除插件後目錄自行更新,無需額外命令或刷新頁面。
  • 相對上次快照新增的插件會帶標記,避免新裝被忽略。

更新與兼容性

  • 一鍵查詢 npm registry,顯示例如 1.7.25 → 1.7.29 及「有更新」標識。
  • 安裝前做兼容性判斷:peer 要求升高、其他已裝插件的反向約束、Node engines 不匹配等,結論爲 safe / has risk / incompatible;不兼容項不會默認可選批量更新,但仍可顯式強制更新。
  • 支持勾選「更新所選」或「更新全部」;更新前備份 package.json 與 lockfile 到 backup-update-<timestamp>/,失敗時自動回滾。
  • 待更新項可查看 changelog(GitHub Releases 或包內 changelog 文件)。
  • 更新完成後需重啓 DSH,新模塊纔會被加載。

備份、卸載與導出

  • WebDAV:可將整套插件配置(依賴聲明、加載順序、本地 .mjs、patch 層、內嵌 tarball 等)推送到 WebDAV,並在另一臺機器從面板恢復;憑證在面板與 settings.json 中配置,不寫死在 cordis.patch.yml。
  • 從面板卸載:可移除依賴、dsh.profile.bundles 條目及相關的 cordis.patch.yml 行,執行前展示計劃。
  • PLUGINS.md:與目錄相同的數據可導出爲便於檢索、適合 git 管理的 Markdown 文件。

檢索與其它

  • 客戶端即時搜索名稱、描述與標籤,無額外往返。
  • 實現爲純 JavaScript,零 npm 依賴,無構建步驟。

更新過程中面板會顯示固定進度卡片(階段:rewrite → backup → install → finish)、耗時與 pnpm 日誌尾部;若下載超時,pnpm 會重試,整體可能約兩分鐘。Node/pnpm 默認不繼承系統代理,面板提供 代理設置 / Proxy(off / auto 默認 / manual)。

安裝與啓用

官方推薦從最新 Release 安裝(不要用憑倉庫名拼接的 dsh plugin add github:...):

dsh plugin --profile web add https://github.com/Maxkun2333/dsh-plugin-catalog/releases/latest/download/dsh-installed-plugins.tgz

完成後重啓 DSH,在設置頁即可看到「插件目錄」。

插件通過 cordis.patch.yml 注入,典型配置如下:

- insert:
    - id: plugin-catalog
      name: 'dsh-installed-plugins'
      config:
        profile: web          # 要掃描的 profile,默認 web
        # dataDir: ...        # plugins.json / catalog.json / PLUGINS.md 所在目錄
        # autoWrite: false    # 僅監聽 profile,變更時不寫文件

dataDir 默認行爲:link: 或源碼目錄安裝時數據在包內;經包管理器安裝時用戶數據落在 <DSH_HOME>/plugin-catalog,避免 node_modules 被清理時丟失。

典型用法

插件說明從哪來

優先級從高到低三層,通常只需維護第一層:

層級 文件 說明
你的備註 data/plugins.json 自行編寫,不會被覆蓋,且 gitignore
內置說明 data/known-plugins.json 包自帶,覆蓋約 20 個常見社區插件
npm 描述 已裝包的 description 自動讀取

將 data/plugins.example.json 複製爲 data/plugins.json 後可增加條目,例如:

{
  "entries": {
    "dsh-pilot": {
      "title": "Browser cockpit",
      "what": "Drives a real Edge/Chrome over CDP so the agent can click and type on real pages.",
      "use": "Use the pilot_* tools; a draggable cockpit panel shows live state.",
      "repo": "https://github.com/guo6x/dsh-pilot",
      "tags": ["browser", "automation"]
    }
  }
}

在面板裏做什麼

  1. 打開 Settings → 插件目錄,瀏覽、搜索已裝插件。
  2. 需要時點擊檢查更新,閱讀兼容性結論與 changelog,再選擇更新或強制更新。
  3. 跨機器遷移或災備時,使用 WebDAV 備份與恢復;本地也可按需生成 PLUGINS.md。
  4. 確定不再需要某插件時,從面板發起卸載並確認計劃。

更新邏輯只改 profile 的 package.json 依賴 spec 及包管理器對 node_modules 的操作,不修改 dsh.profile.bundles。

適用場景與注意

適合誰:經常在 DSH Web profile 裏試裝、升級多個社區插件的開發者或運維,希望在一個界面看清清單、版本與更新風險,並偶爾做整包備份的用戶。

應注意:

  • 插件以當前 DSH 進程權限運行;安裝前請自行審閱 GitHub 源碼 與 MIT 許可證。
  • 社區插件目錄 SkillHub 條目 爲獨立生態站點,與 DeepSeek / 幻方無官方從屬關係,本文所述亦非官方應用商店。
  • 兼容性結論爲建議性質;強制更新前仍應結合自己的 profile 與業務環境判斷。
  • 使用 WebDAV 時妥善保管面板中的憑證。

結尾

dsh-installed-plugins 把「裝了哪些插件、各自幹什麼、要不要更、能不能更」收到 DSH 設置頁的一站式目錄裏,並支持備份、恢復與卸載編排。若你正在維護一個不斷增長的 DSH 插件集,可以按上文 Release 命令安裝,再從自定義 data/plugins.json 補全你最在意的幾個包的說明。

羽毛球分组比赛记分
小程序二维码

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

小夜