前言¶
DSH 的理念是「一切皆插件」,插件装在某个 profile 里,配置文件也在该 profile 内。问题出在换机器的时候:新的 DSH 要一个一个重装插件,装完还要重新调配置。手工搬运容易漏掉 cordis.yml 之类的改动,漏掉一个 link: 依赖路径,下一次启动就可能直接失败。
下面介绍的 dsh-cjbf 就是针对这个环节的插件:把本机 profile 里装的所有插件和它们的配置打进一个普通文件夹,换机后从这个文件夹恢复。
这是什么¶
dsh-cjbf 由 CheapGodMs 维护,GitHub 仓库 CheapGodMs/dsh-cjbf,当前版本 1.0.0,许可证 MIT,仓库语言 JavaScript,GitHub 星标为 0。它声明的运行环境是 dsh >= 0.2.1-rc.5。
一句话定位:DSH 插件备份与恢复工具。备份包不只包含插件本体和依赖,还包含 profile 的配置文件,所以新机器恢复后插件集合和配置一起回来,而不是只有插件。
仓库 topic 只有 dsh-plugin。社区目录页把它放在插件分类下,该目录是独立站点,与 DeepSeek / 幻方没有官方从属关系。
备份产物¶
备份写入 <folder>/DSH插件备份-<YYYYMMDD-HHMMSS>/,目录里包含五个部分:
1、profile/:package.json、cordis.patch.yml、pnpm-workspace.yaml、pnpm-lock.yaml、cordis.yml。
2、packages/:profile 的 node_modules,也就是插件本体和它们的依赖,.bin 与 .pnpm 缓存被排除。
3、tool/:本插件自身的一份副本,这样新机器即使没有网络也能装回它。
4、manifest.json:时间戳、bundle 列表、每个依赖的精确版本、文件数、字节数、平台。
5、README.txt:中文写的恢复说明,和数据放在一起。
备份路径由你在页面上指定,不写死在插件里。
恢复行为¶
恢复把 packages/ 写回 profile 的 node_modules,把配置文件写回 profile,同时保证正在运行的这份插件本身不被覆盖。具体有五点:
1、cordis.yml 不会被覆盖,因为它是每台机器自己的 composition root。
2、恢复出来的 package.json 一定保留本插件并保持选中状态。
3、原本从本机路径安装(link: / file:)、而新机器不存在该路径的依赖会被移除并在结果里列出,避免破坏下一次启动。
4、package.json 里声明但在备份中缺失的包会被清理并报告。
5、覆盖任何东西之前,当前 profile 文件会先复制到 profile/.plugin-backup-restore-<时间戳>/,这就是回滚路径。
安装与启用¶
安装命令来自 README,需要带 profile 参数:
dsh plugin --profile <profile> add dsh-cjbf
装完在「插件」页面即可看到备份入口。插件自带一个 web client(client.js),声明 "immediately": true,会注入 @deepseek-ai/dsh-client-ui-plugin-manager,所以装完就能在插件页面里操作,不需要额外配置。
典型用法¶
下面这四步是 README 里给出的完整流程,顺序照做即可。
1、本机安装插件:
dsh plugin --profile <profile> add dsh-cjbf
2、打开「插件 → 备份 / Backup」,选一个文件夹,点「Back up now」。
3、新机器上装好 DSH,再装上本插件(从 npm 装,或者用备份包里的 tool/ 目录装),打开同一个标签页,选中备份文件夹,点「Find backups」,选中某个快照,点「Restore this backup」。
4、重启 DSH。
除了页面操作,插件还暴露了一个名为 plugin_backup 的 agent tool,覆盖只读和备份侧的命令:status、scan、backup、find。恢复这一侧被刻意限制为只能由用户在页面上触发,因为恢复会覆盖本机插件配置,页面上始终要求显式确认。
适用场景与注意¶
适合的场景:DSH 用了多个 profile、插件数量多、配置改得多、需要跨机器迁移。备份体积大致等于 profile 的 node_modules,几百 MB 属正常,这一点在选目录时要预留好空间。
两点需要注意:
1、备份不含会话记录,~/.dsh/sessions 不会进来,语义是「插件集合加配置」,不是整套环境快照。
2、插件以当前 dsh 进程的权限运行。安装前应该打开源码核对实现,并确认许可证,本插件为 MIT。它的 client 与 Host 之间只通过 fenced loopback 路由 /dsh-cjbf/api 通信,不带凭据、不访问外网。
如果你是让别人代装,建议保留备份包里的 README.txt,新机器上照着做即可,不必再查文档。
链接¶
- 目录页:https://www.skillhub.cn/plugins/CheapGodMs/dsh-cjbf
- GitHub:https://github.com/CheapGodMs/dsh-cjbf