DSH Home Sync: Syncing DSH Configuration and Mnemon Memory Data with Git

前言

在多台机器上使用 DeepSeek Harness(DSH)时,Web 侧配置、Cordis 补丁以及 Mnemon 记忆插件里的内容往往只留在本机目录里。手工拷贝容易漏文件,也说不清哪台是最新。社区插件 dsh-home-sync(维护者 OverDustD7,分类:记忆)把 DSH 主目录里允许同步的文件纳入 Git 仓库,支持拉取、推送到远端、定时双向同步、冲突检测与 Web 界面操作,并附带设备初始化时的备份与恢复说明。

这是什么

dsh-home-sync 的定位是:基于 Git 的 DSH 配置与 Mnemon 记忆插件数据同步工具,具备自动双向同步、跨设备迁移、初始化备份、冲突检测和 Web UI。插件以 npm 包 dsh-home-sync 发布(MIT 许可证),仓库地址为 OverDustD7/dsh-home-sync;社区目录页见 SkillHub 条目。SkillHub 上该仓库星标为 1。

运行环境要求 Node.js 20 及以上 与 Git;DSH 宿主需提供 webServer、timer 和 connection.requestRejection。README 记载本地验证组合为 DSH 0.1.2-rc.1、Node.js 24.20.0、Git 2.55.0.windows.4。

同步范围与边界

纳入同步的典型路径包括:

  • 根目录:.gitignore、settings.yaml、cordis.patch.yml
  • profiles/web/ 下:package.json、pnpm-lock.yaml、pnpm-workspace.yaml、cordis.yml、cordis.patch.yml、.dsh-market/state.json
  • mnemon/ 下非隐藏文件,但会排除路径组件名为 data、state、credential、credentials、secret、secrets 的目录,以及以 .log、.wal、.shm 结尾的文件

凭证、会话、附件和 node_modules 不会进入提交;若禁止同步的文件已被暂存或跟踪,同步会被阻塞。推送前插件会审计即将发布的提交及其树(最多 1000 个提交);审计范围内一旦出现禁止文件,即使之后已删除也会阻止推送。插件不会改写允许文件内的字段——不应把不想上传的内容写进会同步的配置或记忆文件里。

核心行为

下面介绍 README 中描述的几种操作方式。

Pull(拉取) 检查远端并尝试 fast-forward;分支已分叉或可能覆盖本地改动时会失败,且不会自动生成本地提交。操作会显式关闭 merge.autoStash,避免 stash 恢复冲突却报告成功。

Sync to remote(同步到远端) 会拉取并校验远端树、提交允许的本地改动、整合远端变更并推送;即使工作区干净,也会重试尚未推送的提交。

Automatic sync(自动同步) 按配置间隔执行完整同步周期;无本地改动时也会检查远端。保存开关或间隔会立即重建定时任务;同步进行中,配置保存等写请求会返回 busy。

检出分支须与配置分支一致;分叉分支可用常规 Git merge 整合。若出现内容冲突,插件会在推送前停止、中止未完成的 merge 并保留本地提交,需人工解决后再试,不会自动 force-push。

状态约每 15 秒刷新,区分未提交文件、待推送/待拉取提交与读失败。操作结果有 toast 提示;操作历史 默认折叠,可展开查看备份路径与恢复说明。最近最多 100 条手动与后台操作记录在 <DSH_HOME>.home-sync-history.json,不参与 Git 同步。当前 Web 界面标签为中文。

若跟踪引用 refs/dsh-home-sync/branches/<branch> 因宿主进程异常而损坏,下次同步会删除损坏的 ref 并重新 fetch,提示「已修复损坏的跟踪引用并重新拉取。」

设备初始化

初始化两种模式都会创建备份。merge 模式表示 先备份、再重置、再人工合并,不会自动合并两套记忆。

经过上面的步骤概括,流程为:

  1. 在独立临时仓库 fetch 远端,校验目标路径与文件类型
  2. 检查本地路径冲突,备份可能被覆盖或删除的文件、原有 Git 元数据与插件配置
  3. 确认备份期间本地文件未变,应用允许的文件,配置目标分支、origin 与 upstream
  4. 成功后暂停自动同步与启动时拉取,便于检查结果、手动合并后再开启自动化

初始化支持新目录、已 git init 但尚无首次提交的独立仓库,以及将现有环境切换到 unrelated history 的远端。成功响应会返回实际配置,UI 会立即更新自动同步开关;初始化会重置 settings,表单会被服务端配置替换。备份位于 <DSH_HOME>.home-sync-backups/init-*,在同步范围之外。

安装与启用

DSH 生态里插件通过 dsh plugin 安装;社区目录 SkillHub 与 DeepSeek / 幻方无官方从属关系,安装前建议查看源码与 MIT 许可证。插件以当前 DSH 进程权限运行,同步内容会进入你配置的 Git 远端,请自行评估仓库可见性与凭据安全。

从 npm 安装(推荐)

dsh plugin --profile web add dsh-home-sync

安装后重启 DSH Web,并刷新浏览器以加载 UI。发布包无需构建步骤或第三方依赖。

从 GitHub 安装

dsh plugin --profile web add github:OverDustD7/dsh-home-sync

本地 link 开发

dsh plugin --profile web add link:D:/Project/DSH/dsh-home-sync

后端改动后需重启 DSH Web,UI 改动后刷新浏览器。link: 会直接读取源目录,不要用临时解压目录作为长期 link 目标。

离线 / air-gapped 环境

在可联网机器打包:

npm pack --pack-destination dist

在目标机、归档所在目录执行:

dsh plugin --profile web add ./dsh-home-sync-0.2.3.tgz

若包管理器无法安装本地 tarball,可解压到固定目录,对解压后的 package 子目录使用 link: 安装。

典型用法

  1. 按上文命令以 --profile web 安装插件并重启 Web。
  2. 在 Web UI 中配置 Git 远端 URL、分支,以及是否启用自动同步与间隔。
  3. 新设备或新目录:使用初始化流程,按提示选择模式;merge 模式下在暂停自动同步期间人工合并记忆后再开启自动化。
  4. 日常在一台机器改配置或 Mnemon 允许同步的文件后,使用「同步到远端」;其他设备用 Pull 或依赖自动同步拉取。
  5. 若状态显示分叉或冲突,按 UI 与操作历史中的备份路径在本地 Git 中解决,再重试同步。

所有 HTTP 数据接口使用宿主认证与 Host/Origin 校验;无该服务时插件不会激活。POST 仅接受 JSON。

适用场景与注意

适合需要在多台电脑或重装系统后恢复 同一套 DSH Web 配置与 Mnemon 可同步记忆文件 的开发者。不适合把密钥、会话或未排除的敏感路径交给 Git 远端——插件有明确的排除与推送审计规则,但不会在允许的文件内做脱敏。

推送只更新所选分支,不自动跟随 tag 或镜像其他引用;多远端推送不是单一事务,部分失败需重试。符号链接、硬链接、子模块、主目录外路径等会被拒绝。Git 子进程带超时与非交互凭据设置;hooks 与 commit 签名仍遵循本机 Git 配置。

结尾

dsh-home-sync 把 DSH 主目录里经过白名单与审计的配置、Mnemon 记忆数据纳入 Git 工作流,用 Pull、推远端、定时同步和初始化备份降低跨设备迁移成本。详情以仓库 README 为准。

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

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

Xiaoye