DSH Migrator:列出已装插件并导出安装单或自包含 zip 迁移包

前言

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」的插件,并提供全选/全不选。导出两条路径:

  1. 迁移安装单(Migration note):Markdown,内含 fenced json dsh-plugin-migration 块和七步执行说明;在新机器的 DSH 会话里粘贴,由智能体按说明恢复。
  2. 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 在插件关开一次后才会重新挂载。

典型用法

  1. 打开 Settings → 插件迁移。
  2. 勾选要迁移的插件(official 仅展示,不可选)。
  3. 二选一:
    - 生成安装单 → 复制或下载 .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。

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

Xiaoye