工作原理
- 定义目录:声明 AI 可以使用哪些组件,并指定类型化的 props
- 向 AI 发送提示词:用自然语言描述你想要的 UI
- AI 生成规范:一个描述组件树的 JSON 文档
- 安全渲染:json-render 的
Renderer使用你的组件渲染规范
定义组件目录
目录描述 AI 被允许使用的每个组件。每个组件都有一个 Zod schema 来定义其 props,以及一个描述,AI 通过读取该描述来理解何时使用它:构建组件注册表
注册表将每个目录组件映射到其实际的渲染实现。使用defineRegistry 获取目录 props 和组件函数之间的类型安全绑定:
连接到智能体
智能体使用结构化输出来返回 json-render 规范。使用你的智能体助手 ID 设置useStream,然后从 AI 消息的 tool_calls 中提取规范:
流式渲染与渐进式显示
在流式输出期间,规范是增量构建的。元素逐个到达,最初可能缺少type 或 props。只过滤完整的元素,并向 Renderer 传递 loading={true},告诉它静默跳过尚未到达的子元素。UI 逐个组件地构建起来:
JSONUIProvider 是必需的,用于设置 json-render 的内部上下文提供者(状态、可见性、验证、操作)。Renderer 组件必须在其内部渲染。规范格式
AI 智能体生成一个扁平的 JSON 规范,其中root 键指向根元素,elements 映射包含所有组件:
TextInput 和 Button 等叶子元素具有空的 children 数组。
最佳实践
- 使用描述性的组件描述:AI 通过这些描述来理解何时使用每个组件。清晰的描述能带来更好的 UI 生成效果。
- 渲染前先验证:始终检查元素是否具有有效的
type和非空的props,因为流式输出会传递部分数据。 - 为流式输出而设计:在流式输出期间传递
loading={true},这样 Renderer 可以优雅地处理尚未到达的子元素。用户可以实时看到 UI 的构建过程,而不必等待完整响应。 - 使用设计令牌进行样式设置:使用 CSS 自定义属性,使渲染的组件自动适应明暗主题。
- 用 JSONUIProvider 包裹:
Renderer必须在JSONUIProvider内部,以访问 json-render 用于状态、可见性和操作的内部上下文。
将这些文档连接到 Claude、VSCode 等工具,通过 MCP 获取实时答案。

