Skip to content

介绍

为什么需要 TokUI

大模型的输出本质是一串纯文本——用户最终看到的,往往是一堵密集的文字墙。

TokUI 给 AI 一种结构化的表达语言:用极少的 Token,流式生成可交互的富 UI。表格、图表、表单、Agent 状态、Artifact 预览,都能在对话中边生成边呈现,而不是等一段 Markdown 慢慢铺开。

一句话定位:让 AI 用极少的 Token,流式生成富 UI

它是什么

TokUI 是一个零依赖的流式 UI 描述与渲染框架。三层数据流,三端零摩擦:

后端 TokUIBuilder 生成 DSL  →  SSE / WebSocket 推送  →  前端 TokUIParser 增量解析  →  TokUIRenderer 渲染 DOM

同一套组件语义贯穿前后端:Builder 链式产出 DSL,Parser 状态机增量解析,Renderer 把每个标签翻成真实 DOM。首个 Token 到达即开始绘制,无需等待整段闭合。

核心特性

  • 流式优先 —— 状态机(TEXT / TAG_OPEN / TAG_CLOSE)增量解析,边收边渲染。完美匹配 AI 逐 Token 输出的节奏。
  • Token 经济 —— 极简 DSL(key:value、逗号多值、布尔属性、容器嵌套),相同 UI 的 Token 消耗远低于 HTML 或 JSON Schema。
  • 零依赖 —— 前后端均为原生 API,运行时不引入任何 npm 包。图表用纯 SVG,高亮用自写 tokenizer,产物体积极小。
  • 150+ 组件 —— 基础、表单、表格、布局、数据展示、图表、AI 对话全覆盖,renderer.register(type, fn) 插件化注册。
  • AI 对话原生 —— 内置气泡、工具调用、推理链、代码差异、Agent 状态、Artifact 预览等对话专属组件。
  • 事件安全 —— 事件处理器为命名引用(clk: / sub:),需预先 registerHandler 注册;DSL 不含可执行代码,从根上杜绝注入。
  • 主题与色阶 —— CSS 变量 + data-tokui-theme 一键切换深浅色,内置 HSB 算法的 10 级色阶生成器。
  • 容错降级 —— 未注册组件渲染为 div.tokui-unknown,渲染抛错生成降级提示,单点错误不炸整页,流式始终稳健。

关键指标

指标含义
运行时 npm 依赖0全程原生 API
已注册组件150+开箱即用
语法高亮语言11自写 tokenizer
单块增量解析<1ms首 Token 即渲染

架构概览

模块职责
core/parser.js流式状态机解析器,feed() 增量 + parse() 一次性,maxBuffer / maxDepth 资源防护
core/renderer.js渲染引擎,slotStack 管嵌套容器,VARIANTS 白名单校验变体,深度上限 50
core/event-bus.js事件总线单例,registerHandler(name, fn) 注册,DSL 用 clk: / sub: 绑定
core/theme.jsCSS 变量驱动主题,data-tokui-theme 切换
core/color-generator.jsHSB 算法 10 级色板与主题 token 生成器
components/*按类型分文件的组件库,index.js 统一注册
server/tokui-builder.js链式 API 生成 DSL,toString() + toChunks() 两种输出
demo/server/sse-server.jsNode 原生 http 实现的 SSE 演示服务器(demo 自带后端,非库代码)

试一下

下面是一个典型的 TokUI 渲染结果,可以直接编辑左侧 DSL,右侧实时预览:

1[card tt:"TokUI 一览" v:highlight]
2 [row]
3 [col span:7]
4 [h3 📊 数据表格]
5 [table stripe]
6 [thead cols:"chk,#,指标/c,数值,趋势/r"]
7 [tbody]
8 [tr chk,,月活,128k,↑12%]
9 [tr chk,,留存,64%,↑3%]
10 [tr chk,,收入,¥39w,↑18%]
11 [/tbody]
12 [/table]
13 [/col]
14 [col span:5]
15 [h3 📈 趋势]
16 [chart t:line tt:"近 6 月" l:"1月,2月,3月,4月,5月,6月" d:"42,55,48,70,82,95" area]
17 [/col]
18 [/row]
19 [callout t:info tt:零依赖 tx:"上述表格、图表、卡片全部由约 20 个 Token 的 DSL 流式渲染,无任何前端依赖。"]
20[/card]
加载 TokUI…
TokUI DSL · 左代码右渲染