dsh-backup-sync:DSH 备份、换机与按模块三方合并导入

前言

DeepSeek Harness(DSH)里的「资产」并不都在同一个目录下:技能在 ~/.agents/skills,插件清单、核心配置、记忆、待办和对话则分散在 ~/.dsh(默认 <dshHome>)及其 profile 子目录里。换电脑或重装时,最容易丢的是技能和配置,而全量「解压覆盖」式恢复又容易冲掉新机器上已经改过的内容。

社区里已有成熟的全量备份插件(例如 @xiaoyuyu6420/dsh-backup),但其 skills 类型指向 ~/.dsh/skills,与技能实际所在的标准路径不一致。维护者 Arlenman 的 dsh-backup-sync 面向同一类需求:把技能、插件、配置、记忆、待办(可选对话)打成 tar.gz,换机时按模块做带基线的三方合并导入,也可把包推到自建的 WebDAV 空间。插件在 SkillHub 分类为「记忆」,仓库 Arlenman/dsh-backup-sync 采用 MIT 许可证,当前 npm 版本为 0.2.0。

这是什么

dsh-backup-sync 是 DSH 的备份 / 恢复 / 换机同步插件:把上述资产归一化打进一个包,导入时依据本机维护的基线库做三方合并(base / ours / theirs),逐文件给出差异,冲突时由你选择保留哪一侧,而不是简单覆盖。它与 dsh-backup 可同时安装(备份目录与状态文件名不同,互不干扰)。

运行环境要求:DSH 0.2.0-rc.2,Node.js ≥ 22;包内零 npm 运行时依赖,归档步骤使用系统自带的 tar。

核心功能

六个备份模块

插件按「文件模式」切分六个模块(记忆与待办同在 memories/ 下,不会按整目录误切):

模块 界面名 主要路径 默认勾选
skills 技能 <userHome>/.agents/skills 是
plugins 插件 <dshHome>/profiles/<profile>/ 清单与锁文件 是
config 配置 cordis.patch.yml、settings.yaml、AGENTS.md 等 是
memory 记忆 <dshHome>/memories/(不含待办文件) 是
todo 待办 TODOS-*.md、projects/*/TODOS.md 等 是
sessions 对话 <dshHome>/sessions/ 否(标注「本地专用 · 不上云」)

界面与流程

入口在 设置 → 备份同步,四个页签:

  1. 备份:勾选模块、指定输出目录、生成 dsh-sync-<时间戳>.tar.gz 及 .sha256 边车;卡片展示技能 / 插件等人话清单。
  2. 历史版本:列出输出目录中的包,可校验、导入或复制路径。
  3. 导入:选包 → 扫描 → 差异预览(新增 / 修改 / 删除 / 冲突)→ 逐项裁决 → 应用;应用前自动快照到 <输出目录>/pre-restore-<时间戳>/。
  4. 同步:将包推到「同步目录」(可被 OneDrive、坚果云等工具同步的本地路径),并支持 WebDAV 上传、列出、下载与删除。

增量导入与基线

本机状态保存在 <dshHome>/backup-sync/state.json(上次打包时各文件 sha256,即合并用的 base)。典型规则包括:仅归档侧变更则采纳包内版本;仅本机变更则保留本地;双方变更且内容不同则冲突并预览;删除默认关闭(allowDelete 为 false)。凭据类文件在扫描与导入两侧都会被排除,不会进入包或写回本机。

定时与云端

定时备份在 DSH 宿主进程内执行(每天固定时刻或每隔 N 小时);DSH 未运行时不补跑,失败不重试。对话模块不会进入定时包。

WebDAV 在「同步」页配置地址、账号、口令与远端目录,可「保存并测试连接」,并在打包成功后选择自动上传。换机时在新机器装好插件、填同一套 WebDAV,在「导入」页从「云端」分组选包;本机没有的包会在「分析差异」前自动下载并校验 sha256。

安装与启用

下面命令均来自仓库 README;桌面版可在 设置 → 插件 粘贴同等条目。

# 从 npm 装(0.2.0,不需要连 GitHub)
dsh plugin --profile web add dsh-backup-sync

# 从 GitHub 装(推荐锁 tag,可复现)
dsh plugin --profile web add github:Arlenman/dsh-backup-sync#v0.2.0

# 跟 main 分支走
dsh plugin --profile web add github:Arlenman/dsh-backup-sync

# 或直接用发行版里的 tar.gz
dsh plugin --profile web add https://github.com/Arlenman/dsh-backup-sync/releases/download/v0.2.0/dsh-backup-sync-0.2.0.tgz

换另一台电脑时,README 建议优先使用:

github:Arlenman/dsh-backup-sync#v0.2.0

装完后需重启一次 DSH(宿主侧 HTTP 路由不热重载);界面侧刷新页面即可。从 GitHub 安装时目标机器需能访问 github.com 与 codeload.github.com。

典型用法

本机打第一个包

  1. 打开 设置 → 备份同步 → 备份,按需勾选模块(首次建议保持默认,对话仍可不选)。
  2. 确认或修改输出目录(默认多为 <userHome>/dsh-backups-sync,Windows 在特定条件下为 D:\dsh-backups-sync)。
  3. 执行备份,在历史版本中确认包与 sha256 文件已生成。

换机增量导入

  1. 新机器按上文安装插件并重启 DSH。
  2. 将备份包拷到本机输出目录,或通过 WebDAV / 同步目录让包出现在历史列表中。
  3. 在 导入 页选择包 → 分析差异 → 处理冲突项 → 应用。需要同步「删除」时先在设置中开启 allowDelete。

WebDAV 换机(简版)

  1. 旧机在 同步 页配置 WebDAV 并上传最新包。
  2. 新机安装同一插件,填写相同 WebDAV 与远端目录。
  3. 在 导入 的备份包下拉中选云端条目,分析差异后应用。

包内为归一化布局:dsh/ 对应 <dshHome> 下文件,agents/ 对应 ~/.agents,根目录含 manifest.json(模块清单与逐文件 sha256)。

适用场景与注意

适合需要跨机器延续 DSH 技能、插件锁、配置与记忆 / 待办,又希望在导入时保留新机已改内容的用户。若你只需要 ~/.dsh 整树全量恢复、或依赖 GitHub 私有仓同步,可继续用 dsh-backup;两者定位不同,可并存。

安装前请自行查看 GitHub 仓库 源码与 MIT 许可证。插件以当前 DSH 进程权限读写本机文件与访问你配置的 WebDAV,口令保存在本机设置中,不会写入备份包。README 列有 HTTP 接口、已知限制与开发说明,扩展集成时可对照文档。

结尾

dsh-backup-sync 把 DSH 分散在两处的核心资产打成可校验的归档,用基线三方合并降低换机覆盖风险,并支持本地同步目录与 WebDAV。插件目录页:SkillHub - dsh-backup-sync;源码与完整说明:github.com/Arlenman/dsh-backup-sync。

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

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

Xiaoye