dsh genui 实录:AI 输出直接升级成可点击的交互界面
OpenTiny 社区 295 秒实操录屏的十个帧检瞬间:一句对话让 Agent 自己装插件,火车票查询表单、可排序票价表、时段票价柱状图、番茄钟与计算器次第生成,最后是那颗关掉这一切的小开关。
最近更新: 2026-10-15

问助理「去北京的火车票多少钱」,你得到的是一段散文:数字靠自己扫,对比靠自己算。本页的插件让模型直接用真组件作答——上方首图就是它的可排序票价表,正被点击,运行在 DeepSeek Harness 会话里。整页跟随 OpenTiny 社区发布的一条 295 秒录屏:你看到的面板,全都出自一句再普通不过的对话。
本页是「交互式输出」的深读——你点的、你填的,都会回传进会话。若想了解让 AI 输出的 HTML「被显示出来」的那条轴,请看 dsh 渲染插件:让回答从能读到能看(图文)
TL;DR
- ▸dsh-genui(lhuans/dsh-genui,2026-10-15 实查 ★12;OpenTiny/dsh-genui 旧名重定向至此)把模型回复渲染成真组件——图表、表单、表格、小应用——你点击或提交的内容会回流进对话。
- ▸安装只有一行:dsh plugin --profile web add dsh-genui。录屏里是 Agent 自己跑的:PowerShell 执行策略拦下脚本包装时,它直接改调 CLI。装完必须重启才会生效。
- ▸演示是一次火车票查询:回复里带着深圳→北京的查询表单(出发、到达、日期选择器、查询按钮)、五行可排序票价表、按时段对比的票价柱状图——随后又按需生成番茄钟和计算器。
- ▸输入框工具行的星形图标切换 GenUI 提示词引导(帧上提示为「GenUI prompt on」);关掉后模型回到纯文本。移除用 dsh plugin --profile web remove dsh-genui——录屏结尾演示了移除后回复打回原形。
九个逐帧核验的步骤
第一部分 · 文字墙与安装
- 1
起点:一份调查作业变成文字墙
插件登场之前,录屏先给了一个反例:普通 DeepSeek 聊天窗口回答「DSH 插件有多少」,给出的是一篇统计作文——「三百多个到一万六千多个不等」,再接一张 awesome 列表与聚合市场的 Markdown 表(精选 353+、某市场 2,825 条)。内容没毛病,累的是读的人。这就是 dsh-genui 要对着的基线。(注意:这一帧是普通 DeepSeek 聊天,不是 Harness Web UI。)
$三百多个到一万六千多个不等$awesome-dsh-plugins 353+ · @ace-zone/dsh-market 2,825
基线长这样:同一份答案,一堵 Markdown 墙。在 0:28 观看 - 2
安装:一句话,让 Agent 自己来
还没轮到终端:录屏把「帮我把 npm 上的 dsh-genui 插件装到 web profile,执行 dsh plugin --profile web add dsh-genui」直接打进全新的 Harness 会话并回车。这正是 README「让 AI 代装」一节给的原话,一字未改交给 Agent。前置条件照旧(Node、pnpm),而且重启之前什么都变不了——停掉、重启、刷新、开新会话。
$帮我把 npm 上的 dsh-genui 插件装到 web profile,执行 dsh plugin --profile web add dsh-genui
整个安装,就是一条聊天消息。在 2:15 观看 - 3
Agent 真的动手装——被拦了还会自己变通
会话自动改名「安装 dsh-genui 到 web profile」开始干活:「I'll run that plugin install command for you… The PowerShell dsh plugin is blocked by execution policy, let me call the CLI directly.」——一次真实安装撞上 Windows 真实护栏,当场改道,不是念稿。同一段落里视频也给了手动兜底(终端敲同一条 add 命令),结尾还演示了镜像的 remove 命令。
$安装 dsh-genui 到 web profile$blocked by execution policy → call the CLI directly
真实的安装,现场改道。在 2:22 观看
第二部分 · 一次查询,三个组件
- 4
提问:一句家常话的火车票查询
新会话里用户输入「统计一下今天深圳到北京的火车票」。回复开头是一张生成的卡片「深圳 → 北京 火车票查询」:出发城市预填深圳、到达北京、日期选择器(帧上为 2025-06-18)、一颗黑色「查询」按钮。是表单——因为模型判断这个答案最合适的形状就是表单。
$深圳 → 北京 火车票查询$出发城市 深圳 · 到达城市 北京 · 出发日期 2025-06-18
模型为这封回复选的前门,是表单。在 1:26 观看 - 5
作答:一张五行车次的可排序票价表
表单下方,结果以真表格渲染——序号、车次、出发到达站与时刻、历时、座位类型、票价、余票:G80 07:14→15:38 二等座 1068 有票,G82 一等座 1712,慢车 Z108 硬卧 497 剩 32 张,G96 无票。「票价(元)」列表头带排序箭头,首图正抓到点击那一瞬。同一份数据三副面孔:表单用来问,表格用来扫,排序用来比。
$G80 07:14→15:38 二等座 1068 有票$G82 一等座 1712 · Z108 硬卧 497 · 32张
五班车,列列可排,不靠截图。在 1:30 观看 - 6
把模式画出来:票价柱状图
同一封回复接着给出「不同时段票价对比」——真坐标轴的柱状图,上午/中午/下午/夜间四根柱,中午冲到近 1,700,夜间那班不足 500。消息脚注写着「用量 27.2K tok · 用时 6秒」。仓库 README 的图表清单(柱、线、饼、雷达、仪表盘等)是通用能力,这一帧是它的具体一次。
$不同时段票价对比$上午 · 中午 · 下午 · 夜间
同一封回复的第二个组件:一眼能懂的走势。在 1:22 观看
第三部分 · 小应用与那颗开关
- 7
「生成番茄钟」——一个能用的小应用
新会话「生成精美番茄钟」:回复搭出一颗番茄钟——0 到 1,500 的表盘、开始专注/重置/跳过本段三颗按钮、装着「完成产品方案初稿」的任务栏与独立保存按钮、还有一张统计表(今日完成番茄数、专注分钟数、当前模式)。这个回路里没有任何人写代码:模型写了界面,按钮真的有反应。
$开始专注 · 重置 · 跳过本段$本次专注任务:完成产品方案初稿
一个能干活的小应用,被写进回复里。在 3:26 观看 - 8
「生成计算器」——并且真按下去
「生成计算器」会话渲染出计算器卡片——AC、±、数字、运算符、等号——录屏真用了它:屏幕上是 450-93,光标正按「=」(README 的招牌示例,现场复刻)。按键是从模型 JSON 描述流式渲染出的真组件,不是某张截图。
$450-93$AC ± 7 8 9 × 4 5 6 + 1 2 3 = 0 . 00
颗颗按键都能用——这是按下去的瞬间,不是口号。在 3:46 观看 - 9
那颗开关:「GenUI prompt on」
输入框工具行上有颗星形图标,悬停出现提示「GenUI prompt on」。它控制 GenUI 引导提示——告诉模型何时该输出界面的那段附加提示词(UP 主在评论区的叫法:提示词注入)。默认开启且跨重启记忆;关掉后模型回到纯文本。录屏结尾移除插件(dsh plugin --profile web remove dsh-genui),同一类问题从此只回散文。
$GenUI prompt on$DeepSeek-V4-Pro Low
一颗开关,决定回复要不要长出界面。在 3:52 观看
常见问题
这一页最常被问的问题,答案来自录屏、评论区与插件仓库。
dsh genui 是什么?
一个 DeepSeek Harness 插件,把模型回复变成可交互的界面——图表、表单、表格、选择器、小应用——并把你的点击与提交送回对话。仓库是 lhuans/dsh-genui(2026-10-15 GitHub 实查 ★12,MIT;旧地址 OpenTiny/dsh-genui 重定向至此,UP 主置顶评论也指到这里)。它以 dsh-genui 为名发布在 npm,安装命令 dsh plugin --profile web add dsh-genui。发布这条实录的账号是 OpenTiny 社区,渲染组件来自 OpenTiny 的 genui-sdk。
和「渲染 HTML」的插件有什么区别?
差别有两层:模型写的是什么,以及结果能不能操作。raw-html 类插件拿模型写好的 HTML 让聊天界面显示——图表和动画是拿来看的;dsh-genui 则让模型输出一份界面的结构化 JSON 描述(README 称放在 schemaJson 代码块里),由渲染器变成白名单组件,你点击、提交的东西会回流进会话,模型据此继续。一边是显示,一边是回合。本页帧里出现的正是回合那一半:表单提交、表格排序、按键按下。
它支持哪些交互动作和组件?
按仓库 README:图表类型(柱、线、饼、环、雷达、仪表盘、漏斗、散点、瀑布);表单控件(文本、下拉、单选、复选、开关、步进器、日期选择、搜索框、穿梭框),提交值自动回传对话;带分页与搜索的表格,以及树、时间线、标签页、卡片;向导、测验等多轮回合;还有帧里那种自由发挥的「小应用」(计算器、番茄钟)。每次回复由模型自行决定,明确说「用界面回答」也行。能渲染的只有白名单组件——不会注入任意 HTML 或脚本。
怎么安装?为什么装完没反应?
一行:dsh plugin --profile web add dsh-genui(来自 npm,无需账号、无需克隆)。录屏里让 Agent 代跑;PowerShell 执行策略拦下包装脚本时,Agent 直接改调 CLI。然后是最常被跳过的一步:重启——Ctrl+C 停掉 harness,重新启动,刷新浏览器,开新会话。DSH 在启动时锁定插件集,不重启回复就还是纯文本。移除是镜像命令:dsh plugin --profile web remove dsh-genui。
到底是哪个仓库?GitHub 上有两个 dsh-genui。
视频里的是 lhuans/dsh-genui——UP 主置顶评论与 OpenTiny/dsh-genui 重定向双重确认(均于 2026-10-15 核查;★12,pushed 2026-10-09)。同名的 omdsh-dev/dsh-genui(★588,pushed 2026-10-14)是另一个项目、另一套架构(dsh-ui 围栏渲染器)——搜索时极易混淆,视频评论区也有观众撞上同样的二义。本页所有链接都指向 lhuans 仓库及其站点。
每条回复都会变成界面吗?开销如何?
不会——模型只在合适时才生成界面,普通问题照常回普通文本(README 明说,帧里也有散文回答)。输入框的星形开关可关掉 GenUI 引导,回到全文本回复,卡片渲染仍保留。交互确实要花 token:每张界面都是模型输出,帧里的脚注显示单轮数万 token——实录中的两轮分别是 27.2K 与 29.1K tok。
相关指南
相邻的几条轴——各自改的是什么,为什么不是这页。
来源与署名
全部画面来自 Bilibili「OpenTiny社区」账号 2026-10-12 发布的一条实录(295 秒,无字幕轨;2026-10-15 API 实查 9,072 次播放——搜索页同数字虚高约 10 倍,故只引 API 值)。仓库身份经 UP 主置顶评论与 GitHub API 重定向核查确认(2026-10-15);星标为同日 API 值。UP 主账号之外的身份信息一律按画面所示表述、未独立核实。上方每帧均可回跳其原始时间戳。
