前言¶
在多台机器上使用 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 进程权限运行。
首次配置¶
- 在 GitHub 上创建一个空的私有仓库(或在插件页面使用「创建」生成私有仓库)。
- 连接 GitHub:若已安装并登录
gh(gh auth login),可自动使用令牌;否则粘贴 scope 为repo的 PAT,点击连接/校验。 - 填写仓库 URL、分支,勾选需要同步的类别并保存。
- 点击 「捕获并推送」,生成首次提交。
- 使用 「检查密钥/敏感信息」 查看可能含敏感字符串的位置;仓库必须保持私有——向公开仓库 push 会被 GitHub API 校验拦截。
第二台机器¶
- 用上述命令安装同一插件;
- Settings → 同步 → 连接 GitHub → 填写私有配置仓库 URL;
- 执行 「拉取」 → 「应用并安装插件」 → 重启 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 插件页。