← [ BACK_TO_NOTES ]

assistant-ui

assistant-ui 是一个 React AI 聊天界面组件库,采用 Radix 风格的可组合原语架构,支持多后端运行时、Generative UI 和工具调用渲染。

#resource #evergreen #frontend #ai

[!info] related notes

assistant-ui

一句话定义

assistant-ui 是一个 React AI 聊天界面组件库,采用 Radix 风格的可组合原语架构。它不是预设好的聊天框,而是一组可自由组合的构建块(Thread、Message、Composer),让你完全控制样式和行为。

知识库职责

本页是 assistant-ui 的 canonical resource 节点:保存项目身份、入口和稳定能力概览。内部 Primitive/Runtime/Adapter 的架构学习统一放到 assistant-ui 架构概览;跨框架的设计与选型统一放到 AI 聊天 UI 设计与组件选型。

因此其他笔记需要链接 assistant-ui 项目本身时,应链接本页,而不是把 assistant-ui 作为别名复制到概览或选型笔记。

核心特性

1. 可组合原语

Thread (会话容器)
├── ThreadList (会话列表)
├── Message (消息)
│   ├── TextContent (文本)
│   ├── ToolCallCard (工具调用)
│   └── ActionBar (操作栏: 重试、复制)
├── Composer (输入区)
│   ├── TextInput
│   └── SendButton
└── ScrollAnchor (自动滚动)

2. 多后端运行时

// 连接 Vercel AI SDK
const runtime = useChatRuntime({ api: '/api/chat' });

// 连接 LangGraph
const runtime = useLangGraphRuntime({ apiUrl: '/api/langgraph' });

// 连接自定义后端
const runtime = useDataStreamRuntime({ api: '/api/stream' });

运行时与 UI 解耦,切换后端不需要改 UI 代码。

3. Generative UI

工具调用直接渲染为 React 组件:

const tools = {
  show_chart: {
    description: '展示图表',
    parameters: z.object({ data: z.array(z.number()) }),
    render: ({ data }) => <Chart data={data} />,
  },
  ask_confirmation: {
    description: '请求用户确认',
    parameters: z.object({ message: z.string() }),
    render: ({ message }) => <ConfirmationDialog message={message} />,
  },
};

4. 内置功能

  • 流式响应
  • 自动滚动
  • 重试机制
  • 文件附件
  • Markdown 渲染 + 代码高亮
  • 语音输入
  • 键盘快捷键
  • 无障碍支持

使用方式

# 新建项目
npx assistant-ui@latest create

# 已有项目
npx assistant-ui@latest init

参考资料

创建于 2026/6/30 更新于 2026/10/1
Digital Biome
Access

键盘导航

j / k / ↑ / ↓
选择对象
Enter / o
打开选择
/ 或 Ctrl+K
全站搜索
i / f / 1–4
筛选当前列表
g → h / l / p / t / a
首页 / 笔记 / 项目 / 工具 / About
r → 1–9
打开所选对象的关联
u
返回上一页
Esc
关闭浮层 / 取消命令;输入框内清空文本