前言¶
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-plugin 与 fabric create 创建插件,并提供以下作者命令:
fabric build
fabric test
fabric verify
fabric dev --profile web
fabric pack
fabric dev 使用临时 overlay 开发模式:成功构建会热换 Host 与每个标签页的 Client;构建或激活失败时,保留上一个成功 generation。
Runtime manifest¶
Runtime manifest 用于声明 host、client、contracts 等入口。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