@demo/plugin:给 DeepSeek Harness 挂一个与宿主同风格的 Web 插件界面

前言

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 中明确列出的四项能力。

  1. Web 界面:安装后在 DSH 左侧栏 / 设置中出现插件入口,界面风格与 DSH 宿主一致。
  2. Host 能力:Host 半边注册服务、HTTP 接口或 Agent 工具,并与界面共享同一套实现。
  3. DSH 插件:通过 dsh.bundle 声明 Cordis bundle,随插件管理器安装 / 启用 / 禁用。
  4. 关键词: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 行,改完刷新就能看到结果,出错也能直接定位到文件。

需要注意三点:

  1. 插件以当前 dsh 进程的权限运行。安装前先读一遍 index.js 与 cordis.patch.yml,确认没有超出预期的文件访问、网络请求或 Agent 工具注册。
  2. 许可证是 MIT,见仓库内 LICENSE 文件。保留版权声明即可自由使用和修改。
  3. 兼容性上,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 数、下载量或用户反馈,本文不补充。

羽毛球分组比赛记分
小程序二维码

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

小夜