dsh-genui-enhanced:在 DSH 对话里渲染可交互 GenUI

前言

DeepSeek Harness(DSH)把助手能力拆成插件生态:模型输出可以是文本,也可以触发客户端侧的富交互界面。若回复里只有 Markdown 表格或代码块,排序、筛选、拖参数改图、表单回传等操作往往要再发一轮 prompt,体验和延迟都不理想。

dsh-genui 一类插件通过 dsh-ui 代码围栏,把模型生成的声明式 UI 直接嵌进对话。社区仓库 Asaiuta/dsh-genui-enhanced 是在上游 @changfenhuang/dsh-genui 0.14.0 上的本地 fork(包名仍为 @changfenhuang/dsh-genui,版本 0.14.0-fork.3),在保留上游组件面的同时,换了图表引擎并补了几项交互能力。下面介绍它是什么、相对上游改了什么,以及如何在本机构建并挂到 DSH。

这是什么

定位:GenUI for DeepSeek Harness——在助手回复中内联渲染安全、可交互的 UI(表格、图表、表单、测验、工作区布局等),并通过 action 事件与模型双向联动。

维护与分类:维护者 Asaiuta;在 SkillHub 插件目录 中归类为「客户端」。许可证 MIT(见仓库 README 与 package.json)。

与上游的关系:fork 自 @changfenhuang/dsh-genui 0.14.0,未发布到 npm;npm 上的 @changfenhuang/dsh-genui 是上游稳定版,不包含本 fork 的增量。完整差异见仓库内 FORK.md 与 CHANGELOG.md。

相对上游的核心增量

资料中明确列出的 fork 差异如下,写 prompt 或读 SKILL 时可按这些能力预期行为。

  1. Diagram 引擎:由 mermaid 换为 pele(约 1.02 MB 体量,资料称相对 mermaid 约 −70% 资源体积);支持通过 CSS 变量做 live theming;mindmap、timeline 在白名单内。
  2. 图表:ECharts 场景下增加 chart 的 kind:"area"。
  3. 表单输入:原生 date / datetime-local / time / number,并支持 min / max / step。
  4. 表格:自动分页(pageSize);行数上限提高到 200。
  5. Computed fields:输入驱动本地重算(自上游 0.15.0 fix 线移植)。

上游 README 中的能力矩阵、演示截图与视频仍适用于本 fork 的组件面;仅 diagram 渲染引擎不同(pele 替代 mermaid)。

环境要求

安装与激活前确认:

  • DSH 版本:^0.2.0-rc.1 || ^0.2.1-rc.1(README 写明已在 dsh-v0.2.0-rc.1、dsh-v0.2.1-rc.2 上验证)。
  • pnpm:dsh plugin CLI 依赖 pnpm;若未安装可先 corepack enable 或 npm i -g pnpm,新开终端后执行 pnpm -v 确认可用。

安装与启用

本 fork 不能用「只改 GitHub 路径」的方式代替官方命令;且 lib/ 未提交仓库,必须先本地构建再 link: 注册。

路径 A:只要上游 npm 版(无本 fork 增量)

若不需要 pele、area 图、表格分页与 Computed fields 等 fork 特性,可直接安装上游包:

dsh plugin --profile web add @changfenhuang/dsh-genui

注意包名必须是 @changfenhuang/dsh-genui。npm 上另有未 scope 的 dsh-genui(其他维护者的 Vue/OpenTiny 实现),peer 依赖不兼容,勿装错。

仅 npm install @changfenhuang/dsh-genui 只会加 Node 依赖,不会向 DSH 注册插件;集成 DSH 仍需上面的 dsh plugin add。

在已具备本仓库源码的目录中(例如从 GitHub 获取),按 README Quick Start Option B 执行:

cd dsh-genui-enhanced
pnpm install

pnpm 可能提示批准 esbuild 的 build script,按提示确认。随后做构建门禁(README 提到 pnpm 11 细节见 FORK.md):

./node_modules/.bin/tsc -p tsconfig.json
./node_modules/.bin/tsdown

类型检查需零错误;tsdown 会生成 lib/(含 client.js、index.js、assets/*)。未构建完成前不要用 link:,否则 peer 资源(diagram 引擎等)无法正确解析。

注册到 DSH Web profile:

dsh plugin --profile web add link:$PWD

快速验证

  1. 重启 DSH Web 服务,浏览器 硬刷新(Ctrl + F5 或 Cmd + Shift + R)。
  2. 新开一段对话,发送:
Use dsh-ui to draw a stats dashboard with a sortable service table.
  1. 预期:回复中出现可就地交互的仪表盘(含可排序表格等),而不是纯代码块。
  2. 打开浏览器开发者工具 Console,应看到:[genui] client active; fence-channel=dom。

组件语法与字段说明见仓库根目录 SKILL.md;上游产品站与能力矩阵链接见 README(本 fork 继承同一套 dsh-ui 围栏教学与 client 渲染链路)。

典型用法说明

模型在回复里输出 dsh-ui 围栏内的声明式结构(布局、stat、table、chart、plot、form、quiz 等),客户端插件负责解析并在对话 DOM 中渲染。用户点击表头排序、搜索过滤、拖动 plot 参数滑块、或点击 action 按钮时,可在本地即时更新或把事件回传给模型,减少为「再描述一次 UI 变更」而重复生成的次数。

具体字段与示例以 SKILL.md 与 demo-prompts.md 为准;勿在资料未记载处臆造配置项。

适用场景与注意

适合谁:在 DSH Web 端做数据看板、参数探索、轻量表单与测验等「回答即界面」场景的开发者;需要更小 diagram 资源体积或 pele 主题化、area 图、表格分页与 Computed fields 时,优先考虑本 fork 而非 npm 上游包。

安全与权限:插件作为 DSH 客户端扩展运行,能力边界与当前 DSH 进程及浏览器环境一致;安装前请自行审阅源码与 MIT 许可证,确认符合你的部署策略。

常见坑(README Installation Pitfalls):

  • 勿安装错误的 npm 包名(见上文 scope)。
  • link: 目录必须先 ./node_modules/.bin/tsc + tsdown 产出 lib/。
  • 本 fork 不在 npm 发布;需要 fork 增量时必须走路径 B,不能假设 dsh plugin add 某 GitHub 简写即可替代构建流程。

结尾

dsh-genui-enhanced 在 DSH 对话流里把 GenUI 做成一等公民:上游 0.14.0 的交互组件面保留,diagram 换 pele 并叠加 chart area、原生日期/数字输入、表格分页与 Computed fields 等改进。目录页:https://www.skillhub.cn/plugins/Asaiuta/dsh-genui-enhanced;源码与构建说明:https://github.com/Asaiuta/dsh-genui-enhanced。

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

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

小夜