github: github.com/DaoxingHuan…
随着大模型(LLM)逐渐成为基础设施,“如何构建一个真正好用、可扩展、可产品化的 Chat UI”,已经成为前端和全栈开发者绕不开的问题。
Simple LLM Chat 正是围绕这一目标构建的一个现代化 LLM 聊天界面方案。它不仅是一个 Demo,而是一个从架构层面就考虑了 多端适配、流式通信、内容渲染、扩展能力和工程化 的完整解决方案。
本文将从产品能力、技术架构和扩展设计三个层面,系统解析这个项目。
Simple LLM Chat 是一个基于 React + Tailwind CSS + TypeScript 构建的现代 LLM Chat UI,采用 Monorepo 架构,同时支持 PC Web 和 Mobile Web。
它的目标并不是“能聊天”,而是:
构建一个可以承载复杂 LLM 应用能力的 UI 基础设施
这意味着它天然适合用于:
内部 AI 工具
企业级 Copilot
垂直领域智能助手
LLM 产品原型与快速验证
项目从一开始就考虑了多端问题:
PC Web
侧边栏(会话 / 设置)
Artifact 面板(代码 / 内容输出)
更适合生产力场景
Mobile Web
针对触摸操作优化
响应式布局
更轻量的交互体验
👉 核心逻辑与 UI 组件高度复用,避免“两个项目两套逻辑”的维护成本。
LLM 体验的关键在于“实时感”,Simple LLM Chat 在这一点上做了完整设计:
✅ 实时 Token 级流式响应
✅ 同时支持 SSE 与 WebSocket
✅ 可插拔的 StreamAdapter 架构
StreamAdapter
StreamAdapter ├── SSEAdapter ├── WebSocketAdapter └── CustomAdapter(可扩展)
这种设计让你可以:
无缝切换不同模型服务
兼容 OpenAI / 自建服务 / 本地模型
在不影响 UI 的情况下替换通信协议
LLM 的输出从来不只是纯文本。
标题 / 列表 / 表格
链接 / 引用
内联样式
语法高亮
一键复制
适合开发者场景
对于 代码生成 / 长文本 / 结构化输出:
聊天区负责“对话”
Artifact 面板负责“结果展示”
👉 这是一种明显偏 Copilot / IDE 思路 的 UI 设计,而不是传统聊天工具。
项目支持将模型的 思维链 / 推理过程 独立展示:
默认折叠,避免干扰
可手动展开查看
非常适合:
调试 Prompt
教学 / 研究
复杂推理场景
这是一个对高级用户极其友好的能力。
🌗 亮色 / 暗色主题
🤖 模型切换
🎯 使用模式切换
通用
开发者
创意写作
这些设置并不是“UI 点缀”,而是直接影响 Prompt 构造与模型行为。
这是整个项目最具想象力的设计之一。
你可以通过类似下面的语法:
::component-name[content]{prop="value"}
直接在 LLM 输出中 渲染真实的 React 组件。
用户资料卡片
::user-profile[用户简介]{ name="张三" role="开发工程师" avatar="https://example.com/avatar.png" bio="全栈开发者" }
增强图片组件
::image-plus[图片描述]{ src="https://example.com/image.png" name="图片名称" info="详细信息" link="https://example.com" }
结构化数据列表
::data-list[项目状态]{ title="Q4 交付物" data='[ {"title":"前端迁移","status":"已完成"}, {"title":"后端 API","status":"进行中"} ]' }
👉 这使得 LLM 不再只是“生成文本”,而是“生成 UI”。
项目引入了一套 Prompt DSL + 标签化 UI 的设计:
输入 # 即可触发
#
选择后以「胶囊 / 标签」形式展示
发送时自动拼接到 Prompt 前
示例:
#gen-image → 图像生成
#gen-image
#search → 搜索增强
#search
这种方式相比“把所有提示写进文本框”:
✅ 更直观
✅ 更不易出错
✅ 更适合复杂指令组合
项目采用 pnpm workspace + Monorepo 结构:
apps/ ├── pc # PC Web 应用 └── mobile # Mobile Web 应用 packages/ ├── core # 核心逻辑 & StreamAdapter ├── ui # Chat UI & Markdown 渲染 ├── store # Zustand 状态管理 └── utils # 通用工具
这种拆分带来的好处:
逻辑与 UI 解耦
多端共享核心能力
包级别可独立发布
极其适合长期演进
对于正在做 AI 平台 / Copilot 产品 的团队来说,这是一个非常健康的工程结构。
pnpm install pnpm dev:pc # 启动 PC Web pnpm dev:mobile # 启动 Mobile Web
构建:
pnpm build:all
Simple LLM Chat 的价值不在于:
“我能不能和模型聊天”
而在于:
“当 LLM 能力不断升级时,UI 是否还能承载新的交互范式
github: github.com/DaoxingHuan…
随着大模型(LLM)逐渐成为基础设施,“如何构建一个真正好用、可扩展、可产品化的 Chat UI”,已经成为前端和全栈开发者绕不开的问题。
Simple LLM Chat 正是围绕这一目标构建的一个现代化 LLM 聊天界面方案。它不仅是一个 Demo,而是一个从架构层面就考虑了 多端适配、流式通信、内容渲染、扩展能力和工程化 的完整解决方案。
本文将从产品能力、技术架构和扩展设计三个层面,系统解析这个项目。
一、项目定位:不只是一个聊天框
Simple LLM Chat 是一个基于 React + Tailwind CSS + TypeScript 构建的现代 LLM Chat UI,采用 Monorepo 架构,同时支持 PC Web 和 Mobile Web。
它的目标并不是“能聊天”,而是:
这意味着它天然适合用于:
内部 AI 工具
企业级 Copilot
垂直领域智能助手
LLM 产品原型与快速验证
二、核心能力概览
1️⃣ 多平台统一架构
项目从一开始就考虑了多端问题:
PC Web
侧边栏(会话 / 设置)
Artifact 面板(代码 / 内容输出)
更适合生产力场景
Mobile Web
针对触摸操作优化
响应式布局
更轻量的交互体验
👉 核心逻辑与 UI 组件高度复用,避免“两个项目两套逻辑”的维护成本。
2️⃣ 高级流式传输设计(Streaming First)
LLM 体验的关键在于“实时感”,Simple LLM Chat 在这一点上做了完整设计:
✅ 实时 Token 级流式响应
✅ 同时支持 SSE 与 WebSocket
✅ 可插拔的
StreamAdapter架构StreamAdapter ├── SSEAdapter ├── WebSocketAdapter └── CustomAdapter(可扩展)
这种设计让你可以:
无缝切换不同模型服务
兼容 OpenAI / 自建服务 / 本地模型
在不影响 UI 的情况下替换通信协议
3️⃣ 富内容渲染体系
LLM 的输出从来不只是纯文本。
Markdown 全能力支持
标题 / 列表 / 表格
链接 / 引用
内联样式
代码块体验优化
语法高亮
一键复制
适合开发者场景
Artifact 面板(非常关键)
对于 代码生成 / 长文本 / 结构化输出:
聊天区负责“对话”
Artifact 面板负责“结果展示”
👉 这是一种明显偏 Copilot / IDE 思路 的 UI 设计,而不是传统聊天工具。
4️⃣ 思考过程(Chain-of-Thought)可视化
项目支持将模型的 思维链 / 推理过程 独立展示:
默认折叠,避免干扰
可手动展开查看
非常适合:
调试 Prompt
教学 / 研究
复杂推理场景
这是一个对高级用户极其友好的能力。
5️⃣ 高度可配置的个性化设置
🌗 亮色 / 暗色主题
🤖 模型切换
🎯 使用模式切换
通用
开发者
创意写作
这些设置并不是“UI 点缀”,而是直接影响 Prompt 构造与模型行为。
三、真正的亮点:可扩展设计
1️⃣ Markdown 指令 → React 组件注入
这是整个项目最具想象力的设计之一。
你可以通过类似下面的语法:
::component-name[content]{prop="value"}直接在 LLM 输出中 渲染真实的 React 组件。
内置示例
用户资料卡片
::user-profile[用户简介]{ name="张三" role="开发工程师" avatar="https://example.com/avatar.png" bio="全栈开发者" }增强图片组件
::image-plus[图片描述]{ src="https://example.com/image.png" name="图片名称" info="详细信息" link="https://example.com" }结构化数据列表
::data-list[项目状态]{ title="Q4 交付物" data='[ {"title":"前端迁移","status":"已完成"}, {"title":"后端 API","status":"进行中"} ]' }👉 这使得 LLM 不再只是“生成文本”,而是“生成 UI”。
2️⃣ 提示词 DSL(# 触发器 + 胶囊 UI)
项目引入了一套 Prompt DSL + 标签化 UI 的设计:
输入
#即可触发选择后以「胶囊 / 标签」形式展示
发送时自动拼接到 Prompt 前
示例:
#gen-image→ 图像生成#search→ 搜索增强这种方式相比“把所有提示写进文本框”:
✅ 更直观
✅ 更不易出错
✅ 更适合复杂指令组合
四、工程架构:Monorepo 的正确打开方式
项目采用 pnpm workspace + Monorepo 结构:
apps/ ├── pc # PC Web 应用 └── mobile # Mobile Web 应用 packages/ ├── core # 核心逻辑 & StreamAdapter ├── ui # Chat UI & Markdown 渲染 ├── store # Zustand 状态管理 └── utils # 通用工具这种拆分带来的好处:
逻辑与 UI 解耦
多端共享核心能力
包级别可独立发布
极其适合长期演进
对于正在做 AI 平台 / Copilot 产品 的团队来说,这是一个非常健康的工程结构。
五、快速上手
pnpm install pnpm dev:pc # 启动 PC Web pnpm dev:mobile # 启动 Mobile Web构建:
pnpm build:all六、总结:这是一个“为未来 LLM 产品准备的 UI”
Simple LLM Chat 的价值不在于:
而在于: