TinyRobot是人工智能原生前端组件库,提供十六个组件和三个组合工具,覆盖服务器推送事件流式处理、思考过程展示、工具调用渲染、多会话管理等人工智能交互全场景,将胶水代码从百分之六十降至百分之十以下,让开发者聚焦业务逻辑。
对于做过 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')
复制代码
一个完整的 AI Chat 页面,不到 30 行代码即可运行。这就是 TinyRobot 带来的效率变革。
AI 时代的前端开发,不应再停留在“手搓组件”的阶段。TinyRobot 采用 AI-Native 的设计思路,将 SSE 流处理、思考过程、工具调用、多会话管理等“脏活累活”全部封装为组件和工具,让前端开发者能够真正聚焦于业务逻辑。
如果你仍为 AI 对话界面编写胶水代码,不妨尝试 TinyRobot——你会发现,开发可以如此轻松。
现在就上手:npm install @opentiny/tiny-robot
侠游戏发布此文仅为了传递信息,不代表侠游戏网站认同其观点或证实其描述