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

A2UI 界面渲染 sunxiuguo/dsh-a2ui

DeepSeek Harness
sunxiuguo7 天前有提交已提供中文文档扫描:含敏感能力

在会话中渲染智能体生成的界面并回传用户操作

30.8/100
综合分
1
GitHub 星标
—
npm 周下载
—/5
用户评分

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

安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add sunxiuguo/dsh-a2ui
该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)

状态速览

判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态
信任档位:需留意
是什么[目录]—
dsh 原生插件 · ui
暂无时间戳·判据 →
装得上吗[实装验证]!
实装验证未通过(unknown),装前请到仓库确认最近更新与 issue
L4 · 真实安装等级说明 →
数据截至 2026/10/28·判据 →
安全吗[自动扫描]—
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
数据截至 2026/11/04·判据 →
还在维护吗[仓库]✓
活跃:最近一次提交在 7 天前
暂无时间戳·判据 →
图例:✓ 通过! 需注意— 未判定 / 无数据· 「未判定」= 本站尚无数据,不代表插件有问题
档位由哪些信号合成

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

验证判据与等级说明 →

可信度证据

⚠︎ 实装验证未通过(unknown · 2026/10/28) ——可能是验证环境差异,装前建议到 GitHub 仓库确认最近更新与 issue。
安全扫描自动 · 静态分析源码
v2.7.0
🔵 扫描:含敏感能力尚无人工评估
展开查看扫描说明与证据 ↓

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

读写/删除本地文件发起外部网络请求
查看扫描证据(共 14 处,展示前 14 条)
  • 发起网络请求
    browser-tests/accessibility.spec.ts:5
    await context.route('**/*',route=>new URL(route.request().url()).hostname==='127.0.0.1'?route.continue():route.abort());
  • 发起网络请求
    browser-tests/accessibility.spec.ts:47
    await context.route('**/*',route=>new URL(route.request().url()).hostname==='127.0.0.1'?route.continue():route.abort());
  • 发起网络请求
    browser-tests/controls.spec.ts:18
    await context.route('**/*',route=>new URL(route.request().url()).hostname==='127.0.0.1'?route.continue():route.abort());
  • 发起网络请求
    browser-tests/datetime-clear.spec.ts:4
    await context.route('**/*',route=>new URL(route.request().url()).hostname==='127.0.0.1'?route.continue():route.abort());
  • 发起网络请求
    browser-tests/literal-data.spec.ts:4
    const blocked:string[]=[];await context.route('**/*',route=>{if(new URL(route.request().url()).hostname==='127.0.0.1')return route.continue();blocked.
  • 发起网络请求
    browser-tests/literal-data.spec.ts:31
    const external:string[]=[];await context.route('**/*',route=>{if(new URL(route.request().url()).hostname==='127.0.0.1')return route.continue();externa
  • 发起网络请求
    browser-tests/navigation.spec.ts:19
    await context.route('**/*',r=>new URL(r.request().url()).hostname==='127.0.0.1'?r.continue():r.abort());
  • 发起网络请求
    browser-tests/roundtrip.spec.ts:5
    await context.route('**/*',route=>new URL(route.request().url()).hostname==='127.0.0.1'?route.continue():route.abort());
  • 发起网络请求
    browser-tests/runtime-errors.spec.ts:5
    await context.route('**/*',route=>{if(new URL(route.request().url()).hostname==='127.0.0.1')return route.continue();external.push(route.request().url(
  • 发起网络请求
    browser-tests/slider.spec.ts:5
    await context.route('**/*',route=>new URL(route.request().url()).hostname==='127.0.0.1'?route.continue():route.abort());
  • 发起网络请求
    browser-tests/slider.spec.ts:44
    await context.route('**/*',route=>new URL(route.request().url()).hostname==='127.0.0.1'?route.continue():route.abort());
  • 读取本地文件
    browser-tests/validation.spec.ts:3
    const fixture=JSON.parse(readFileSync(new URL('../demo/validation-fixture.json',import.meta.url),'utf8'));
  • 发起网络请求
    browser-tests/validation.spec.ts:6
    await context.route('**/*',route=>new URL(route.request().url()).hostname==='127.0.0.1'?route.continue():route.abort());
  • 发起网络请求
    browser-tests/validation.spec.ts:44
    await context.route('**/*',route=>new URL(route.request().url()).hostname==='127.0.0.1'?route.continue():route.abort());
扫描于 2026/11/4(0 天前) · 范围 全包扫描(包内未声明入口) · 来源 GitHub 仓库

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

社区实装还没有人打卡 · 装过的第一个就是你
依赖的 DSH / Cordis 模块
@deepseek-ai/cordis@deepseek-ai/dsh-agent-loop@deepseek-ai/dsh-api-session-controller@deepseek-ai/dsh-app-boot@deepseek-ai/dsh-client-modules@deepseek-ai/dsh-client-store@deepseek-ai/dsh-client-ui-chat@deepseek-ai/dsh-client-ui-conversation@deepseek-ai/dsh-client-ui-renderer@deepseek-ai/dsh-client-ui-session@deepseek-ai/dsh-client-ui-slots@deepseek-ai/dsh-session-persistence-jsonl
给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个

DeepSeek Harness 的 A2UI:官方 schema 与渲染器、有界动作、不执行的重放。原生 Web 宿主合成工作流与重启已验证;真实模型与完整协议覆盖仍未验证。

README

由 DeepSeek 最新模型翻译生成
DSH A2UI 用于 DeepSeek Harness 会话的 A2UI DSH A2UI 是一个独立插件,用来在 DeepSeek Harness 会话里渲染智能体生成的标准界面。智能体呈现界面,用户与之交互,这次操作就成为智能体的下一轮输入。 它使用官方 A2UI schema 和渲染器,带显式校验、流式预览、会话级操作,以及回放时不执行历史交互。 在 DSH 中查看 · 本地试用 · 兼容性 · 路线图 · 报告问题 开发预览版:0.1.0-alpha.13。 Alpha.13 让组合 DateTimeInput 的任一半被清空时清空整个绑定值,因此提交 Button 上的显式必填校验会拦下空提交,而不是接受残缺的日期/时间片段。Alpha.12 把运行时表达式失败显示为按 surface 区分、可关闭的提示,不暴露求值器载荷,也不改变操作语义。Alpha.11 在提交和回放过程中保留字面量形式的 model/event 元数据,同时在真正的函数边界上强制禁用导航。Alpha.10 通过标准 catalog 扩展 API 新增原生 Slider 命名和键盘到操作/回放覆盖,并配套可访问的 TextField 视图。
展开完整文档(README 剩余 1 节)
DSH A2UI

用于 DeepSeek Harness 会话的 A2UI

DSH A2UI 是一个独立插件,用来在 DeepSeek Harness 会话里渲染智能体生成的标准界面。智能体呈现界面,用户与之交互,这次操作就成为智能体的下一轮输入。

它使用官方 A2UI schema 和渲染器,带显式校验、流式预览、会话级操作,以及回放时不执行历史交互。

在 DSH 中查看 · 本地试用 · 兼容性 · 路线图 · 报告问题

开发预览版:0.1.0-alpha.13。 Alpha.13 让组合 DateTimeInput 的任一半被清空时清空整个绑定值,因此提交 Button 上的显式必填校验会拦下空提交,而不是接受残缺的日期/时间片段。Alpha.12 把运行时表达式失败显示为按 surface 区分、可关闭的提示,不暴露求值器载荷,也不改变操作语义。Alpha.11 在提交和回放过程中保留字面量形式的 model/event 元数据,同时在真正的函数边界上强制禁用导航。Alpha.10 通过标准 catalog 扩展 API 新增原生 Slider 命名和键盘到操作/回放覆盖,并配套可访问的 TextField 视图。当前 alpha.13 的有界合成工作流已在官方 DSH Web 宿主中通过,包括原生插件安装、HTTP RPC/WebSocket 传输、双会话交互、取消,以及重启后恢复已生成的历史。服务商为脚本模拟;未认证真实模型和完整 A2UI 一致性。这是附加项目,不替代 DSH GenUI。

在 DeepSeek Harness 中查看

Actual DeepSeek Harness Web shell showing two synthetic A2UI forms, an interaction and its next-turn preview. The model provider is scripted.

这是真实的 DSH Web 会话,不是独立渲染器页面:两个 A2UI surface、一次用户操作,以及智能体下一轮的预览。模型服务商和 workshop 数据均为合成。 未使用真实模型、真实账号、预订、支付或客户数据。

全宿主验收运行 40204726938 于 2026-10-25 在当前 alpha.13 源码 a8744445 上通过。它通过真实 HTTP RPC 和 WebSocket 传输跑通了官方命令行和 Web shell:两个隔离会话、一次受控的准入前操作失败与有意重试、原生 Stop 与恢复,随后优雅重启进程并重新打开,不重发历史。
恢复后的会话 B 截图和完整验收边界与保留的 alpha.8 证据记录下了那次运行。两张截图都经过隐私与可读性审查。作者撰写的消息和已提交操作的预览会持久保存;未发送的字段草稿不会。这些证据只覆盖确切的源码与场景,不覆盖所有模型、组件或失败模式。

独立验证与回放演示

早先的23 秒录屏单独演示了渲染器:非法输入被拦截,合法操作在本地记录,显式导出的录屏在重新加载后恢复编辑过的值,且不会重发历史操作。它还展示了拒绝不支持的运行时属性。

这段视频是一个独立的合成页面,不是上面展示的 DSH 宿主。它来自 a8d1170 和它通过的捕获运行。参见社区展示,或复现捕获过程。

这个项目在构建什么

- 参与对话的界面。 一次 render_a2ui 工具调用会创建专属的对话节点。表单操作以明确标注的数据形式返回给所属的 DSH 会话,下一轮智能体就能据此响应。
- 标准载荷,官方渲染。 桥接层使用 A2UI 消息信封和官方基础目录,配合 @a2ui/react 与 @a2ui/web_core。它不会把专有的组件词汇改个名字就叫 A2UI。
- 可见的兼容边界。 非法 schema、不支持的目录、损坏的 surface 生命周期、无效的最终组件引用都会显式失败。不支持的功能不会被悄悄删除或改写。
- 回放不会误重发。 可移植录屏把编辑过的字段值与模型撰写的消息分开保存。历史操作只作为证据保留;导入录屏绝不会再次发送它们。

目前的示例是一个工作坊申请表单和一个校验表单。它们规模很小、可检查,是为更大的对话体验准备的验收夹具。

快速开始

使用 Node 24.19.0,这是验证基线。两个本地示例都不需要模型密钥或账号。

git clone https://github.com/sunxiuguo/dsh-a2ui.git
cd dsh-a2ui
npm ci --ignore-scripts

顶层依赖版本精确,传递依赖已锁定。安装命令禁用了生命周期脚本。

1. 在浏览器里试用渲染、校验与回放

npm run dev

打开 Vite 打印的 loopback URL。

1. 点击 Stream synthetic example,编辑 Workshop topic,然后点击 Preview request。标准操作信封会出现在页面的本地日志里。
2. 点击 Stream validation example。输入 bad,会看到字段报错、按钮禁用;输入 CD34,再点击 Preview valid code,会记录一条有效操作。
3. 点击 Export recording,从录制编辑器里复制 JSON。刷新页面,把保存的 JSON 粘贴回编辑器,再点击 Restore recording。编辑过的值会恢复,但历史操作不会再次发送。

页面不会在刷新后自动保存表单或录制编辑器。它的操作接收端是本地日志,不是 DSH 会话。显式 checks 和 Button 门控的说明见校验演练。

2. 跟踪一条操作进入下一个 DSH 智能体回合

在同一份源码检出中执行:

npm run build:plugin
npm run demo:loop -- "Wheel-thrown pottery"

这个可执行演练使用真实的 DSH AgentLoop、ToolRuntime、对话组装器、官方渲染器和发送控制器。脚本化的本地模型生成一个表单,示例在 jsdom 中编辑并点击它,下一个真实智能体回合收到该操作并渲染预览。

预期结果:

PASS: 2 completed agent turns, 4 provider calls, 2 real tool results, 1 UI action.

模型和进程内传输都是模拟的。这是终端演练,不是交互式浏览器、实时模型或完整 DSH shell。它需要源码检出和开发依赖;插件 tarball 不包含它。阅读完整演练与边界。

如何融入 DSH

Agent tool call: render_a2ui({ messages })
→ schema, compatibility and document validation
→ DSH tool-result presentation metadata
→ A2UI conversation node
→ official A2UI runtime + focused accessible TextField and Slider views
→ user interaction
→ validated action, sent as labelled data to the owning conversation
→ next agent turn

工具调用流式输出期间,部分参数可以生成预览。在最终工具校验成功之前,预览里的控件不能发送操作。SDK 测试夹具覆盖失败/取消结果的撤回;原生宿主运行还会验证:Stop 会在工具成功完成前让进行中的预览退役,并且之后的操作仍然可用。

服务端和客户端是独立的插件入口。没有浏览器插件时,工具返回的文本回执只能确认校验通过,不能证明界面已经出现。客户端通过 DSH 的对话发送控制器提交操作数据;客户端校验不是授权,也不能替代服务端校验。

messages 参数可以先看 demo/fixture.ts 或 demo/validation-fixture.json。实现位于 src/dsh,共享模块包括校验、渲染和录制。

兼容性与支持

这张矩阵说明 alpha 版实现的范围与证据,不代表完整协议,也不代表生产认证。

| 领域 | 当前实现与证据 | 剩余边界 |
| A2UI 协议 | v0.9 与 v0.9.1 信封;锁定 v0.9.1 的官方 schema,未做改动 | 不支持 A2UI v1.0。 |
| 官方运行时 | @a2ui/react 与 @a2ui/web_core 0.14.0 | 其他渲染器版本、跨渲染器一致性均未认证。 |
| 基础目录 | 15 个允许组件、13 个允许函数的契约夹具;函数结果另有独立测试 | 完整变体、交互、语言区域、无障碍与语义一致性仍未覆盖。见覆盖情况。 |
| TextField 无障碍 | Alpha.9 插件自有视图,使用官方 schema/binder;四种变体均关联原生标签,支持动态名称与显式校验描述 | 其他组件的无障碍与读屏器认证仍未覆盖。见范围与证据。 |
| Slider 无障碍 | 插件自有原生 range 视图,关联标签、响应式描述,数值 binder 未改动 | 仅支持 v0.9/v0.9.1 默认步长 1;继承的作者值清洗逻辑仍在。见范围与证据。 |
| 字面量元数据与执行策略 | 模型数据与已解析事件数据保留字面量组件字段和调用字段;渲染器在执行阶段拒绝 openUrl,作者语法阶段同样拒绝 | 内联作者定义仍偏保守;运行时错误只产生固定的单 surface 提示,不会让动作原子性失败。关闭提示只表示确认了一次观察,不代表恢复。见边界与工作流与运行时提示生命周期。 |
| DateTimeInput 清空 | 组合选择中任一半被清空,都会变成空的绑定值;显式检查、动作与可移植回放都会保留该状态 | 只做原子清空,不保存部分草稿,也不做完整的日期/时间解析。见工作流与限制。 |
| 校验 | 显式 checks 配 regex,Button 可独立门控 | TextField.validationRegexp 是合法的 A2UI,但锁定运行时忽略它,所以 alpha.8 以 COMPATIBILITY 拒绝,即使为空或与 checks 组合也一样。不会自动改写。 |
| 流式 | 增量 JSONL 与 DSH 工具参数预览;原生 Web 宿主经 HTTP RPC/WebSocket 流式传输,预览为惰性,支持 Stop 取消 | 服务商是脚本化的。工具执行中或执行后的取消、更广的网络恢复行为均未认证。 |
| Actions | 两个原生会话,surface ID 有重叠;动作会在下一轮到达所属会话。受控的准入前 HTTP 拒绝会保留编辑;在测试场景中,刻意重试只被准入一次。 | 在限定测试中未观察到自动重试。这不等于 exactly-once 保证;未确认的投递仍可能含糊。 |
| Replay and state | 导出/导入保留字段快照,不发送历史;相同文档重新同步时,状态保留在同一挂载节点 | 文档、节点、预览/错误状态或 teardown 发生变化,都会重置该内存状态。未发送的编辑在 DSH 重载后不会保留。 |
| Durable history | 宿主优雅重启后,以及全新浏览器上下文中,两个原生会话都能重新打开,作者元数据精确,已提交动作的预览也在;恢复过程不会发送新的模型调用或动作。 | 未发送的草稿不持久。崩溃恢复、宿主管理的导出/导入,以及每种交互状态的恢复,仍未完成。 |
| DSH integration | 官方 0.2.0-rc.2 CLI and Web shell、Cordis 4.0.5;打包的 alpha.13 安装和限定原生宿主场景均通过。 | 其他版本、实时模型工作流、Code Mode 和生产部署未获认证。见完整宿主证据。 |

上游认定 A2UI v0.9.1 为当前版本,v1.0 为候选版本。本桥接的支持范围比标准更窄。精确测试边界和 alpha 回归历史见打包验收台账。

DSH 包安装

构建并检查本地插件产物:

npm run build:plugin
npm run test:packed
npm pack --ignore-scripts

包内包含服务端和客户端入口,以及它贡献的 cordis.patch.yml bundle。未发布到 npm。

要用预构建包,下载 alpha.13 release tarball,然后使用下面的本地 tarball 命令。插件目录也可能显示一个通用的 github:sunxiuguo/dsh-a2ui 快捷方式;这个源码安装快捷方式不是本 alpha 支持的安装途径。本仓库不提交 lib/,也没有定义安装时自动构建。只允许生命周期脚本,并不能替代上面明确的构建和打包步骤。

如果你已有兼容的 DSH 0.2.0-rc.2 安装和完整的 Web 配置档,把 YOUR_EXISTING_WEB_PROFILE 换成该配置档的名称,然后用验收运行实际用过的原生命令行语法安装本地 tarball:

dsh plugin --profile YOUR_EXISTING_WEB_PROFILE add ./dsh-a2ui-0.1.0-alpha.13.tgz --ignore-scripts

这条命令作用于已有的配置档;它不会创建完整的 DSH 安装。真实模型及其凭据,请通过 DSH 的常规设置自行配置。真实模型行为仍不在本次验收结果范围内。

在该配置档中更新、回滚或移除

替换或移除包之前,先停掉使用该配置档的 DSH 进程。 更新前,保留之前能用的 tarball 及其源码 commit。固定版本的 DSH 0.2.0-rc.2 插件管理器要求重启进程,才能加载新一代 JavaScript 模块;包命令执行成功,并不代表已在运行的主机或浏览器用上了新代码。

更新时,按上面的步骤构建并测试选定的源码 revision,然后用 add 再次安装,指定确切的本地 tarball 和同一个配置档。回滚时,用同一条命令,换成保留的旧 tarball。这个包尚未发布,不要用 npm registry 更新。把 CHOSEN_TARBALL.tgz 换成实际文件名:

dsh plugin --profile YOUR_EXISTING_WEB_PROFILE add ./CHOSEN_TARBALL.tgz --ignore-scripts
dsh plugin --profile YOUR_EXISTING_WEB_PROFILE list dsh-a2ui

用你现有的 DSH 启动命令重启该配置档,然后刷新它的 Web 页面。检查已安装版本,并做一次全新的合成 render_a2ui 交互;只拿到文本校验回执,不能证明客户端渲染正常。你主动禁用的 bundle 在替换后仍保持禁用——去查配置档的插件选择,别以为更新会自动重新启用它。

如果只想从已停止的配置档中移除这个插件:

dsh plugin --profile YOUR_EXISTING_WEB_PROFILE remove dsh-a2ui --config.ignore-scripts=true
dsh plugin --profile YOUR_EXISTING_WEB_PROFILE list dsh-a2ui

重启同一个配置档,刷新它的 Web 页面。不要删除配置档、会话文件或无关插件。移除不等于导出或迁移 A2UI 历史;没有插件时渲染旧的 A2UI 节点,或重装/回滚后恢复它们,都未经验证。改版本前,先保存需要的录制内容和现有的主机备份。未发送的字段草稿不会持久保存。

移除命令用的是 pnpm 单命令形式 --config.ignore-scripts=true;它不会改动持久或全局设置。

常规打包检查验证的是:合成包放置后,官方依赖规格是否对齐(并非真正替换包版本)——新 bundle 会被选中,替换不会重复安装它,也不会重新启用主动禁用的 bundle,移除会清理它的选择项,无关元数据保持不变。这些检查不执行原生命令行更新/移除、实时主机重启或浏览器恢复。重启要求来自固定版本的官方插件管理器包。这些说明只适用于已发布的 v0.9/v0.9.1 插件;它们不会启用实验性的 A2UI v1 实现。
官方 DSH 0.2.0-rc.2 命令行在 2026-10-24 全宿主验收中,把打包好的 alpha.8 插件安装进一个全新的完整 Web 配置档。随附的 shell 加载了该插件,并完成了有边界的合成交互/重启场景,期间生命周期脚本处于禁用状态。这取代了早先 alpha.3 空配置档仅安装的证据。Code Mode 和其他宿主版本仍未验证。

2026-10-25 alpha.13 验收还在一份已停止的一次性配置档上执行了真实的原生命令行:alpha.8 → alpha.13 → alpha.8、用故意禁用的 bundle 替换、移除、重新安装。安装后的字节与每次精确的源码构建一致,无关的配置档元数据和 bundle 选择都保留了下来。另有一份全新的 alpha.13 原生 Web 配置档通过了交互和优雅重启恢复。这并不证明跨版本变更或移除时既有历史的迁移或恢复。

全宿主测试装置是一份单独授权、隔离的验收实验,不属于常规本地快速开始,也不是自动重复运行的测试。它的临时原生测试凭据会在经验证的清理过程中移除;它不会导入既有用户配置档。

部署边界

初始策略刻意比 A2UI 更窄:

- 只接受固定的官方基础目录。不包含任意远程目录、动态代码、HTML 注入或传输抓取。
- 外部媒体组件和导航被禁用,包括 Markdown 中的外部链接和媒体。这些是部署限制,并不表示 A2UI 禁止它们。
- 文档限制为 256 KiB、512 条消息、8 个活动 surface、每个 surface 256 个组件。
- 每个动作限制为 16 KiB,每个挂载的 A2UI 文档会话最多 128 次尝试,保留/在途预算为 256 KiB。
- 录制分别绑定创作历史、字段快照和动作,因此快照不占用 512 条消息的历史额度。导入只恢复 UI 状态;过去的动作永不执行。
- 插件不暴露任何凭据或支付动作。所有示例都使用合成数据;单独授权的全宿主测试装置只创建临时原生测试认证,并验证其已被移除。

路线图

1. 扩大原生宿主覆盖。 在已通过的合成 Web 宿主场景基础上,加入实时模型工作流、更多取消阶段、网络中断/重连、崩溃恢复和受支持的部署配置。
2. 完成稳定的 A2UI 支持。 覆盖完整的基础目录、主题/校验/函数语义、无障碍和跨渲染器行为。在启用媒体或导航之前,先引入一套刻意由宿主管理的策略。
3. 持久化更多交互状态。 已编写的历史记录在测试过的优雅重启后仍能保留。仅针对已证实的工作流评估可选启用的草稿持久化,并给出明确的隐私与生命周期约定;为已提交状态的恢复增加带版本号的迁移,且不意外重放操作。
4. 通过显式适配器添加协议。 随着 A2UI v1.0 的约定趋于稳定,评估它以及其他主流协议,不把专有载荷伪装成标准。

当某个功能的端到端证据和局限都已记录在案,它才转为受支持状态。原生宿主的结果验证了一个有边界的工作流;完整的协议支持仍是努力方向。

开发与反馈

npm test
npm run typecheck
npm run build
npm run build:plugin
npm run test:packed
npm run test:stream

验证台账说明了测试分层和精确提交的浏览器证据。jsdom 测试无法确立浏览器布局或无障碍表现。现有 CI 使用标准 GitHub 托管运行器、只读仓库权限,不接触真实账号或模型凭据;它的真实浏览器检查保持浏览器沙箱开启。一次成功运行只为其自身提交提供证据。

有用的起点:

- 目录覆盖
- 校验与运行时兼容性
- 原生 Web 宿主验收与截图
- 打包 SDK 夹具验收
- 合成智能体循环演练
- 录制浏览器展示
- 替代方案与项目范围

要报告问题,请附上源提交、DSH/运行时版本、最小合成载荷、复现步骤和预期行为。不要包含凭据或客户数据。

其他 DSH A2UI 集成已经存在。本项目的重点是官方渲染器互操作、显式拒绝而不静默清洗,以及不执行的可移植重放。这些是可测试的设计选择,并非声称首创、更优、已被采用或已可用于生产。

许可证

项目自编代码采用 MIT。官方 A2UI schema 和捆绑依赖保留各自的声明;见 NOTICE.md 和内置 A2UI 许可证。与 DeepSeek、Google 或 A2UI 项目无关联,也未获其背书。

使用 AG-UI 网关?

组合插件前,请先阅读网关互操作边界。提取出的标准 A2UI 操作可以兼容,但工具参数、累积快照、已定结果和操作标识需要显式集成。这个原生 DSH 插件不是可直接替换的 AG-UI 客户端。
预览分享卡片长什么样 ↓sunxiuguo/dsh-a2ui
分享 · DeepSeek Harness Hub
sunxiuguo/dsh-a2ui

在会话中渲染智能体生成的界面并回传用户操作

这个插件是你维护的吗?
作者本人可认领并核对本条目;认领通过后,详情页会显示「作者已认领」标记。
认领条目 →
回到顶部