前言¶
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 與受保護包會被跳過;本插件可檢查自身支持的安裝來源,但不能更新自身。
界面與命令兩套入口¶
- 插件詳情頁:對從 GitHub 安裝(倉庫或 release 壓縮包)的插件,在來源信息下出現 Version 區塊,打開頁面即檢查更新,展示當前與目標 commit/版本,確認風險對話框通過後才安裝。
- 斜槓命令:在會話中執行
/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(含 簡體中文)。