dsh-plugin-harbor:在 DSH 側邊欄瀏覽插件市場並管理已裝插件

前言

DeepSeek Harness(DSH)的擴展都走插件形態;社區目錄集中在 dsh-plugin.org,條目規模在官方說明裏約兩萬條。平時要在瀏覽器裏翻目錄,再在終端裏執行 dsh plugin 裝包、改啓用狀態,上下文切換頻繁。下面介紹 dsh-plugin-harbor(維護者 Seraphoenixy,分類:客戶端):在 DSH 側邊欄開一個整窗面板,用目錄站數據做市場瀏覽,並把已裝插件的安裝、更新、卸載、啓停與熱重載收口到同一處;變更優先經宿主 pluginManager,缺能力時回退 dsh plugin 子進程。

這是什麼

插件全名 dsh-plugin-harbor(包名 dsh-plugin-harbor,當前版本 0.1.0-alpha.1,MIT 許可證)。它是 DSH 客戶端插件,不替代官方應用商店——目錄數據來自社區站點 dsh-plugin.org,與 DeepSeek / 幻方無官方從屬關係。dsh-plugin.org 與 api.dsh-plugin.org 提供目錄與詳情;本插件不調用 GitHub API,也沒有遙測端點。

面板結構

安裝後側邊欄出現「插件港灣」圖標。面板分四個頁籤:市場、已裝、操作、設置。下面按頁籤說明已覈實的能力。

市場

  1. 目錄同步:從官網拉全量分片,內容尋址做增量;站點改版時走 sitemap 枚舉兜底,並標註 degraded,不靜默返回空目錄;失敗原因會透傳到界面。
  2. 瀏覽與搜索:支持搜索、11 個一級分類、4 種排序、游標分頁;列表窗口化渲染,大批量滾動時減輕卡頓。搜索側:3 字及以上走 SQLite FTS5 trigram 索引,1–2 字退回單列 LIKE。
  3. 外鏈與詳情:倉庫名與「詳情頁」用系統瀏覽器打開 dsh-plugin.org 上對應插件頁(按 owner + slug);按需拉取單條詳情(精確版本、安裝命令、dshTarget),24h 緩存。

打開面板本身不自動聯網檢查更新;進入市場頁且無緩存、或用戶主動刷新目錄、檢查更新、安裝/卸載等操作時纔會出網。

已裝

已裝清單由 profile 清單、lockfile 與 node_modules 交叉校驗(git 形態含 commit)。更新是否可用只依據真實來源:registry 的 dist-tags.latest、git lockfile commit 對比 ls-remote、目錄 repoUpdatedAt;都拿不到則標「未判定」,不誤標「已最新」。支持啓用、停用、更新、卸載、熱重載;更新完成後自動複查並落庫。本地路徑或壓縮包形態的插件沒有遠端可比,界面會禁用「更新」,需自行改源碼構建後熱重載。

本頁還提供導出 / 導入與 Git 跨機器同步入口(規則見後文)。

操作

安裝、更新、卸載等變更進入隊列,可查看進度、日誌尾部並取消;跨重啓的歷史記在本插件數據目錄的目錄庫中。「進行中」按隊列順序顯示;已完成記錄按時間從新到舊。

設置

語言、自動刷新間隔、官網/API 基址、registry 鏡像、代理持久化在插件數據目錄。連通性診斷含站點、API、registry、git、目錄庫、熱重載六項,只讀、手動觸發。

行爲與安全口徑

理解這些規則有助於少踩坑:

  • 確認才動:所有安裝、更新、卸載、啓停、熱重載先過確認彈窗,服務端再校驗 confirm: true;更新的安裝地址與形態由服務端從已裝事實讀取,客戶端不能傳 spec。
  • 重啓與否聽宿主:桌面宿主默認加載 @deepseek-ai/dsh-hmr 時,多數變更可原地生效;僅當宿主回覆需要重啓時才提示並說明原因。啓停與熱重載無子進程兜底,缺服務時報錯。
  • 目錄庫旁路:寫庫失敗累加 failedWrites 並標註,瀏覽與管理不因存儲故障中斷。
  • 構建與生效:客戶端 client.js 刷新頁面即新;宿主側 index.js 需重啓或 profile 重新組合;不一致時面板頂部會說明修法。
  • 開發 link 安裝:從檢出目錄(link: 指向 clone)安裝時,可監視 dist/ 自動請宿主重新組合;PLUGIN_HARBOR_HOT_RELOAD=0 可關;tarball/registry 正式副本無此邏輯。首次啓用監視器仍需重啓一次 DSH。

本插件不寫 profile 的 package.json、cordis.patch.yml、pnpm-lock.yaml;變更交給宿主或子進程,配置合併經宿主 configEditor。數據落在 $DSH_HOME/profiles/<profile>/plugin-harbor/(默認 ~/.dsh),含 catalog.sqlite、settings.json、exports/、git-sync/ 等,按 profile 隔離。

安裝與啓用

倉庫提交自帶 dist/,安裝無需本地構建。官方示例(請將路徑換爲你本機 clone 或解壓位置):

dsh plugin --profile desktop add "D:\path\to\dsh-plugin-harbor"

安裝後重啓 DSH 或刷新頁面,即可在側邊欄打開港灣。插件以當前 DSH 進程權限運行,安裝前宜自行覈對源碼與 MIT 許可證。Node 引擎要求 >=22.19.0(見 package.json)。

典型用法

在市場安裝插件

  1. 打開「市場」,必要時觸發目錄同步(首次無緩存會自動拉取)。
  2. 用搜索或分類縮小範圍,點條目查看按需加載的詳情(安裝命令、dshTarget 等)。
  3. 發起安裝並在確認彈窗中確認;進度與日誌在「操作」頁查看。

管理已裝插件

在「已裝」中啓用/停用、檢查更新、更新、卸載或熱重載;每項操作同樣先確認。registry/git 源拿不準更新判據時,界面會如實顯示「未判定」而非假裝已最新。

導出與導入

導出 JSON 到 <dataDir>/exports/<時間>-<profile>.json,含插件清單、profile 補丁行(含 config)、本插件設置,可選各插件設置文件(勾選導出,疑似憑據替換爲 [已脫敏])。導入前在面板預檢(將安裝/將啓用/將停用/已一致/無法處理),確認後由宿主逐步執行。

三條硬限制(README 原文口徑):

  • 只增不刪:不卸載、不改 profile 的 package.json / cordis.patch.yml / pnpm-lock.yaml;重複導入冪等。
  • 帶 config 的補丁行:宿主無寫 config 接口,導入生成 YAML 片段,需人工粘貼。
  • 插件設置文件只導出、不導入;未導出項寫入 omissions 並說明原因。

導入源:系統文件瀏覽器、導出目錄下拉、或絕對路徑(例如從另一臺機器拷貝的文件)。

Git 跨機器同步(harbor-sync)

在「已裝 → 導出/導入 → Git 同步」中配置。使用獨立分支 harbor-sync,快照路徑 harbor/environments/<環境名>/snapshot.json;本地裸倉庫在 <profile>/plugin-harbor/git-sync/。可與 dsh-mnemon 共用遠端 URL,港灣不讀取 Mnemon 私有狀態。

  1. 填寫 HTTPS/SSH 地址或本機裸倉庫絕對路徑並保存(此步不聯網)。
  2. 「檢查遠端並預檢」:看待發布快照、應用計劃、版本差異與最近十次提交。
  3. 源機「發佈本機快照」;目標機重新檢查後「應用遠端快照」。進度在「操作」頁;缺失憑據在目標機補全。

不自動同步:預檢保留 15 分鐘,本機變化需重新檢查;發佈遇遠端變化會拒絕。link: / file: / 本地路徑與壓縮包不參與同步。認證走系統 Git 與 SSH agent 或憑據管理器,無交互失敗即報錯;建議私有倉庫,勿在 HTTPS URL 中寫憑據。

設置與排錯

在「設置」中改語言、刷新間隔、基址與代理;亦可用環境變量覆蓋(持久化設置優先),例如:

變量 作用
PLUGIN_HARBOR_SITE / PLUGIN_HARBOR_API / PLUGIN_HARBOR_REGISTRY 覆蓋默認站點、API、registry
PLUGIN_HARBOR_DSH 子進程兜底用的 dsh 可執行文件路徑
DSH_HOME 數據根,默認 ~/.dsh

手動跑「連通性診斷」可區分站點、API、registry、git、目錄庫、熱重載哪一環異常。Git 的 url.*.insteadOf、代理與 SSH 配置會影響實際連接,以本機 Git 爲準。

適用場景與注意

適合:長期在 DSH 桌面 profile 上試社區插件、需要在一個面板裏搜目錄並管生命週期、或多機用 Git 快照對齊「裝了什麼、啓沒啓」(配置合併有宿主校驗與人工項)。

注意:

  • 目錄與 API 依賴 dsh-plugin.org 生態,離線或鏡像需自行在設置/環境變量中配基址。
  • 導入與 Git 同步遵循「只增不刪」與本地開發插件保護,不能指望同步自動卸掉目標機上多裝的包。
  • 子進程兜底能完成的範圍與宿主能力不一致;熱重載與啓停依賴宿主服務。
  • 當前爲 0.1.0-alpha.1 早期版本,行爲以倉庫 README 與 docs/ 爲準。

資料與鏈接

經過上面的步驟,若你主要工作在 DSH 側邊欄內,港灣把「逛目錄」和「管已裝」接到同一套確認隊列與宿主契約上,比單獨開瀏覽器再加終端更連貫;複雜配置與跨機一致仍要按導出/導入與 Git 同步文檔裏的硬限制操作。

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

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

小夜