dsh-quick-setup
Export installed third-party DSH plugins as a portable pack (optionally with their cordis.patch.yml configuration) or a name@version list, validate compatibility on another instance, and batch-install them. · 导出本机第三方 DSH 插件为便携插件包(可带插件配置)或版本清单,在另一实例校验兼容性后批量安装。 适合需要在多台电脑或不同配置环境间快速同步、对齐已装插件集合的用户。
설치
$
npx -p @deepseek-ai/dsh dsh plugin --profile web add github:MR1ZK/dsh-quick-setup使用
- 导出:打开设置页,勾选要带走的插件,点“导出插件包”,得到一个
dsh-quick-setup- -.dshpack.tgz。- 想连同插件设置一起带走时,勾选「同时备份插件配置」(默认不勾选,因为配置里可能有密钥);
- 如果只想同步插件名和版本,勾选“仅导出插件信息”,得到
dsh-quick-setup- -.plugins.txt; - 该模式下可再选择“包含当前版本号”(默认勾选):取消勾选则清单只写插件名,目标实例安装 npm 上的 latest。
- 传输:U 盘、scp、网盘均可。
- 导入:在目标 DSH 的同一设置页选择文件(
.dshpack.tgz或.plugins.txt都接受)→ “检查兼容性” → 核对报告 → “安装选中的插件”。 - 若结果里出现
restart-required,重启目标 DSH 后在插件页确认状态。
插件配置备份的范围
勾选「同时备份插件配置」后,包里会额外带上一份 config 字段,内容是 cordis.patch.yml 中属于所选插件的补丁条目(- id: / name: / config: 的原样 YAML 文本):
- 这是 DSH 官方配置编辑器写入的设置,即用户在设置页里改过的值;插件自己的默认值来自包内代码,不在备份范围。
- 匹配按包名进行,
dsh-ops/shell这样的子路径条目算作dsh-ops的一部分。 - 只备份带
config:或disabled: true的条目;没有配置的插件不会产生空条目。 - 配置里可能有 API Key、路径等敏感信息。插件包本身没有任何加密,请像对待密钥一样保管和传输。
- 导入时逐条合并:目标
cordis.patch.yml中已有相同 id 或 name 的条目会被跳过(保留目标机器上的现有值),其余追加写入。配置在组合重载后生效,通常需要重启 DSH。 - 单个条目上限 128 KiB、总量 512 KiB、最多 200 条;超限的包会被拒绝导入,而不是截断。
插件自己的私有存储(例如 ~/.dsh/music-player-prefs.json、localStorage 中的状态)不在备份范围,需要单独复制。
插件信息清单(.plugins.txt)只有插件名和版本号(或只有插件名),不含代码、描述与来源 registry;导入时目标实例必须能访问这些包所在的 npm registry(镜像、代理或私有 registry 需已在目标 profile 配置好)。
已知限制:
- 含原生模块(
.node)或平台限定的可选依赖的插件,可能在目标平台安装失败;报告会给出原始错误。 - 需要执行安装脚本的插件,会被 DSH 官方安装流程拦下并要求确认;本插件不会绕过该确认。
- 清单里的
requirements只是导出时的快照,导入时以目标实例重新计算的报告为准。 - 同名插件的升级/降级不会自动执行:DSH 的
pluginManager.installBundle()在热重载模式下会拒绝已存在的包名。快速安装会把这类条目标成“版本冲突”,请先在插件管理里移除旧版本,再导入新包或新清单。清单里已安装且版本相同的条目会标为“已安装”,不会重复安装。 - 插件信息清单导入时,未安装条目会通过
pnpm view查询 npm(并发 4、单条 15 秒超时)。网络不可用时会给出警告,条目仍可手动尝试安装;包不存在或不是 DSH 插件的条目会被标为无效并默认不选。 - 不处理插件自己的私有配置文件;这类文件通常应单独复制。
HTTP 接口(同源,内部使用)
| 方法 | 路径 | 用途 |
|---|---|---|
| GET | /dsh-quick-setup/api/status | 当前环境 + 可导出的第三方插件 |
| GET | /dsh-quick-setup/api/export?plugin=&plugin=… | 流式下载完整插件包(无参数则导出全部;加 config=1 时附带 cordis.patch.yml 配置条目) |
| GET | /dsh-quick-setup/api/export?mode=info&withVersion=0|1 | 下载插件信息清单(text/plain;withVersion=0 时只写插件名,默认带版本号) |
| POST | /dsh-quick-setup/api/upload | 上传插件包(application/gzip)或插件清单(text/plain),生成兼容性预览 |
| POST | /dsh-quick-setup/api/install | 安装一个选中条目(JSON:{uploadId, name};清单条目按 name@version 或裸 name 装 npm 包) |
POST 需要 x-dsh-quick-setup: 1 头;所有接口都做同源检查。插件清单上传上限 1 MiB,插件包 1 GiB。