DeepSeek Harness 回滚后悔药:undo-savepoint 一键撤回与存档点回滚
逐帧拆解插件作者的实录:装一个插件,记住红「撤销」绿「恢复」两个按钮,认识桌面撤销管理器,再看一次被故意搞崩的 DSH 带着完整会话原样归来。
最近更新: 2026-10-01

让 DSH 放开手干活——换依赖、重构插件、改 cordis.patch.yml——总有一天它会改坏一个你没备份的东西,而 DeepSeek Harness 本身没有 Ctrl+Z。社区的答案叫 dsh-undo-savepoint(lire-安安 开源,MIT 协议):插件挂载、配置变化、每 15 分钟、启动时都会自动存档,另有一个永不自动清理的手动存档库,专治后悔。
这一页讲的是「怎么用」——全部截图取自插件作者本人的实录,每张都深链回原视频对应秒数。如果你还在挑「装哪个回滚插件」,先看回滚插件集合: 回滚与撤销插件集合
TL;DR
- ▸一条命令装好:dsh plugin --profile web add github:lire1131/dsh-undo-savepoint#master(Node.js ≥ 20),重启 dsh web,每个会话页头都会多出红「撤销」、绿「恢复」、灰「快照」三个按钮。
- ▸三种入口:页头按钮、桌面快捷键 Ctrl+Alt+Z / Ctrl+Alt+Y(可在设置里改键),或者直接在对话里跟 AI 说一句,让它替你撤。
- ▸撤销是带后悔档的软删除:每次回退前先落一条「后悔档」,手动库永不自动清理,自动库默认只留最新 20 份。
- ▸DSH 起不来也能救:桌面撤销管理器在 DSH 之外照样读档。快照含 .env 副本,千万别外传;ZIP 迁移包可选 AES-256-GCM 加密。
从安装到「搞崩了也能救回来」
第一部分 · 安装与三种回退入口
- 1
装插件,重启 dsh web
dsh-undo-savepoint 是 lire-安安(本次实录作者)开源的 MIT 插件,要求 Node.js ≥ 20。按 GitHub 源安装并重启后,它挂载那一刻就先打一份基线快照——你以后在管理器里看到的第一行,就是这条 plugin-mounted 基线。快照覆盖 DSH 配置、profiles 的 cordis.patch.yml 和用户插件目录。
$dsh plugin --profile web add github:lire1131/dsh-undo-savepoint#master
第二部分 · 日常回滚与崩溃演习
- 3
打开快照管理,回退到任意版本
「快照管理」弹窗共七个动作:手动保存、撤销、恢复、刷新、清理过期、导出 / 导入。每一行都标着时间、类型——基线、自动、手动、后悔档——原因(plugin-mounted、config-change、settings-change、before-restore……)、文件数和所属的库;行内操作是「差异」(看这次改动改了什么)、「回退到此版本」、「删除」。默认自动库保留 20 份、后悔档 10 份、手动存档永不自动清理,都能在「快照设置」里改。

快照管理:七个动作,每一行都能看差异、回退、删除看原视频 7:00 - 4
桌面撤销管理器:先落后悔档,再回退
同样的操作有一个原生桌面窗「DSH 撤销管理器」:手动保存、撤销、恢复、回退所选、删除所选、刷新、清理过期、导出、导入——而且 DSH 本体起不来时它照样能读库,这就是作者说的「局外照样救」。点下撤销,先看最顶上:一条新的 before-restore 后悔档已经写好,然后才开始回退,所以「后悔自己的后悔」永远来得及。双击任意行可看差异。

撤销先落一条后悔档,再开始回退看原视频 10:30 - 5
崩溃演习:故意搞崩 DSH,再原样救回
作者的崩溃演示按键会往 patch 里注入重复的 dsh-vision 加载器 id——DSH 立刻以 TypeError: duplicate loader entry id、退出码 1 告终。但死之前它已经存好手动快照 demo-crash-before 和一份 cordis.patch.yml 备份。同一个窗口里还备着清除注入(安全阀,把坏注入拆掉)、打开撤销管理器、查看 patch 文件三个按钮。撤掉坏改动、清掉注入、重启——实录里的会话原样回来:8 轮 · 133 步,花费与模型设置分毫未动。按键下方也印着提醒:它真的会杀掉正在运行的 DSH 进程,按之前先保存会话。

崩溃演习:先存档、再注入、后强杀,救援按钮常备看原视频 10:18 
回滚加重启,会话完好如初看原视频 10:58
第三部分 · v0.4.5 的版本时间线
- 6
v0.4.5 把弹窗升级成了版本时间线
现在的版本用时间线页取代了弹窗:按日期分组的行,标着 AUTO / BASELINE、原因和体积,行内四个动作——对比、恢复、编辑备注/标签、删除;工具栏追加了安全模式(DSH 起不来时用)、诊断(undo_doctor 体检)、清理、对话撤回和 ZIP 导出/导入。从这一代起快照默认脱敏:.env、凭据和 home 级设置会被掩码进本地保险库,ZIP 导出还可选 AES-256-GCM 加密。

v0.4.5 时间线:对比 / 恢复 / 备注·标签 / 删除看原视频 5:09
另一种后悔药:发言级回退 dsh-rewind
dsh-undo-savepoint 把配置和文件回退到存档点;dsh-rewind(夏桑菊XSJ 开发,GitHub 仓库 XSJUSTC,包名 @xsj/dsh-rewind)则是把对话本身回退到任意一条用户消息,像给 prompt 加了个「撤回发送」。README 写得很直白:每条用户消息的操作行、复制图标旁会出现 ↺ 回退图标;点下去,正在思考/输出的回合立即被打断,这条消息及之后的所有内容在聊天视图里隐藏(如同从未发生),消息文本自动填回输入框——未发送、可编辑;发送按钮左侧会出现「取消回溯」,点它就原样恢复被隐藏的消息。
发送之后,模型只看得到截断后的历史加新消息,被回退的尾巴永远不再进入模型上下文。只有用户消息可回退,助手回复没有回退入口(宿主侧强制校验)。安装:dsh plugin --profile web add github:XSJUSTC/dsh-rewind。

别把三家混成一谈:dsh-undo-savepoint(本页)用存档点守护配置与文件、能救崩溃;dsh-rewind 回退单条发言;anionex/dsh-turn-rewind 是第三个独立的社区回合回退插件。下面的集合页把一家家摆在一起比。
常见问题
把回滚交给插件之前,读者最关心的事。
撤销会不会把我刚改好的东西也退回去?
回滚是带留痕的软删除:撤销动作本身也会记成一条后悔档,随时可以再回来。作者幻灯里特意提醒:「恢复最新快照」是空操作——要挑一条内容确实不一样的来回退,确认前先看差异。默认自动库保留最新 20 份、后悔档 10 份、手动存档永不自动清理,三个数都在「快照设置」里。回到过去之后,那之后的活儿得重干。
DSH 已经起不来了,还能回滚吗?
这正是桌面撤销管理器存在的意义:它不依赖 web UI,直接读快照库——作者的演示就是故意把 DSH 搞崩再走回来的。如果崩溃来自坏的 patch 注入,「清除注入」会用自动备份把 cordis.patch.yml 还原;v0.4.5 还加了一键安全模式和 undo_doctor 诊断,专治起不来。
快照会不会把我的 API Key 泄出去?
快照里就是 .env 和配置的副本——作者幻灯原话:密钥别外传。v0.4.x 起默认脱敏:.env、凭据、home 级设置会被掩码,真实值留在本地保险库里;ZIP 导出可选 AES-256-GCM 加密。保险库留在本机,导出的 ZIP 记得加密。
dsh-rewind、dsh-turn-rewind 和 undo-savepoint 是同一个插件吗?
不是,是三个项目。lire1131 的 dsh-undo-savepoint(本页主角)给配置和文件打存档点、能做崩溃救援;XSJUSTC 的 dsh-rewind 把会话回退到任意一条历史用户消息;anionex/dsh-turn-rewind 是第三个独立的社区回合回退插件。集合页里有完整清单,本教程只手把手教 undo-savepoint。
相关攻略
同一张安全网的其他侧面。
回滚与撤销插件集合
undo-savepoint、turn-rewind、config-manager 等回滚族插件逐个比较——本教程的「装哪个」上位层。
阅读指南DSH 故障排查手册
dsh 起不来、行为异常时的通用排查,和第 5 步的崩溃演习配套食用。
阅读指南回放会话轨迹
事后一步步回看 agent 干了什么——和「事前存档」互为补充。
阅读指南导出与迁移会话
换机时把会话带走;配置这边记得配合快照 ZIP 导出。
阅读指南DSH 配置体系详解
profiles、cordis.patch.yml 与设置项——正是快照守护的那几份文件。
阅读指南DSH 插件是什么?
新手从这里开始:插件是什么、怎么装、装在哪里。
阅读指南来源与署名
全部截图取自插件作者本人的 B 站实录,每张都深链回对应秒数;页面文字为站内原创。安装命令、脱敏与安全模式等事实已与 lire1131/dsh-undo-savepoint、XSJUSTC/dsh-rewind 的 README 互证。


