@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,配置与操作集中在记忆系统的「同步备份」页。

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

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

Xiaoye