前言¶
DSH 的理念是「一切皆插件」,但写一个 DSH 插件不止是写一份清单:界面要跑在宿主里,能力要注册到 Cordis运行时里,两边还要共享同一套实现。很多插件要么只做界面、能力另起炉灶,要么只有 Host 侧逻辑,UI 找不到入口。下面介绍 @demo/plugin(维护者 wodaimnd,仓库 wodaimnd/plugin),一份可直接读源码的示例插件,演示 Web 半边与 Host 半边如何在同一份 bundle 里配合。它不解决某个具体业务问题,而是给出「插件入口长什么样、bundle 行怎么声明」的最小可运行样板。
这是什么¶
@demo/plugin 是一个 DeepSeek Harness 插件,面向 DeepSeek Harness (DSH) Desktop / Web GUI。包名是 @demo/plugin,版本 1.0.1,许可证 MIT,作者署名 Kewei Chen wodaimnd@users.noreply.github.com。它在 DSH 的左侧栏 / 设置中提供一个插件入口,同时通过 dsh.bundle 声明 Cordis bundle,由插件管理器负责安装 / 启用 / 禁用。
核心功能¶
下面是 README 中明确列出的四项能力。
- Web 界面:安装后在 DSH 左侧栏 / 设置中出现插件入口,界面风格与 DSH 宿主一致。
- Host 能力:Host 半边注册服务、HTTP 接口或 Agent 工具,并与界面共享同一套实现。
- DSH 插件:通过
dsh.bundle声明 Cordis bundle,随插件管理器安装 / 启用 / 禁用。 - 关键词:
deepseek、dsh、dsh-plugin(写在package.json里,用于检索)。
源码侧的分半边约定在目录结构里很直白:index.js 是 Host 半边,client.js 是浏览器半边。也就是说界面逻辑和后端能力都在这个目录里,不依赖外部服务。
安装与启用¶
README 给出两条路径,都需要先把目录拿到本地,没有 dsh plugin add github:owner/repo 这种一行命令的安装方式。
先克隆仓库:
git clone https://github.com/wodaimnd/plugin.git
cd plugin
方式一:把该目录当作本地 bundle 安装。可以让 Agent 执行下面这条插件管理器命令:
plugin_manager action=install_bundle target=<绝对路径>/plugin
方式二:手工在界面里操作。打开 设置 → 插件 → 添加,选择本地目录,然后启用 @demo/plugin。
两条方式的差别只在谁来执行 install_bundle;target 要写成目录的绝对路径,不能用相对路径或仓库 URL。
典型用法¶
安装并启用后,刷新 DSH Web 页面,在左侧栏找到对应入口即可打开插件页面。这一步不需要额外配置。
Host 半边随 bundle 行激活;需要调整行为时,改 cordis.patch.yml,或在插件管理器的配置页面里调整配置项。具体配置键名 README 没有展开,改动前应先读 cordis.patch.yml 和源码确认。
目录结构与开发¶
完整目录如下:
plugin/
├── package.json # DSH 插件清单(dsh.bundle / dsh.client)
├── index.js # Host 半边
├── client.js # 浏览器半边
├── cordis.patch.yml # bundle 行声明
└── README.md
package.json 中与本插件直接相关的字段:
{
"name": "@demo/plugin",
"version": "1.0.1",
"type": "module",
"main": "./index.js",
"dsh": {
"bundle": {
"patch": "./cordis.patch.yml"
},
"client": {
"platform": "web",
"immediately": true
}
}
}
dsh.bundle.patch 指向 bundle 行声明文件;dsh.client 声明平台为 web 并 immediately 加载。这是一份无构建步骤的纯 ESM 插件:修改源码后刷新即可生效,不需要打包。
适用场景与注意¶
适合想研究 DSH 插件结构的人:改 client.js 调界面、改 index.js 加 Host 能力、改 cordis.patch.yml 调 bundle 行,改完刷新就能看到结果,出错也能直接定位到文件。
需要注意三点:
- 插件以当前 dsh 进程的权限运行。安装前先读一遍
index.js与cordis.patch.yml,确认没有超出预期的文件访问、网络请求或 Agent 工具注册。 - 许可证是 MIT,见仓库内
LICENSE文件。保留版权声明即可自由使用和修改。 - 兼容性上,
dsh.client声明要求 DSH 的 Web 前端支持插件模块加载。如果你的 Web 前端版本没有这个能力,界面半边不会加载;Host 半边随 bundle 行激活,不受此限制影响。
小结¶
@demo/plugin 的价值在于给出一个可直接改的样板:Web 半边与 Host 半边在同一个目录里,接入方式是本地 bundle 而非远程拉取。想理解 DSH 插件怎么注册界面、怎么声明 bundle 行、界面与能力怎么共享实现,先跑通这份示例比读文档更快。
目录页:https://www.skillhub.cn/plugins/wodaimnd/plugin
GitHub:https://github.com/wodaimnd/plugin
需要说明:上述内容以 GitHub README 与 package.json 为唯一依据,README 未提供 star 数、下载量或用户反馈,本文不补充。