DSH Data Migration Plugin

DSH Web 的配置、插件清单、Skills、Preset、Storages 以及私有数据,如果直接复制文件,很容易因为路径不一致或依赖缺失导致环境失效。这个插件旨在将上述内容打包为一个密码保护的 .dsh-migrate 文件,支持跨机迁移。

插件简介

  • 名称:dsh-data-migration
  • 维护者:hesixian
  • 许可:MIT
  • 核心功能:将本地配置与依赖打包为加密文件,在新机器上预检后恢复。

安装与启用

  1. 进入项目目录并安装依赖。
  2. 构建插件。
  3. 将本地 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. 确认恢复

  • 必须勾选敏感数据声明才会启用恢复按钮。
  • 恢复前会为目标文件建立恢复点。
  • 若写入或环境变量设置失败,系统会自动回滚。

许多本地插件通过 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 分钟未恢复,残留文件会在下次预检时清理。

使用步骤

  1. 旧机操作:选择保存文件夹(或填写完整 .dsh-migrate 路径),设置至少 12 位密码,点击“导出”。
  2. 传输:将生成的迁移包传输到新机器。
  3. 新机操作:安装本插件后,选择迁移包(文件或所在文件夹)并输入密码,点击“预检”。
  4. 确认:阅读预检摘要,勾选敏感凭据确认。若摘要中出现 link: 依赖,请确认“迁移包已携带以下插件源码”。
  5. 恢复:按需保留“自动安装 profile 依赖”选项(首次迁移建议放行 lifecycle scripts,否则部分插件可能缺少二进制或编译模块),点击“确认并恢复”。
  6. 完成:重启 dsh web。

注意事项

  • 备份性质:迁移包等同于 DSH 身份备份,应保存在可信的离线介质或加密存储中,切勿通过公共网盘或邮件转发。
  • 环境隔离:不迁移运行时产生的数据,如 node_modules、会话、附件等。
  • 权限要求:插件以当前 dsh 进程权限运行,安装前应检查源码与许可证。

生态与链接

该插件是 DeepSeek Harness 生态的一部分。更多细节可参考 GitHub 仓库。

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

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

小夜