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-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
羽毛球分组比赛记分
小程序二维码

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

小夜