跳到正文
dsh-market 浏览插件 GitHub EN

xiaoyuyu6420/dsh-backup

一键备份与恢复 DSH 用户数据:/backup 备份、完整性校验、恢复,定时自动备份(重启续跑),sha256 校验与自动轮换(macOS/Linux/Windows)。

Star 数 ★ 3 分类 开发与运行时 收录于 2026-08-14

安装

在 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_TOKENGITHUB_TOKEN),token 只写入同步工作树的 credential 文件(不进进程参数)。推送为 HEAD:main --force-with-lease; 超过 90MB 的归档会跳过并提示。同步状态(上次推送 / 错误)存于 <destination>/auto.json,面板与 /backup github status 可见。

Settings 可视面板(Web)

同样的能力在 dsh webSettings → Plugins → 备份 标签页有可视化入口: 显示备份目录、自动备份状态、GitHub 同步状态和每份归档的大小,支持一键立即 备份、逐份校验、下载、带 dry-run 预览与二次确认的恢复。下载走仅限本机的 GET /backup-download/<归档名> 路由。面板经 backupPanel Typert Remote 命名空间(/api RPC)与宿主通信;浏览器 bundle 预构建在 lib/client.js, 安装时无需构建。

恢复的工作方式

恢复安全性是设计出来的:

  1. 先校验归档 sha256——损坏的归档绝不触碰现有数据。
  2. 列出归档条目,任何超出备份根目录的路径都会拒绝恢复(tar 路径穿越防护)。
  3. 当前 ~/.dsh 先自动快照,再移动到 ~/.dsh.pre-restore-<时间戳>——恢复是替换而不是合并。
  4. 解压归档后重启 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.yamlqq-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

内容来自项目 README(GitHub)↗