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 进程的权限运行,安装前请检查源码与许可证。
- 下载过程采用「先写临时目录,校验成功后原子替换安装目录」的方式,确保安装过程的原子性和安全性。