Fabric:DSH 的 Runtime Plugin 内核与下游 SDK

前言

DSH 的理念是「一切皆插件」。在实际维护 Profile 时,如果每个业务插件都直接进入 DSH 的加载路径,插件的安装、启停、升级、卸载,以及浏览器标签页之间的同步,都会变成反复处理的问题。

Fabric 用来解决这类问题。它是 DSH 的 Runtime Plugin 内核和下游 SDK,包名为 @dsh-do/fabric。下面介绍它的定位、核心能力、安装方式、创建插件流程和迁移注意。

定位

Fabric 由 BingChanCN 维护,仓库地址为 https://github.com/BingChanCN/fabric

它作为 DSH 的 Runtime Plugin 内核和下游 SDK,为 Profile 提供静态基础插件。业务插件以 Runtime Package 的形式按 Profile 安装、启停、升级和卸载,安装后无需重启 DSH。

核心功能

Runtime Package 管理

Fabric 支持在 Fabric 的 Mods 页面或 dsh-do 插件市场安装 Runtime Package。

它支持 Runtime Package 的安装、升级、停用、回退和删除,并同步到当前 Profile 的所有浏览器标签页。

需要注意,Runtime Package 是可信本机代码,不是安全沙箱。安装界面会显示来源、包名、版本和执行本机代码提示。

作者命令

Fabric 提供 create-fabric-pluginfabric create 创建插件,并提供以下作者命令:

fabric build
fabric test
fabric verify
fabric dev --profile web
fabric pack

fabric dev 使用临时 overlay 开发模式:成功构建会热换 Host 与每个标签页的 Client;构建或激活失败时,保留上一个成功 generation。

Runtime manifest

Runtime manifest 用于声明 hostclientcontracts 等入口。Host 或 Client 至少提供一个。

示例结构如下:

{
  "name": "@example/jobs",
  "fabric": {
    "host": "./lib/fabric-host.js",
    "client": "./lib/fabric-client.js",
    "contracts": "./lib/contracts.js"
  }
}

协作、配置与凭据

Fabric 支持注册 Page、Dialog、Command、HUD、Config 和 Capability。

插件之间可以通过 Capability、Resource 或 Operation 协作。Host/Client 数据交换只走带 { owner, id, exact version } 身份的 typed Resource 或 Operation。

Fabric 支持 typed Config。Config、Document、Blob 存在当前 Profile 的 .fabric/data/<canonical-package>/。Credential 复用 DSH provider,Client 永远读不到明文。

普通 DSH 插件迁移

Fabric 支持普通 DSH 插件的迁移评估:

fabric migrate analyze <source>
fabric migrate analyze npm:<spec>
fabric migrate analyze file:<tgz>

也支持严格子集迁移:

fabric migrate apply <source> --out <target>

复杂 Host/Client 行为必须人工迁移。已发布的 DSH bundle 不会被安装时转译。

安装

安装 Fabric:

dsh plugin --profile web add @dsh-do/fabric

安装完成后,在 Fabric 的 Mods 页面或 dsh-do 插件市场安装 Runtime Package。

典型用法

创建插件并进入开发模式:

npx create-fabric-plugin @example/jobs
cd jobs
pnpm install
pnpm build
fabric verify
fabric dev --profile web

也可以使用 fabric 作者命令:

fabric create @example/jobs
fabric build
fabric test
fabric verify
fabric dev --profile web
fabric pack

如果项目中提供了 pnpm verify,也可以直接运行:

pnpm verify

迁移普通 DSH 插件时,先做只读评估:

fabric migrate analyze <source>

确认源码属于可自动迁移的严格子集后,再生成 Runtime 包:

fabric migrate apply <source> --out <target>

适用场景与注意

Fabric 适合 DSH 插件作者、智能体开发者,以及需要按 Profile 管理 Runtime Package、同步浏览器标签页、维护 Host/Client 协作接口的团队。

使用前需要注意:

  • Runtime Package 是可信本机代码,会在当前 DSH 进程权限下执行本机代码;它不是安全沙箱。
  • 安装前应检查源码与许可证。已核实资料未提供许可证信息,应以仓库或发布包中的实际信息为准。
  • Host/Client 数据交换只走带 { owner, id, exact version } 身份的 typed Resource 或 Operation。
  • Credential 复用 DSH provider,Client 永远读不到明文。
  • 复杂 Host/Client 行为必须人工迁移,已发布的 DSH bundle 不会被安装时转译。

链接

目录页:

https://www.skillhub.cn/plugins/BingChanCN/fabric

GitHub:

https://github.com/BingChanCN/fabric
羽毛球分组比赛记分
小程序二维码

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

小夜