前言¶
在 DeepSeek Harness(DSH)上调试 profile、插件和工具链时,配置往往散落在 $DSH_HOME、~/.dsh、~/.config/dsh 以及编辑器、其他软件的各自目录里。换电脑、重装系统或在局域网内给第二台机器对齐环境时,手工拷贝路径容易漏文件,也难以保留「原绝对路径」与清单对应关系。
下面介绍社区插件 dsh-conf-sync(维护者 6027-gthb):把选定路径打成标准 .tar.gz 快照,经本地文件、局域网 HTTP 或 WebDAV 在设备间迁移;导入时按清单写回原路径,并可选备份已有文件。插件当前版本为 0.1.0,协议 MIT。DSH 生态奉行「一切皆插件」;SkillHub 目录页 为社区收录站点,与 DeepSeek / 幻方无官方从属关系。
这是什么¶
dsh-conf-sync 是 DSH 上的配置同步插件:按你在 profile 里声明的 targets(glob 路径)收集文件,生成含 dsh-conf-sync-manifest.json 的归档,再经三种传输通道导出或导入。模型也可直接调用 dsh_conf_export、dsh_conf_import 等工具完成操作。
核心功能¶
三种传输通道¶
| 通道 | 说明 | 典型场景 |
|---|---|---|
local |
写入/读取本地 .tar.gz 快照 |
U 盘、移动硬盘或直接拷贝 |
http |
本机临时 HTTP 服务并输出 URL | 同一局域网内两台设备传输 |
webdav |
推送到 / 拉取自 Alist、Nextcloud 等 WebDAV | 云盘中转、跨网络 |
三种通道仅改变快照的搬运方式,归档格式一致,可互通(例如 A 机推到 WebDAV,B 机经 HTTP 拉取后再 local 导入)。
导出与导入行为¶
- 导出:按
targets展开 glob,复制到临时目录并生成 manifest(含原绝对路径映射),再tar+ gzip 打包。 - 导入:解包后读 manifest,将
files/<i>写回originalPath;默认先把已存在文件备份为<路径>.bak-<时间戳>。tar拒绝..越界路径。 - HTTP 管理:
dsh_conf_close可关闭由channel=http导出发起的临时服务;卸载插件或退出 DSH 时也会自动关闭。
可扩展的配置目标¶
默认会覆盖 DSH 自身配置目录;可在配置里追加 VS Code settings.json 等任意路径模式。
安装与启用¶
前置:Node.js ^22.19.0 || >=24,以及 pnpm(npm install -g pnpm)。从 GitHub 安装会拉源码并由 DSH 执行 prepare/build 编译 lib/;若 pnpm ≥ 10 首次安装拒绝构建脚本,需在 profile 的 pnpm-workspace.yaml 中按报错添加 allowBuilds。安全上建议锁定提交:github:你的用户名/dsh-conf-sync#<完整 commit-sha>。
# ① GitHub 仓库安装(推荐 · 多设备复用,需提交到 GitHub)
dsh plugin --profile web add github:你的用户名/dsh-conf-sync
# ② 本地 tarball 安装(免发布,单机最快)
dsh plugin --profile web add ./dsh-conf-sync-0.1.0.tgz
# ③ 作为 npm 包安装(若已发布)
dsh plugin --profile web add dsh-conf-sync
# 验证已挂载
dsh --profile web --dump-config
在 profile(或 $DSH_HOME/cordis.patch.yml)中为插件装配配置,例如:
- id: dsh-conf-sync
config:
targets:
- name: DeepSeek Harness
patterns:
- C:\Users\you\.dsh
- C:\Users\you\.config\dsh
- name: VS Code
patterns:
- C:\Users\you\AppData\Roaming\Code\User\settings.json
- C:\Users\you\AppData\Roaming\Code\User\keybindings.json
outputDir: D:\backups\conf
httpPort: 3088 # 可省略,0=随机端口
webdav:
url: https://alist.example.com/dav/snapshots/
username: admin
password: 'your-token'
noBackup: false # true 则导入时直接覆盖、不备份
调试时可临时叠加配置,不改动正式 profile:
dsh --profile web --patch ./overlay.yml <任务>
典型用法¶
导出¶
# 1) 写成本地文件
dsh_conf_export channel="local" output="D:\backups\conf\snap.tar.gz"
dsh_conf_export channel="local" # 省略 output,自动生成到 outputDir
# 2) 起局域网 HTTP 服务器,拿到分享 URL
dsh_conf_export channel="http" port=0
# 3) 推送到云盘(Alist WebDAV)
dsh_conf_export channel="webdav" name="my-machine"
返回结果包含 location、文件数与来源主机名;HTTP 通道会打印分享 URL。
导入¶
在目标设备上执行;路径由 manifest 中的 originalPath 定位,无需手改归档内路径:
dsh_conf_import channel="local" source="D:\backups\conf\snap.tar.gz"
dsh_conf_import channel="http" source="http://192.168.1.5:3088/snapshot-xxx.tar.gz"
dsh_conf_import channel="webdav" source="my-machine"
# 只恢复匹配的路径(正则,可选)
dsh_conf_import channel="local" source="...tar.gz" pattern="settings.json"
# 覆盖式导入(不做备份)
dsh_conf_import channel="local" source="...tar.gz" backup=false
关闭 HTTP 共享¶
dsh_conf_close
适用场景与注意¶
适合谁:需要在多台机器间对齐 DSH profile 与插件配置、或一并备份编辑器与其他软件配置文件的开发者;希望用局域网秒传或私有 WebDAV 中转、而不是公开网盘明文传播的用户。
路径对齐:导入写回的是导出时的绝对路径。两台机器目录布局不同时,需事先保证目标路径存在,或自行规划映射;README 未提供自动重映射。
WebDAV:目标目录须可写;Alist 需开启 WebDAV 且目录已创建。
权限与安全:插件以当前 dsh 进程权限 读写文件;安装前请阅读 GitHub 源码 与 MIT 许可证。快照为明文 .tar.gz,若含令牌应走私有 WebDAV 或局域网,勿经不可信公网。DSH 处于 Developer Preview,接口可能变更,以 dsh --dump-config 实际输出为准。
结尾¶
dsh-conf-sync 把「配置收集 → 标准快照 → 多通道搬运 → 按 manifest 回写」收成一组 DSH 工具,适合多设备 DSH 环境与混合软件配置的迁移与备份。