TinyRobot是一款AI原生前端组件库,提供16个组件与3个组合式工具,覆盖SSE流式处理、思考过程展示、工具调用及多会话管理等AI交互全场景。通过插件化设计将胶水代码从60%降至10%以下,让开发者专注于业务逻辑。
做过 AI 对话界面的开发者都知道,这类项目往往陷入“胶水代码地狱”——需要手动拼接、重复造轮子,耗时且易出错。

长期稳定更新的攒劲资源: >>>点此立即查看<<<
复制代码// 传统写法:手动解析 SSE 事件流
const eventSource = new EventSource('/api/chat');
eventSource.onmessage = (event) => {
const data = JSON.parse(event.data);
if (data.choices[0].delta.content) {
// 手动拼接文本片段
currentText += data.choices[0].delta.content;
// 手动更新 DOM
document.getElementById('chat-content').innerText = currentText;
}
if (data.choices[0].finish_reason === 'stop') {
eventSource.close();
}
};
仅是一个 SSE 就需要处理连接建立、数据解析、增量拼接、断线重连、取消中断等环节,每个场景都需手动实现,这在实际开发中反复出现。
传统组件库提供的只有 Input、Button、List、Card 这类通用 UI 零件。要搭建一个聊天界面,必须从零开始组装:
一个完整的 AI Chat 页面,60% 以上是胶水代码,仅有 40% 是真实业务逻辑,开发效率亟待提升。
大模型的输出早已超越纯文本:
reasoning_content:AI 的思考过程(DeepSeek、o1 等模型的核心特性)tool_calls:AI 调用外部工具(Function Calling 的标准配置)传统组件库完全没有考虑这些,开发者需要自行解析、渲染并管理状态。每新增一个模型特性,就多出一堆 hack 代码。
有没有更好的方案?TinyRobot 是一套从根本上解决上述问题的方案。它的定位明确:不是为通用组件库打聊天补丁,而是基于 AI 交互的本质重新设计组件模型。
| 对比维度 | 传统组件库 + 手工拼装 | TinyRobot |
|---|---|---|
| SSE 流式处理 | 手动 EventSource + 逐帧拼接 | useMessage + responseProvider 一行搞定 |
| AI 思考过程 | 自写折叠面板 + 手动监听 | thinkingPlugin 自动展开/收起 |
| 工具调用渲染 | 手写 JSON 展示 + 状态管理 | toolPlugin + BubbleRenderers.Tool 内置渲染 |
| 多会话切换 | 自写状态管理 + localStorage | useConversation + 存储策略开箱即用 |
| 消息分组 | 手写条件渲染 + 样式切换 | BubbleList + groupStrategy 自动分组 |
复制代码
三行代码即可完成 SSE 流式连接、增量更新和中断取消。responseProvider 支持 Promise(非流式)、AsyncGenerator(流式)、Promise 三种返回值,无缝对接各种后端。
复制代码
toolPlugin 自动处理工具声明注入、tool_calls 解析、工具执行、结果回写和下一轮请求。内置的 BubbleRenderers.Tool 渲染器可直接展示工具调用过程。
复制代码
thinkingPlugin 默认激活,自动捕获 reasoning_content,思考中展开、完成后收起。配合内置 BubbleRenderers.Reasoning 渲染器,侧边线加可折叠设计,便于查看 AI 的推理链。
复制代码
useConversation 支持多会话并行——切换会话时当前请求可在后台继续执行。存储策略可选 LocalStorage 或 IndexedDB,也支持自定义(如对接远程服务器)。
复制代码import { toolPlugin, useMessage } from '@opentiny/tiny-robot-kit'
import { getTools, callTool } from './mcp-amap'useMessage({
responseProvider,
plugins: [
toolPlugin({
getTools: async () => getTools(),
callTool: async (toolCall) => {
return await callTool(
toolCall.function.name,
JSON.parse(toolCall.function.arguments),
)
},
}),
],
})
搭配 @modelcontextprotocol/sdk,可直接接入 MCP 服务(例如高德地图),扩展 AI 的工具调用能力。TinyRobot 还提供了 McpServerPicker 和 McpAddForm 组件,方便用户在界面上管理和添加 MCP 插件。
TinyRobot 提供 16 个精心设计的组件,覆盖从消息展示到插件管理的完整链路:
| 类别 | 组件 | 说明 |
|---|---|---|
| 核心交互 | Bubble | 消息气泡,支持流式文本、Markdown、图片、推理、工具调用等多种渲染 |
Sender | 消息输入框,支持模板编辑、@提及、智能联想、语音输入、文件上传 | |
Container | 对话容器,支持全屏/窗口模式 | |
Prompts | 提示集,引导用户快速开始对话 | |
| 欢迎与引导 | Welcome | 欢迎页,展示标题、描述、图标和底部内容 |
| 反馈与互动 | Feedback | 气泡反馈,支持操作按钮、点赞/踩、数据来源展示 |
| 会话管理 | History | 历史记录列表,支持分组、重命名、删除、自定义菜单 |
| 附件与拖拽 | Attachments | 文件附件展示 |
DragOverlay | 拖拽浮层 | |
| MCP 插件 | McpAddForm | MCP 插件添加表单,支持表单/代码两种添加方式 |
McpServerPicker | MCP 插件选择器,已安装/市场双标签页管理 | |
| 建议与提示 | SuggestionPills | 建议按钮组,溢出模式 + 自动滚动 |
SuggestionPopover | 建议弹出框 | |
DropdownMenu | 下拉菜单 | |
| 主题与兼容 | Theme | 主题配置,亮暗色切换 + 自定义主题 + 持久化 |
SenderCompat | Sender 兼容组件,v0.3 → v0.4 快速迁移 |
配套的 3 个 Composable 工具:
| 工具 | 说明 |
|---|---|
useMessage | 消息状态管理 + 流式响应 + 插件体系 |
useConversation | 多会话管理 + 存储策略 + 后台引擎池 |
sseStreamToGenerator / formatMessages 等 | 辅助工具函数 |
TinyRobot 改变了前端日常开发模式:
之前:
现在:
responseProvider → 流式搞定BubbleList + messages → 渲染搞定thinkingPlugin → 思考过程搞定toolPlugin → 工具调用搞定useConversation → 多会话搞定胶水代码从 60% 降到不到 10%,剩下的全是业务逻辑——这才是前端开发者应该专注的领域。
复制代码# 安装
pnpm add @opentiny/tiny-robot @opentiny/tiny-robot-kit @opentiny/tiny-robot-svgs
复制代码// main.ts
import { createApp } from 'vue'
import App from './App.vue'
import '@opentiny/tiny-robot/dist/style.css'const app = createApp(App)
app.mount('#app')
复制代码
使用 TinyRobot,一个完整的 AI Chat 页面仅需不到 30 行代码,这就是效率变革的体现。
AI 时代的前端开发,不应继续停留在“手搓组件”的阶段。TinyRobot 采用 AI-Native 的设计思路,将 SSE 流处理、思考过程、工具调用、多会话管理等复杂工作封装为组件和工具,让前端开发者能够聚焦于业务逻辑。
如果您正在为 AI 对话界面编写大量胶水代码,不妨尝试 TinyRobot——开发可以如此轻松高效。
现在就上手:npm install @opentiny/tiny-robot
侠游戏发布此文仅为了传递信息,不代表侠游戏网站认同其观点或证实其描述