前言¶
在 DSH 里改 cordis.patch.yml、装新插件、动 package.json 和锁文件,往往一次失误就会导致启动失败或功能残缺。社区里已有不少「备份思路」,但多数不针对 DSH profile 里那几份关键配置,也不会在 pnpm add 前后自动留痕。装完插件 DSH 起不来时,也很难判断该回到哪一个时间点。
下面介绍维护者 FuriousKinght 发布的 dsh-fk-rollback(GitHub:FuriousKinght/dsh-fk-rollback,SkillHub 分类:记忆)。它只做一件事:对 DSH 运行所依赖的少量配置文件做快照与回滚,并配合体检、溯源和命令行工具,在桌面端能正常用时走面板,在 DSH 已崩溃时仍能靠 Node 脚本恢复。
这是什么¶
dsh-fk-rollback(包名 dsh-fk-rollback,当前资料版本 v1.4.0)是 DSH 的配置快照与回滚插件。简介中的定位是:自动留痕、出问题能查、坏了能退回,目标是保证 DSH 本体能启动、能输入输出、功能正常。
需要事先弄清边界:
- 在快照范围内:profile 层的 5 个配置文件(约 119 KB),见下文列表。
- 不在快照范围内:会话聊天内容、用户自行安装的插件源码、
node_modules/、cordis.yml(每次启动会被重写)、以及$DSH_HOME/cordis.patch.yml(home 层:可检测 fatal,但不备份、不回滚)。
README 中记录了 2026 年 10 月多起与配置损坏相关的事故(循环依赖、插件 exports 缺失、patch 被截断等),并给出 2026-10-19 的实测:破坏后 bundles 与 patch 体积骤降、启动 YAML 报错;回滚后 5/5 文件 SHA256 恢复、启动正常。这些说明插件针对的是「配置被改坏」而非聊天数据丢失。
快照内容与三类快照¶
备份哪五个文件¶
快照只包含以下文件(回滚时 cordis.patch.yml 最后写入,避免中间态触发热重载):
pnpm-workspace.yaml
compatibility.json
pnpm-lock.yaml
package.json
cordis.patch.yml
存放路径:$DSH_HOME/rollback-snapshots/<profile>/(在 profile 目录外,避免 profile 整体损坏时连快照一起丢)。
每日、滚动与检查点¶
| 类型 | 目录 | 何时创建 | 保留 |
|---|---|---|---|
| 每日 | daily/ |
每天第一次启动成功后 | 3 份(不计入 50 配额) |
| 滚动 | rolling/ |
每轮对话结束,且距上次 ≥2h 且内容有变 | 3 份(不计入 50 配额) |
| 检查点 | checkpoints/ |
手动、回滚前、装插件前后自动等 | 50 份 |
每日快照在「启动成功」后才建立;若当天首次启动就失败,当天 daily 不存在,需依赖前一天的 daily。
核心功能¶
装插件前后自动留痕¶
README 将其标为关键能力:不论安装哪个插件,都会在 pnpm add 之前和安装完成之后各存一份检查点。
实现依赖 DSH dsh-plugin-manager 的事件顺序(维护者已对照源码):
plugin-manager/install-state(phase=installing):在真正执行pnpm add之前写入「装插件前」快照。plugin-manager/changed:安装完成后写入「安装插件后」快照,并立即做体检。
同一安装请求用 requestId 去重;连续安装多个插件时,检查点名称会自动编号区分。
面板(DSH 能正常启动时)¶
路径:设置 →「FK回滚设置」。资料中列出的能力包括:
- 快照列表(星级对应健康等级)
- 创建快照、一键回滚
- 体检(真问题 / 提示 / 正常状态三层)
- 改动溯源(谁在何时改过哪个配置文件)
- 设置(保留策略、体检历史、报错日志与诊断报告)
DSH 为 Electron 桌面应用,F5 / Ctrl+R 不会重载页面。回滚或改插件面板代码后需重启 DSH;面板提供「立即重启 DSH」(v1.3.0 起内置,Windows 桌面版可走 WMI 助手重启;dsh web 等非桌面场景会提示手动重启)。仅刷新列表数据可用面板「刷新」,无需重启。
命令行与崩溃时脚本¶
DSH 无法启动时,可双击同目录下的 还原DSH配置.bat(不依赖 DSH 进程,只依赖 node.exe)。脚本内置 5 级 Node 探测链;找不到 Node 则退出且不修改任何文件。
也可手动调用(PATH 无 node 时可用 DSH 自带运行时下的 node.exe,路径因安装位置而异):
node dsh-rollback.mjs <命令> [选项]
常用命令(摘自 README):
| 命令 | 作用 |
|---|---|
list |
按类型列出快照 |
show <id> |
快照详情 |
status |
当前状态摘要 |
check |
静态体检(支持 --json、--home-layer) |
diagnose |
诊断(含 home 层排查顺序) |
snapshot |
手动快照(--name / --note / --daily) |
restore <id> |
还原到指定快照 |
restore --last-good |
按健康等级自动选点 |
restore --dry-run |
仅预览将修改的文件 |
trace [文件] |
改动溯源(--days N) |
prune |
清理过期快照 |
退出码:0 成功;4 无可用快照;5 权限或占用;7 需人工;8 部分成功。
健康分级与 --last-good¶
快照可靠性分 5 级,按「配置指纹」记录启动历史(内容相同的快照共享验证):
| 等级 | 判据 |
|---|---|
verified-strong |
同指纹启动成功 ≥3 次且 0 失败 |
verified |
同指纹启动成功 ≥1 次 |
static-ok |
静态体检通过,未经过启动验证 |
failed |
曾启动失败 |
broken |
静态体检有 fatal |
restore --last-good 降级顺序:verified-strong → verified → static-ok → failed。
v1.4.0 体检与界面更新(资料已核实)¶
- 新增
client-loader-id-mismatch(fatal)与client-exports-name-mismatch(warn),用于发现client.js中模块 loaderid与包名不一致等会导致启动失败的问题。 - 修复全新 profile 下
cordis.patch.yml为[]时被误报 YAML 错误。 - 快照列表各分组可折叠;修复跨组翻页导致分组头计数与列表不一致的问题,改为每组独立「显示更多」。
安装与启用¶
插件在 SkillHub 社区目录登记为 furiouskinght/dsh-fk-rollback(目录页),标注可安装、MIT 许可证、engines.node 为 >=22.15。已抓取 README 与目录页未给出形如 dsh plugin add … 的固定安装命令字符串;请在 DSH 自带的插件管理流程中,从社区目录选择该插件完成安装(安装行为会触发前述装前/装后检查点)。
安装前建议自行阅读 GitHub 仓库 源码与 package.json,确认许可证与权限范围。插件以当前 DSH 进程权限读写 profile 旁的快照目录与配置文件,属于高敏感能力。
典型用法¶
场景一:装插件后 DSH 起不来
- 若仍能进设置,打开「FK回滚设置」,在检查点中找到「装插件前」对应项,执行回滚,再点「立即重启 DSH」。
- 若已无法启动,在插件包目录或 DSH 数据目录找到
还原DSH配置.bat双击,或执行node dsh-rollback.mjs restore --last-good(可先restore --dry-run预览)。
场景二:profile 体检全绿仍启动失败
先查 home 层 patch(README 称常见来源包括第三方皮肤插件生成的 $DSH_HOME/cordis.patch.yml):
node dsh-rollback.mjs check --home-layer
该文件不在快照范围内,本插件只能报 home-layer-unparsable 等 fatal,不能自动修复。
场景三:日常留痕
依赖每日与滚动快照即可;重大手动改动前可在面板「创建快照」或执行:
node dsh-rollback.mjs snapshot --name "改动前" --note "说明"
适用场景与注意¶
适合谁:经常在 DSH 里试插件、改 patch 或锁文件,且希望「坏了能退回上一个已知好点」的开发者。不适合把会话内容或插件源码当作备份对象的需求。
安全设计(README 摘要):不自动回滚、不改 DSH 本体、不碰 node_modules、会话日志只读、回滚前会先快照、两阶段写入且 patch 最后写;插件自身异常需被隔离,避免拖垮 DSH 启动。
死角:$DSH_HOME/cordis.patch.yml 优先级高于 profile 层,损坏会导致启动失败,但不在本插件回滚范围。profile 层一切正常却仍崩溃时,应优先排查该文件。
生态说明:DSH 采用「一切皆插件」的架构;SkillHub 为社区独立目录站点,与 DeepSeek / 幻方无官方从属关系,本文介绍的是社区维护插件,非官方内置功能。
结尾¶
dsh-fk-rollback 把 DSH 最容易「一改就全挂」的几份配置收进可验证的快照体系,并在装插件这种高风险操作前后自动检查点,配合面板与零第三方依赖的命令行,覆盖「还能进设置」和「已经起不来」两种恢复路径。查阅版本与更新记录请以 GitHub README 为准。