Back to home

ssipbss

dsh-savepoint

DSH 存档点 - 装插件前后自动存档、一键恢复,聊天记录不受影响

Stars
0
Language
PowerShell
Created
Aug 15, 2026
Updated
Aug 15, 2026

Introduction

🗄️ dsh-savepoint · DSH 存档点

中文 | English

装插件前自动存档,出问题一键恢复,聊天记录永远不受影响

License: MIT Platform: Windows


这是什么?

你以前装 DSH 社区插件的循环:翻车 → 让 AI 修 → 越修越坏 → DSH 打不开 → 只能全卸重装

dsh-savepoint 把"修复能力"放在 DSH 之外:

  • 装插件前后各存一个档(配置文件快照,KB 级),命名「安装XX前」「安装XX后」;
  • 出问题后一键恢复——DSH 打得开时用 AI 工具,打不开时双击一个脚本就能还原;
  • 聊天记录(sessions/绝不恢复、绝不删除,恢复前后哈希比对并写日志;
  • 恢复前先把当前状态移入隔离区(不删除),误恢复可撤销。

特性

  • 装插件前/后各存一个档,命名「安装XX前」「安装XX后」
  • 启动基线安全网(每次正常启动自动留一档)
  • 三入口恢复:AI 工具 / GUI / 双击脚本
  • DSH 打不开也能恢复(独立 PowerShell 脚本,零依赖、不联网)
  • 聊天记录保护:绝不恢复、绝不删除,哈希校验留痕
  • 恢复前隔离当前状态,误恢复可撤销
  • snapshot_diff 定位肇事改动,可外科手术式回退

快速开始

方式 A:完整体验(推荐)

scripts/ 目录整个复制到 %USERPROFILE%\.dsh-snapshots\(即 $DSH_HOME-snapshots),然后在 DSH 会话里让 AI 用 cordis_define 加载 plugin/savepoint.host.js(idPrefix: savep)。

方式 B:只要恢复能力

复制 scripts/ 到任意位置,手动运行:

# 手动存档
.\snapshot.cmd
# 或
powershell -NoProfile -ExecutionPolicy Bypass -File .\snapshot.ps1 -Reason "装 XX 前"

# 一键恢复(交互选择存档,绝不自动就近恢复)
.\restore.cmd

日常用法

装插件前  → snapshot_save(pluginName="xx", phase="before")   → 「安装xx前」
装插件后  → snapshot_save(pluginName="xx", phase="after")    → 「安装xx后」
出问题了  → snapshot_restore(snapshotId="...")               → 一键恢复
           (或双击 restore.cmd 手动选档)

目录结构

.dsh-snapshots/
├─ snapshot.cmd / snapshot.ps1      # 手动存档
├─ restore.cmd / restore.ps1        # 一键恢复(交互选档)
├─ config.json                      # (可选)自定义 dshHome / snapRoot
├─ logs/                            # 恢复日志
├─ broken/                          # 隔离区(损坏现场,可撤销)
└─ snap-<时间>-<manual|auto>/       # 每个存档
    ├─ manifest.json                # 清单(文件/哈希/原因/时间)
    ├─ files/                       # 配置快照
    └─ restore.ps1 / restore.cmd    # 该存档自带的恢复脚本(自包含)

工作原理

存档的是 DSH 的关键小文件(KB 级):cordis.patch.ymlpackage.jsonsettings.yaml.credentials.yamlworkspace.json.agent-presets/ 等。依赖树(node_modules)不复制——依赖损坏时恢复脚本可选执行 pnpm install --force 重建。

恢复脚本是纯 PowerShell,不依赖 DSH / node / pnpm / 网络,DSH 打不开时也能运行。


边界与已知限制

限制说明
自动存档需要插件在运行插件是 DSH 动态插件(会话级):重启后需在新会话重新加载。但已有存档和恢复脚本永远可用
聊天记录存在 $DSH_HOME\sessions\,手动全删 .dsh 仍会丢。本插件解决"不重装",不解决"手滑全删"。
首次使用插件默认从 config.json 或环境变量探测路径;找不到时会在日志里明确报错,不会静默乱存。

许可证

MIT © ssipbss


致谢

灵感来自 DSH 社区"装插件翻车→全卸重装"的真实痛点。