憶匣(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
羽毛球分组比赛记分
小程序二维码

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

小夜