摘要

评估对象为 Thesys OpenUI、A2UI 与 json-render,应用场景包括新闻资讯、行情图表、登录表单和业务仪表盘。Thesys OpenUI 是由 Thesys 维护的生成式 UI 开放标准与框架。

三套方案均接入 DeepSeek,并使用官方解析或渲染接口和相同的七种业务组件。OpenUI 输出 OpenUI Lang,A2UI 输出协议消息,json-render 输出组件 Spec。四个场景各重复三轮,正式样本共 36 次调用,输入数据、模型和采样参数一致。

本组样本中,OpenUI 的输出 Token 和完整响应耗时较少。计入语言说明与组件定义等输入内容后,总 Token 的差距小于仅比较输出的差距。结果反映本次任务、组件目录和提示词配置,不能直接推广为三个项目在所有任务中的性能排名。

一、评估范围与方法

1.1 实验对象

评估日期为 2026 年 9 月 26 日。业务数据为固定人工样例,不代表实时新闻、证券行情或生产经营数据。模型负责生成界面描述,未联网检索业务内容。运行时间与批次 ID 记录于原始响应文件。

项目实验配置
模型接口DeepSeek Chat Completions,返回模型名 deepseek-flash
共同参数temperature=0、thinking=disabled、max_tokens=6000、流式响应
输出模式OpenUI Lang 使用文本;A2UI 与 json-render 使用 response_format=json_object
重复方式四场景 × 三方案 × 三轮,串行请求,按场景和轮次轮换顺序
重试策略不自动重试,不修补模型输出,不剔除失败样本
OpenUI 实现@openuidev/lang-core 0.3.0、@openuidev/react-lang 0.3.0
A2UI 实现@a2ui/react 0.11.1、@a2ui/web_core 0.11.0,消息版本 v0.9
json-render 实现@json-render/core 0.21.0、@json-render/react 0.21.0
业务组件Stack、Card、Text、Metric、Chart、Input、Button,三套方案共用实现
浏览器检查Google Chrome,桌面 1280 px 与移动宽度 390 px

SDK 软件包版本与语言、协议版本分别记录。OpenUI 使用组件调用与引用的静态子集;A2UI 实际消息版本为 v0.9。模型配置见 DeepSeek API 文档。

1.2 统计边界

Token 采用 API 返回的 usage,保存输入、输出、缓存命中与未命中记录。输入包含系统提示词、格式说明、组件属性及业务数据。OpenUI 提示词由官方 library.prompt() 生成;两种 JSON 方案使用格式说明与相同属性的 JSON Schema。提示词形式和长度不同,全部计入输入用量。输出语法、提示词形式及长度共同构成实验变量。

首内容耗时从发起请求开始,计至第一个非空 content 片段;完整响应耗时计至 SSE 的 [DONE]。计时包含网络、接口等待、生成和流读取,不含浏览器渲染。三套 Demo 均实时显示源码,在完整响应通过校验后展示界面,未比较渐进式 UI 首屏时间。

统计样本为同一批次的 36 次调用,每套方案各 12 次。四次 OpenUI 接入验证属于预实验,不计入统计。

字符数按 JavaScript 字符串长度统计,字节数按 UTF-8 编码统计;二者均不用于估算 Token。

二、技术架构

2.1 Thesys OpenUI

OpenUI 由 Thesys 维护,定位为生成式 UI 的开放标准与框架。其核心 OpenUI Lang 以组件调用和引用描述界面,模型输出由客户端映射至已注册组件,界面功能由组件实现。官方提供语言核心、React 渲染运行时、组件库和对话界面等软件包。OpenUI 官方网站、项目仓库

实验实现使用官方 defineComponent 与 createLibrary 注册七种业务组件,使用 createParser 解析模型输出,再交由 @openuidev/react-lang 的 Renderer 渲染。组件的 Zod 属性顺序决定 OpenUI Lang 的位置参数。系统提示词由同一组件库自动生成。组件定义文档、提示词文档

OpenUI Lang 支持流式解析和渐进式渲染。实验采用完整响应后渲染的方式;OpenUI Cloud、Gateway、Autofix、远端工具、动态状态和多轮编辑不在评估范围内。渲染器文档

2.2 A2UI

A2UI 使用声明式消息描述界面,由客户端按照组件目录渲染。协议支持界面创建、组件更新、数据模型更新和用户动作。跨端映射要求各客户端实现对应的组件和属性。官方项目说明

实验实现使用官方 MessageProcessor 处理 createSurface 与 updateComponents 消息,再由官方 A2uiSurface 渲染。组件属性由 Zod 定义,Stack 和 Card 通过组件 ID 引用子节点。图表及表单属于自定义目录内的业务组件。消息采用静态字面值,本次未评测动态数据绑定、多轮增量更新或远端 Agent 动作。

2.3 json-render

json-render 通过 Catalog 定义组件属性,通过 Registry 关联组件实现,再由 Renderer 渲染 Spec。官方项目同时提供状态绑定、动作和渐进式生成能力。官方项目说明

实验实现使用官方 defineCatalog、defineRegistry 与 Renderer。模型输出由 root 和 elements 构成的扁平 Spec,属性使用与 A2UI 等价的 Schema。服务端执行官方目录校验,并检查节点引用、循环、孤立节点及图表数据长度。测试未启用 SpecStream、动态表达式或多轮状态更新。

2.4 架构对照

项目Thesys OpenUIA2UIjson-render
技术形态生成式 UI 开放标准与框架声明式 UI 协议及相关实现生成式 UI 框架
实验输出OpenUI Lang 组件调用与引用createSurface、updateComponents 消息root 与 elements Spec
解析与渲染实现官方 createParser 与 React Renderer官方 MessageProcessor 与 A2uiSurface官方 Catalog、Registry 与 Renderer
组件约束Library 与 Zod 属性Catalog 与属性 SchemaCatalog 与属性 Schema
参数组织按组件属性顺序传入位置参数组件消息中的具名字段props 对象及 children 引用
图表与表单共用宿主业务组件相同相同
流式展示方式实时源码,校验后展示界面相同相同
未评估能力渐进式渲染、状态绑定、工具和增量编辑数据模型更新、多轮消息及远端动作SpecStream、状态绑定和多轮动作

三套方案均依赖宿主组件实现,模型不生成图表绘制或表单校验的执行代码。比较重点是界面描述、输入约束、模型用量及完整响应时间;组件开发投入仍需在工程成本中单独计算。

三、场景结果

3.1 新闻资讯

输入包含三条固定新闻,每条均有标题、日期、来源和摘要。三套方案按原顺序展示内容,浏览器检查逐项比对文本。图 1—图 6 均采用第一轮生成结果。

Thesys OpenUI 真实生成的新闻资讯页

图 1:Thesys OpenUI,OpenUI Lang 通过官方 React Renderer 映射为新闻组件。

A2UI 官方渲染器展示的新闻资讯页

图 2:A2UI,模型生成组件消息,客户端按目录渲染。

json-render 官方渲染器展示的新闻资讯页

图 3:json-render,通过 Registry 渲染 Spec。

OpenUI 第一轮资讯样本同时使用 Card 标题与 Text 标题,出现重复标题。新闻内容完整,标题重复构成可见的排版冗余。

新闻内容相同,但模型选择的容器、标题和分组方式可能不同。组件拆分粒度会改变描述长度,因此还需结合输出内容和完整输入用量解释 Token 差异。

3.2 行情图表

输入包含八个日期、八个收盘价、最后收盘价 108.00、涨跌幅 +8.00%,以及固定演示数据说明。三套方案均通过同一个 SVG Chart 组件展示折线和数据点。

Thesys OpenUI 真实生成的行情图表

图 4:Thesys OpenUI,Chart 调用的位置参数包含标题、日期与价格数组。

A2UI 真实生成的行情图表

图 5:A2UI,通过 Chart 组件字段传递相同业务数据。

json-render 真实生成的行情图表

图 6:json-render,通过 Chart 的 props 传递相同业务数据。

图表评估范围为静态折线与数据点展示,不包括缩放、实时订阅、复杂指标叠加或触控交互。

3.3 登录表单

任务要求电子邮箱、密码、提交和重置,以及明确的本地校验反馈。邮箱应符合基本格式,密码至少八位;页面不执行身份认证或向外发送表单数据。三套方案均使用相同的 Input 和 Button 实现。

浏览器依次执行无效邮箱、短密码、有效输入和重置操作,检查反馈与输入状态。表单评估范围为本地交互;账户系统、会话管理和服务端鉴权未纳入测试。

3.4 业务仪表盘

输入包含销售额 ¥128,600、订单数 846、客单价 ¥152.01、转化率 3.8%,以及七日订单序列。三套方案均通过 Metric 与 Chart 组件展示指标和折线图。仪表盘采用固定样例数据,不具备数据刷新功能。

四、量化结果

4.1 实际 Token

每个场景的数值为三次调用的中位数。输入包含全部生成约束及业务数据,总 Token 采用 API 返回的输入与输出合计。

场景方案输入 Token输出 Token总 Token
新闻资讯Thesys OpenUI9473131,260
新闻资讯A2UI8964681,364
新闻资讯json-render8524661,318
行情图表Thesys OpenUI9132081,121
行情图表A2UI8625391,401
行情图表json-render8185141,332
登录表单Thesys OpenUI8711361,007
登录表单A2UI8202971,117
登录表单json-render7762691,045
业务仪表盘Thesys OpenUI9141851,099
业务仪表盘A2UI8633111,174
业务仪表盘json-render8192991,118

各方案全部 12 次正式调用的累计用量如下。缓存命中属于输入的一部分,不应再加到输入总数中。

方案输入 Token其中缓存命中输出 Token合计 Token
Thesys OpenUI10,9358,8322,54313,478
A2UI10,3237,6804,85715,180
json-render9,7957,6804,65514,450

OpenUI 的累计输出 Token 比 A2UI 少 47.6%,比 json-render 少 45.4%。但 OpenUI 的输入为 10,935 Token,高于另两项。计入输入后,OpenUI 的总 Token 比 A2UI 少 11.2%,比 json-render 少 6.7%。

输出 Token 的降幅高于总 Token 的降幅。费用计算还涉及输入缓存命中、未命中及输出的不同单价;上述比例衡量 Token 用量差异,不代表实际费用降幅。

4.2 首内容与完整响应耗时

单位为秒。首内容与完整响应列为三次中位数,末列为完整响应的最小值与最大值。

场景方案首内容完整响应完整响应范围
新闻资讯Thesys OpenUI0.551.471.47–1.56
新闻资讯A2UI0.461.771.56–2.17
新闻资讯json-render0.401.621.41–2.03
行情图表Thesys OpenUI0.541.241.24–1.26
行情图表A2UI0.521.981.87–2.10
行情图表json-render0.491.861.81–1.89
登录表单Thesys OpenUI0.370.940.81–1.03
登录表单A2UI0.531.561.21–1.67
登录表单json-render0.381.541.11–1.59
业务仪表盘Thesys OpenUI0.571.191.06–1.36
业务仪表盘A2UI0.601.551.46–1.62
业务仪表盘json-render0.631.391.36–1.46

OpenUI 在四个场景中的完整响应中位数均较少,首内容耗时没有保持相同排序。输出长度、系统提示词、缓存、接口等待和网络均会影响结果;实验未控制冷缓存,计时范围不含客户端渲染。

每个条件只重复三次,最小值和最大值是观测范围,不是置信区间。测试未覆盖高并发、模型高峰负载、长会话及跨区域网络。

4.3 输出规模

每格依次为字符数与 UTF-8 字节数的中位数,单位为“字符 / 字节”。

场景Thesys OpenUIA2UIjson-render
新闻资讯751 / 1,0701,424 / 1,6781,380 / 1,616
行情图表547 / 6371,655 / 1,7611,505 / 1,605
登录表单432 / 5301,013 / 1,209915 / 1,069
业务仪表盘444 / 5381,016 / 1,118939 / 1,041

位置参数省去重复属性名,但容器拆分和重复文本同样影响输出规模。统计保留各方案生成的原始节点结构。DOM 元素数、组件实例数和顶层节点数属于不同指标,复杂度比较需采用统一口径。

4.4 校验与浏览器结果

正式 36 次调用均正常结束、返回 usage 并通过对应结构检查。OpenUI 检查官方解析器错误、未解析引用、孤立语句及属性;A2UI 检查官方消息与组件属性;json-render 检查官方目录与属性。宿主还检查图结构或嵌套组件、图表数组长度。这些检查不等于完整安全审计。

22 项工程测试覆盖流式分片、截断、凭据缺失、HTTP 失败、JSON 模式、OpenUI 解析、未知组件、属性类型和引用完整性等。36 份输出均通过本次浏览器检查,检查内容包括新闻文本、行情数据、指标、图表、表单反馈和重置,以及 390 px 宽度下的横向溢出。逐项检查结果保存于测试记录。

生产登录、远端业务动作、多轮状态和无障碍测试不在本轮验收范围内。

五、安全机制与集成要求

5.1 组件目录与输出校验

三套方案均将模型输出映射为已注册组件。OpenUI Lang 的组件调用由官方解析器解释,不作为 JavaScript 执行;A2UI 与 json-render 通过消息、目录和属性校验限制可用能力。实验渲染入口仅接受对应的界面描述格式。

客户端仍需拒绝未知组件、无效属性、缺失引用和不完整输出。OpenUI 的流式解析器可以保留部分可渲染内容,完整性校验在响应结束后检查解析错误、未解析引用和孤立语句。

5.2 数据与动作权限

三个 Demo 的图表只读取数字数组,按钮仅能调用宿主允许的本地 submit 或 reset。没有配置远端工具、业务请求或身份认证。添加具备网络请求、文件访问或数据修改能力的组件后,必须单独设置权限与审计。

Schema 校验处理结构与类型,业务鉴权处理对象归属和操作范围。开放标准、声明式语言及 JSON 格式均不能替代服务端授权。

5.3 集成检查

检查项实施要求
组件兼容记录库或目录版本及各端支持的组件、属性和动作
输出处理明确解析失败、生成中断、未知组件与引用错误的处理
状态管理验证增量更新不会覆盖输入或造成重复提交
数据与动作服务端核验数据范围、对象归属和操作权限
运行记录保存请求配置、校验失败、模型用量及动作结果
凭据服务端读取配置,不进入前端代码与发布包

六、项目支持与社区情况

6.1 项目与版本

项目Thesys OpenUIA2UIjson-render
维护组织ThesysGoogle 发起的 A2UI 项目Vercel Labs
开源许可MITApache-2.0Apache-2.0
GitHub Star 近似值9.8k16.5k18.3k
交付形式OpenUI Lang、语言核心、渲染器、组件库及配套工具协议、SDK 与渲染器@json-render/* 包
文档入口openui.coma2ui.orgjson-render.dev
版本区分实验 SDK 0.3.0;文档另列 OpenUI Lang 语言版本实验消息 v0.9;SDK 版本单独记录实验核心及 React 包 0.21.0

Star 为评估日仓库显示的近似值,不代表生产使用规模。Thesys OpenUI 仓库、A2UI 仓库、json-render 仓库。依赖版本由源码包中的 lockfile 固定;语言规范与软件包分别标注版本。

6.2 SDK 与渲染器

A2UI 提供官方实现,也收录第三方渲染器。社区目录涵盖 React、Vue、Svelte、Android、Apple 原生平台、React Native、Lynx 和 Material UI 等,并列明不同协议版本的支持情况。官方 @a2ui/react 与社区 React 包需要分别识别。渲染器数量不等同于全部实现都支持相同协议版本。A2UI 渲染器目录

json-render 提供各目标平台的包,以及 shadcn/ui、状态管理适配和 MCP 集成。React Native 渲染器支持移动端原生视图,框架支持范围不局限于浏览器。渲染器文档、安装与状态适配文档

OpenUI 将无框架依赖的语言核心与渲染运行时分开,官方提供 React 支持,并维护组件库和集成包。接入时可以复用现有业务组件;开源框架支持直接接入模型接口,实验采用 DeepSeek Chat Completions。OpenUI 软件包说明

6.3 社区指标的适用范围

Star、软件包下载量、发布数量和技术文章数量分别反映不同活动,不能合并为生产采用率。软件包周下载量需注明统计周及包清单,同一应用可能同时下载多个包。缺少统计周期和包范围的下载总量不具备可比性;教程数量反映技术传播情况,不能用于估计企业使用规模。

维护情况应结合发布记录、提交历史和问题处理情况判断。仅凭项目创建时间、曾经的传播热度或单一版本号,不能确认项目已经停止维护。

七、行业采用与技术传播

7.1 Thesys OpenUI

OpenUI 官方维护的采用者目录列出 Standard Metrics、GAIA、Oodle 等团队,并描述了对话组件、可观测性界面等用途。目录属于项目收录的使用声明,不代表独立审计的生产覆盖率或商业关系。OpenUI 采用者目录

同一目录列出 assistant-ui、Lynx、LangChain 和 Mastra 的集成信息。这些条目可以说明工程接入路径,不能据此推导企业用户总量。Thesys 提供的 OpenUI Cloud 与开源框架也应分别评价:本次测试对象为开源语言及 React 渲染器,不包含托管服务的纠错、路由或运行保障。

7.2 A2UI

Google Opal 团队参与 A2UI 开发,并将其用于动态界面。Flutter GenUI SDK 使用 A2UI 连接服务端 Agent 与 Flutter 客户端。CopilotKit 提供 AG-UI 与 A2UI 的集成支持。A2UI 官方应用案例

Gemini Enterprise 已提供 A2UI Agent 的部署与注册文档,使用 A2A 端点传递界面描述。该集成有明确的产品接入路径,但不能据此推定所有 Agent 注册方式都支持 A2UI。Google Cloud 接入指南、Cloud Run 部署教程

国内移动端项目 AGenUI 提供 iOS、Android 和 HarmonyOS 的 A2UI 渲染能力,采用共享 C++ 核心及各平台原生渲染实现,支持自定义组件和函数调用。该项目已被 A2UI 社区目录收录,官网位于高德域名下。AGenUI 项目、高德 AGenUI 官网

7.3 json-render

json-render 的工程集成包括 Vercel AI SDK、shadcn/ui,以及 Next.js、TanStack Start 等应用框架。多端渲染、状态绑定和渐进式更新均有官方文档或代码示例。快速接入示例、发布记录

框架适配与企业生产使用属于不同统计对象。上述集成信息未提供企业生产用户数量。媒体报道、开发者讨论及个人贡献者参与可说明技术传播情况,但不能替代具体部署案例和运行数据。

八、Agent 协议分工

协议主要职责与生成式 UI 的关系
MCP连接 AI 应用与工具、资源及外部数据为 Agent 提供业务能力与上下文
A2AAgent 之间的任务协作与消息交换可承载返回给客户端的界面内容
AG-UIAgent 与前端之间的事件、状态及交互通信组织实时交互过程
A2UI描述界面组件、数据及更新由客户端映射为可交互界面

协议职责分别见 MCP 文档、A2A 文档、AG-UI 文档和 A2UI 文档。

A2UI 与 AG-UI 可以配合使用:AG-UI 处理 Agent 与应用的交互事件,A2UI 描述其中需要渲染的界面。Gemini Enterprise 的接入示例采用 A2A 传递 A2UI 内容。具体传输方式由应用选择,使用 A2UI 不要求同时部署全部协议。

九、优势与限制

方案主要优势主要限制
Thesys OpenUIOpenUI Lang 使用紧凑位置参数;可从组件库生成提示词;官方支持流式解析和 React 渲染需要维护组件库及参数顺序;新语言需写入提示词;部分可渲染输出仍须检查完整性
A2UI界面描述与客户端实现分离;协议包含数据模型及增量更新;适合统一多端组件映射需要维护目录和客户端兼容性;消息封装与具名字段占用输出
json-renderCatalog、Registry 与 Renderer 分工明确;便于接入已有组件、状态及动作机制需要维护目录和目标端实现;Spec 长度受节点拆分影响

三套方案均可复用图表和表单组件。视觉质量与业务能力取决于组件实现和模型组合结果,不能按 OpenUI Lang 或 JSON 的格式名称直接排序。

十、选型结论

应用条件可评估方案实施条件
重视描述紧凑程度,并希望接入流式组件渲染Thesys OpenUI定义组件库和位置参数,生成提示词,接入解析错误处理
多客户端接收 Agent 生成的统一界面描述A2UI统一协议与目录版本,完成各端组件和事件映射
现有组件库中接入 JSON 描述的动态卡片和表单json-render建立 Catalog 与 Registry,接入应用状态和业务动作
需要稳定的图表、表单和业务控件三者均可采用先实现和测试受控组件,再决定描述和传输方式

在四个场景的三轮测试中,OpenUI Lang 的累计输出 Token 最少,各场景完整响应耗时的中位数均低于另外两套方案。总调用量还包含输入,实际费用还区分输入缓存命中、未命中和输出单价。选型中的用量与费用估算应采用目标业务的提示词、组件目录和计费条件。

评估范围限于单轮静态界面生成与本地交互,未覆盖多轮 Agent 交互、渐进式首屏、动态工具、复杂实时图表、生产鉴权或长期运行稳定性。这些能力需在目标系统中单独验收。

十一、数据与代码

实验源码与完整测试记录包含依赖锁定文件、提示词、原始响应、汇总数据、单元测试及浏览器检查脚本。统计数据另提供 JSON 汇总文件和逐次调用 CSV。

业务任务与输入数据定义于 lib/scenarios.mjs,格式约束和组件 Schema 定义于 lib/prompts.mjs 与 lib/catalog.mjs。单次调用记录包含完整提示词、返回模型名、请求 ID、usage、耗时及原始输出。场景截图对应第一轮新闻与行情样本,可通过运行 ID 回放。

复现环境为 Node.js 24、npm 和 Google Chrome,安装与运行命令见源码包 README。模型温度为零仍可能产生不同输出;缓存状态、服务负载和模型更新也会影响耗时。不同批次应分别统计并保留原始记录。

参考资料