dsh-better-plugin-updater:在 DSH 內檢查並確認安裝插件更新

前言

DeepSeek Harness(DSH)的生態靠插件擴展能力。插件可能來自 npm、GitHub 倉庫或 GitHub Release,版本也會隨上游變動。DSH 自帶插件管理器能改包,但對多來源、需要人工審閱的更新場景,往往還要在終端或外部流程裏對照版本信息。dsh-better-plugin-updater 在 DSH 內完成「查更新 → 展示目標版本/提交 → 經你確認後再安裝」,npm 源插件仍保留 DSH 原生更新控件;未經確認不會執行更新。

這是什麼

dsh-better-plugin-updater 由 Mooling0602 維護,歸類爲客戶端插件。定位是 DeepSeek Harness 的增強型插件更新器:藉助 DSH 插件管理器更換包,在 Web / 桌面 / 終端等受管 profile 中使用。當前 npm 發佈版本爲 0.1.1(MIT 許可證)。

核心功能

更新來源與比對方式

插件按安裝來源採用不同策略查更新,概覽如下:

來源 如何發現更新
npm 在所配置的 registry 中取最高穩定版;不提議降級
Git 倉庫 與已安裝提交對比所跟蹤分支上的最新提交
GitHub Release 取最高版本 tag(含 prerelease);忽略 GitHub 的 latest 標記
本地目錄或其他 報告爲不支持,不猜測

固定 npm 版本與固定的 GitHub 提交默認受保護;可用 --allow-pinned 或在配置裏設置 allowPinned 授權更新。DSH 自有 bundle 與受保護包會被跳過;本插件可檢查自身支持的安裝來源,但不能更新自身。

界面與命令兩套入口

  1. 插件詳情頁:對從 GitHub 安裝(倉庫或 release 壓縮包)的插件,在來源信息下出現 Version 區塊,打開頁面即檢查更新,展示當前與目標 commit/版本,確認風險對話框通過後才安裝。
  2. 斜槓命令:在會話中執行 /plugin-updater 系列命令,同樣先展示計劃、再確認執行。

向智能體開放了只讀工具 plugin_updates:可列出 bundle 並檢查更新,不能代爲安裝、不能代你接受移除風險、不能批准 build 腳本或兼容性豁免。

配置與 GitHub 限流

多數選項可在 DSH 插件設置頁表單中修改;sources、indexes 需在 profile patch 中配置。可選字段包括 language(auto / en / zh)、githubTokenEnv(默認 GITHUB_TOKEN)、requestTimeoutMs、maxMetadataBytes、planTtlMs 等。匿名訪問 GitHub API 易觸發限流時,可在 ~/.dsh/.credentials.yaml 中配置 token 引用,僅用於 api.github.com 元數據請求。

環境與依賴

  • Node.js 22 或更高版本。
  • 受管的 DSH profile(Web 應用、桌面應用或終端)。
  • 與 package.json 中 engines.dsh 一致:DSH >=0.2.1-rc.4 且 <0.3.0。

安裝與啓用

推薦從 npm 安裝已構建的 bundle,本機無需構建工具鏈:

dsh plugin --profile web add dsh-better-plugin-updater

將 web 換成你實際使用的 profile。若 Web 端已打開,安裝後需刷新頁面以加載瀏覽器側代碼。若刷新後仍看不到更新相關能力,可重啓 DSH 一次(已運行的進程可能仍緩存「該包無瀏覽器代碼」的舊判斷)。

從 GitHub 源安裝時倉庫內無預構建產物,安裝過程可能觸發構建並需你批准:

dsh plugin --profile web add github:Mooling0602/dsh-better-plugin-updater

卸載:

dsh plugin --profile web remove dsh-better-plugin-updater

典型用法

斜槓命令

/plugin-updater                   list installed plugin bundles
/plugin-updater check             check every bundle for updates
/plugin-updater check foo         check one bundle
/plugin-updater update foo        show the exact target and confirm
/plugin-updater ok                carry out the confirmed update
/plugin-updater help              show usage

更新在確認前不會應用。/plugin-updater update foo bar 可一次指定多個包;包名支持 *、? 通配。重複發送 update 或發送 ok、confirm 會執行剛纔展示的計劃。

若已明確接受文檔所述風險,可使用:

/plugin-updater update foo --accept-removal-risk

--allow-pinned 與 --accept-removal-risk 不能同時使用。強制界面語言示例:

/plugin-updater --lang zh
/plugin-updater check foo --lang zh

按源的 profile 覆蓋(節選)

sources:
  example-plugin:
    kind: npm
    registry: https://registry.npmjs.org/
    channel: latest
    allowPinned: true
  github-plugin:
    kind: github-source
    repository: owner/repository
    ref: main
  release-plugin:
    kind: github-release
    repository: owner/repository
    assetTemplate: plugin-{tag}.tgz

覆蓋項必須與插件真實安裝來源一致,不能把某個包指到無關倉庫。

適用場景與注意

適合誰:經常在 DSH 裏維護一批 GitHub 或 npm 插件、希望在同一界面覈對 commit/版本再升級的開發者與智能體使用者。

風險(README 明示):更新不是原子操作——舊包會先被移除再裝新版;若安裝失敗或未批准 build 腳本,包可能處於缺失狀態,恢復需手動按提示操作,無自動回滾。GitHub 源與 release 包在安裝階段仍依賴網絡;npm 新版會在移除舊包前預下載。本插件不會替你批准 build 腳本或兼容性豁免。

安全習慣:插件以當前 DSH 進程權限運行。安裝前請閱讀 GitHub 倉庫 源碼與 MIT 許可證,確認變更範圍後再在 profile 中啓用。

社區插件目錄由 SkillHub 等站點聚合展示,與 DeepSeek / 幻方無官方從屬關係,不宜理解爲官方應用商店。

結尾

經過上面的步驟,你可以在插件詳情頁或 /plugin-updater 命令中完成多來源更新檢查,並在確認後再交給 DSH 插件管理器換包。進一步說明見倉庫 README(含 簡體中文)。

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

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

小夜