dsh-data-sync:用私有 Git 快照迁移 DSH 配置、记忆与技能

前言

DeepSeek Harness(DSH)的配置、插件栈、长期记忆和技能分散在 $DSH_HOME、记忆插件的存储目录以及各工作区的 .dsh/ 下。换电脑或重装系统时,手工拷贝容易漏文件,绝对路径写死在 package.json、cordis.patch.yml 和 memories.json 里,到新机器还要逐条改路径。社区插件 dsh-data-sync(维护者 ttkxyglj,SkillHub 分类为「记忆」)把上述内容按白名单打成一版快照,推进你自己的私有 git 仓库;在新机器拉取时先做本机备份,再自动重映射路径并写入。凭据不进快照,历史与回滚交给 git。

这是什么

dsh-data-sync 是 DSH 的数据同步插件,当前公开版本为 v0.5.0(MIT)。它不做「整文件夹镜像」,只同步有限白名单内的配置、记忆库文件与技能相关目录;推送前会扫描并拒绝凭据形态内容。快照仓库里除 manifest.json 与 files/ 载荷外,还包含 bootstrap/dsh-data-sync/ 插件源码副本,便于新机器在无网络或尚未安装插件时从快照仓库自行安装,解决「先有鸡还是先有蛋」的问题。

旧机器                                    私有仓库                         新机器
$DSH_HOME + 记忆库 + 技能  ──push──►  manifest.json + files/  ──pull──►  路径重映射 → 写入 → 本机备份

同步范围与安全边界

收集顺序上 deny-list 先于任何遍历。永不进入快照的内容包括:.credentials.yaml、.env*、密钥文件、secrets/、node_modules/、.git/、超过 4 MiB 的单文件等。

来源 内容
config $DSH_HOME/settings.yaml、AGENTS.md、根 cordis.patch.yml;配置档内的 package.json、cordis.patch.yml、cordis.yml、pnpm-lock.yaml、pnpm-workspace.yaml、.dsh-market/state.json
memory 记忆库目录下的 memories.json、MEMORY.md(目录从已安装记忆插件配置中探测)
skills $DSH_HOME/skills/**、.agent-presets/**、agents/**;各已登记工作区的 .dsh/skills、.dsh/agents、.dsh/agent-presets、.dsh/commands 与 AGENTS.md

设计上有意不同步的内容:新机器需用 dsh auth 或手写 .credentials.yaml 重新登录;工作区里的 git 代码仓库不复制,只带 .dsh/ 侧配置;pnpm install 需在新机器自行执行(锁文件会随快照过来)。

核心机制

快照结构:manifest.json 记录每个文件的来源、相对路径、sha256 与大小;files/config|memory|skills|workspace/… 为逐字节副本。

推送幂等:内容指纹与插件指纹均未变时,第二次推送不产生新提交;空选择会被拒绝,不会清空远端。

拉取先备份再写:pull 对本次将要写入的每个文件先做本机备份(默认保留最近 10 份,可一键回滚),再写入;中途失败会自动用刚才的备份回滚。无变化时不写文件、也不做备份。

远端保留:推送成功后,超过保留天数(默认 3 天)的旧版本会从远端分支历史中清理;最新 3 版永远保留(可调,最少 1 版)。清理采用重写历史 + --force-with-lease 强推;若被分支保护或他人抢先推送挡住,会整体放弃清理。

校验快照:「校验快照」重读仓库内每个文件,核对 sha256、大小与清单摘要,并列出本机与该版的差异;pull 的计划只说明「将要写什么」,verify 才说明「写出来的确实是那一版」。

路径重映射:快照记录旧机器的 dshHome、配置档、记忆目录、工作区路径及改写规则。拉取时长前缀优先:自动映射旧 dshHome、记忆目录、同名工作区到本机对应路径;也可在设置页添加如 D:\work → E:\work 的手动规则,并随快照带到新机器。文本中会处理 \、/ 与 JSON 内 \\ 三种写法;Windows 盘符路径大小写不敏感。

安装与启用

插件在公开仓库 ttkxyglj/dsh-data-sync。新电脑不必先有快照仓库即可安装:

# dsh plugin 会把 add 转发给 profile 里的 pnpm,github: 缩写由 pnpm 解析
dsh plugin --profile desktop add github:ttkxyglj/dsh-data-sync

# 换机时建议固定版本,避免拉到未验证的新提交:
dsh plugin --profile desktop add github:ttkxyglj/dsh-data-sync#v0.5.0

也可克隆仓库后执行包内安装脚本(离线或锁定某次提交时):

git clone https://github.com/ttkxyglj/dsh-data-sync.git
powershell -ExecutionPolicy Bypass -File .\dsh-data-sync\install.ps1 -Profile desktop
# macOS / Linux: ./dsh-data-sync/install.sh desktop

装完后重启 Harness。dsh plugin add 会把 @local/dsh-data-sync 登记进 profile 的 dsh.profile.bundles,一般无需再手改 profile。

插件以当前 DSH 进程权限运行;安装前建议在 GitHub 阅读源码与 MIT 许可证,确认白名单与 deny-list 符合你的安全预期。

典型用法

旧机器(离开前)

  1. 打开 设置 → 数据同步,填写私有仓库地址(如 https://github.com/you/DSH-Sync-Data.git)与具备 repo 权限的令牌,点连接。公开仓库会被拒绝推送;令牌写入 $DSH_HOME/dsh-data-sync/credentials.json,不进快照与日志。
  2. 在同步内容中勾选配置 / 记忆 / 技能,补充记忆目录与工作区根目录,保存。
  3. 点预览确认清单与体积,点立即推送。
  4. 可选:开启自动备份(间隔 1 / 6 / 12 / 24 / 168 小时)。
  5. 若换机涉及盘符、用户名等自动规则无法覆盖的路径,在路径改写中补充规则。

新机器(恢复)

从私有快照仓库克隆并安装 bootstrap 中的插件:

git clone https://github.com/you/DSH-Sync-Data.git dsh-sync-data
# Windows
powershell -ExecutionPolicy Bypass -File ./dsh-sync-data/bootstrap/dsh-data-sync/install.ps1 -Profile desktop
# macOS / Linux
./dsh-sync-data/bootstrap/dsh-data-sync/install.sh desktop

等价命令:dsh plugin --profile desktop add ./dsh-sync-data/bootstrap/dsh-data-sync。

重启 Harness 后,在 设置 → 数据同步 填写同一仓库与令牌 → 连接 → 检查远端 → 应用拉取 → 校验快照 → 再次重启 Harness。默认拉取最新一版;若要恢复历史某一天,在备份与历史中选对应提交并「应用此版本」。插件栈可在 ~/.dsh/profiles/desktop 下执行 pnpm install 重建。若旧机插件以 link:D:/… 指向本地目录,新机器需改为 github:…#v0.5.0 等形式后重新安装依赖。

Agent 侧还提供 data_sync_push、data_sync_pull、data_sync_verify、data_sync_history、data_sync_rollback 等工具,与设置页能力对应;data_sync_pull 默认 apply: false 仅出计划,apply: true 才会备份并写入。

适用场景与注意

适合:定期备份 DSH 配置与记忆、换机迁移、在多台机器间用同一私有仓库对齐技能与工作区登记。

注意:

  • 远端历史会按「保留天数 + 最少保留版数」瘦身;若需完整 git 历史,可调大保留天数或关闭相关清理。
  • 应用某一版旧快照后,本机内容停留在该版;要回到远端最新版需重新「检查远端 → 应用拉取」。
  • 社区目录 SkillHub 插件页 与 GitHub 仓库由社区维护,与 DeepSeek / 幻方无官方从属关系。

结尾

dsh-data-sync 把 DSH 换机从「手工拷目录 + 改绝对路径」收敛为「白名单快照 + 私有 git + 拉取前备份与路径重映射」,并支持定时推送、快照校验与远端/本机双侧回滚。进一步了解与安装见 SkillHub 目录页 与 GitHub:ttkxyglj/dsh-data-sync。

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

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

Xiaoye