前言¶
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-presetsvendor/link 目錄
對 settings 和 presets 會做字段級憑據掃描和脫敏,處理明細會進入 manifest 的 secretReport。
vendor 包配置文件內的疑似憑據會原地脫敏。遷移後的 vendor 包如果依賴被脫敏的值,例如 API token,需要在目標機重新配置。
打包¶
導出產物是一個單一 .dshmig 文件,本質是 zip 包。
它內置 manifest,包含:
- 版本
- 平臺
- 文件清單
sha256校驗和link映射
導入¶
導入階段會先做預檢,再執行還原。預檢檢查:
- 同 OS
- dsh 版本
- 磁盤空間
導入不會直接覆蓋現有 profile,而是默認新建 profile,名稱形如:
<name>-migrated
如果目標機已存在同名 profile,會自動遞增。
還原順序爲:
link:路徑重算vendor/presets/settings還原pnpm install- 驗證鏈
- 失敗自動回滾
驗證鏈包括鏈接解析和 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 不帶,目標機需要手動安裝。
典型用法¶
設置頁導出¶
在源機執行:
- 進入設置 → 遷移
- 預覽導出內容,包括文件清單、大小、排除項、疑似憑據
- 執行導出
導出產物位於:
~/dsh-migrate-exports/*.dshmig
目標機導入¶
在目標機執行:
- 進入設置 → 遷移
- 輸入
.dshmig路徑 - 查看預檢結果,逐項確認
- 確認步驟清單
- 執行導入
- 查看驗證鏈結果與備份目錄
導入完成後,遷移結果在新建的 <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