dsh-cloud-sync:把 DSH 配置与技能同步到任意 WebDAV

前言

DSH 的插件生态采用「索引源」模式,没有全网搜索。别人要用这个插件,需要先把索引地址加进市场,然后在市场里搜「云同步」。dsh-cloud-sync 把 DSH 的可移植配置备份 / 同步到任意 WebDAV(默认坚果云,也兼容 Nextcloud、群晖、ownCloud、AList),零第三方依赖。

这是什么

dsh-cloud-sync 是 doraasn 维护的 DSH 插件,属于「联网工具」分类。它解决的问题是:如何把 DSH 的技能、插件源码、全局指令、模型凭据等可移植配置,安全地备份到自己的云存储,并在需要时恢复到另一台设备。

核心功能

  • 支持同步多个段落:本机技能、共享技能、DSH 配置与插件清单、本地插件源码、全局指令、模型凭据(可选加密)
  • 默认不打码明文密钥,只在值「像真密钥」时打码(长度 ≥ 16、无 $ % < {)
  • 加密凭据支持 scrypt + AES-256-GCM,口令来自凭据槽
  • 提供命令行与图形界面,行为一致
  • 提供 WebDAV 集成:默认坚果云,也兼容 Nextcloud、群晖、ownCloud、AList

安装与启用

DSH 的插件市场是「索引源」模式,没有全网搜索:别人要用,需要把这个索引地址加进去,然后在市场里搜「云同步」。

方式一:加索引源(推荐)

  1. DSH 打开 插件 → 发现 → 索引源 → 添加
  2. 粘贴:
https://raw.githubusercontent.com/doraasn/dsh-plugins-index/main/market-index.json
  1. 选中该市场,搜「云同步」或 cloud-sync,点安装。

该索引同时收录 doraasn 名下的其他 DSH 插件(额度看板、Web Chat、移动访问设置)。

方式二:命令行直接装(git)

dsh plugin --profile desktop add "git+https://github.com/doraasn/dsh-cloud-sync.git#7c98449c892c857d190422b8b6e594241ea83a99"

装完把 dsh-cloud-sync 加进该 profile package.json 的 dsh.profile.bundles,再重启 DSH(install.ps1 会自动做这两步)。

尚未发布到 npm(dsh-cloud-sync 这个名字在 npm 上已被占用),所以走 git 源。索引统一维护在 dsh-plugins-index,本仓库不再放 market-index.json。

典型用法

在任意会话里:

/csync secret <WebDAV 应用密码>         # 写入 DSH 凭据槽,不落配置文件
/csync config username 你的邮箱@example.com
/csync status                          # 看连通性与远端快照
/csync push --dry-run                  # 先看会打包什么,不上传
/csync push                            # 真正上传

应用密码按服务生成:坚果云在「账户信息」的「安全选项」里新增「第三方应用管理」的应用密码;Nextcloud 在「设置」的「安全」里生成「设备专用密码」;群晖用账号密码或应用专用密码。

装好后在「设置」里打开 云同步(settings.section 插槽)。卡片分四组:

  • 连接:WebDAV 地址、账号、应用密码(+「保存」写入凭据槽)、远端目录
  • 备份内容:六个开关,见下表;勾选即保存
  • 动作:立即上传、预览备份内容、预览恢复
  • 远端快照:每份快照的名称 / 大小 / 时间,逐条「预览恢复」

「备份内容」各开关对应的实际路径:

开关 内容 路径
本机技能(~/.dsh) DSH 自有技能 $DSH_HOME/skills
共享技能(~/.agents) 多个工具共用的技能目录 $DSH_AGENTS_HOME/skills(默认 ~/.agents/skills)
DSH 配置与插件清单 DSH 全局设置(模型 provider、权限预设、主题偏好)、插件与 MCP 条目、锁文件 profiles/<name>/ 下的 cordis.patch.yml、cordis.yml、package.json、pnpm-workspace.yaml、pnpm-lock.yaml
本地插件源码(link) link: 依赖指向的插件源码(market 插件可从 registry 重装,不必打包) 各 link: 目标目录
全局指令(AGENTS.md) 每次会话都会读取的全局指令 $DSH_HOME/AGENTS.md、$DSH_AGENTS_HOME/AGENTS.md
模型凭据(加密) 各模型 provider 的 API key $DSH_HOME/.credentials.yaml(加密后进包)

动作区:立即上传(主按钮)、预演打包、刷新快照、预演最新快照恢复;恢复必须先预演,预演结果里再点「确认恢复到本地」。

上传/恢复进行中会显示阶段与计时(依次为:正在收集文件、正在打包与校验、正在上传到云端、正在清理旧快照),期间按钮全部禁用;结束后用结构化卡片给出快照名、大小、文件数、耗时、各段落统计、跳过的大文件与占位符提示。

卡片与命令走同一份实现(lib/actions.js),因此两端行为一致。宿主暴露的接口:

方法 路径 作用
GET /cloud-sync/api/state 配置(脱敏)、凭据槽状态、远端快照、上次推送、当前进度
POST /cloud-sync/api/action { args: ["push"] } 形式的子命令调用

命令

命令 作用
/csync / /csync status 配置、凭据槽、远端快照、上次推送总览
/csync config 打印全部配置
/csync config <键> <值> 改一项(值支持 JSON,例如 sections '["skills","mcp"]')
/csync secret <口令> 写入凭据槽
/csync push [--dry-run] 打包并上传,附带保留策略清理
/csync list 列远端快照
/csync diff [快照名] 下载并预演恢复计划(零写入)
/csync pull [快照名] --yes 真正落盘恢复(先自动备份,失败回滚)
/csync prune 按保留份数清理远端

配置键

键 默认 说明
baseUrl https://dav.jianguoyun.com/dav/ WebDAV 根地址
username 空 WebDAV 登录邮箱或用户名
passwordRef CLOUD_SYNC_PASSWORD 口令所在的凭据槽名
remoteDir dsh-sync 远端目录(相对 baseUrl)
sections skills,agentsSkills,mcp,instructions 同步段落
exclude [] 额外 glob 排除,如 ["artifact-template-*/**/assets/**"]
excludeBinaries true 排除 exe/dll/压缩包等
maxFileBytes 0 单文件上限,0 = 不限
keep 5 远端保留份数(界面不暴露,prune 用)
includeSecrets false 是否打包 .credentials.yaml(加密)
secretPasswordRef CLOUD_SYNC_SECRET_PASSWORD 加密口令槽
redact true 是否打码明文密钥(关掉则按原样进包)
autoSyncHours 0 定时自动推送间隔(小时),0 = 关闭;失败只记日志不打断会话

故障与回滚

  • DSH 起不来:启动失败弹窗第 3 个按钮「禁用第三方插件、备份 profile patch 并重启」。
  • 卸载:退出 DSH 后执行 uninstall.ps1,或手工从 ~/.dsh/profiles/desktop/package.json 删掉依赖与 dsh.profile.bundles 里的 dsh-cloud-sync。
  • 恢复失败:applyRestore 会自动回滚;恢复前的原件复制在 $DSH_HOME/cloud-sync/backup-<时间戳>/。

已知限制

  1. 密钥是否需要手填取决于口令:有口令则 __ENC__ 令牌在恢复时自动还原;无口令则为 __SECRET__,需按提示重填。
  2. 单文件默认不设上限;WebDAV 服务端通常限制单文件 500 MB,超过仍需用 exclude 排除。
  3. 图形卡片挂在设置分区 settings.section;若该插槽在你的 profile 里不可用,会退化为侧栏底部入口。
  4. 恢复技能与 MCP 后需要重启 DSH 才完全生效。

适用场景与注意

适合需要在不同设备间迁移 DSH 配置、技能和全局指令的开发者。使用前应检查源码与许可证,确认符合项目要求。

结尾

dsh-cloud-sync 把 DSH 的可移植配置备份 / 同步到任意 WebDAV,零第三方依赖,默认坚果云,兼容 Nextcloud、群晖、ownCloud、AList。查看目录页与源码:

  • https://www.skillhub.cn/plugins/doraasn/dsh-cloud-sync
  • https://github.com/doraasn/dsh-cloud-sync
羽毛球分组比赛记分
小程序二维码

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

Xiaoye