前言¶
在 DeepSeek Harness(DSH)里开发智能体时,profile 往往不只一套 JSON:已装插件、各插件的 cordis.patch.yml、pnpm 锁文件、本地 link:/file: 插件源码,以及可选的 skills 目录,都会随机器和环境变化。手工拷贝目录容易漏项,也无法区分「哪台机器改动了哪一份文件」。社区插件 dsh-anywhere-sync(维护者 j1kwen,分类:联网工具)把上述内容投影到一个私有 Git 仓库,每台机器在下次 sync 时按策略合并,使多台 DSH 环境收敛到同一套可版本化的配置。
这是什么¶
dsh-anywhere-sync 通过一台私有 Git 远程仓库,同步 Harness profile 中的插件清单、插件配置、依赖锁、本地插件源码、skills 及其他 profile 文件。六项同步内容各自独立开关;在一台机器上的变更会在其他机器执行 sync 时落地。插件当前版本为 1.4.1(MIT 许可证),依赖 Node.js 20+ 与系统上的 git,并需要带 Web UI 的 Harness。
核心功能¶
下面介绍 README 中已写明、且与实现一致的能力。
六项可选同步项¶
| 项目 | 本地来源 | 仓库路径 | 默认 |
|---|---|---|---|
| 插件清单 | <profile>/package.json |
profile/<profile>/package.json |
开 |
| 本地插件源码 | link: / file: / 绝对路径依赖对应目录 |
local-plugins/<package>/… |
开 |
| 插件配置 | <profile>/cordis.patch.yml |
profile/<profile>/cordis.patch.yml |
开 |
| 插件数据 | 设置页列出的 $DSH_HOME 下路径 |
plugin-data/<path> |
开 |
| 依赖锁 | pnpm-lock.yaml、pnpm-workspace.yaml |
同路径结构 | 开 |
| 其他 profile 文件 | presets、config.toml 等 |
profile/<profile>/… |
关 |
| Skills | ~/.agents/skills/、.skill-lock.json |
skills/… |
关 |
关闭某一项时,该项不会被读取、写入或删除。即便开启「其他 profile 文件」,形如 .env*、*credential*、id_rsa*、.npmrc 等疑似凭据的文件仍会被排除。
三路比较与冲突¶
同步时对每个文件比较 本地、远程 与 上次 sync 的 base hash:只有两侧相对 base 都改过才算冲突。冲突策略默认为远程优先,也可选本地优先,或在设置页保留冲突并按文件选边。
覆盖前备份与自动同步¶
每次覆盖本地文件前会备份,最近 10 次保存在 $DSH_HOME/anywhere-sync/backups/。可配置定时间隔 sync、启动时 sync,以及在拉取变更后的插件清单后自动安装依赖。
本地插件与路径无关的仓库¶
推送前会把 package.json 与锁文件中的 link:、file:、workspace: 及绝对路径依赖投影成可移植形式,仓库里不写各机器的安装路径。其他本地插件源码存放在 local-plugins/<package>/;pull 后写回本机 link 目录或 $DSH_HOME/anywhere-sync/local-plugins/。本插件默认不参与同步,避免开发版覆盖另一台机器上的 GitHub 安装版;其设置保存在 $DSH_HOME/anywhere-sync,不会进共享仓库。
Agent 工具与设置页¶
Agent 工具 anywhere_sync 提供与 UI 一致的 status、sync、pull、push、install 操作;工具不能读取 token、不能改仓库 URL 或同步项开关。人类操作入口在 Settings → Config Sync:状态、分项文件列表、冲突处理与安装/同步控制。
安全要点¶
Token 仅存本机 $DSH_HOME/anywhere-sync/credentials.json(权限 0600),经 scoped GIT_ASKPASS 交给 git,不会写入仓库或日志。也可使用环境变量 ANYWHERE_SYNC_TOKEN、GH_TOKEN、GITHUB_TOKEN。除配置的 Git 远程外无遥测或额外出站请求。
安装与启用¶
环境要求:带 Web UI 的 DeepSeek Harness、Node.js 20+、git。
从插件目录安装(社区常用方式):
dsh plugin --profile desktop add j1kwen/dsh-anywhere-sync
从本地 checkout 或 release 包安装:
dsh plugin --profile desktop add /path/to/dsh-anywhere-sync
安装后重启 Harness,打开 Settings → Config Sync。若页面空白,按文档先重启;客户端 bundle 需在重启后加载。
典型用法¶
下面步骤来自官方 Quick start,可在两台机器上复现。
- 新建一个用于同步配置的 私有 Git 仓库。
- 创建 Personal Access Token:classic 需
repo权限;fine-grained 需对该仓库 Contents 读写。 - 在 Settings → Config Sync 填写仓库 URL、分支与 token,选择 Save and connect。
- 选择 Sync now。在另一台机器安装同一插件、填写相同仓库与 token 后执行 sync。
- 按需开启 Scheduled sync 或 Sync on startup,保持多机一致。
若 pull 改变了插件 manifest,需要先完成依赖安装并重启 Harness,新插件才会加载。新机器仍需各安装一次本插件以进入设置页并完成首次 sync。
插件数据默认可同步 dsh-whale-widget 的部分 JSON(外观、气泡布局、自定义模型注册等);账本与按轮次统计等整文件同步会混台机器的数据,默认不包含,可在 UI 中按需添加其他相对 $DSH_HOME 的路径。
适用场景与注意¶
适合:在台式机、笔记本或多套开发环境中使用同一 DSH profile;需要版本化插件组合与 cordis.patch.yml;使用 link:/file: 本地插件并希望在仓库中携带源码而非每台机器单独 clone。
注意:
- 插件以当前 DSH 进程权限运行,安装前应阅读 GitHub 源码 与 MIT 许可证,自行评估私有仓库与 token 的保管方式。
- 共享仓库应设为私有;token 仅本机保存,勿提交进 Git。
- DSH 社区插件目录为独立站点 SkillHub 上的插件页,与 DeepSeek / 幻方无官方从属关系;生态理念是「一切皆插件」,本插件是其中的联网类配置同步工具。
结尾¶
dsh-anywhere-sync 把 Harness profile、插件清单与配置、锁文件和本地插件源码收敛到一个私有 Git 仓库,用分项开关与三路合并降低多机拷贝的配置漂移。查阅说明与 issue 可访问 GitHub 仓库,在目录站查看条目:https://www.skillhub.cn/plugins/j1kwen/dsh-anywhere-sync。