前言¶
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