dsh-settings-sync:用私有 GitHub 仓库同步 DSH 配置与插件

前言

在多台机器上使用 DeepSeek Harness(DSH)时,常见做法是手动拷贝 ~/.dsh 里的配置、MCP 定义和插件清单。配置一多,容易漏文件、路径不一致,本地 link: / file: 插件也更难对齐。下面介绍的 dsh-settings-sync 由社区维护者 antonbru 发布,思路类似 VS Code Settings Sync:把 DSH 的「可迁移配置面」放进私有 GitHub 仓库,在另一台机器上拉取并应用。

这是什么

dsh-settings-sync 是 DSH 的客户端插件(分类:客户端)。它不负责托管你的业务代码,而是同步 DSH_HOME(通常为 ~/.dsh)里与配置、插件生态相关的文件,并在应用前做备份、在路径上做 ${DSH_HOME} / ${HOME} 占位符替换,便于跨机器恢复。

插件公开仓库:https://github.com/antonbru/dsh-settings-sync。社区目录页:https://www.skillhub.cn/plugins/antonbru/dsh-settings-sync。SkillHub 为独立插件目录站点,与 DeepSeek / 幻方无官方从属关系。

当前 package 版本为 0.1.0,许可证 MIT;基于 dsh-config-sync(MIT)。运行要求:Node >= 22.5,DSH >= 0.2.1-rc.2。

同步范围

插件按类别读写仓库中的快照。相对路径均相对于 DSH_HOME。

类别 路径
设置与 MCP profiles/<profile>/cordis.patch.yml、settings.yaml
插件清单 profiles/<profile>/package.json、pnpm-lock.yaml、pnpm-workspace.yaml
本地插件 link: / file: 依赖的源码 → 仓库内 <repo>/plugins/<name>/
技能 skills/**
全局指令 AGENTS.md
其他(若存在) agents/**、pet.json、skin-center-active.json

不会同步(避免泄露会话与运行时数据):.credentials.yaml、.env、sessions/、storages/、cache/、attachments/、dsh-runtimes/、node_modules/、.git、.plugin-manager/。

上传时会将本机绝对路径替换为 ${DSH_HOME} 与 ${HOME};应用时再展开为当前机器路径。

安装与启用

在 DSH 中安装插件 bundle(示例 profile 为 desktop,以你本地为准):

plugin_manager install_bundle target=github:antonbru/dsh-settings-sync

完整 URL 形式:

plugin_manager install_bundle target=https://github.com/antonbru/dsh-settings-sync.git

安装完成后,在客户端打开 Settings → 同步 进行后续配置。

安全说明: 存放同步内容的 GitHub 仓库应设为私有——MCP 等配置里可能含令牌;公开插件仓库本身不含你的令牌。GitHub 访问令牌仅保存在本地 ~/.dsh/settings-sync/settings.json(权限 0600),不会进入 patch 或远程仓库。安装任何 DSH 插件前,建议自行查看源码与 LICENSE;插件以当前 DSH 进程权限运行。

首次配置

  1. 在 GitHub 上创建一个空的私有仓库(或在插件页面使用「创建」生成私有仓库)。
  2. 连接 GitHub:若已安装并登录 gh(gh auth login),可自动使用令牌;否则粘贴 scope 为 repo 的 PAT,点击连接/校验。
  3. 填写仓库 URL、分支,勾选需要同步的类别并保存。
  4. 点击 「捕获并推送」,生成首次提交。
  5. 使用 「检查密钥/敏感信息」 查看可能含敏感字符串的位置;仓库必须保持私有——向公开仓库 push 会被 GitHub API 校验拦截。

第二台机器

  1. 用上述命令安装同一插件;
  2. Settings → 同步 → 连接 GitHub → 填写私有配置仓库 URL;
  3. 执行 「拉取」 → 「应用并安装插件」 → 重启 DSH。

日常使用

  • 「同步」:捕获本地变更、拉取远程;有差异则应用并推送。
  • 「捕获并推送」:仅上传本地快照。
  • 「拉取」:仅 git pull。
  • 「应用并安装插件」:将快照写入 ~/.dsh,恢复本地插件并执行 pnpm install;写入前会备份,完成后需重启 DSH。
  • 「回滚最近一次备份」 与 「历史」(从指定 commit 恢复):应用失败时使用。
  • 「检查密钥/敏感信息」:按模式扫描(如 Bearer、ghp_、sk-、token/password = …)。

备份目录:~/.dsh/settings-sync/backups/<时间>/。

自动同步

  • 启动 DSH 时拉取并应用远程:当远程有新 commit 时生效。
  • 每 N 分钟捕获变更 + 立即推送:适合在一台「主机器」上开启自动推送,避免多机同时 force 推送。

分支分歧与 Agent 接口

本地 clone 与 origin 不一致时,pull 会返回 diverged。页面会出现 「分歧」 处理区块:

  • 采用远程:将本地仓库重置到 origin/<branch>(在「应用」前不直接改 live 配置);
  • 推送本地:git push --force-with-lease。

智能体侧可使用工具 settings_sync,动作包括 status、push、pull、apply、sync、history、restore、scan;或命令 /sync status|push|pull|apply|sync|history|scan。

限制与适用场景

适合需要在 macOS / POSIX 环境间对齐 DSH 配置、MCP、插件列表与 skills 的开发者。Windows 上符号链接会以复制代替,本地插件源路径需可写。

pnpm install 优先使用 DSH_HOME/dsh-runtimes 内的 Node/pnpm;缺失时回退系统 node / pnpm。配置冲突不做逐行 merge,只能整侧选择。聊天会话与历史不同步。

结尾

dsh-settings-sync 把 DSH 的可迁移配置集中进私有 Git,减少手工拷贝与漏项。详情与 issue 见 GitHub 仓库,目录介绍见 SkillHub 插件页。

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

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

小夜