DSH 理念是「一切皆插件」。開發者從社區目錄(如 skillhub.cn)獲取插件後,需要一個受控的機制來管理這些插件的生命週期和來源。本插件提供 Host 插件市場和 Web 設置頁,旨在解決插件來源管理、下載校驗及啓停控制的問題。
功能¶
本插件主要提供以下能力:
- 插件倉庫管理:支持用戶在設置頁添加 HTTPS 插件倉庫,倉庫狀態保存在
$DSH_HOME/plugins/market/repositories.json。 - 下載校驗:在下載前驗證 HTTPS 協議、manifest 字段、entry 路徑以及 SHA-256 校驗和。
- 靜態插件插拔:靜態插件默認展示插拔狀態。安裝後默認停用,啓用/停用操作會寫入配置文件
$DSH_HOME/plugins/market/static.patch.yml,下次啓動 DSH 時生效。 - 動態插件控制:動態插件默認只展示運行/停止狀態。只有 manifest 聲明
controllable: true,且 Host 顯式注入可釋放的生命週期控制器時,才提供手動啓動/停止功能。 - 安全邊界:不自動執行下載的插件代碼。下載內容只寫入已校驗的安裝目錄,靜態插件通過 Host 生成的 Loader patch 加載。
倉庫格式¶
倉庫是一個 HTTPS JSON 文件,當前 schema 版本爲 1。示例內容如下:
{
"version": 1,
"plugins": [
{
"id": "example-static",
"name": "示例靜態插件",
"version": "1.0.0",
"description": "一個經過校驗的靜態插件。",
"type": "static",
"downloadUrl": "https://example.com/plugins/example-static/index.js",
"checksum": "0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef",
"entry": "index.js",
"permissions": ["settings.read"],
"config": {
"example": true
}
}
]
}
字段要求如下:
- id:
[a-z0-9][a-z0-9._-]{0,63}。 - type:
static或dynamic。 - downloadUrl:必須爲 HTTPS。
- checksum:小寫 SHA-256 十六進制摘要。
- entry:相對路徑,禁止絕對路徑、反斜槓和
..。 - permissions、config、controllable 爲可選字段。
安裝與啓用¶
在安裝前,請先閱讀 core-patches/README.md,因爲當前 DSH 主線還沒有合併本插件所需的 Host 掛載邏輯。請先把對應改動合入 DSH 核心。
核心補丁就緒後,將本倉庫作爲依賴加入 DSH 的 profile 或 web bundle,並讓 dsh.bundle.patch 指向本包的 cordis.patch.yml:
{
"dependencies": {
"@deepseek-ai/dsh-host-plugin-market": "github:V-dev-388/DSH-plugin-market"
}
}
典型用法¶
- 在 DSH 的 Web 設置頁添加一個 HTTPS 插件倉庫 URL。
- 點擊「刷新目錄」以獲取倉庫內的插件列表。
- 選擇插件進行安裝或移除。
- 對已安裝的靜態插件進行啓用或停用管理。
- 將本倉庫作爲依賴加入 DSH 的 profile 或 web bundle。
適用場景與注意¶
- 適合需要統一管理第三方插件來源、確保代碼安全性的開發者。
- 插件以當前 DSH 進程的權限運行,安裝前請檢查源碼與許可證。
- 下載過程採用「先寫臨時目錄,校驗成功後原子替換安裝目錄」的方式,確保安裝過程的原子性和安全性。