🎁 福利专区全网大模型免费应用 + 新用户福利 + 注册活动入口,低成本玩转 AI

生成式界面 MindLab-Research/dsh-generative-ui

DeepSeek Harnessv0.2.0
MindLab-Research4 天前有提交已提供中文文档扫描:含敏感能力

为 DeepSeek Harness 打造的生成式 UI:智能体不再用文字作答,而是直接给出一个能跑的 React…

56.7/100
综合分
99
GitHub 星标
497
npm 周下载
—/5
用户评分

数据截至 2026/10/31 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。

安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add dsh-generative-ui
npm 源 · dsh-generative-ui 的发布者账号已校验与本仓库一致

状态速览

判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态
信任档位:已验证
是什么
dsh 原生插件 · market
装得上吗
本站已在 dsh 0.2.1-rc.5 下真实安装成功
非静态推断
L5 · 运行时冒烟等级说明 →
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
活跃:最近一次提交在 4 天前
档位由哪些信号合成

本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。

验证判据与等级说明 →
社区实装还没有人打卡 · 装过的第一个就是你
安装兼容性检查✓ 自动检查通过
展开查看检查明细 ↓

以下结论由程序自动检查 npm 包、engines 声明与入口文件得出,未做人工实机验证——能装不等于用着没问题。

✓npm 包dsh-generative-ui @ 0.2.0
✓Node 引擎未声明 engines.node
✓dsh CLI 依赖未声明 dsh 版本约束
✓入口文件main/exports/bin 已声明

验证方式:npm registry 存在性 + package.json 静态校验 · 最后检查 2026/11/1 20:22:26

安全扫描自动 · 静态分析源码
v2.7.0
🔵 扫描:含敏感能力尚无人工评估
展开查看扫描说明与证据 ↓

静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。

读写/删除本地文件发起外部网络请求
查看扫描证据(共 13 处,展示前 13 条)
  • 读取本地文件
    lib/index.js:148
    var readSkill = (relative) => readFileSync(new URL(`../skill/${relative}`, import.meta.url), "utf8");
  • 读取本地文件
    lib/index.js:704
    return existsSync(path) ? path : undefined;
  • 读取本地文件
    lib/index.js:715
    res.end(await readFile(file));
  • 读取本地文件
    lib/index.js:728
    const ids = await readdir(join(cwd, CANVAS_DIR)).then((names) => names.flatMap((name) => {
  • 读取本地文件
    lib/index.js:749
    const body = await readFile(join(cwd, path + suffix), "utf8");
  • 读取本地文件
    lib/index.js:757
    const code = await readFile(join(cwd, canvasPath(id)), "utf8");
  • 发起网络请求
    src/client/index.ts:170
    void fetch(`${CARD_ERROR_PATH}?session=${encodeURIComponent(id)}`, {
  • 读取本地文件
    src/index.ts:138
    return existsSync(path) ? path : undefined;
  • 读取本地文件
    src/index.ts:159
    res.end(await readFile(file));
  • 读取本地文件
    src/index.ts:191
    const ids = await readdir(join(cwd, CANVAS_DIR)).then(
  • 读取本地文件
    src/index.ts:217
    const body = await readFile(join(cwd, path + suffix), "utf8");
  • 读取本地文件
    src/index.ts:227
    const code = await readFile(join(cwd, canvasPath(id)), "utf8");
  • 读取本地文件
    src/skill.ts:102
    const readSkill = (relative: string): string => readFileSync(new URL(`../skill/${relative}`, import.meta.url), "utf8");
扫描于 2026/11/3(0 天前) · 范围 入口闭包 + 全包扫描 · 来源 npm 发布包

静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。

依赖的 DSH / Cordis 模块
@deepseek-ai/cordis@deepseek-ai/dsh-agent@deepseek-ai/dsh-agent-default-model@deepseek-ai/dsh-api-gateway@deepseek-ai/dsh-api-session-controller@deepseek-ai/dsh-attachment@deepseek-ai/dsh-client-connection@deepseek-ai/dsh-client-locale@deepseek-ai/dsh-client-store@deepseek-ai/dsh-client-ui-conversation@deepseek-ai/dsh-client-ui-layout@deepseek-ai/dsh-client-ui-primitives
给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个

功能亮点

  • 智能体编写TSX
  • 流式逐帧编译渲染
  • 内嵌对话或侧边画布

DeepSeek Harness 的生成式 UI——智能体写 TSX,Web UI 在流式输出时逐帧编译,所以 JSX 还没闭合卡片就已经渲染出来。可以内嵌在对话里,也可以放在侧边画布。

README

由 DeepSeek 最新模型翻译生成
dsh-generative-ui 为 DeepSeek Harness 打造的生成式 UI:智能体不再用文字作答,而是直接给出一个能跑的 React 界面。它是流式的——模型还在打字,组件就已经渲染出来了。 它出现在两个地方: - 内联 —— 围栏代码块 - 画布 —— ui4a/canvases/<id>.ui4a.tsx 文件会在对话旁边的面板里打开,跨轮次一直留在那儿。适合用户会反复回来用的工具。 生成的代码可以 import npm 上的任何东西(渲染时从 esm.sh 解析),与宿主共用同一个 React 实例,颜色取自应用自己的设计 token,所以能跟着浅色/深色主题走。 围栏里的 ui4a 就是本插件实现的 harness —— UI for Agent,来自 Mind Lab:与其哄着智能体去填一套固定的 UI schema,不如让它写普通的前端代码,由运行时来守住边界。背后的推理和基准测试见 UI4A: A Component-Native Harness for Generative UI。本包就是把这套 harness 接进了 dsh 的 web 客户端。 安装 sh dsh plugin --profile web add dsh-generative-ui npm 上发布的版本带 provenance。
展开完整文档(README 剩余 1 节)
dsh-generative-ui

为 DeepSeek Harness 打造的生成式 UI:智能体不再用文字作答,而是直接给出一个能跑的 React 界面。它是流式的——模型还在打字,组件就已经渲染出来了。

它出现在两个地方:

- 内联 —— 围栏代码块 - 画布 —— ui4a/canvases/<id>.ui4a.tsx 文件会在对话旁边的面板里打开,跨轮次一直留在那儿。适合用户会反复回来用的工具。

生成的代码可以 import npm 上的任何东西(渲染时从 esm.sh 解析),与宿主共用同一个 React 实例,颜色取自应用自己的设计 token,所以能跟着浅色/深色主题走。

围栏里的 ui4a 就是本插件实现的 harness —— UI for Agent,来自 Mind Lab:与其哄着智能体去填一套固定的 UI schema,不如让它写普通的前端代码,由运行时来守住边界。背后的推理和基准测试见 UI4A: A Component-Native Harness for Generative UI。本包就是把这套 harness 接进了 dsh 的 web 客户端。

安装

sh
dsh plugin --profile web add dsh-generative-ui

npm 上发布的版本带 provenance。仓库转移后预览发布暂时不可用,想试某个未发布的 commit,就把配置档指向本地 checkout —— lib/ 由 prepare 构建,所以配置档并不关心本包用 bun、dsh 用 pnpm:
sh
dsh plugin --profile web add link:/path/to/dsh-generative-ui

dsh plugin 会把命令转给配置档的包管理器,所以上面任意一条都能装上这个包,并把它加进 ~/.dsh/profiles/web/package.json 的 dsh.profile.bundles —— 那才是 dsh 真正启动时加载的列表。在干净机器上验证过,bundle 列表长这样:
json
{
"dsh": {
"profile": {
"bundles": [
"@deepseek-ai/dsh-base",
"@deepseek-ai/dsh-web-app",
"dsh-generative-ui"
]
}
}
}

旁边的 dependencies 条目取决于你安装时用的形式 —— 从 registry 装是 caret,而在 0.0.x 版本上 caret 是精确锁定:^0.0.1 只匹配 0.0.1,不匹配更新的版本。想要补丁版本就改成 ~0.0.1。

启动 dsh web 它就在了 —— 如果本来已经跑着,就重启一下,因为插件在启动时挂载,加插件没有热重载。

如果什么都没发生,先看看会话用的是哪个智能体预设。 在 minimal(极简模式)下,persona 声明为 complete: true,所以任何东西都无法往系统提示词里追加内容, skill 工具不在预设里——模型根本不知道有这种格式。实测:系统提示词只有 45 个字符,对比 27524,而且一次都没提到围栏。渲染那一半还能用,所以你手动粘贴的卡片能渲染出来;只是模型不会自己写。改用 standard,或者复制预设,把 tool-skill 加回去。

工作原理

这个包是一个插件,分两半,dsh 插件就是这样触达浏览器的:

| lib/index.js(node) | 注入系统提示词段落,注册 generative-ui 技能,通过自己的 webServer 路由提供编译器 wasm 和 canvas 文件读取 |
| lib/client.js(web) | 在会话记录里认领 ui4a/tsx 代码块,在浏览器里编译 TSX,挂载 canvas 面板 |

模型分两层学习,按各自的开销来拆:

- src/prompt.ts 每次请求都带上,所以只放触发器、围栏语法、canvas 路径和颜色 token。
- skill/SKILL.md 通过 ctx.skills.register() 注册,只在模型主动去取时才加载。它承载 UI 与 inline/canvas 的取舍,再指向 skill/references/ 里按主题拆分的文件,讲具体的编写细节。

这个拆分是实测出来的,不是拍脑袋——背后的 40 条提示词评测见 CLAUDE.md §4.5。

开发

sh
bun install
bun run check # lint + typecheck + build + smoke

bun run build 用 Bun.build 打包两半。CLAUDE.md 是设计文档——它记录了开发这个插件时面对的宿主约束,每一条都是踩坑踩出来的。

许可证

Apache-2.0
预览分享卡片长什么样 ↓MindLab-Research/dsh-generative-ui
分享 · DeepSeek Harness Hub
MindLab-Research/dsh-generative-ui

为 DeepSeek Harness 打造的生成式 UI:智能体不再用文字作答,而是直接给出一个能跑的 React…

回到顶部