dsh-icloud-sync:用 iCloud Drive 在多台 Mac 间同步 DSH 配置与会话

前言

DeepSeek Harness(DSH)的配置分散在 profile 目录、插件清单和 skills 里;换一台 Mac 或在家与公司各用一台机器时,手工拷贝容易漏文件、版本对不齐。Git 可以管仓库,但 profile、package.json 锁文件、.dsh-market/state.json 以及 ~/.agents/skills/** 并不总是适合用同一套 Git 流程。下面介绍社区插件 dsh-icloud-sync(维护者 mkoalade),它通过 Apple iCloud Drive 在 Mac 之间同步 DSH 环境,并提供设置面板、会话侧栏上传和内置 CLI。

这是什么

dsh-icloud-sync 归类为 DSH 社区目录中的「记忆」类插件(SkillHub 目录页)。一句话定位:在 macOS 上通过 iCloud Drive 同步 DSH profile、插件 manifest、skills,并支持按需上传/下载单条会话快照与整项目目录。插件以 MIT 许可发布,当前 package 版本为 1.6.2,仅支持 darwin,需要 Node >= 20。GitHub 仓库:mkoalade/dsh-icloud-sync。

同步范围

环境与 skills(自动/CLI 同步包)

从 ~/.dsh/profiles/<profile>/ 以及 skills 目录同步的内容包括:

  • cordis.patch.yml、package.json、pnpm-lock.yaml、pnpm-workspace.yaml、.dsh-market/state.json
  • ~/.agents/skills/**

不会进入该同步包的内容:会话日志(需单独上传)、node_modules、运行时与缓存、已存储的凭据、DSH 应用本体。各 Mac 会依据 package.json 与 pnpm-lock.yaml 重新安装插件。

会话与项目(手动)

会话日志不在上述 bundle 里。在对话操作条(与「复制 / 好的回答 / 有问题的回答」同一行)可点 上传到 iCloud;在侧栏 云端 页可 下载 或 删除云端。整项目通过分组标题上的 上传项目 / 下载项目 操作:上传项目 会上传该项目在本机上的全部会话及完整目录树(按 SHA-256 增量,跳过 .DS_Store,超过 4 GB 的文件会报告并跳过);下载项目 会拉取云端较新的副本并按 manifest.json 还原目录树,必要时将路径从 /Users/<对方用户名>/… 映射到本机 home。

附件目前不会随会话一起传输,粘贴的图片在另一台 Mac 上可能缺失。

安全与冲突策略

云端维护一份 bundle:DSH-Sync/current/(含 manifest.tsv)。每台 Mac 在 ~/.dsh/.icloud-sync/base/ 保留上次双方一致的 base 副本;每次运行比较 local / cloud / base,区分「仅本地变更」「仅云端变更」「双方均变更」。若双方均变更,默认拒绝覆盖,可用 dsh-sync diff 查看后再 push --force 或 pull --force。manifest.tsv 最后写入,避免 iCloud 半下载文件被误判为删除。每次 push/pull 前会备份(本地保留 20 份、云端 30 份)。

会话同步采用覆盖契约:上传/下载会覆盖对应侧快照,旧副本归档到 DSH-Sync/history/sessions/ 或 ~/.dsh/.icloud-sync/backups/sessions/,不再提供冲突态 UI。运行中的会话不能下载,需先关闭。

设置面板与「云端」页

安装后可在 Settings → Integrations → iCloud 同步 使用面板;侧栏会话区有 任务 / 频道 / 云端 / 日程 四个标签,其中 云端 仅列出已存在于 iCloud 的会话。新 Mac 可只装插件、打开面板后点 从云端接入,无需先开终端。

云端 标签依赖对 @michengai/dsh-codex-ui 的一小段可逆本地补丁(lib/codex-sidebar-tab.js),因公开 slot API 无法直接增 tab。可用 dsh-sync codex-tab status 查看是否已应用,dsh-sync codex-tab revert 恢复原始文件;跳过补丁只会失去该 tab,不影响插件其余功能。

安装与启用

官方安装命令(将 desktop 换成你的 profile 名):

dsh plugin --profile desktop add github:mkoalade/dsh-icloud-sync

包从 GitHub 安装,github: 形式为 canonical 写法。安装会挂载插件自带的 patch 行,CLI 已打包为 bin/dsh-sync,无需单独装到 ~/.local/bin。若面板未出现,重启 DSH;面板位于 Settings → Integrations → iCloud 同步。

典型用法

第一台 Mac:发布配置

先完全退出 DSH,再用面板(创建同步包 / 立即同步)或 CLI:

dsh-sync init      # 在本机 iCloud 中创建 DSH-Sync/current
dsh-sync status    # 确认 bundle 存在
dsh-sync agent on  # 可选:登录时及每 15 分钟同步

init 还会把脚本复制到 DSH-Sync/bin/dsh-sync,便于另一台 Mac 从 iCloud 引导 CLI。

另一台 Mac:接入

  1. 安装 DSH(版本相同或接近),启动一次以生成 profile 目录,再退出。
  2. 等待 iCloud 下载完 DSH-Sync。
  3. 安装本插件(pull 不会替你安装插件,只写入 profile 文件):
dsh plugin --profile desktop add github:mkoalade/dsh-icloud-sync
  1. 运行 iCloud 中的 CLI,或在面板中 Pull from cloud:
bash "$HOME/Library/Mobile Documents/com~apple~CloudDocs/DSH-Sync/bin/dsh-sync" pull

首次 pull 会备份本地 profile、写入云端文件,并按 package.json / pnpm-lock.yaml 重装插件(--no-install 可跳过)。之后重启 DSH;云端 tab 与 codex-ui 补丁在插件下次启动时应用。

若希望在未接入但已看到云端 bundle 的机器上自动拉取,可在插件行配置中设置 autoPull: true(资料中 YAML 示例已截断,字段名以 README 为准)。

适用场景与注意

适合在 多台 Mac 上使用同一套 DSH profile、skills 与插件清单,并需要在设备间延续会话或整项目工作区的开发者。所有同步经 iCloud Drive,需 Apple 生态与 iCloud 同步就绪;大项目上传依赖网络与 iCloud 状态。

DSH 插件以 当前 DSH 进程权限 运行,安装前请阅读 仓库源码 与 MIT 许可证,确认可接受对 codex-ui 的本地补丁及 iCloud 中的数据布局。社区目录 SkillHub 为独立站点,与 DeepSeek / 幻方无官方从属关系。

结尾

dsh-icloud-sync 把 profile、插件锁文件、skills 与会话/项目快照收敛到 iCloud 的一条链路里:环境用 dsh-sync 与可选定时 agent,会话与项目用手动上传/下载。查阅详情与 issue 请访问 GitHub 仓库,在目录页查看条目:SkillHub - dsh-icloud-sync。

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

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

Xiaoye