dsh-cjbf:把 DSH 插件連同配置備份成一個文件夾

前言

DSH 的理念是「一切皆插件」,插件裝在某個 profile 裏,配置文件也在該 profile 內。問題出在換機器的時候:新的 DSH 要一個一個重裝插件,裝完還要重新調配置。手工搬運容易漏掉 cordis.yml 之類的改動,漏掉一個 link: 依賴路徑,下一次啓動就可能直接失敗。

下面介紹的 dsh-cjbf 就是針對這個環節的插件:把本機 profile 裏裝的所有插件和它們的配置打進一個普通文件夾,換機後從這個文件夾恢復。

這是什麼

dsh-cjbf 由 CheapGodMs 維護,GitHub 倉庫 CheapGodMs/dsh-cjbf,當前版本 1.0.0,許可證 MIT,倉庫語言 JavaScript,GitHub 星標爲 0。它聲明的運行環境是 dsh >= 0.2.1-rc.5。

一句話定位:DSH 插件備份與恢復工具。備份包不只包含插件本體和依賴,還包含 profile 的配置文件,所以新機器恢復後插件集合和配置一起回來,而不是隻有插件。

倉庫 topic 只有 dsh-plugin。社區目錄頁把它放在插件分類下,該目錄是獨立站點,與 DeepSeek / 幻方沒有官方從屬關係。

備份產物

備份寫入 <folder>/DSH插件備份-<YYYYMMDD-HHMMSS>/,目錄裏包含五個部分:

1、profile/:package.json、cordis.patch.yml、pnpm-workspace.yaml、pnpm-lock.yaml、cordis.yml。
2、packages/:profile 的 node_modules,也就是插件本體和它們的依賴,.bin 與 .pnpm 緩存被排除。
3、tool/:本插件自身的一份副本,這樣新機器即使沒有網絡也能裝回它。
4、manifest.json:時間戳、bundle 列表、每個依賴的精確版本、文件數、字節數、平臺。
5、README.txt:中文寫的恢復說明,和數據放在一起。

備份路徑由你在頁面上指定,不寫死在插件裏。

恢復行爲

恢復把 packages/ 寫回 profile 的 node_modules,把配置文件寫回 profile,同時保證正在運行的這份插件本身不被覆蓋。具體有五點:

1、cordis.yml 不會被覆蓋,因爲它是每臺機器自己的 composition root。
2、恢復出來的 package.json 一定保留本插件並保持選中狀態。
3、原本從本機路徑安裝(link: / file:)、而新機器不存在該路徑的依賴會被移除並在結果裏列出,避免破壞下一次啓動。
4、package.json 裏聲明但在備份中缺失的包會被清理並報告。
5、覆蓋任何東西之前,當前 profile 文件會先複製到 profile/.plugin-backup-restore-<時間戳>/,這就是回滾路徑。

安裝與啓用

安裝命令來自 README,需要帶 profile 參數:

dsh plugin --profile <profile> add dsh-cjbf

裝完在「插件」頁面即可看到備份入口。插件自帶一個 web client(client.js),聲明 "immediately": true,會注入 @deepseek-ai/dsh-client-ui-plugin-manager,所以裝完就能在插件頁面裏操作,不需要額外配置。

典型用法

下面這四步是 README 裏給出的完整流程,順序照做即可。

1、本機安裝插件:

dsh plugin --profile <profile> add dsh-cjbf

2、打開「插件 → 備份 / Backup」,選一個文件夾,點「Back up now」。

3、新機器上裝好 DSH,再裝上本插件(從 npm 裝,或者用備份包裏的 tool/ 目錄裝),打開同一個標籤頁,選中備份文件夾,點「Find backups」,選中某個快照,點「Restore this backup」。

4、重啓 DSH。

除了頁面操作,插件還暴露了一個名爲 plugin_backup 的 agent tool,覆蓋只讀和備份側的命令:status、scan、backup、find。恢復這一側被刻意限制爲只能由用戶在頁面上觸發,因爲恢復會覆蓋本機插件配置,頁面上始終要求顯式確認。

適用場景與注意

適合的場景:DSH 用了多個 profile、插件數量多、配置改得多、需要跨機器遷移。備份體積大致等於 profile 的 node_modules,幾百 MB 屬正常,這一點在選目錄時要預留好空間。

兩點需要注意:

1、備份不含會話記錄,~/.dsh/sessions 不會進來,語義是「插件集合加配置」,不是整套環境快照。
2、插件以當前 dsh 進程的權限運行。安裝前應該打開源碼覈對實現,並確認許可證,本插件爲 MIT。它的 client 與 Host 之間只通過 fenced loopback 路由 /dsh-cjbf/api 通信,不帶憑據、不訪問外網。

如果你是讓別人代裝,建議保留備份包裏的 README.txt,新機器上照着做即可,不必再查文檔。

鏈接

  • 目錄頁:https://www.skillhub.cn/plugins/CheapGodMs/dsh-cjbf
  • GitHub:https://github.com/CheapGodMs/dsh-cjbf
羽毛球分组比赛记分
小程序二维码

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

小夜