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

