dsh-migrate:DSH 配置遷移工具

前言

DSH 環境裏,一個 profile 通常不只包含 profile 配置,還可能包含 settings.yaml、.agent-presets、vendor/ link 目錄等內容。換機時如果隻手工複製目錄,容易遺漏 link 映射、vendor 包和 settings 配置;如果直接導入,又缺少版本校驗、備份和失敗回滾。

下面介紹 dsh-migrate。它把 DSH 配置遷移整理成固定流程:源機導出打包,目標機導入還原,中間做預檢、備份、校驗,失敗時回滾。

這是什麼

dsh-migrate 是一個 DSH 配置遷移工具,定位是:

DSH 配置遷移工具:導出/打包 → 換機還原 → 校驗 + 回滾。

它由 ygcdsj 維護,GitHub 倉庫爲 ygcdsj/dsh-home-migrate,包名爲 dsh-migrate,許可證爲 MIT。package.json 顯示版本爲 0.0.11,README 標註爲 experimental。

它主要解決同 OS 環境下的 DSH 配置遷移問題,覆蓋 profile 配置、settings.yaml、.agent-presets 和 vendor/ link 目錄。MVP 限定同 OS;跨 OS 會在預檢階段明確拒絕。

核心功能

導出

導出階段會掃描 ~/.dsh,範圍包括:

  • profiles 配置
  • settings.yaml
  • .agent-presets
  • vendor/ link 目錄

對 settings 和 presets 會做字段級憑據掃描和脫敏,處理明細會進入 manifest 的 secretReport。

vendor 包配置文件內的疑似憑據會原地脫敏。遷移後的 vendor 包如果依賴被脫敏的值,例如 API token,需要在目標機重新配置。

打包

導出產物是一個單一 .dshmig 文件,本質是 zip 包。

它內置 manifest,包含:

  • 版本
  • 平臺
  • 文件清單
  • sha256 校驗和
  • link 映射

導入

導入階段會先做預檢,再執行還原。預檢檢查:

  • 同 OS
  • dsh 版本
  • 磁盤空間

導入不會直接覆蓋現有 profile,而是默認新建 profile,名稱形如:

<name>-migrated

如果目標機已存在同名 profile,會自動遞增。

還原順序爲:

  1. link: 路徑重算
  2. vendor / presets / settings 還原
  3. pnpm install
  4. 驗證鏈
  5. 失敗自動回滾

驗證鏈包括鏈接解析和 dsh --dump-config。

入口

dsh-migrate 提供兩類入口:

  • 設置頁「遷移」入口,包含導出嚮導和導入嚮導
  • host 工具 dsh_migrate_export 和 dsh_migrate_import,可被 agent 直接調用

安裝與啓用

已覈實的安裝示例如下,針對 web profile:

# 在 profile 目錄內執行
dsh plugin --profile web add dsh-migrate

包信息顯示如下:

version: 0.0.11
license: MIT
peerDependencies:
  @deepseek-ai/dsh-client-ui-slots: ^0.1.1-rc.2
  cordis: >=4.0.0-rc <5

從 0.0.9 起,遷移包會帶 dsh-migrate 自己。歷史版本 ≤0.0.8 不帶,目標機需要手動安裝。

典型用法

設置頁導出

在源機執行:

  1. 進入設置 → 遷移
  2. 預覽導出內容,包括文件清單、大小、排除項、疑似憑據
  3. 執行導出

導出產物位於:

~/dsh-migrate-exports/*.dshmig

目標機導入

在目標機執行:

  1. 進入設置 → 遷移
  2. 輸入 .dshmig 路徑
  3. 查看預檢結果,逐項確認
  4. 確認步驟清單
  5. 執行導入
  6. 查看驗證鏈結果與備份目錄

導入完成後,遷移結果在新建的 <name>-migrated profile 中。

啓動遷移後的 profile

如果遷移的是 web profile,已覈實的啓動示例爲:

dsh --profile web-migrated

host 工具

導出預覽:

dsh_migrate_export { dryRun: true }

執行打包:

dsh_migrate_export { dryRun: false, outDir }

導入預檢:

dsh_migrate_import { archive, dryRun: true }

執行導入:

dsh_migrate_import { archive }

導入失敗時會自動回滾。

開發與測試

已覈實的本地測試命令:

npm test
npm run test:install

適用場景與注意

dsh-migrate 適合在同 OS 的 DSH 環境之間遷移 profile 配置,尤其是希望有預檢、備份、校驗和回滾的場景。

使用時需要注意:

  • README 標註 experimental。
  • MVP 限定同 OS;跨 OS 會在預檢階段明確拒絕。
  • 導入會執行歸檔中的代碼,包括 pnpm install 安裝腳本、bundle 插件解析,之後啓動 profile 還會執行其中插件。僅導入信任來源。
  • 憑據排除和脫敏是盡力而爲,不是絕對保證。導出報告會列出 unscannedFiles,傳輸前請覈對。
  • vendor 包配置文件內的憑據會原地脫敏。遷移後的 vendor 包若依賴被脫敏的值,需要在目標機重新配置。
  • settings.yaml 爲符號鏈接時拒絕覆蓋。
  • HTTP API 僅本機迴環,並有 Host 白名單、CSRF token、Origin 同源、Sec-Fetch-Site 校驗。將 DSH web 暴露到局域網會擴大導入風險,因爲任何可訪問者可能導入歸檔。
  • git: 依賴不打包,目標機 pnpm install 時重新拉取,需要網絡和憑據。
  • dsh-migrate 會運行在當前 dsh 進程權限下,安裝前應檢查源碼與 MIT 許可證。

結尾

dsh-migrate 的價值不在於簡單複製目錄,而在於把 DSH 配置遷移整理成可預覽、可校驗、可回滾的流程。對於需要同 OS 換機、還原 DSH profile 配置的場景,它提供了一條相對保守的路線。

目錄頁:在 DSH 社區目錄中檢索 dsh-migrate;社區目錄是獨立站點,與 DeepSeek / 幻方無官方從屬關係。

GitHub:https://github.com/ygcdsj/dsh-home-migrate

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

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

小夜