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

若直接运行 pnpmUnknown 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

License

MIT