csiroqa
dsh-backup-sync
DeepSeek Harness(DSH)备份/恢复 + 跨机同步插件:本地快照、WebDAV 推送/拉取、自动备份与失效归档清理。Snapshot backup, restore and cross-machine sync plugin for DeepSeek Harness: local snapshots, incremental WebDAV push/pull, auto-backup retention and stale archive sweep.
- Stars
- 0
- Language
- TypeScript
- Created
- Aug 13, 2026
- Updated
- Aug 13, 2026
Introduction
dsh-backup-sync
DeepSeek Harness(DSH)的备份/恢复 + 跨机同步插件:一键把 $DSH_HOME 关键数据复制为本地快照(会话日志、工作区数据、配置层),通过 WebDAV 在机器间增量推送/拉取(换机迁移、异地备份),支持定时自动备份与失效归档清理。
English: README.en.md
功能
本地快照
- 一键快照:
/backup [快照名]把$DSH_HOME的会话日志(sessions/)、工作区注册数据(storages/,如workspace.json)、配置层(settings.yaml、cordis.patch.yml、各 profile 用户层)复制为时间点快照;可选附件(attachments/,体积大,默认关闭) - 清单可靠:快照带
meta.json清单(文件路径/大小/修改时间),/backup list查看时间、主机、文件数与大小,/backup prune [保留数]清理旧快照
跨机同步
- WebDAV 传输:Nextcloud / 坚果云 / 群晖 / S3 网关等,
/backup push <快照名>上传、/backup pull <快照名>下载,远端布局<baseUrl>/dsh-backup/<快照名>/ - 增量传输:push/pull 按清单对比(大小 + 修改时间),未变化的文件跳过;拉取后恢复文件时间,二次同步零下载
- 中断安全:清单
meta.json最后上传——推送中断不会被另一台机器当成完整快照;重试天然幂等 - 残留自清理:推送自动删除远端旧清单残留,拉取自动删除本地多余文件;
/backup remote-prune <快照名>删除整个远端快照
自动备份
autoIntervalMinutes定时快照,autoKeep只保留最近 N 份(自动清理);恢复前自动对现状建…-pre-restore保险快照
失效归档清理
- DSH 归档列表只记会话 id、不校验日志是否存在(幽灵归档):
restore成功后自动清扫,或/backup sweep-archives手动执行
配置
插件行(cordis.patch.yml 的 backup-sync insert 行)支持以下可选 config:
| 键 | 默认 | 说明 |
|---|---|---|
backupRoot | $DSH_HOME/backups | 本地快照根目录 |
includeAttachments | false | 是否备份附件(体积大) |
includeCredentials | false | 是否备份 .credentials.yaml(含明文密钥,默认关) |
autoIntervalMinutes | 0 | 自动备份间隔(分钟);0 = 关闭 |
autoKeep | 10 | 保留最近快照数;0 = 从不清理 |
remote.baseUrl | 空 | WebDAV 根地址(如 https://dav.example.com/remote.php/dav/files/user/dsh-backups) |
remote.username / remote.password | 空 | 留空时从凭据引用 WEBDAV_USERNAME / WEBDAV_PASSWORD 解析 |
不要把明文密码写进
cordis.patch.yml。.credentials.yaml不会被默认备份。
安装
前置:Node.js >= 22、pnpm、本机 deepseek-harness 源码检出(依赖以 link: 指向其 @deepseek-ai/* 包,未发布到 npm)。
git clone https://github.com/csiroqa/dsh-backup-sync.git
cd dsh-backup-sync
pnpm install
pnpm build
# 安装进 web profile(link: 指向本目录)
dsh plugin --profile web add link:$(pwd) # POSIX
dsh plugin --profile web add link:E:\path\to\dsh-backup-sync # Windows
重启 dsh web,浏览器 Ctrl+F5 强刷。
(npx 方式亦可:npx --registry=https://registry.npmjs.org -y @deepseek-ai/dsh plugin --profile web add <本插件路径>——需显式官方 registry:镜像数据滞后且 npm 11 的 npx 锁校验会拒绝非官方源。)
使用
- 对话输入
/backup创建第一个快照;/backup list查看(时间 / 主机 / 文件数 / 大小) - 配置
remote.baseUrl与凭据后:/backup push <快照名>推送到远端;换机后/backup pull <快照名>+/backup restore <快照名>完整迁移 /backup restore <快照名> [--all]恢复:默认只还原会话日志与工作区数据(恢复前自动留保险快照);--all连配置一起还原(需重启生效)/backup sweep-archives清理失效归档;/backup prune 5只保留最近 5 个
兼容性
- 平台:Windows / macOS / Linux(Node >= 22)—— 构建与冒烟测试经 GitHub Actions CI 验证
- 凭据:通过 DSH 凭据引用(
WEBDAV_USERNAME/WEBDAV_PASSWORD,存于$DSH_HOME/.credentials.yaml),不落配置库 - 针对 DSH
0.1.0-rc.6(源码检出与 npm/npx 安装)实测可用 - 客户端仅依赖平台模块表(react 等),不随 DSH SDK 版本漂移
- 构建产物:
tsdown(host 半区lib/index.js+ browser 半区lib/client.js,标准window.__ModuleLoader__.load闭包工厂格式)
安全声明
- 快照含你的全部会话与工作区数据:存放于
$DSH_HOME/backups/snapshots/,请勿把该目录暴露给不可信方;启用includeCredentials时还会包含明文密钥 - 恢复会覆盖当前数据:
restore前会自动留保险快照可回退,但建议先在测试 profile 验证;--all会回退其他插件的配置(需重启生效) - 远端凭据:WebDAV 用户名/密码建议走凭据引用;若写在
cordis.patch.yml,请勿把该文件入库或外发 - 插件自身不做网络监听(纯命令 + 出站 WebDAV 请求)
许可与使用声明
MIT License(见 LICENSE)。
欢迎任何人使用、修改、引用、或把本项目收录进自己的插件合集,只需:
- 保留
LICENSE文件与版权声明 - 标明出处(本仓库链接)
相关
- DeepSeek Harness
- 系列插件:dsh-schedule(定时任务 + 状态监控)、dsh-archive-viewer(归档增强:自动归档 / 文件夹 / 经验库 / 收藏便签)
- 插件形态参考 dsh-web-ui(
dsh.bundle.patch+dsh.client声明 + 槽位注册 + tsdown 双半区构建)