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 仓库。