DSH Web 的配置、插件清單、Skills、Preset、Storages 以及私有數據,如果直接複製文件,很容易因爲路徑不一致或依賴缺失導致環境失效。這個插件旨在將上述內容打包爲一個密碼保護的 .dsh-migrate 文件,支持跨機遷移。
插件簡介¶
- 名稱:dsh-data-migration
- 維護者:hesixian
- 許可:MIT
- 核心功能:將本地配置與依賴打包爲加密文件,在新機器上預檢後恢復。
安裝與啓用¶
- 進入項目目錄並安裝依賴。
- 構建插件。
- 將本地 bundle 加入 DSH Web profile。
cd D:\code\dsh-data-migration
pnpm install
pnpm build
# 把本地 bundle 加入 DSH Web profile
dsh plugin --profile web add link:D:\code\dsh-data-migration
安裝完成後,重啓 dsh web,在設置中即可找到 DSH 數據遷移 選項。
核心能力¶
1. 導出與導入¶
- 導出:支持系統文件夾對話框選擇保存位置,或直接填寫完整路徑,自動生成
backup.dsh-migrate。 - 導入:支持選擇
.dsh-migrate文件或其所在的文件夾,自動讀取。
2. 安全預檢¶
在恢復前,插件會先對遷移包進行解密和校驗。此過程只展示摘要(導出時間、Profile、文件數、API Key 變量名、link 依賴等),不會修改本機任何配置。
3. 確認恢復¶
- 必須勾選敏感數據聲明纔會啓用恢復按鈕。
- 恢復前會爲目標文件建立恢復點。
- 若寫入或環境變量設置失敗,系統會自動回滾。
4. 處理 link: 依賴¶
許多本地插件通過 link: 引用源碼,這些插件通常未發佈到 npm。
* 攜帶源碼:導出時可選擇將 link: 依賴的源碼打包。恢復時寫回原路徑(若目錄已有內容則不覆蓋)。
* 路徑改道:若源機器路徑所在的盤符在新機器上不存在(例如源機有 D 盤而新機只有 C 盤),預檢會檢測到並將源碼改放到 <DSH 主目錄>\linked-plugins\<插件名>,同時改寫 package.json 和 pnpm-lock.yaml 中的聲明。
5. 依賴恢復與校驗¶
- 對帶有
pnpm-lock.yaml的 profile,執行pnpm install --frozen-lockfile。 - 安裝後校驗:DSH 的解析機制可能導致“已安裝但無法解析”的假象。本插件會探測
dsh.profile.bundles,區分“已裝但解析不了”和“無法驗證”的項並分別報告。
6. 安全模型¶
- 加密:使用 scrypt (N=32768, r=8, p=1) 和 AES-256-GCM 加密。
- 內容限制:僅遷移
settings.yaml中聲明的apiKeyEnv環境變量。不遷移node_modules、pnpm store、會話、附件或日誌。 - 訪問控制:接口僅限本機迴環地址與同源請求,寫操作只接受 POST。
- 隱私保護:頁面不顯示憑據或 API Key 的值,也不顯示原始安裝日誌。
- 臨時文件:預檢解密出的明文憑據存儲在臨時目錄,恢復結束即刪除。若超過 30 分鐘未恢復,殘留文件會在下次預檢時清理。
使用步驟¶
- 舊機操作:選擇保存文件夾(或填寫完整
.dsh-migrate路徑),設置至少 12 位密碼,點擊“導出”。 - 傳輸:將生成的遷移包傳輸到新機器。
- 新機操作:安裝本插件後,選擇遷移包(文件或所在文件夾)並輸入密碼,點擊“預檢”。
- 確認:閱讀預檢摘要,勾選敏感憑據確認。若摘要中出現
link:依賴,請確認“遷移包已攜帶以下插件源碼”。 - 恢復:按需保留“自動安裝 profile 依賴”選項(首次遷移建議放行 lifecycle scripts,否則部分插件可能缺少二進制或編譯模塊),點擊“確認並恢復”。
- 完成:重啓
dsh web。
注意事項¶
- 備份性質:遷移包等同於 DSH 身份備份,應保存在可信的離線介質或加密存儲中,切勿通過公共網盤或郵件轉發。
- 環境隔離:不遷移運行時產生的數據,如 node_modules、會話、附件等。
- 權限要求:插件以當前
dsh進程權限運行,安裝前應檢查源碼與許可證。
生態與鏈接¶
該插件是 DeepSeek Harness 生態的一部分。更多細節可參考 GitHub 倉庫。