前言¶
在 DeepSeek Harness(DSH)里做智能体,常见做法是模型只回 Markdown 或纯文本:表格要手抄、图表靠想象,稍微复杂一点的可视化或三维探索,往往要另开脚本或前端工程。社区里也有把「生成式 UI」接到别的编排框架上的方案,但 DSH 用户更希望能力直接挂在 Harness 自己的扩展点上,不额外引入 CopilotKit、LangGraph 或外部路由。
下面介绍由 dreamfarer-space 维护的客户端插件 deepseek-harness-intelligent-ui(npm 包名同名)。它在对话流里提供声明式组件目录和沙箱内的实时 HTML 组件,思路借鉴 CopilotKit 的 OpenIntelligentUI,但实现面向 DSH。插件在 SkillHub 目录 归类为「客户端」;源码与文档见 GitHub 仓库(MIT 许可证)。SkillHub 为社区独立站点,与 DeepSeek / 幻方无官方从属关系。
这是什么¶
一句话定位:为 DSH 提供生成式、可交互的聊天 UI——用户用自然语言提问,Agent 自行决定用纯文本、原生组件,还是沙箱里的自定义实时组件来回答。
界面随模型输出流式渐进渲染;排序、筛选、滑块、标签页等交互在浏览器本地完成。只有按钮、表单、选择题或 Bridge.sendPrompt 等显式操作才会把内容送回 Agent,可在当前会话继续,也可按组件设计新开会话。
核心功能¶
Agent 如何选择呈现方式¶
插件向系统提示注入引导(src/guidance.js),每轮由模型在以下路径中择一:
- 普通文本:寒暄、简短事实、解释、可复制代码、工作区内的编程任务。
ui_render:对比、数据探索、看板、流程、公式、函数图像、代码评审、方案选择、表单收集等结构化内容。ui_render_widget:组件目录难以表达的三维场景、模拟、动画、小游戏、自定义工具等。
需要强制走 UI 时,可使用 /ui <需求>。
| 工具 | 作用 |
|---|---|
ui_render |
从固定目录流式渲染原生 React 组件 |
ui_patch |
按组件 id 增量修改已展示的界面,未改动的组件保留交互状态 |
ui_render_widget |
在不透明源沙箱 iframe 中流式输出 HTML/CSS/JS,全程一个 iframe,避免重建闪烁 |
组件目录与沙箱组件¶
README 列出 26 种声明式组件,渲染前经 Host 校验(未知类型、坏图、非法 Plot 表达式等会返回 ok:false 供模型修正)。类别包括布局(Card、Tabs 等)、数据(Table 支持排序、搜索、筛选、分页、CSV 导出)、图表(Chart、Scatter、Heatmap)、数学与图示(Plot、Math、Mermaid)、代码结构(CodeDiff、FileTree、JsonView)以及 Form、Choice 等交互组件。
ui_render_widget 遵循 OpenIntelligentUI 的流式字段顺序,并提供全局 UI 辅助(如 UI.three、UI.canvas、UI.state)。沙箱默认采用严格 CSP、token 校验的消息通道与限流的 Bridge.sendPrompt。
流式、本地优先与状态¶
亮点在官方文档中概括为:自主决策呈现方式、JSON 未结束即可出现组件、浏览器内完成表格与图表操作而不回叫模型、标签页与 UI.state 等在回合折叠、原位修改、刷新或停止生成后仍可恢复(具体行为见 README 中「显示位置与状态保持」一节)。
安装与启用¶
环境要求(来自中文 README):
- DeepSeek Harness 0.1.7 – 0.2.x(
>=0.1.7-rc.1 <0.3.0) - Node.js ≥ 22.13
- Windows、Linux、macOS
npm 包自带预构建浏览器 bundle,安装无需编译。
在 Web profile 下添加插件:
dsh plugin --profile web add deepseek-harness-intelligent-ui
安装后重启 DSH Web(dsh web)。桌面版可在 Plugins → Add plugin 中输入同一包名 deepseek-harness-intelligent-ui。
可选:使用引导式安装器,会先检查 Node、dsh 版本、pnpm 和 profile,再执行等价的 dsh plugin add:
npx deepseek-harness-intelligent-ui install
npx deepseek-harness-intelligent-ui doctor
升级示例:
dsh plugin --profile web add deepseek-harness-intelligent-ui@latest
卸载:
dsh plugin --profile web remove deepseek-harness-intelligent-ui
若提示缺少 pnpm,可按 README 说明执行 corepack enable 或 npm i -g pnpm。安装后若界面未出现,需确认已重启且使用的是安装时指定的 profile。
典型用法¶
经过上面的安装与重启,无需额外命令即可试用:用自然语言描述需要可视化的任务,Agent 会按引导选择文本或 UI 工具。
README 给出的示例提问包括:
- 「按渠道对比 Q1–Q4 营收」(适合表格或图表类
ui_render) - 「让我在 3D 里探索 x²+y²+z²=2Rz」(更可能触发
ui_render_widget)
用户若说「把柱状图改成折线图」,模型可使用 ui_patch 在原卡片上增量更新。Choice 组件支持在当前会话继续或携带自包含 prompt 新开会话。
需要改默认行为时,安装后 bundle patch 会插入 intelligent-ui 配置行;可在 profile 的 cordis.patch.yml 中覆盖,例如允许沙箱访问 CDN:
- id: intelligent-ui
config:
allowNetwork: true
cdnAllowlist: [https://esm.sh, https://cdn.jsdelivr.net]
更多配置项(enableCatalog、enableWidget 等)见仓库 README「配置」一节。
适用场景与注意¶
适合谁: 已在 DSH Web 或桌面版上使用真实 DeepSeek 模型、希望对话内直接出现可排序表格、图表、公式、Mermaid、代码 diff 或轻量三维/Canvas 演示的开发者与团队。扩展方还可参考文档注册第三方组件、受控数据与便携渲染器 renderer/renderer.js。
使用注意:
- 插件随 DSH 进程加载,具备与当前 Harness 相同的权限边界;安装前请阅读源码与 MIT 许可证,并只从可信来源安装 npm 包。
- 真实模型质量因任务而异:README 公开的
deepseek-flash质量基线中,部分用例标记为失败(如流式中断、Agent 未选表格组件),说明路由仍依赖模型表现,不能假定每次都会选对工具。 - DSH 版本须在 README 声明的兼容范围内;与旧包名
dsh-intelligent-ui并存会导致冲突,升级路径见 README「故障排除」。
结尾¶
deepseek-harness-intelligent-ui 把声明式生成 UI 和沙箱实时组件接到 DSH 自带扩展点上:流式出图、本地交互、显式动作才回传 Agent。若你正在 DSH 里做数据对比、可视化探索或对话式小工具,可从目录页了解收录信息,并按官方命令安装试用。
- 目录页:https://www.skillhub.cn/plugins/dreamfarer-space/deepseek-harness-intelligent-ui
- GitHub:https://github.com/dreamfarer-space/deepseek-harness-intelligent-ui