dshsync
Manifest validdsh-config-transfer
为 DeepSeek Harness Desktop(DSH Desktop)提供的配置迁移插件。设置页中显示为 配置同步。
DSH Desktop 的登录只同步账号,不会同步本机配置。dsh-config-transfer 在旧电脑上导出配置,在新电脑上导入,从而恢复插件、插件设置、MCP 条目和用户技能。
功能
在 设置 → 配置同步 中:
- 保存配置:下载一个 JSON 文件。
- 导入配置:选择文件,先查看将要发生的变更,再点击“开始导入”。
导入会:
- 按文件中记录的来源和版本安装缺失的第三方插件;
- 恢复插件的启用/停用状态;
- 恢复每个插件的配置(包括第三方插件);
- 通过
insert行恢复 MCP 服务器等自定义插件条目; - 恢复用户技能(
~/.dsh/skills与~/.agents/skills); - 对暂时无法应用的配置排队,重启后自动继续应用;
- 永远不会安装、停用或改写 dsh-config-transfer 自身。
安装
要求 DSH Desktop / Web 0.2.1-rc.1 以上、0.3.0 以下,Node.js 20.18 以上。
从 npm 安装(推荐)
dsh plugin --profile desktop add dsh-config-transfer
# Web profile:
dsh plugin --profile web add dsh-config-transfer
然后在 DSH 中重启或刷新页面。
在 Desktop 中安装
打开 Plugins → Add plugin,输入包名 dsh-config-transfer,或选择本目录 / 本地 tarball。
从本地目录安装(开发)
dsh plugin --profile desktop add /path/to/dsh-config-transfer
从 tarball 安装
dsh plugin --profile desktop add ./dsh-config-transfer-1.0.6.tgz
安装后可在 设置 → 配置同步 找到本插件。
使用步骤
旧电脑
- 安装并启用 dsh-config-transfer。
- 打开 设置 → 配置同步。
- 点击 保存到文件,得到
dsh-config-transfer-YYYYMMDD-HHmm.json。
新电脑
- 下载并登录 DSH Desktop。
- 安装并启用 dsh-config-transfer。
- 打开 设置 → 配置同步。
- 点击 选择文件…,选中旧电脑导出的 JSON。
- 检查“确认导入”页面中的安装、配置和手动步骤。
- 点击 开始导入。
- 若提示需要重启,重启 DSH Desktop。重启后插件加载完成,排队中的配置会自动应用。
Bundle 与插件的区别
DSH 里一个 bundle(组合包) 是一个 npm 包,它带一份 cordis.patch.yml,告诉 DSH 要挂哪些插件行;一个 bundle 里可以有一行或多行插件。bundle 是“安装单元 + 接线图”,plugin 是真正导出 apply(ctx) 的模块。
同步时会区分两类 bundle:
- 第三方 / 额外安装的 bundle:从 npm、Git、tarball 或本地路径安装进 profile 的插件包。dsh-config-transfer 会记录它们的安装 spec、版本和启用状态,在新电脑上重新安装。
- DSH 自带的 bundle:随 DSH 安装包提供(
availability: "installation"),例如@deepseek-ai/dsh-base、@deepseek-ai/dsh-web-app,以及官方可选插件。dsh-config-transfer 不会重复安装它们,只恢复启用状态。
保存页会分别显示 第三方插件 和 DSH 自带 的数量;导入计划会说明有多少 DSH 自带 bundle 已存在、不会被重复安装。
会同步的内容
- 第三方 / 额外安装 bundle 的清单、版本、安装来源、启用状态;
- DSH 自带 bundle 的启用状态(不重复安装);
- 每个插件行的启用/停用状态;
- 配置层(
cordis.patch.yml)中的插件配置; - 配置层中的
insert条目(例如 MCP 服务器定义); - 设置命名空间;
- 用户技能目录中的技能文件;
- 工作区列表不写入导出文件,避免本机路径泄漏;导入也不会创建工作区。
不会同步的内容
- 凭据与 API 密钥:
.credentials.yaml不读取;配置中名称或形态像密钥的值会被脱敏; - 会话、轮次、目标、定时任务记录;
- 附件、缓存、日志、插件运行时数据(例如费用统计账本);
- 插件本体和
link:/ 本地路径插件; - 机器级
.env和 home 级cordis.patch.yml; - 应用更新状态、窗口状态等非 DSH 配置。
安全与权限
dsh-config-transfer 会:
- 读取
$DSH_HOME下的 profile、patch、settings 和用户技能; - 写入
$DSH_HOME/dsh-config-transfer/pending.json(权限 600)和用户技能目录; - 通过 Host 已认证的
/api通道与当前页面通信; - 从导入文件记录的 npm / Git 来源安装插件。
它不会:
- 读取
.credentials.yaml; - 把 API 密钥写入导出文件;
- 在导入时清空新电脑上已有的同名凭据;
- 暴露 agent 工具来执行导入(导入会安装包、改配置,保持为需要用户明确确认的 UI 操作)。
脱敏覆盖常见字段名(apiKey、token、secret、password、authorization 等)、常见密钥格式(sk-…、ghp_…、JWT、Bearer 等)、URL 用户信息和敏感查询参数、env/headers 中的凭据。脱敏是启发式的,不能替代人工检查;分享导出文件前请自行确认。
导入行为与限制
- 不删除新电脑上多出来的插件或配置;导入是恢复/合并,不是镜像覆盖。
- 第三方插件按文件记录的版本安装;已安装但版本不同的插件不会自动降级或升级,会在计划中提示。
link:、绝对路径、file:插件无法跨机器安装,计划中会列出手动步骤。- 需要构建脚本授权的包不会自动授权,请在 Plugins 页面手动处理。
- 部分插件在安装后需要重启才会出现 Host 条目;相关配置会进入
~/.dsh/dsh-config-transfer/pending.json,重启后自动应用。 - 用户技能不会覆盖新电脑上已有的同名技能。
- 工作区路径不导出,避免把本机目录名带进配置文件。
- 插件 bundle 的启用顺序可能因新机器安装顺序不同而略有差异;如果多个 bundle 之间存在覆盖关系,请在 Plugins 页面确认顺序。
- 带条件表达式(
disabled: !!js …)的插件行不会被自动改写,计划中会提示需要手动确认。 - 被停用 bundle 内部的单行启用状态不会单独导出;重新启用该 bundle 后会使用其默认行状态。
- 如果导入文件来自不同的操作系统,插件配置中的绝对路径(命令、工作目录等)需要手动调整,导入计划会给出提示。
- 同一 bundle 内多个插件共用 settings 时,导入使用 merge 语义,不会删除目标端已有字段;这是为了不误删凭据。
插件市场与索引
- 第三方市场:公开 GitHub 仓库
dsh-config-transfer,加dsh-plugintopic;仓库名与 npm 包名一致,市场可以直接一键安装。 - 官方 Discover / 社区索引:添加索引源
https://limbo1996.github.io/dsh-config-transfer/index.json(部署market/目录后可用)。 - 社区目录:DSH Plugin Hub、Open Plugin Market、realoiyo 索引等;详见 PUBLISHING.md。
官方 DSH 0.2.x 没有默认市场索引;Discover 需要用户添加索引源 URL。
文件格式
导出文件写入 format: "dsh-config-transfer"。
导出文件为 JSON,顶层包含(format 使用 dsh-config-transfer):
{
"format": "dsh-config-transfer",
"version": 1,
"exportedAt": "2026-10-20T10:00:00.000Z",
"source": { "profile": "desktop", "platform": "darwin", "node": "26.0.0" },
"profile": {
"bundles": [],
"plugins": [],
"inserts": [],
"disabled": [],
"configs": [],
"settings": [],
"dependencies": {},
"bundleOrder": []
},
"skills": { "skills": [] },
"workspaces": []
}
redacted 数组记录被脱敏的字段路径,导入时用于保留新机器上已有的值。
故障排查
- 提示需要重启:关闭并重新打开 DSH Desktop。
pending.json中的应用项会在启动后自动重试。 - 配置同步页面不存在:确认插件已安装并启用;Settings 中有“配置同步”一项。若刚安装,请重启。
- 插件安装失败:检查网络、npm registry 和 pnpm;查看导入报告中的安装诊断。
- 本地插件未恢复:
link:/ 本地路径插件不会被复制。请在新电脑上重新安装该插件,然后重新导入配置。 - 导入后页面消失:如果旧配置停用了 Settings 插件,导入会忠实恢复该状态。可在 Plugins 页面重新启用。
开发
npm install
npm test
npm pack --dry-run
测试覆盖密钥脱敏、配置恢复、cordis.patch.yml 插入行读写、导入计划、自身包跳过、导入执行、pending 重试、技能导入和 Host 路由。
发布
许可证
MIT
Comments
Loading…