@xiaoyuyu6420/dsh-backup
One-command backup, restore & migration for all DSH user data (~/.dsh) with a visual Settings panel: scheduled auto-backup with tiered retention, sha256 verification, hardened restore with auto-rollback and a result receipt, typed sub-backups (--types), credential redaction into a local vault, priva
Install
dsh plugin --profile web add @xiaoyuyu6420/dsh-backup
Sandbox test results
| Stage | Result |
|---|---|
| 1 install | ✓ |
| 2 list | ✓ |
| 3 mount | ✓ |
| 4 boot | — |
Four stages run in an isolated sandbox: install (network on) → list → mount → boot (last three with no network).
README
dsh-backup







[English](README.en.md) | 简体中文
你所有的 DeepSeek Harness(DSH)工作数据都在一个目录里:~/.dsh。一次升级失败、一次误删、一次换电脑——没有备份,会话、设置、技能全没了。dsh-backup 用一条命令把它们找回来。
dsh plugin --profile web add @xiaoyuyu6420/dsh-backup # 安装 # 重启 dsh web,然后输入: /backup # → 一份带校验的备份落在 ~/Desktop/DSH Backups/
v0.9.0 全新安装的真实输出:
备份完成: dsh-20260826-195150036.tar.gz sha256: 8f9ae6322ef782d21554981cf4547220d5bb3e64d7964a883317415ad54e3cbb 轮换删除 0 份(保留 7 份)
不想敲命令也行:dsh web → 设置 → 插件 → 备份 里有可视化面板——列备份、校验、恢复、删除、改设置,全都立即生效不用重启。
三条承诺(完整对齐与交付标准见 [ALIGNMENT.md](docs/ALIGNMENT.md)):
- 🔐 凭据不离开本机 —— API Key / Token 默认脱敏,明文只留在本机 vault;要更强,可选口令加密备份(AES-256-GCM)。
- ↩️ 恢复绝不静默覆盖 —— 恢复前先自动快照当前数据、预览要写入的内容,失败自动回滚。
- 🧭 装上就知道怎么用 —— 首屏三步引导 + 每个高级功能一句人话说明;三个 Tab(备份 / 恢复 / 设置),主按钮只有一个「立即备份」。
它替你挡掉哪些事
你担心的 · dsh-backup 做的事
「升级把环境搞坏了」 · 宿主版本一变就自动拍 dsh-pre-upgrade- 快照——放心试新版,坏了随时回滚
「我误删 / 改坏了东西」 · /backup restore latest --dry-run 先预览要恢复什么再动手;恢复失败自动回滚并给出结果回执
「DSH 根本起不来了」 · 每次备份都会往备份目录放一个零依赖的救援控制台(dsh-rescue / rescue.mjs,或双击「点我恢复」)——不依赖 DSH 的网页版恢复界面
「API Key 会被传到云上吗」 · 凭据默认脱敏,不进备份包;明文只存本机 vault,永不离开这台机器
「会话日志损坏了」 · /backup doctor 体检并从备份定点修复;损坏文件先隔离再入档,防止轮换把好副本也带走
「升级后老会话打不开了」 · /backup migrate-check 迁移预检:升级前静态扫描全部会话,预测哪些会被新宿主拒绝、挂在哪条规则;旧版扁平凭据文件在宿主改写前自动存底
「换新电脑了」 · GitHub 同步:/backup github pull 拉回云端备份,restore --sync-deps 顺手重装插件
「备份悄悄坏了没人知道」 · 每份归档带 sha256,/backup verify all 随时体检;每日/每周分级保留,留得住有用的历史
「我会忘记备份」 · /backup auto 12——每 12 小时自动跑,重启不中断,旧副本自动轮换(默认保留 7 份)
「换新电脑,插件和配置都要重装」 · 单文件 ZIP 导出/导入 + 本地 link:/file: 插件迁移;也能 WebDAV / S3 兼容 / Gist 多通道推送(跨机恢复走 GitHub 通道拉取或 ZIP 导入)
「想从别的 AI 工具搬过来」 · 从 Claude Code / Cursor / Codex 读取技能与全局指令,预览后导入(MCP 只检测报告)
「想回到对话里的某个时刻」 · 会话 Rewind 分叉:从指定轮次开新分支,原会话完整保留
「备份把磁盘占满了」 · 磁盘占用报告 + 分级清理:只清可再生缓存/过期备份,快照与同步数据不动
「想装社区现成配置」 · 配置市场:索引校验 + 预览安装 + 供应链提示,逐个确认才写入
遇到具体报错? 按症状与报错原文查的排错手册:[故障排查](docs/troubleshooting.zh.md)(会话打不开、29 字节空包、面板消失、Token 按钮报错、换机迁移……各条的版本与修法都写明)。
安装
要求:macOS / Linux / Windows 10+(自带 tar),DSH 0.1.1-rc.2+(0.1.1 / 0.1.2 / 0.1.5 / 0.1.6 / 0.1.7 列车均已实测,0.2.0 / 0.2.1 列车分别自 0.13.2 / 0.14.0 起支持;当前兼容状态见 [兼容性矩阵](docs/compatibility.md))。
dsh plugin --profile web add @xiaoyuyu6420/dsh-backup # 或者直接从 GitHub 安装: dsh plugin --profile web add github:xiaoyuyu6420/dsh-backup
装完重启 dsh web 后插件才生效。
安装时可能刷出 ✕ missing peer @deepseek-ai/... 警告,属预期现象:这些
peer 包由 DSH 宿主在运行时提供,不装在 profile 目录里。只要命令以
Done 结尾就是装成功了。
快速上手
1. 按上面装好插件,重启 dsh web
2. 输入 /backup
3. 搞定 —— 备份出现在 ~/Desktop/DSH Backups/,文件名带时间戳,旁边一份 .sha256
想定时自动跑?/backup auto 12(每 12 小时一次;off 关闭,status 看状态)。
命令速查
场景 · 命令
立即备份 · /backup
分类型备份(只备份选中类型) · /backup --types skills,sessions(可选:credentials·mcp·skills·sessions·settings·profiles;--only 同义)
定时备份(重启不中断) · /backup auto 12 · off · status
恢复(先预览) · /backup restore latest --dry-run
正式恢复 · /backup restore latest
分类型恢复(merge,不动其他类型) · /backup restore <归档> --types skills
列出备份 · /backup list
校验完整性 · /backup verify [前缀\ · all]
会话日志体检/修复 · /backup doctor · --repair [前缀\ · latest]
升级前迁移预检 · /backup migrate-check
DSH 起不来时自救 · 双击备份目录里的「点我恢复」,或 dsh-rescue / node rescue.mjs
删除 / 保留策略 · /backup delete <前缀\ · latest> · /backup --keep N(默认 7)
分类型备份
只想备份/恢复某几类数据?--types(或 --only)按内容类型子集操作,可选类型:credentials(凭据/api key)、mcp(MCP 配置)、skills(技能)、sessions(会话)、settings(设置)、profiles(插件 profiles)。
- 备份:
/backup --types skills,sessions生成dsh-t-前缀的子集归档,与全量备份分开轮换、互不挤占保留份数 - 恢复:
/backup restore <归档名> --types skills只把 skills 合并回现有~/.dsh(先--dry-run预览;覆盖的现有文件自动留档.pre-merge-*),其他类型完全不碰 - 凭据类型特殊:
--types credentials会把 api key 明文打进归档(默认全量备份是脱敏的)——这类归档绝不进 GitHub 同步,仅建议本机保存或手动拷到新机 - 安全护栏:分类型归档不带
--types直接整包恢复会被拒绝(防止误覆盖丢数据);rescue 救援通道同样不列、不整包恢复它们 - 面板(Settings → 插件 → 备份)同样支持:备份按钮下方勾选类型;分类型归档在独立分区展示与恢复
换新电脑
前提:旧电脑配过 GitHub 同步([配置方法](docs/advanced.zh.md#github-同步可选))。
1. 新电脑装好插件,配置里填同一个 githubRepo
2. /backup github pull —— 拉回云端备份
3. /backup restore latest --sync-deps —— 恢复并重装插件依赖
4. 重启 dsh
常见问题
API Key / 密码会进备份包吗?
不会。已知的凭据文件打包前会脱敏,明文留在本机 vault 里不离开这台机器;恢复时自动还原。
到底备份了什么?
~/.dsh 下的全部——会话、设置、技能、插件配置——减去你配置的排除模式和 node_modules。
我把 ~/.dsh 搞坏了,dsh 都启动不了,还有救吗?
有——这正是救援通道的用途。每次备份都会往备份目录写 rescue.mjs 和双击启动器(macOS .command / Windows .bat / Linux .sh)。它只用普通 Node 就能跑,不需要 DSH,起一个本地网页让你浏览和恢复备份。
升级后老会话打不开了怎么办?
先别再点开它。运行 /backup migrate-check:静态扫描全部会话日志,告诉你哪些会话会被新宿主拒绝、挂在哪条规则(subagent descriptor 旧版本、插件注入的历史事件等),并检查文件系统硬链接支持。升级前先 /backup 拍一份,坏掉的会话可用 /backup doctor --repair 从更早的归档定点修复。
支持 Windows 吗?
支持——Windows 10+(用系统自带 tar),救援启动器是 .bat 文件。
备份默认放哪?
~/Desktop/DSH Backups/——在面板(设置 → 插件 → 备份)里随时可改,立即生效不用重启。0.14.0 起默认目录由旧的 ~/Desktop/dsh-backups 改名而来:从未配置过备份目录的用户,升级后首次启动会把旧目录自动改名(同盘、原子、不丢备份);显式配置过目录的一律不动。
**备份目录里那
…(truncated)
Rendered from the README published on npm. Formatted only, not edited.
Versions
Published on npm::27,最后更新 2026-10-30