dsh-plugins-git-sync:用 Git 仓库备份与多设备同步 DSH 插件

前言

在 DeepSeek Harness(DSH)里,插件和配置往往随使用慢慢变多:换电脑、重装客户端,或想在两台机器上保持同一套环境时,很难靠记忆还原「装了哪些包、什么版本、开关和配置怎么设」。手工导出清单再逐条安装,既慢也容易漏。

下面介绍社区插件 插件备份(包名 dsh-plugins-git-sync,维护者 songni370)。它把用户自行安装的第三方插件及其版本、启用状态和配置,以普通 JSON 写入你指定的 Git 仓库,支持备份、恢复、双向同步与按提交回滚;Token 等敏感信息不上传,只同步经过滤的配置字段。插件在 SkillHub 分类为联网工具,仓库地址:GitHub、SkillHub 目录页。

这是什么

dsh-plugins-git-sync 是 DSH 的 Git 同步插件:用你自己的 Git 仓库备份、恢复,并在多台设备之间同步 DSH 插件与配置。备份内容可用 Git 工具直接查看、对比和回滚。

同步范围仅限用户后装的第三方插件。DSH 内置插件、加载器内部条目(cordis:*)以及本插件自身都不会进入备份。

核心功能

备份与恢复

把本机用户安装的插件(版本、启用状态、配置)推到仓库;换设备时按仓库清单装回来。

双向同步与冲突

本机改动可上传、仓库改动可下载;两边都改且结果不同时会停下来让你选择,不自动裁决。冲突时可选择:用本机覆盖仓库、用仓库覆盖本机,或先不处理;每个选项下方会说明会发生什么。本机已卸载而仓库仍有备份时,需明确选择「从仓库删除」或「保留仓库」。

同步逻辑基于本机保存的基线(base),比较 base / 本机 / 仓库 三方:仅本机变则推送;仅仓库变则应用到本机;两边都变且不同则为冲突;本机有、仓库没有时会补齐仓库,不会因此删除本机插件;删除仓库条目属于破坏性操作,确认后才会执行。改本机前会创建快照;推送被其他设备抢先时会重新拉取并重试,不会 force push;没有需要更改的内容时不会产生空提交。

历史回滚

可按时间查看提交列表,选择任意一次提交,将本机恢复到当时状态。

自动同步

默认关闭。开启后由事件触发,没有定时器:

  • 打开客户端:可配置延迟(默认 15 秒;低于 5 秒会提示可能与 DSH 启动时的插件安装冲突)。
  • 插件安装 / 更新 / 卸载后:防抖约 10 秒触发一次。

自动同步遇到冲突或破坏性计划会暂停并写日志,等待手动处理,不会弹窗、也不会静默删除。

Agent 工具

提供 6 个工具(名称沿用 dsh_git_plugin_*),供 Agent 查看状态、备份、恢复、同步、检查差异、查历史。破坏性操作需两阶段确认:先预览,再带 confirm: true 执行。

工具 作用
dsh_git_plugin_status 查看状态、差异数量、最近错误
dsh_git_plugin_backup 备份到仓库
dsh_git_plugin_restore 从仓库/历史提交恢复
dsh_git_plugin_sync 双向同步
dsh_git_plugin_diff 只读差异预览
dsh_git_plugin_history 查看历史提交与快照

安全与限制

  • 不读取、不上传 Token、密码、私钥、Cookie;HTTPS 认证只保存环境变量名,令牌值放在环境变量中。
  • 不写机器绝对路径;配置按敏感字段/值过滤后再写入仓库(尽力过滤,非严格白名单)。
  • 每个 DSH Profile 需分别安装、分别同步;仓库内按 profiles/<profile>/ 分目录存放。
  • 本地开发插件(无 npm 安装来源)可以记录,其他设备无法自动安装。
  • 只同步版本/启停/配置,不负责查最新版本或代替插件市场升级。

界面入口

在 设置 →「插件备份」(英文界面为 Plugin Backup)配置;插件页侧边栏「插件」也可显示「备份」标签,内容相同。页面上提供仓库配置、测试连接、同步 / 检查差异 / 备份到 Git / 从 Git 恢复 等操作,以及同步状态磁贴与自动同步开关。未配置仓库时不会后台同步。

安装与启用

推荐从 npm 安装(需 Node.js >= 22.19.0,以 package.json 中 engines 为准):

dsh plugin --profile web add dsh-plugins-git-sync@latest

也可在 DSH 插件管理器或 Agent 的 plugin_manager.install_bundle 中使用包名 dsh-plugins-git-sync。

更新:

dsh plugin --profile web update dsh-plugins-git-sync@latest

从 GitHub 源码安装时,spec 可为 git+ssh://git@github.com:songni370/dsh-plugins-git-sync.git 或 HTTPS 形式 https://github.com/songni370/dsh-plugins-git-sync.git;仓库已包含构建产物 lib/,一般无需本地构建。安装后重启 DSH 或刷新页面。

插件以当前 DSH 进程权限运行;安装前建议阅读 源码与 MIT 许可证,自行评估是否满足环境要求。

典型用法

  1. 在 GitHub、GitLab 等创建私有空仓库(建议不要勾选自动生成 README)。
  2. 打开 设置 →「插件备份」,填写仓库地址:
    - HTTPS:选择 Git 凭据助手,或选「HTTPS 令牌」并填写保存令牌的环境变量名。
    - SSH:使用系统 SSH Agent 或 ~/.ssh 密钥,无需在插件里额外填写私钥。
  3. 点「测试连接」→ 保存。
  4. 点「同步」,第一次会生成初始备份并推送。
  5. 第二台设备:安装本插件 → 填同一仓库与认证方式 → 保存 → 点「同步」或「从 Git 恢复」。

数据与状态默认位于 $DSH_HOME/dsh-plugins-git-sync/(配置、状态、日志、工作副本、快照)。从旧目录 $DSH_HOME/dsh-git-plugin-sync/ 升级时会自动沿用旧目录;卸载插件不会自动删除该目录。

适用场景与注意

适合:需要在多台机器或重装后快速对齐 DSH 插件清单与配置、并希望通过 Git 历史做审计与回滚的开发者。

注意:

  • SkillHub 等社区目录与 DeepSeek / 幻方无官方从属关系,插件来自社区维护者,使用前请核对仓库与许可证。
  • 联网与 Git 操作依赖你配置的仓库与凭据;自动同步无定时器,不能替代定期人工检查冲突日志。
  • 多 Profile 环境要为每个 Profile 单独安装并同步,避免误以为一个仓库会覆盖所有 Profile。

结尾

dsh-plugins-git-sync 把 DSH 第三方插件环境当成可版本化的 JSON 清单,交给熟悉的 Git 工作流管理,减少换机与多设备协作时的重复劳动。进一步了解实现细节可见仓库内的 docs/ARCHITECTURE.md、docs/SECURITY.md。

  • 目录页:https://www.skillhub.cn/plugins/songni370/dsh-plugins-git-sync
  • GitHub:https://github.com/songni370/dsh-plugins-git-sync
羽毛球分组比赛记分
小程序二维码

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

Xiaoye