@summerscar/dsh-mnemon-sync:爲 dsh-mnemon 做異地備份與按需恢復

前言

在用 DeepSeek Harness(DSH)配合 dsh-mnemon 做長期記憶時,數據落在本機 SQLite 和一批 Markdown 裏。換機器、重裝 profile 或本地盤故障時,若沒有可驗證的異地副本,記憶空間、項目檔案和運行時記憶很難完整遷回。只靠手動拷貝目錄,又容易在數據庫仍在寫入時拷到不一致文件。

下面介紹維護者 summerscar 發佈的記憶類插件 @summerscar/dsh-mnemon-sync:在記憶系統裏增加「同步備份」能力,把選定組件打包到 S3 兼容存儲或 WebDAV,支持定時備份和按組件選擇性恢復。

這是什麼

dsh-mnemon-sync 面向已使用或未使用 dsh-mnemon 的 DSH 用戶,解決記憶數據的離線歸檔與回滾問題。安裝後,若已啓用 dsh-mnemon,記憶界面會多一個「同步備份」標籤頁;未裝 dsh-mnemon 時插件仍可加載,只是不顯示該標籤頁。

包名:@summerscar/dsh-mnemon-sync,在 npm 上處於 Published 狀態。許可爲 SATA 2.1;npm 上 0.1.11 及更早版本仍爲 MIT。更多插件說明見 summerscar 的 dsh-plugins 站點。

核心功能

文檔將可備份內容拆成三個組件,默認全選,也可任意組合:

組件 內容
記憶空間 <MNEMON_DATA_DIR>/data/ 下各空間的 mnemon.db 與空間清單
項目檔案 <MNEMON_DATA_DIR>/documents/ 下的 index.json 與全部 Markdown
運行時記憶 <MNEMON_DATA_DIR>/runtime/ 下的 memories.json 與兩份投影

未設置環境變量 MNEMON_DATA_DIR 時,數據目錄爲 ~/.mnemon。

備份目標二選一:

  • S3 兼容存儲:手寫 AWS Signature V4,適用於 Cloudflare R2、MinIO、Backblaze B2、阿里雲 OSS 等。
  • WebDAV:Basic 認證,自動創建遠端目錄。

自動備份頻率可在界面選擇:關閉、每小時、每 3/6/12 小時、每天、每 3/7 天。備份文件名形如 mnemon-sync-<設備名>-2026-11-09T01-20-27.875Z.zip,設備名來自 dsh-mnemon 的 state/machine.json,便於多臺機器寫入同一遠端目錄時區分來源。

一致性方面:數據庫通過 node:sqlite 的在線 backup() 生成副本;每個文件記錄 SHA-256,上傳前與恢復前各校驗一次;恢復默認僅預覽,確認後才寫盤。憑據保存在 DSH profile 之外的 0600 權限文件中,不會打進歸檔包。插件無除 Node 以外的運行時依賴。

安裝與啓用

將 web 換成你實際使用的 profile 名稱,安裝後需重啓該 profile:

dsh plugin --profile web add @summerscar/dsh-mnemon-sync

若希望在 DSH 內瀏覽插件列表,可先啓用實驗性的 Custom Plugin Market,在 Plugins → Discover → Add index source 中填入索引地址:

https://raw.githubusercontent.com/summerscar/dsh-plugins/main/index.json

安裝前 DSH 會要求確認。索引源也用於後續列表更新。

Desktop 版:在桌面應用自帶的插件界面安裝即可。desktop profile 由 Electron 應用獨佔管理,命令行執行 dsh plugin --profile desktop 會被 DSH 拒絕,這是 Harness 自身的限制,與本插件無關。

典型用法

  1. 執行上述安裝命令並重啓 DSH。
  2. 打開記憶系統,進入「同步備份」。
  3. 勾選需要備份的組件,選擇 S3 或 WebDAV,並設置自動備份間隔。
  4. 在備份列表中查看遠端已有歸檔,按需預覽並選擇要恢復的組件。

界面配置持久化在:

<MNEMON_DATA_DIR>/state/mnemon-sync.json

權限爲 0600,不寫入 DSH 主配置,也不會進入備份 zip。

S3 / Cloudflare R2 示例字段:

字段 示例
Endpoint https://<account-id>.r2.cloudflarestorage.com
Bucket my-mnemon-backup
Region auto
Access Key ID 你的 R2 Access Key
Secret Access Key 你的 R2 Secret
強制 path-style R2、MinIO 通常需要勾選

WebDAV 示例字段:

字段 示例
地址 http://192.168.100.134:5005
用戶名 你的 WebDAV 賬號
密碼 你的 WebDAV 密碼
遠端目錄 config-backup/mnemon-sync

頁面對密鑰只顯示掩碼;提交時若仍爲掩碼則表示不修改原值,更換密鑰需直接填寫新值。

若安裝後看不到標籤頁,可按文檔排查:重啓 DSH;確認 dsh-mnemon 已安裝且版本不低於 0.5.40;確認 dsh.profile.bundles 包含 @summerscar/dsh-mnemon-sync;必要時強刷瀏覽器緩存(Ctrl+Shift+R)。

適用場景與注意

適合已經在用或計劃用 dsh-mnemon、且希望把記憶數據同步到自有對象存儲或 NAS WebDAV 的開發者。定時備份適合多機共用同一遠端目錄、需要可驗證快照的場景;選擇性恢復適合只回滾某一類組件(例如只還原項目檔案)的情況。

DSH 生態以「一切皆插件」爲方向,社區目錄(例如 SkillHub 上的插件頁)與 DeepSeek / 幻方無官方從屬關係,安裝來源以維護者公佈的 npm 包與文檔爲準。

請注意:插件以當前 DSH 進程的權限運行,會讀寫本機記憶目錄並訪問你配置的遠端存儲。安裝前應閱讀源碼與許可證(SATA 2.1),並自行評估憑據與備份策略。保留份數按插件運行記錄保留最新 N 個,超出後刪除最舊記錄對應的對象,文檔說明該邏輯不會主動 LIST 整個遠端目錄來對齊。

小結

@summerscar/dsh-mnemon-sync 在 dsh-mnemon 本地記憶之上補上異地備份與按組件恢復,用 SHA-256 與 SQLite 在線備份降低拷貝不一致的風險。安裝命令固定爲 dsh plugin --profile <name> add @summerscar/dsh-mnemon-sync,配置與操作集中在記憶系統的「同步備份」頁。

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

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

小夜