前言¶
在多台机器上跑 DeepSeek Harness(dsh)时,Profile 里的 package.json、cordis.yml、供应商配置等文本往往需要手工拷贝或自己写脚本。DSH 插件市场支持 dsh-profile-backup 格式的导入导出,但若要在两台机器之间持续对齐、并一眼看出本地与远端是否一致,仍需要额外工具。
dsh-profile-gist-sync 由 Meta-Virgo 维护,分类为 admin-security,当前版本 1.1.1(MIT 许可证,要求 Node >= 20)。它把本机 Profile 配置备份到 unlisted secret GitHub Gist,可在另一台机器拉取同步,并在设置页面对比本地与云端是否一致;同时向 Agent 暴露 config_backup 工具。下文介绍安装步骤、页面用法与同步时应注意的事项。
这是什么¶
一句话:DeepSeek Harness 插件,提供 设置 → 插件 → 配置同步 / Config sync 页面,以及 Agent 侧 config_backup 工具,通过 GitHub Gist API(api.github.com)上传/下载 dsh-profile-backup v0.2 文档。
Gist 以 public: false 创建,属于 unlisted、非 private:持有链接者可读,链接本身即秘密。Gist id 记在 <profile>/.dsh-config-sync/settings.json,该文件不参与备份,避免同步时泄露来源机器的 Gist id。
核心功能¶
设置页三步流¶
页面按编号分三块,每步对应按钮,无需手打路径:
- 状态 — 打开时自动检查云端;展示本地与云端是否一致、当前 profile、文件数量、上次上传/同步时间。「重新检查」可再查一次。
- 上传 — 「上传到云端」更新本 profile 已记住的 Gist(首次会创建并记住);「另存为本地文件」把同一份备份写到本地文件。
- 同步 — 「从云端同步」将云端副本写入本机,之后可提供「撤销上次同步」。同卡片会列出 manifest 中点名但本机未安装的插件,并提供一键安装。
Token、Gist id、从备份文件恢复、文件列表、新机清单等放在折叠的 高级设置 中。
Agent 工具¶
除 UI 外,插件注册 config_backup,供 Agent 以编程方式执行备份相关动作(含文档所述的 undo 等)。
备份内容与排除项¶
备份携带 Profile 目录中的文本配置:package.json、cordis.patch.yml、cordis.yml、.npmrc、pnpm-workspace.yaml、data/*.json、suppliers/* 及 profile 内其他文本文件。格式与 DSH 插件市场读写的 dsh-profile-backup v0.2 相同,可与市场导入导出互通。
明确不上传并在 UI 中列出原因的路径包括:node_modules/、pnpm-lock.yaml、.git/、*.bak、各类隐藏目录(含 .dsh-config-sync/)、data/auths/credentials.sqlite 等二进制、data/usage.json(可按高级选项包含计数器),以及本机才有的 dependencies 写法(link:、file:、portal:、workspace: 或裸路径)。后者会从上传用的 package.json 中去掉对应条目并报告,避免在另一台机器用无效路径覆盖目标机已有 spec。
恢复为 合并式、可撤销:备份中的文件会写入,仅本地存在的文件保留;package.json 的 dependencies 与 dsh.profile.bundles 做并集合并,同名依赖以 incoming spec 为准。每次覆盖前会把旧内容快照到 <profile>/.dsh-config-sync/undo/<stamp>/。
网络与凭证¶
插件测试要求仅连接 api.github.com。GitHub token 不会写入磁盘,单次请求使用,来源可为请求体、环境变量 DSH_GITHUB_TOKEN / GITHUB_TOKEN,或已登录的 gh CLI;设置页提供检查 token 的按钮。
安装与启用¶
在目标 profile 下执行官方 README 中的命令(示例为 web profile):
dsh plugin --profile web add dsh-profile-gist-sync # from npm
dsh plugin --profile web add github:Meta-Virgo/dsh-profile-gist-sync # from source
然后 重启 DSH。包为纯 ESM,无额外依赖、无构建步骤、无安装脚本。
插件在当前 dsh 进程权限下运行;安装前建议阅读 源码仓库 与 MIT 许可证,自行评估是否适合本环境。
典型用法¶
单机备份与对比¶
- 安装插件并重启后,打开 设置 → 插件 → 配置同步。
- 在高级设置中按需配置 token(或使用环境变量 /
gh登录)。 - 使用 上传 将本机配置推到 Gist,或在 状态 区确认与云端一致。
需要本地副本时,在同一页使用「另存为本地文件」。
第二台机器同步¶
README 给出的可复现流程如下:
- 在该机器安装本插件并重启 DSH。
- 使用 与 Gist 所有者相同 GitHub 账号 的 token。secret Gist 仅所有者可经 API 读取;其他账号会得到「not found」而非单纯的 forbidden 提示。
- 打开配置同步页,点击 从云端同步。
- 仍缺失的插件会出现在步骤 ③;点击「安装缺的插件」后再次重启 DSH。
步骤 2 与 4 是新机器上最常见的失败点,因此新机清单与 token 报错说明集中在高级设置与页面文案中。
若需改用新的 Gist:在高级设置清空 Gist id 并保存以创建新 Gist,或粘贴 id/链接以接管已有 Gist。
适用场景与注意¶
适合谁:需要在两台及以上机器之间对齐 DSH Profile 文本配置、又希望用 GitHub 私有链路(Gist + token)而非公开仓库的开发者;admin-security 分类也适合关注「上传了什么、连了谁」的运维场景。
应注意:
- 仅文本配置出境;凭证库、二进制、
node_modules等被排除,但 Gist 链接本身需妥善保管。 - 同步后插件包不会自动到位,需按页面提示安装 manifest 中的缺失 spec;
installBundle仅为缺失项做加法,不会删除或改写已有 bundle 选择。 - 从插件市场等其他来源导入的备份文档若含本插件不写的路径(例如 credentials.sqlite),导入时会跳过并列出计划,而非一律拒绝。
- 社区插件目录 SkillHub 为独立站点,与 DeepSeek / 幻方无官方从属关系;安装与配置责任在用户侧。
结尾¶
经过上面的步骤,可将 Profile 配置收敛到一条 Gist 链路:本机上传、他机同步、状态区对比是否一致,必要时撤销同步并补齐插件。进一步细节以仓库 README 为准。