前言¶
DeepSeek Harness(DSH)通过 profile 里的 package.json 管理插件:官方 bundle、npm 包、以及用 link: 挂在本地目录的自研插件往往混在一起。换电脑或重装环境时,你需要自己翻 ~/.dsh/profiles/desktop/package.json,分清哪些是 local link、目录在哪,再手动拷贝。本文介绍社区插件 fenshal/dsh-migrator(维护者 fenshal,SkillHub 目录、GitHub):在「设置 → 插件迁移」里勾选要带的插件,生成可粘贴的迁移说明,或下载带源码与恢复脚本的 zip,本地完成清单与打包,不发起网络请求。
这是什么¶
DSH Migrator 是挂在 DSH 设置页的客户端插件(@local/dsh-migrator,当前资料版本 0.1.0,MIT)。它读取当前 active profile 的插件清单,区分 official、npm、local 三类,并支持选择性导出。官方插件随 DSH 自带,无需迁移;npm 只需记住版本;local 必须把源码一并带走——该插件把这三类情况整理成你可直接执行的动作。
核心功能¶
完整清单¶
对当前 profile 列出:名称、版本、种类(kind)、从各包 repository/homepage 读出的 GitHub 仓库、启用状态。官方 bundle 会显示但不可勾选导出。
选择性导出¶
默认选中「所有已启用且非 official」的插件,并提供全选/全不选。导出两条路径:
- 迁移安装单(Migration note):Markdown,内含 fenced
json dsh-plugin-migration块和七步执行说明;在新机器的 DSH 会话里粘贴,由智能体按说明恢复。 - Zip kit:自包含压缩包,结构包括:
-安装单.md(同上,给人看)
-manifest.json(机器可读:name/version/kind/repo/leaf/order/enabled)
-restore-plugins.ps1(恢复脚本,支持-DryRun)
-dsh-plugins/<leaf>/(所选 local 插件源码)
-dsh-skills/(~/.dsh/skills中的内容与技能)
恢复脚本会把 local 源码拷到插件根目录、合并 dependencies、调整 dsh.profile.bundles 顺序,备份原 package.json,并把 skills 拷入且不覆盖已有文件。
HTTP 路由(供集成参考)¶
| method | path | 作用 |
|---|---|---|
| GET | /migrator/list |
返回 profile 插件及 kind/version/repo/leaf |
| POST | /migrator/build |
body {names} → 安装单文本 |
| POST | /migrator/zip |
body {names} → application/zip |
插件在内存中用内置 ZIP 写出压缩包,无第三方 zip 依赖;不访问网络、不读取凭据与会话密钥。
安装与启用¶
资料给出的安装方式如下(路径请按你本机替换)。
从本地 checkout 链入 profile:
# link the directory into the profile
cd "$env:USERPROFILE\.dsh\profiles\desktop"
pnpm add "link:D:/path/to/dsh-migrator"
# then add "@local/dsh-migrator" to dsh.profile.bundles in package.json and restart DSH
或使用:
plugin_manager install_bundle D:\path\to\dsh-migrator
启用后重启 DSH,在 Settings → 插件迁移 出现新页面。发布前维护者建议执行 node --check index.js && node --check client.js;客户端 bundle 在插件关开一次后才会重新挂载。
典型用法¶
- 打开 Settings → 插件迁移。
- 勾选要迁移的插件(official 仅展示,不可选)。
- 二选一:
- 生成安装单 → 复制或下载.md,在新机器 DSH 会话中粘贴。
- 下载压缩包 (.zip) → 在新机器解压后执行恢复脚本。
在新机器上恢复 zip:
# see the plan first
pwsh -File .\restore-plugins.ps1 -DryRun
# apply
pwsh -File .\restore-plugins.ps1
脚本参数(摘自 README):
| parameter | default | meaning |
|---|---|---|
-Kit |
脚本所在目录 | 解压后的 kit 路径 |
-PluginRoot |
manifest.json 的 pluginRoot,否则常见 DSH 插件目录,否则 %USERPROFILE%\dsh-plugins |
local 源码落地位置 |
-ProfileDir |
~/.dsh/profiles/desktop |
要更新的 DSH profile |
-DryRun |
关闭 | 只打印计划,不写盘 |
执行后重启 DSH;若插件页提示 pending installs,在 profile 目录内运行 pnpm install。
适用场景与注意¶
适合谁:经常在多机之间同步 DSH 环境、local 自研插件较多、或希望把 skills 目录一并带走的开发者。
边界与限制(以 README 为准):
- 只读
~/.dsh/profiles/desktop/package.json、链入的插件目录、~/.dsh/skills;credentials、settings 密钥等不包含在导出物中。 npm插件仅记录名称与版本,新机器仍需能访问 registry 安装。- GitHub 上虽有仓库信息的 local 插件,kit 仍打包当前机器上的本地源码,不会从远端拉取。
- Skills 原样复制;与会话绑定的插件状态文件有意不导出。
- DSH 插件以当前 DSH 进程权限运行,安装前请自行查看 GitHub 源码 与 MIT 许可证。
DSH 生态强调「一切皆插件」;SkillHub 等社区目录独立于 DeepSeek / 幻方,本插件为社区维护作品(GitHub 星标数在抓取时为 1)。
结尾¶
经过上面的步骤,你可以在旧环境一次性列出、勾选并导出插件与 skills,在新环境用安装单或 restore-plugins.ps1 恢复,避免手抄 package.json 和漏拷 link: 目录。更多说明见 SkillHub 插件页 与 fenshal/dsh-migrator。