DSH Plugin Backup & Restore
August 23, 2026 · View on GitHub
一键备份 / 回档 DeepSeek Harness (DSH) 的插件状态 —— 插件装坏、DSH 崩溃后,双击就能回到可用的快照。
DSH 的插件通过 ~\.dsh\profiles\<profile>\ 下的 package.json(依赖清单)、pnpm-lock.yaml(锁定版本)和 cordis.patch.yml(补丁配置)管理。插件装坏往往就是这些文件被改乱 —— 这个工具在它们被弄坏之前把「正常状态」存下来,坏掉之后一键恢复。
功能
| 脚本 | 功能 |
|---|---|
dsh-plugin-backup.ps1 | 备份插件配置(5 个关键文件 + node_modules 清单 + SHA256 哈希) |
dsh-plugin-restore.ps1 | 从快照回档:选快照 → 校验哈希 → 恢复 → 重建依赖 |
dsh-full-backup.ps1 | 全量备份整个 ~\.dsh(记忆/会话/皮肤/设置/全部 profile,打包 zip) |
- ✅ SHA256 完整性校验:恢复前逐文件校验,备份损坏会拒绝回档
- ✅ 隔离区防反悔:回档前自动把当前状态移到
.rollback-quarantine\<时间戳>\ - ✅ 锁文件优先:默认不备份 node_modules 本体,用
pnpm-lock.yaml精确重建 - ✅ 自动轮转:默认保留最近 8 份插件快照 / 5 份全量备份
- ✅ 零依赖:只用 Windows 自带的 PowerShell 5.1,无需安装任何东西
快速开始
备份(装/改插件前后各跑一次)
最简单:双击 dsh-plugin-backup.cmd。
或在 PowerShell 中:
powershell -NoProfile -ExecutionPolicy Bypass -File .\dsh-plugin-backup.ps1
回档(插件装坏 / DSH 崩溃后)
⚠️ 在 DSH 之外的独立终端执行 —— 回档会替换 profile 文件,若 DSH 正在运行会提示结束 node 进程。
最简单:双击 dsh-plugin-restore.cmd,按提示输入快照编号回车即可。
# 查看可用快照
powershell -NoProfile -ExecutionPolicy Bypass -File .\dsh-plugin-restore.ps1 -ListOnly
# 交互选择快照并回档
powershell -NoProfile -ExecutionPolicy Bypass -File .\dsh-plugin-restore.ps1
# 指定快照 + 全自动(结束 node、跳过确认、自动重建依赖)
powershell -NoProfile -ExecutionPolicy Bypass -File .\dsh-plugin-restore.ps1 -Snapshot 20260824_065449 -AutoStop -RunInstall -Yes
回档完成后启动 DSH:
npx @deepseek-ai/dsh web
全量备份(低频,重装/迁移用)
powershell -NoProfile -ExecutionPolicy Bypass -File .\dsh-full-backup.ps1
默认排除 node_modules / cache / logs;恢复方法见脚本注释(解压 zip 覆盖回 %USERPROFILE%\.dsh)。
常见问题
1. 回档后 pnpm install 报供应链策略错误(minimum-release-age)
pnpm 11 默认拒绝「发布不足 24 小时」的包(供应链安全策略)。锁文件来自已验证过的正常状态,可用 --trust-lockfile 一次性跳过该检查:
Set-Location "$env:USERPROFILE\.dsh\profiles\web"
node "C:\Program Files\nodejs\node_modules\corepack\dist\pnpm.js" install --frozen-lockfile --trust-lockfile
若直接运行 pnpm 报 Unknown options,用上面的 node 直调方式(绕过 pnpm.ps1 包装脚本,常见于 Windows corepack 环境)。
2. 双击 .ps1 打不开 / 提示禁止运行脚本
.ps1 双击默认用记事本打开。请双击 .cmd,或右键 .ps1 → "使用 PowerShell 运行"。脚本命令已带 -ExecutionPolicy Bypass。
3. 改过脚本后中文乱码 / 语法报错?
Windows PowerShell 5.1 按 ANSI 读取无 BOM 的 UTF-8 中文脚本会解析报错。脚本必须保持 UTF-8 带 BOM(记事本另存为 "UTF-8 with BOM",或 [System.IO.File]::WriteAllText($f, $c, (New-Object System.Text.UTF8Encoding($true))))。
隐私说明
备份产物(plugin-backups\、full-backups\)包含你的记忆、会话、皮肤、凭据等私密数据,仅保存在本地,已通过 .gitignore 排除,不会进入本仓库。发布/分享本项目时请勿包含这两个目录。
目录结构
├── dsh-plugin-backup.ps1 / .cmd 插件配置备份
├── dsh-plugin-restore.ps1 / .cmd 插件回档(快照菜单)
├── dsh-full-backup.ps1 / .cmd 全量备份
├── README.md 本文档
└── LICENSE MIT