dsh-sync:加密备份与恢复 DSH 个人配置

前言

DeepSeek Harness(DSH)把插件、MCP、技能、模型与界面偏好都落在本机 profile 和 $DSH_HOME 里。换电脑、重装系统或做多机开发时,手工拷贝目录容易漏文件,把 API Key 和 MCP 令牌明文丢进网盘也不合适。社区插件 dsh-sync(维护者 shangshuo)把整台机器上的 DSH「个人状态」打成单一加密归档,支持定时同步到 S3 兼容存储、WebDAV 或本地同步目录,换机后可在设置页或对话里预览并恢复。设置界面随 DSH 语言在中英文间切换。

这是什么

dsh-sync(npm 包名 @shangshuo/dsh-sync,当前资料中版本 0.6.3,MIT 许可证)是 DSH 的配置同步插件:备份范围覆盖插件清单与插件设置、MCP 服务器、自建与跨工具 skill、界面与技能管理器偏好等;MCP 连接器与凭证模块默认关闭,需勾选并确认隐私声明后才入包。云端与同步盘里只会看到密文快照和 latest.json 元数据,解密依赖你设置的备份口令(scrypt 派生密钥,AES-256-CTR + HMAC)。插件目录页:skillhub.cn/plugins/shangshuo/dsh-sync;源码:github.com/shangshuo/dsh-sync。

核心功能

模块化备份内容

在 设置 → 同步 → 备份 → 备份内容 中逐项开关,页面会显示各模块文件数与体积。资料中 0.4 起共 11 类模块,例如:

模块 默认 要点
DSH 配置档案(profile/) 必选 package.json、cordis.patch.yml(含插件配置、MCP、模型/界面偏好)等白名单文件
本地目录插件(local-plugins/) 开 link:/file: 依赖的源码;恢复时自动释放并重链
MCP 连接器 / 凭证与 API Key 关 可能含令牌;开启前展示隐私声明
插件代码(node_modules/) 关 体积大;默认靠恢复时 pnpm install

不同步会话历史、工作区缓存、设备标识、模型目录缓存等(详见仓库 README)。

三种存储目标

同一套逻辑适配:

  1. S3 兼容:Cloudflare R2、Backblaze B2、AWS S3、MinIO、阿里云 OSS、腾讯云 COS 等(填 endpoint、region、bucket、AK/SK)。
  2. WebDAV:坚果云、Nextcloud、群晖等(应用密码)。
  3. 本地同步目录:指向 iCloud Drive、OneDrive、坚果云同步盘或 NAS 挂载路径,无需云端密钥。

快照命名形如 快照前缀/snapshots/<机器名>_<UTC时间>_<随机>.dshsync。定时备份默认约 30 分钟检查一次,内容哈希未变则不上传。

安全与恢复语义

  • 归档:gzip → AES-256-CTR → HMAC-SHA256;口令规则为 ≥8 位,含大小写、数字,且至少一个 @ # $ * - _。
  • 本机 $DSH_HOME/dsh-sync/config.json 整份密文存储(默认 Windows DPAPI / macOS 钥匙串);bucket 与 AK 不以明文落盘。
  • 恢复前默认 dryRun 预览;确认写盘前会把将被覆盖的文件备份到 $DSH_HOME/dsh-sync/backups/<时间戳>/,不删除本机独有文件;.credentials.yaml 中的设备绑定记录永不上传、恢复时不覆盖本机对应项。

安装后 Agent 还可使用 sync_status、sync_configure、sync_push、sync_pull 等 7 个工具(见 README「对话与工具」)。

安装与启用

官方 README 未提供 dsh plugin add github:… 一类命令;安装方式如下。

方式 A:图形界面

  1. 取得插件目录(即包含 package.json 与 cordis.patch.yml 的本仓库)。
  2. 打开 DSH 设置 → 插件 → 安装本地插件,选择该目录。

方式 B:由 Agent 安装

对 Agent 说明要把本地 dsh-sync 目录作为插件安装,由其调用 plugin_manager 的 install_bundle。

Host 侧工具安装后立即可用;设置页前端模块需完全退出 DSH 再启动一次 后,左侧才会出现 同步 页。

插件以当前 DSH Host 进程权限读写本机配置与网络;安装前应自行审阅 源码与 MIT 许可证,勿从未验证来源安装 bundle。

典型用法

设置页(推荐日常操作)

经过上面的安装与重启,打开 设置 → 同步:

  1. 在 备份 页选择目标类型并填写地址与密钥(已保存密钥显示为 ••••••••,点「修改」才替换)。
  2. 设置加密口令(页面实时校验规则)。
  3. 勾选备份模块;若开启 MCP 或凭证模块,确认隐私声明。
  4. 可选开启定时自动备份。
  5. 点 测试连接 → 立即备份。

恢复:切到 恢复 / 导入 → 从列表选快照(或从 .dshsync 文件/目录导入)→ 预览选中的快照 → 确认恢复到本机(二次确认)→ 按提示重启 DSH。

本地目录模式下,将另一台机器的 latest.json 与 snapshots 拷入同一前缀目录后,列表会自动读出。

对话示例(资料原文)

配置 R2 并定时同步:

「把 DSH 配置备份到我的 Cloudflare R2,bucket 是 dsh-config,AK/SK 是 …,口令用 …,每 30 分钟自动同步一次。」

Agent 通常会依次调用 sync_configure → sync_test → sync_push。

新机器上先预览再恢复:

「从 R2 恢复我的 DSH 配置,先给我看会改哪些文件。」

确认后再说「确认恢复」,Agent 使用 sync_pull(confirm: true),并提示重启 DSH。

include 模块键(0.4):profile、homePatch、skillsDsh、skillsAgents、uiPrefs、skillManager、mcpConnector、workspaceRoot、credentials、nodeModules、extraPaths;profile 为必选。

适用场景与注意

适合:需要在多台电脑间对齐 DSH 插件与偏好、希望加密后再上云或同步盘、接受「后写覆盖、靠本地回滚备份」而非合并两台机器并发改动的用户。国内常见组合为坚果云 WebDAV 或阿里云 OSS;海外资料推荐 Cloudflare R2;不想注册云服务可用本地同步目录。

务必知晓:

  • 不备份会话历史;归档默认上限 256 MB(limits.maxArchiveMB),开启 nodeModules 前需评估内存与上限。
  • profile 根目录按白名单打包;DSH 未来新增 profile 配置文件时,需插件侧维护 lib/collect.js 的 PROFILE_FILES。
  • 同一系统用户下的恶意程序仍可能调用系统解密接口读取本机 config.json,属操作系统安全边界。
  • DSH 生态为「一切皆插件」;SkillHub 目录 为社区站点,与 DeepSeek / 幻方无官方从属关系。

结尾

dsh-sync 把 DSH 个人配置收敛为一个加密归档,按模块选择备份范围,并支持 S3、WebDAV 与本地同步目录三种目标;恢复前可预览、写盘前自动留本机回滚副本。若要查看模块清单、存储选型对比(cloud-backup-comparison.md)与双机测试说明,请以仓库 README 为准。

  • 目录页:https://www.skillhub.cn/plugins/shangshuo/dsh-sync
  • GitHub:https://github.com/shangshuo/dsh-sync
羽毛球分组比赛记分
小程序二维码

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

小夜