前言¶
在 DSH 插件场景里,模型经常需要输出结构化的界面内容:图表、KPI 卡片、表格、表单、仪表盘。如果只让模型输出文本或代码,前端还得自己解析、渲染、处理交互;如果引入额外的嵌套模型调用,链路又会变长。
dsh-valuz-genui 的思路是:给模型提供一个 generate_ui 工具,让模型自己生成 A2UI v0.9.1 文档,浏览器在聊天内将其渲染为交互式界面。下面介绍它的定位、能力、安装方式、配置项和已知限制。
这是什么¶
dsh-valuz-genui 是 valuz-ai 维护的 DeepSeek Harness 插件,许可证为 MIT。它是一个 Web 客户端插件,package.json 中声明 dsh.client.platform 为 web。
它的核心价值是:模型在一次模型回合中生成 UI,浏览器在聊天内渲染,并且不发起嵌套模型调用。它基于 valuz-genui core,使用 A2UI catalog、streaming sanitizer 和 React renderer。
核心能力¶
generate_ui 工具¶
插件给模型提供 generate_ui 工具,调用形式为:
generate_ui(messages, title?)
其中:
messages:模型书写的 A2UI v0.9.1 消息对象数组。messages中createSurface在前,随后是updateComponents/updateDataModel。- 恰好一个组件的
id为root。 title可选,用作短 surface 标题。
聊天内渲染¶
浏览器会在聊天内将 A2UI 文档渲染为交互式界面,包括:
- 图表;
- KPI 卡片;
- 表格;
- 表单;
- 仪表盘。
渲染发生在当前聊天上下文中,而不是额外页面或外部面板。
流式生成¶
模型在书写 generate_ui 参数时,浏览器会流式渲染已生成的部分。UI 作为模型自身输出实时出现,而不是一次性等待完整文档结束后再显示。
交互回传¶
用户在渲染界面上的点击或提交,会作为普通用户消息返回给模型。模型可以根据这些交互继续回答文本,或再次调用 generate_ui 生成更新后的界面。
校验与重放¶
生成文档会被校验,然后持久化到 tool/result.meta。在 reload / replay 时,插件会根据该结果重新渲染 surface。
A2UI 文档校验会丢弃 schema-invalid components,而不是让整个 surface 失败。
Authoring guide¶
插件通过 system prompt 与 skill 向模型提供 authoring guide。
在支持 skills 的宿主中,完整目录可以按需加载;如果没有 skill 能力,或者配置了 alwaysOnFullGuide: true,完整目录会保留在 system prompt 中。
安装与启用¶
基本安装¶
要求:
Node.js >=22.19
将插件安装到已经配置好模型的现有 profile:
dsh plugin --profile web add @valuz/dsh-valuz-genui
npm 包携带预构建 lib/,无需构建步骤或 allowBuilds 条目。
基本使用无需额外配置。
安装后验证¶
安装后,先重启 dsh web,再对浏览器做 hard-refresh。然后让模型生成一个图表或仪表盘,用于确认 surface 能正常出现在聊天中。
固定未发布 commit¶
如果需要固定一个未发布 commit,可以改用 git 安装:
dsh plugin --profile web add github:valuz-ai/dsh-valuz-genui#<commit-sha>
如果 pnpm 版本 >=10,git 依赖的 prepare build 可能需要允许后才成功。
本地开发¶
本地开发时,可以这样做:
git clone https://github.com/valuz-ai/dsh-valuz-genui.git
cd dsh-valuz-genui && pnpm install && pnpm run check
dsh plugin --profile web add /absolute/path/to/dsh-valuz-genui
之后按正常流程重启 dsh web 并 hard-refresh。
配置¶
可以在 profile 的 cordis.patch.yml 中覆盖以下配置项:
| Key | Default | 含义 |
|---|---|---|
maxDocumentBytes |
262144 |
序列化后的 A2UI 文档字节上限,包含边界。 |
alwaysOnFullGuide |
false |
是否将完整目录保留在 system prompt 中,而不是通过 skill 按需加载。 |
如果希望完整 authoring guide 始终出现在 system prompt 中,可以设置:
alwaysOnFullGuide: true
适用场景与注意¶
适合谁¶
这个插件适合希望模型在 DSH 聊天中直接产出可交互 UI 的场景,尤其是图表、仪表盘、表单、表格这类需要用户点击或提交的界面。
安装前注意¶
插件会以当前 dsh 进程权限运行。安装前建议检查源码与许可证。当前已核实资料中的许可证为 MIT。
Authoring guide 成本¶
始终开启的 authoring guide 有 prompt 成本。
如果没有 skill 能力,或者设置了 alwaysOnFullGuide: true,完整目录会保留在 system prompt 中。模型如果猜测字段,可能导致组件被丢弃。
客户端 bundle¶
客户端 bundle 较大,约 3.5 MB。
主题桥接¶
主题桥接较粗:未完整映射 A2UI --va2-* tokens 到 host --dsw-alias-* scale。
交互路径¶
所有交互都通过模型往返,暂无 local-only handling。
PTC / Code Mode preset¶
在 PTC / Code Mode preset 下不会出现 surface。应使用 Standard preset,或 mode: both。
Session events¶
没有 plugin-owned session events。临时 surface state 不属于 model-visible log。
宿主兼容性¶
peer ranges 开放,且 client bundle 手抄 dsh 模块列表。未来宿主变更可能影响加载。
已核实资料中的 peerDependencies 包括:
@deepseek-ai/cordis ^4.0.1
多个 @deepseek-ai/dsh-* 包 >=0.1.0-rc.5
React ^18.2.0 || ^19.0.0
完整 dependencies 清单未在本次已核实资料中完整给出,安装前仍建议查看仓库中的 package.json。
链接¶
- GitHub:https://github.com/valuz-ai/dsh-valuz-genui
- 目录页:本次已核实资料未提供目录页 URL。