安装
在 DeepSeek Harness 里通过 dsh-market 安装
dsh plugin --profile web add dshmarket
或使用命令行
dsh plugin --profile web add github:xiaoyuyu6420/dsh-backup
装任何插件都等于在你的机器上跑第三方代码,权限和你本人一样大——能读你的文件、用你的凭据、访问网络。请先审阅源码,并尽量锁定 commit(github:owner/repo#sha)。
README
一键备份与恢复 DeepSeek Harness 用户数据——~/.dsh 下的会话、设置、凭据、
技能与插件配置(排除可重装的 node_modules),自动生成 sha256 校验和、完整性
校验、自动轮换,定时自动备份状态落盘、重启续跑。支持 macOS / Linux / Windows。
命令
/backup—— 立即备份~/.dsh到~/Desktop/dsh-backups/dsh-<时间戳>.tar.gz/backup list—— 列出已有备份(名称 + 大小)与自动备份状态/backup verify [前缀|all]—— 校验归档完整性(缺省校验最新一份)/backup restore <前缀|latest> [--dry-run]—— 从归档恢复~/.dsh/backup auto <N小时>|off|status—— 每 N 小时自动备份(1~720;<24h 保留 3 份,否则 7 份;状态持久化,重启续跑)/backup --keep N—— 覆盖轮换保留份数(默认 7)/backup github status|sync—— GitHub 同步状态 / 立即推送backup_dsh工具 —— 模型可调用同一能力(mode=backup|list|verify|restore|auto)
GitHub 同步
配置 config.githubRepo 后,每次备份(手动 / 定时 / 面板)都会把归档、校验
边车与轮换删除一并推送到 Git 仓库:
- id: dsh-backup
name: 'dsh-backup'
config:
githubRepo: '你的账号/dsh-backups' # owner/repo、完整 URL 或本地路径
请使用私有仓库——归档含明文凭据。https 远端需要环境变量 token
(DSH_BACKUP_GITHUB_TOKEN 或 GITHUB_TOKEN),token 只写入同步工作树的
credential 文件(不进进程参数)。推送为 HEAD:main --force-with-lease;
超过 90MB 的归档会跳过并提示。同步状态(上次推送 / 错误)存于
<destination>/auto.json,面板与 /backup github status 可见。
Settings 可视面板(Web)
同样的能力在 dsh web 的 Settings → Plugins → 备份 标签页有可视化入口:
显示备份目录、自动备份状态、GitHub 同步状态和每份归档的大小,支持一键立即
备份、逐份校验、下载、带 dry-run 预览与二次确认的恢复。下载走仅限本机的
GET /backup-download/<归档名> 路由。面板经 backupPanel Typert Remote
命名空间(/api RPC)与宿主通信;浏览器 bundle 预构建在 lib/client.js,
安装时无需构建。
恢复的工作方式
恢复安全性是设计出来的:
- 先校验归档 sha256——损坏的归档绝不触碰现有数据。
- 列出归档条目,任何超出备份根目录的路径都会拒绝恢复(tar 路径穿越防护)。
- 当前
~/.dsh先自动快照,再移动到~/.dsh.pre-restore-<时间戳>——恢复是替换而不是合并。 - 解压归档后重启
dsh,恢复的会话与配置即生效。
--dry-run 只显示归档概要,不写入任何内容。
配置(可选)
在生效的 cordis profile 中为插件声明 config:
- id: dsh-backup
name: 'dsh-backup'
config:
destination: '~/Backups/dsh' # 默认 ~/Desktop/dsh-backups
keep: 10 # 默认轮换保留份数
exclude: # 额外的 tar --exclude 模式
- '*cache*'
githubRepo: '账号/dsh-backups' # 可选 GitHub 同步(见下文)
自动备份状态保存在 <destination>/auto.json,重启后续跑。
安全说明
备份包含明文凭据(.credentials.yaml、qq-bridge/config.json)。归档与校验
文件在 POSIX 上为 chmod 600(Windows 依赖用户目录 ACL),但请不要把备份
目录同步到不受信的位置,并像对待 API key 一样对待备份文件。
存储说明:插件自有数据(归档、校验和、auto.json)直接经 node:fs 写入,
与 DSH 自身的会话持久化同一模式——ctx.fs 能力是模型面的沙箱 surface,
不适用于宿主插件的自有存储。
安装
dsh plugin --profile web add dsh-backup
然后重启 dsh web(插件发现按进程缓存),输入 /backup 或打开
Settings → Plugins → 备份。
依赖
- macOS、Linux 或 Windows 10+,PATH 中有
tar(Windows 自带 System32 的 bsdtar,Git Bash 的 GNU tar 也可以;校验和优先sha256sum/shasum, Windows 上回退进程内哈希) - DSH
0.1.0-rc.6或兼容版本
开发
运行时零依赖——宿主插件就是 lib/index.js。浏览器半边源码在 src/,
打包(zod 内联、React/Cordis 保持 external)产物 lib/client.js 提交进仓库,
git 安装无需构建:
node scripts/build-client.mjs # 改 src/ 后重新打包客户端
node scripts/smoke.mjs # 宿主冒烟(真实临时目录 + 模拟 DSH 服务)
node scripts/smoke-client.mjs # 客户端 bundle:握手/schema/标签页注册/SSR
许可证
MIT