忆匣(Casket):DSH_HOME 实时快照与一键回滚

前言

DeepSeek Harness(DSH)把会话、工作区、设置、插件、凭据、记忆库都落在 DSH_HOME 一个目录里。误删、磁盘故障或误操作清空 home,丢的不只是文件,而是那段时间里发生过什么的唯一原件。常见做法是手动拷贝目录或依赖云盘,但很难在「变更频繁」和「可验证、可回滚」之间兼顾。下面介绍社区插件 忆匣 / Casket(仓库 YarXVI/dsh-disaster-recovery,分类 admin-security):只做一件事——把任意时刻的全库状态原样封存,并在出问题时原样取回;不做语义检索,也不负责跨设备同步。

这是什么

忆匣是 YarXVI 维护的 DSH 灾备插件。它递归监听 DSH_HOME,用内容寻址分块做实时快照,在面板里列出候选时间点并支持一键恢复;备份根目录默认放在 DSH_HOME 之外,以便 home 被清空时仍能救回。插件以 MIT 许可发布,当前 package 版本为 0.8.0,运行要求 Node ≥ 20。

核心能力

实时封存与去重

通过 fs.watch 递归监听,9 秒合并窗口,两次快照最小间隔 60 秒。README 给出的参考:首次全量约 110 MB、1,156 文件约 2.5 秒。默认 64 KiB 分块,相同内容只存一份;追加型日志只新增尾块,避免高频重存整文件。

保留策略

最近 60 份快照,48 小时内每小时 1 份,30 天内每天 1 份,硬上限 100 份(超出从最旧回收)。

恢复时的安全行为

恢复前会先对当前状态拍 pre-restore 快照;被覆盖文件进入 restore-quarantine;快照里没有的新文件原地保留。若清单缺块,直接拒绝恢复,不写半份数据。恢复后须完全退出并重启 DSH,否则内存态可能把旧状态写回磁盘。

DSH 无法启动时的恢复

安装脚本会把不依赖 DSH 的恢复工具复制到 %LOCALAPPDATA%\DeepSeek Recovery,并创建「Deepseek恢复」快捷方式;另有零依赖 Node 的 recovery-kit,便于在外部控制台操作。

异地加密副本与事故留证

每天一份已验证快照经 scrypt(N=2¹⁷)派生密钥、AES-256-GCM 分块加密后,块级去重同步到子机;子机只存密文。黑匣子心跳与外部看门狗(独立计划任务)可在异常退出、数据骤降、备份损坏等情况下暂停自动备份并钉住推荐恢复点。

安装与启用

插件在 DSH 生态里通过 profile 或自定义市场安装;社区目录页见 SkillHub 插件页,源码与说明见 GitHub 仓库。

从插件市场安装(README 推荐,不需要 git)

在 DSH 里:插件 → 实验性插件旁「更多」→ 打开「自定义插件市场」→ 发现 → 添加索引源,填入:

https://yarxvi.github.io/dsh-plugin-dsh-sync/market/index.json

搜索「忆匣 / Casket」安装;也可以直接用 npm 源:

dsh plugin --profile web add dsh-disaster-recovery@0.8.0

本地脚本安装(会 clone 仓库并执行 install.ps1,适合自行审计脚本后使用)

git clone https://github.com/YarXVI/dsh-disaster-recovery.git
cd dsh-disaster-recovery
powershell -NoProfile -ExecutionPolicy Bypass -File .\scripts\install.ps1 -Apply

安装会做四件事:把插件装进 profile、复制外部恢复工具到 %LOCALAPPDATA%\DeepSeek Recovery、创建「Deepseek恢复」快捷方式、打印后续操作。装完重启 DSH,左侧栏应出现「忆匣」。备份根目录须在 DSH_HOME 之外(默认示例为 D:\dsh-backup)。

典型用法

README 给出的三步上手如下:

  1. 重启 DSH → 左侧栏「忆匣」→ 概览显示「你的数据正在被保护」
  2. 点「检查完整性」——未检查过不会宣称「内容完整」
  3. 点「立即备份一次」

之后自动运行,最快约每 60 秒一次快照。需要回滚时在面板选择时间点恢复,并按上文要求完全退出并重启 DSH。

适用场景与注意

适合在本机长期跑 DSH、且希望 home 目录有可验证时间点副本的开发者。插件以当前 DSH 进程权限读写 DSH_HOME 与备份目录,安装前应阅读源码与 MIT 许可证,确认备份路径与异地副本密码策略(密码丢失则密文不可读,无后门)。

已知限制包括:fs.watch 在部分网络盘或极旧 Windows 上不可靠时会退回轮询;只备份 DSH_HOME,不含 DSH 安装目录;两次快照之间写入又丢失的内容无法找回;恢复判据为大小 + mtime,极端情况下可能误判未变化。

结尾

忆匣把 DSH 的「单目录即全部状态」这一布局,转成可保留、可校验、可拒绝半份恢复的快照体系,并在外部控制台与加密异地副本上补了一层「DSH 起不来也能救」的路径。更多细节以仓库 README 与 DESIGN.md 为准。

  • 目录页:https://www.skillhub.cn/plugins/YarXVI/dsh-disaster-recovery
  • GitHub:https://github.com/YarXVI/dsh-disaster-recovery
羽毛球分组比赛记分
小程序二维码

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

Xiaoye