assistant-ui
开源 React 组件库,用乐高式原语组件快速构建生产级 AI 对话界面,支持所有主流 AI 框架
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
开源 React 组件库,用乐高式原语组件快速构建生产级 AI 对话界面,支持所有主流 AI 框架
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
想象一下:你的产品刚刚接入了 GPT-4,工程师们花了两周时间调通了 API 调用,结果产品经理打开 Demo 发现——界面就是一个黑框加输入框,消息发出去转圈圈半天没有反馈,打字没有高亮、代码没有格式化、语音输入也不支持。产品经理问:「这就是 AI 应用吗?」
这不是个例。在 2023-2024 年 AI 应用爆发的第一波浪潮里,无数团队遇到了同样的困境:后端模型能力强大,但前端体验停留在「调 API 成功」的阶段。用户期待的流式输出、打字机效果、消息气泡、代码高亮、多模态附件——这些体验上的细节,往往需要前端团队从零实现,不仅费时,还容易出 bug。
assistant-ui 正是为了解决这个问题而生。它是一个开源的 TypeScript/React 库,专门用来快速构建生产级的 AI 对话界面。你不需要从零搭 UI,直接把它的组件嵌入你的项目,就能获得与 ChatGPT、Claude App 相当的用户体验。
assistant-ui 由 Simon Farshid 创立,项目在 GitHub 上迅速积累了超过 10,000 颗星,获得了 Y Combinator 的支持。从 README 上的合作伙伴列表来看,LangChain、Mastra、Browser Use 等知名 AI 基础设施项目都已将 assistant-ui 作为默认 UI 方案。这说明它的定位非常清晰——做 AI 应用开发者的 UI 基础设施层,而不是做一个封闭的聊天产品。
项目采用 monorepo 架构,维护了超过 35 个独立包,覆盖从核心组件、状态管理到各种后端适配器的完整生态。
assistant-ui 的设计理念与 Radix UI 一脉相承——不提供一个巨大的「ChatBot」组件让你配置参数,而是提供一组原子化的原语组件(primitives),包括:
| 组件 | 作用 |
|---|---|
Thread | 消息列表容器 |
Message | 单条消息渲染 |
Composer | 输入框区域 |
ThreadList | 历史对话列表 |
ActionBar | 操作按钮栏 |
开发者可以从这些原子组件自由组合出任何想要的 UI 形态,而不是被一个黑盒组件限制住。
这种「Radix 风格」的另一个好处是:样式完全可控。CLI 初始化命令会自动从 shadcn/ui 复制一套主题到你的项目中,之后你可以像修改普通 CSS 一样随意定制外观。

图1:assistant-ui 提供的核心组件体系,可自由组合
README 中展示了一个 Perplexity 风格克隆的实现示例,仅通过组件组合和样式调整即可实现,而无需修改任何业务逻辑。

图2:基于 assistant-ui 复刻的 Perplexity 风格界面
assistant-ui 最值得关注的设计决策之一是后端无关(backend-agnostic)。它不绑定任何特定的 AI SDK,而是通过「Runtime Provider」模式接入不同后端:
| 后端 | 对应包 |
|---|---|
| Vercel AI SDK | @assistant-ui/react-ai-sdk |
| LangGraph/LangChain | @assistant-ui/react-langgraph |
| AG-UI / A2A 协议 | @assistant-ui/react-ag-ui |
| Google ADK / OpenCode | @assistant-ui/react-google-adk |
| 自定义 HTTP 后端 | @assistant-ui/react-data-stream |
内置支持 OpenAI、Anthropic、Google Gemini、Mistral、Perplexity、AWS Bedrock、Azure、Fireworks、Ollama 等模型服务商。如果你的后端不在列表里,只需要实现一个简单的 data-stream 接口即可接入。
assistant-ui 的另一个杀手级功能是Generative UI(生成式用户界面)。传统 AI 应用中,工具调用(Tool Call)的结果只能以文本形式展示。assistant-ui 允许将工具调用的 JSON schema 渲染为真正的 React 组件,并支持模型在前端动态请求用户确认(inline human approval)。这相当于给 AI 提供了一套安全的「前端操作接口」,AI 可以调用这些接口来操作真实的 UI 元素,而不是仅仅展示结果。
从项目结构来看,assistant-ui 是真正的工业级 TypeScript 项目:
@assistant-ui/react-native 支持 React Native代码结构遵循清晰的分层:核心层(@assistant-ui/core)定义协议和运行时接口,React 层提供 UI 组件,各适配器包负责与具体 AI 框架对接。这种分层设计使得核心逻辑与 UI 渲染解耦,便于扩展和维护。
assistant-ui 的上手路径极其平滑,两条路可选:
方式一(推荐):CLI 初始化
npx assistant-ui@latest create # 全新项目脚手架
npx assistant-ui@latest init # 接入现有项目
方式二:npm 直接安装
npm install @assistant-ui/react @assistant-ui/react-ai-sdk
最低要求 Node.js >= 24,无需 GPU,普通前端开发者即可上手。
需要客观指出的是 assistant-ui 的局限:
从更宏观的视角看,assistant-ui 的出现代表了 AI 应用开发的一个趋势:UI 体验正在成为与模型能力同等重要的竞争维度。当各家模型的文本生成质量趋于同质化时,流畅的对话体验、优雅的消息展示、完善的附件支持就成了差异化的关键。
作为一个拥有 10,000+ 星、Y Combinator 背书、已被 LangChain 等头部项目采用的前端库,assistant-ui 有潜力成为 AI 应用 UI 层的事实标准之一。