dsh-undo-savepoint:DSH 崩溃自救插件,配置与插件代码一键回滚

前言

DeepSeek Harness(以下简称 dsh)是 DeepSeek 开源的智能体运行时,核心理念是「一切皆插件」:模型、工具、会话、沙箱,连网页界面本身,都可以用插件增删。目前它仍处于开发者预览阶段,接口会继续变动。社区里有人整理了插件目录 SkillHub 插件库,方便按分类查找安装命令;该目录是独立站点,与 DeepSeek / 幻方没有官方从属关系,收录条目需要自行核对源码。

玩 dsh 久了,难免遇到这类事故:装了个插件把 cordis.patch.yml 改坏了、AI 帮你改了插件源码结果起不来、.env 被误改导致鉴权失败,甚至 DSH 直接崩溃进不去。Git 能救一部分,但配置散落在 profile 目录和家目录,插件代码树也可能不在版本控制里。如果你希望「改坏了能撤销、起不来还能自救」,可以看看社区插件 dsh-undo-savepoint

这是什么

dsh-undo-savepoint 是一款面向 dsh 的撤销 / 回退 / 快照系统,由 lire1131 维护,仓库地址为 lire1131/dsh-undo-savepoint。在 SkillHub 插件库 中归类为 admin-security(管理与安全)。许可证是 MIT,运行时要求 Node.js ≥ 20;package.json 里的版本号为 0.4.1。截至 2026-08-25,GitHub 与 SkillHub API 均显示约 125 星、4 forks。

它做的事情可以概括成三层:

  1. 局内快照与撤销:对 dsh 启动关键配置(cordis.patch.ymlpackage.jsonsettings.yaml.env 等)和用户插件代码树做自动 / 手动快照,支持 undo、redo、回退到任意历史版本。
  2. 密钥安全.env、凭据类文件进快照时自动脱敏,导出 ZIP 不泄露明文;真实值存本机 vault,本机回滚可完整还原。
  3. 局外急救:DSH 完全起不来时,仍可通过离线 WebUI、GUI 窗口或 CLI 操作时间线、回滚、安全模式与诊断——不依赖 dsh 进程在跑。

它不是给模型加工具,也不改智能体的推理逻辑;核心是保护你的 dsh 环境与插件生态不被一次误操作拖垮

核心功能与亮点

仓库 README 与 SkillHub 目录描述一致,主要能力如下。

1、配置 + 插件代码一键回滚。 快照覆盖 profile 下的 cordis.patch.ymlpackage.jsonpnpm-lock.yaml 等,以及 $DSH_HOME 下的 settings.yaml.env.credentials.yaml,同时包含用户插件代码树。改坏任何一处都能撤销;支持 undo / redo / 回退到指定版本,入口包括 WebUI 面板、对话指令和离线 CLI。

2、消息级撤销。 按 AI 消息(或 60 秒批次)记录工作区文件变更,可在对话头部打开「对话撤回」面板,回滚「这条消息改了什么」。不依赖 git,也不碰会话存储;可在设置里配置「跟踪工作区目录」。

3、密钥脱敏 + 本机 vault。 快照里 .env 等敏感字段结构保留、值脱敏;导出 ZIP 零泄露。本机回滚时从 vault 还原真实值。

4、一键安全模式(SAFE MODE)。 DSH 完全起不来时,可禁用除本插件外的全部用户插件,保证能启动;同时自动快照并备份 profile / home 双级 patch。退出安全模式后,再逐个排查问题插件。

5、崩溃归因与会话修复。 异常退出时,界面横幅会提示「最后正常快照」并给出一键回退;按日志签名分类崩溃原因(如 session-corruptbundle-checkpatch-tree)。undo_scan 可扫描并修复部分 session.jsonl.zstd 布局问题;DSH 起不来时可用离线 dsh-undo.ps1 scan --fix(需 Node ≥ 22.15)。

6、快照时间线(Time Machine)。 快照按日期分组,支持备注 / 标签、文件级 diff(新增 / 删除行高亮)、逐文件浏览后一键回滚。另有定时快照、孤儿 blob 清理(undo_compact)、ZIP 导出 / 导入(可选 AES-256-GCM 加密)。

7、局外急救工具链。 DSH 挂了也能用:纯本地 undo-server WebUI(127.0.0.1)、GUI 窗口、PowerShell / shell CLI,以及插件加载后自动创建的桌面快捷方式。Windows、macOS、Linux 三平台均可用。

8、多 Profile 与自定义家目录。 从启动参数识别当前 profile,快照按 profile 隔离;DSH_HOME 解析与官方启动器一致,第三方客户端不再出现「两套家分裂」。

安装与启用

前置条件:已安装 dsh(@deepseek-ai/dsh)与 Node.js(≥ 20)。

GitHub README 给出的推荐安装命令如下,在终端执行:

dsh plugin --profile web add github:lire1131/dsh-undo-savepoint#master

dsh CLI 会从 GitHub 解析插件并装进当前 profile。来自 GitHub 的插件安装时可能执行代码,插件也会以当前 dsh 进程的权限运行。安装前应先看仓库源码和 MIT 许可证;只装自己信任的来源。若要可复现安装,可以固定 commit 哈希。本文核对 SkillHub API 时,master 分支最新提交是 7d21c941a06ef46508e96aa0bd33e5af65488d8b,可以写成:

dsh plugin --profile web add github:lire1131/dsh-undo-savepoint#7d21c941a06ef46508e96aa0bd33e5af65488d8b

哈希会随仓库更新变化,安装前到 GitHub 再确认一次更稳妥。

安装完成后重启 DSH 即生效;会话头部会出现撤销 / 恢复 / 快照等按钮,设置里也会多出「快照」独立栏目。

若不想走 dsh plugin add,README 还提供了本地 clone + junction 的手动挂载方式(Windows 示例):把仓库 clone 到本地插件目录,对 DSH 的 node_modules 建 junction,再在 <DSH_HOME>\profiles\web\cordis.patch.yml 追加:

- insert:
    - id: dsh-undo-savepoint
      name: dsh-undo-savepoint

保存后 host 部分可热加载;完整稳态建议重启 DSH。

典型用法示例

DSH 内日常操作

  • 撤销:头部「撤销」按钮 / Ctrl+Alt+Z / 对 AI 说「撤销上一步」。
  • 恢复:「恢复」按钮 / Ctrl+Alt+Y(仅当撤销后没有新操作)。
  • 手动保存:面板「手动保存」/ 对 AI 说「保存快照」。
  • 回退到指定版本:面板点「回退到此版本」;或对 AI 说「回退到 \<id>」;或 CLI restore -Id <id>
  • 消息级撤销:对话头部「对话撤回」,选择消息批次撤回其文件改动。

快照参数(自动保存开关、防抖、保留数量、敏感模式、跟踪工作区目录等)在 设置 → 通用 → 快照设置 中调整。

局外 WebUI(DSH 挂了也能用)

进入插件安装目录下的 tools/,执行:

node tools/undo-server.mjs

也可双击 launch-undo.bat(Windows)、.command(macOS)或 .sh(Linux)。会拉起纯本地服务器 + 内置网页,提供时间线、回滚、对比、安全模式与诊断。插件加载后还会在桌面创建「dsh-undo-savepoint」快捷方式。

离线 CLI 示例(Windows PowerShell)

powershell -NoProfile -ExecutionPolicy Bypass -File "tools\dsh-undo-savepoint.ps1" list
powershell -NoProfile -ExecutionPolicy Bypass -File "tools\dsh-undo-savepoint.ps1" snapshot -Label "改插件前"
powershell -NoProfile -ExecutionPolicy Bypass -File "tools\dsh-undo-savepoint.ps1" undo
powershell -NoProfile -ExecutionPolicy Bypass -File "tools\dsh-undo-savepoint.ps1" restore -Id <id> -Force
powershell -NoProfile -ExecutionPolicy Bypass -File "tools\dsh-undo-savepoint.ps1" safe-mode -Label on

恢复涉及 package.json / pnpm-lock.yaml 时,若需要真正重建 node_modules,可加 -SyncDeps 参数。

崩溃急救速查

场景 建议操作
配置 / 插件被改坏 WebUI / 对话 / CLI:undorestore -Id <id>
DSH 完全起不来 局外工具 → 安全模式 → 重启 DSH
上次异常退出不知回退到哪 横幅显示 last-good 快照,一键回退
会话文件损坏 undo_scan 或离线 dsh-undo.ps1 scan --fix
跨机恢复后缺插件 恢复报告会预检提示;先装插件或进安全模式

常见事故:DSH 启动报 duplicate loader entry id 之类错误 → 打开「DSH撤销管理器」选中出问题前的快照 → 回退 → 重启 DSH,一般不必重装、不丢会话。

适用场景与注意事项

比较适合这几类人:

  • 经常试装社区插件、改 cordis.patch.yml 的 dsh 深度用户;
  • 让 AI 直接改插件源码,担心一次 yield 事故把环境搞挂的开发者;
  • 需要在多台机器间迁移 dsh 配置、又希望导出时不泄露密钥的团队;
  • 已经遇到过 DSH 崩溃、会话损坏,想要「最后一道保险」的场景。

使用时有几点需要注意。

第一,插件以当前 dsh 进程权限运行,能读写 $DSH_HOME 下的配置与快照目录。安装前检查源码仓库和 MIT 许可证;社区目录不是官方应用商店,收录不等于官方背书。

第二,快照含 .env 等配置副本,本机 vault 存真实密钥——不要把快照 ZIP 随意外传。导出时已做脱敏,但本机存储仍应妥善保管。

第三,撤销语义与「恢复最新存档」不同:自动快照在变更之后生成,真实撤销是回退到与当前状态内容不同的最新快照;全部相同时会提示「没有可撤销的变化」。恢复 cordis.patch.yml 后,插件会自动检查并重新写入自身挂载条,避免把自己撤销掉。

第四,恢复涉及依赖变更时,默认只报告 node_modules 可能不同步;需要真正重建时显式加 -SyncDeps(CLI)或对应 REST / 对话参数。

第五,局外 undo_scan 的完整修复能力在 Node ≥ 22.15 上更完整;Node 20 下部分功能会降级为提示。v0.4.0 起核心逻辑抽取为纯 Node 零依赖模块,三平台 CI 矩阵覆盖 windows / ubuntu / macos × node[20,22]

小结

dsh-undo-savepoint 给 dsh 补了一套「时光机」:装插件、改配置、动插件代码都有快照可回滚;密钥脱敏、安全模式、局外 WebUI / CLI 则覆盖「DSH 已经起不来」的极端情况。对经常折腾插件生态的开发者来说,这是 admin-security 分类里值得先装上的自救工具。

安装命令以 GitHub README 为准:

dsh plugin --profile web add github:lire1131/dsh-undo-savepoint#master

目录详情页:https://www.skillhub.cn/plugins/lire1131/dsh-undo-savepoint

GitHub 仓库:https://github.com/lire1131/dsh-undo-savepoint

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜