dsh-intelligence-ui:把 DSH 助手回复渲染成界面

前言

在 DeepSeek Harness(DSH)里用智能体干活时,最常遇到的一种回复是这样的:KPI 对比写成一串文字,时间线落在 Markdown 表格里,窄屏上层次全丢,趋势也看不出来。Markdown 适合散文,不适合结构。MarkYangKp 的 dsh-intelligence-ui 就是这个方向上的小众选择:不换聊天窗口,只把助手消息渲染器换掉,让模型自己写出的结构化内容渲染成卡片、表格、图表和流程图,散文部分保持 Markdown 原样。

这是什么

dsh-intelligence-ui 是 DeepSeek Harbor 生态里”一切皆插件”理念下的一个客户端插件,对应官方目录页分类为”客户端”,在社区目录中是目前只有 1 个 star 的低热度项目。维护者 MarkYangKp,版本 v1.1.1,MIT 协议。

一句话定位:它是 DSH 助手消息渲染器的替代品,接收三种形态的回复——模型写的 OpenUI Lang 围栏、结构化 Markdown、纯文字——前两种渲染成界面,纯文字走宿主的 Markdown 渲染器,原样不动。

解决的问题是:DSH 的聊天窗口默认只做 Markdown 渲染,而模型的回复经常包含比散文更结构化的内容(指标、对比、时间线、代码改动),默认渲染器对这些内容表达力不足。

核心能力

插件注册在 assistant-step 渲染座位上(priority −20),跑一条三模式管线:

  • 原生围栏:回复里有 ```openui 程序,走 parse → evaluate → render,原地渲染组件,保真度最高。
  • 自动编译:没有围栏,但包含 Markdown 表格、KPI 列表或有序步骤,由客户端编译器升级成卡片、图表、搜索表格。
  • 纯文字:其它情况,走宿主 Markdown 渲染器,原样不动。

渲染是插入式的:不合并、不改写、不吞内容。围栏外的文字照常渲染,所以一条回复可以是”说明 → 图表 → 补充说明”。

组件面覆盖十类共 44 个:原语(Box Row Text Icon 等)、布局(Stack Grid)、容器(Card Callout)、文本(Heading KeyValue CodeBlock)、数据(StatCard Table Timeline Steps)、图表(Chart Sparkline Heatmap)、地理(Map)、代码与文件(Diff FileTree)、过程(TreeView Diagram)、交互(Button Tabs Accordion)。完整签名在仓库的 docs/COMPONENTS.md。

编译侧有两个设计约束值得记:渲染器对”坏掉的程序”做了降级处理,字段不合法只降级为局部提示,不会打断整条消息;未闭合的围栏在流式生成时边生成边渲染,定稿不会重挂载控件实例。第二点是在长回复场景下避免闪烁的关键。

主题方面,颜色、圆角、字号全部取自宿主主题 token(--dsw-*),明暗主题自动跟随,仓库里有测试保证零硬编码颜色。插件依赖宿主提供的 --dsw-* 主题 token 与 @deepseek-ai/dsh-client-* 平台模块,不需要全局安装任何东西。

安装与启用

官方安装方式是先把仓库拉到本地,再把目录注册进 DSH 的插件管理器。前置条件是宿主构建支持插件 bundle(engines.dsh >= 0.2.1-rc.0),并按 deepseek.com/harness 下载桌面应用、在 DSH 中配置好模型。

git clone https://github.com/MarkYangKp/dsh-intelligence-ui.git

克隆后不需要构建步骤——lib/client.js 已经进仓。然后打开 DSH 插件管理器,选择”从本地目录安装 / install bundle”,指向仓库根目录。不同 DSH 版本菜单措辞略有差异。

重启 DSH 后打开聊天窗口,浏览器控制台应出现 [dsh-intelligence-ui/1.1.1]。

如果第 3 步在你的 DSH 构建里不存在,说明该构建未开放插件 bundle 能力,无法加载本插件,需要升级 DSH 或使用支持 bundle 的构建。仓库自带的 engines.dsh >= 0.2.1-rc.0 就是这条边界的显式声明。

来源构建(可选,仅 Node 构建、跑测试或改源码时需要):

pnpm install
pnpm build          # 产出 lib/client.js

pnpm 版本固定为 12,由 packageManager 字段管理,Corepack 会自动使用。Node 要求 >= 20。

典型用法

正常写 Markdown,在需要界面的位置插入围栏。下面是 README 里给出的故障复盘示例:

故障复盘:
```openui
root = Stack([hd, tl, ok], "column", 16)
hd = Heading("故障复盘", 2)
tl = Timeline([{"title": "14:02 告警", "description": "错误率超过 15%", "time": "14:02", "variant": "error"}, {"title": "14:26 回滚完成", "description": "错误率回落至 0.4%", "time": "14:26", "variant": "success"}])
ok = Callout("下一步", "给索引任务补上连接池上限。", "info")
不写围栏也可以,结构化 Markdown 会被自动升级。两条路径共用同一条 `parse → evaluate → render` 管线。

临时关闭自动编译,在浏览器控制台执行:
```js
localStorage['dsh-intelligence-ui:disable-auto'] = '1'

排障时值得参考命令行入口:仓库 docs/COMPONENTS.md 给出全部组件签名,examples/README.md 有 10 个可直接运行的示例,docs/ARCHITECTURE.md 说明渲染管线与宿主注入机制。

适用场景与注意

适合谁:在 DSH 客户端里做数据分析、故障复盘、代码审查这类需要”结构化呈现”的人。如果你的回复基本都是散文,收益有限,插件不会改变纯文字渲染行为。

三点注意:

第一,插件以当前 DSH 进程的权限运行。它渲染的界面、注入的脚本、访问的数据范围都跟随进程本身,不会比宿主更受限。安装前请通读仓库源码与 LICENSE:许可证文件在仓库根目录,MIT,声明简洁但完整,确认你对作者条款的理解和你的使用方式一致即可。

第二,它依赖宿主的私有能力(--dsw-* 主题 token、@deepseek-ai/dsh-client-* 平台模块、一个公开的渲染器钩子),而这些钩子在 engines.dsh 0.2.x 线之前不存在。版本边界决定了插件在当前 DSH 构建里能否加载,不满足会直接失败。

第三,当前版本处于 1.1.1,社区关注度低(目录页 star 1)。这意味着遇到问题时,大概率需要自己读源码、看 issue 来排障,维护者的响应节奏未知。

结尾

dsh-intelligence-ui 解决的不是优雅问题,是”模型懂结构、渲染器不懂”的落差:模型写出来的 StatCard、Timeline、Chart 不该退化成文字墙。插件通过三个特征做到这一点——三模式渲染管线、对不完整输出的降级保护、零硬编码颜色的主题系统。目录页:https://www.skillhub.cn/plugins/MarkYangKp/dsh-intelligence-ui ;仓库:https://github.com/MarkYangKp/dsh-intelligence-ui 。

请注意,该插件是社区项目,对应目录页是第三方站点,与 DeepSeek 官方应用商店无从属关系。安装前按上面的命令核对源码与许可证,不要像对待官方组件那样直接信任。

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

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

小夜