DSH(DeepSeek Harness)采用“一切皆插件”的架构,配置管理(如已安装的插件、settings.yaml)分散在本地文件中。在多台设备间迁移配置,或者定期备份当前工作环境,通常需要手动复制 package.json 等配置文件。
dsh-market-gist-autosync 插件解决了这个问题。它把 DSH 的当前 Profile 配置打包为 GitHub 私有 Gist,支持定时备份和合并恢复,备份格式与插件市场(dshmarket)完全兼容。
核心功能¶
- 备份与存储:将当前 profile 的配置备份为私有 Gist。插件会自动识别运行环境(desktop 或 web),备份内容会剥离机器本地依赖(如
link:C:/Users/...),确保备份文件可移植。 - 定时备份:支持分钟/小时粒度的定时任务。注意,定时备份仅在 DSH 运行期间执行,电脑休眠时不备份也不补跑。同一进程内的定时任务与手动备份互斥,防止并发冲突。
- 合并恢复:恢复配置时采用合并语义,保留已安装的插件,不会删除现有配置。恢复后会自动执行
pnpm install,若依赖安装失败会自动回滚。 - 启动预检:恢复完成后,插件会检查每个 bundle 的可解析性。对于本机无法解析的 bundle(例如来自另一台机器的
link:依赖),会从 profile 中移除并报告,避免恢复后因启动失败进入恢复模式。 - 上传记录:记录最近 20 条上传历史,存储在 dsh-storage 域,支持一键清空。记录包含状态标记和错误原因。
- 容错与安全:支持 Gist URL 容错;请求防卡死机制(AbortSignal 双保险);Token 明文保存在本地,支持环境变量
DSH_GITHUB_TOKEN优先。
安装与启用¶
使用官方 CLI 安装:
dsh plugin --profile desktop add dsh-market-gist-autosync # 桌面端
dsh plugin --profile web add dsh-market-gist-autosync # 网页版(dsh web)
安装后,在 DSH 的 设置 → Gist 备份 页面进行配置。
配置与使用¶
1. 准备 GitHub Token¶
在设置页面输入 GitHub Token。Token 仅用于访问你的私有 Gist。出于安全考虑,推荐使用环境变量 DSH_GITHUB_TOKEN 代替在界面中直接填写。Token 会被保存在本地配置文件中。
2. 配置备份目标¶
- Gist ID:输入已存在的 Gist ID 或 URL。留空则每次手动备份时自动新建一个私有 Gist。
- 定时备份:勾选开启后,设置间隔数值和单位(
hour或minute)。配置保存后即时生效。 - 包含锁文件:如需备份
pnpm-lock.yaml以精确复现依赖版本,可在设置中勾选includeLock。
3. 执行恢复¶
在设置页面的“恢复”区域输入 Gist ID 或 URL。点击恢复后,插件会执行以下步骤:
1. 下载并校验备份结构。
2. 原子写回配置文件。
3. 合并 package.json 依赖与现有插件。
4. 自动安装缺失依赖。
5. 执行启动预检,剔除无法解析的 bundle。
6. 重启 DSH 生效。
技术细节与注意事项¶
- 多 Profile 识别:插件自动识别当前运行的是 desktop 还是 web profile。注意,桌面端和网页版共享同一份本地配置文件(
$DSH_HOME/gist-autosync/config.json)。如果两端同时开启定时备份且都正在运行,可能会并发上传导致后写入者覆盖前写入者。 - 备份内容限制:备份内容会自动排除
node_modules、.dsh-market、.git、符号链接等目录。单次备份限制为 256 个文件或 1MB。 - 启动预检机制:DSH 启动时遇到第一个无法解析的包名就会失败。该插件在恢复后主动进行预检,将“确实不存在”的 bundle 移除并报错,避免用户重启后才发现配置损坏。
- 数据安全:备份内容存储在私有 Gist 中,但 Gist 本身是私有的。请勿将包含 API Key 的敏感文件备份到 Gist,尽管 Gist 默认是私有的。