Skip to content

AI Chat UI把 AI Harness 装进你的 Vue 应用

62 个可组合组件 + 一个 ChatAdapter 接口——思考链、工具调用、RAG 引用、生成式 UI 开箱即用。模型无关:OpenAI、Anthropic、GLM、Ollama、自建网关随接随换。MIT 开源。

app.local/chatSSE 循环演示

AI Chat UI 可能会产生不准确的信息,请注意甄别内容的准确性

⚡ AsyncGenerator 流式🔌 ChatAdapter · 任意后端
页面里的聊天窗口不是录屏——本页正在用 @toimc/vue 真组件循环播放活演示:思考链、工具调用、流式回答、RAG 引用,一个不缺。

01 · 为什么是现在 ​

模型解决「会思考」,Harness 解决「能干活」——AI 应用的界面层、协议层、服务端,正在成为和框架一样的基础设施。三个来自 2026-10 的实测数字:

626 万@ai-sdk/vue 月下载

AI 界面成了标配,Harness 层还是空白

竞品 @ai-sdk/vue 的月下载量实测 626 万(2026-10,npm registry)——人人都在给应用装 AI 对话,但官方只给到 useChat 这类逻辑层;模型之上的界面、协议、交互,也就是 Harness,仍要自己搭。

来源:npm downloads API · 2026-10
90%提交由 AI 生成

UI + AI 高效开发:本库就是 AI 写的

565 次提交、142 天,90% 代码由 AI 生成(git 仓库实测可点验)——用 AI 开发 AI 应用的界面,是当下效率最高的开发范式;这套组件库本身就是这条工作流的产物,全程 dogfooding。

来源:git log 实测 · learn-ai 仓库 · 2026-10
5 包全栈一体

全技能全流程:界面到服务端一套打通

62 个组件只是入口——ChatAdapter 协议层、server/agents 服务端网关、RAG 与会话记忆、MCP 双向接入,一个仓库覆盖 AI 应用全栈,不用在前端、协议、后端之间拼积木。

来源:仓库结构实测 · pnpm workspace · 2026-10

02 · 项目数据 ​

0
组件导出
0
能力域
0
npm 发布包
0+
单元测试用例
0
主题令牌
0
CSS 框架依赖

全部数字来自仓库实测:组件数按 @toimc/vue 的 index.ts 导出统计,测试用例按 173 个测试文件中的 it/test 计数(另含 22 个 Playwright E2E 用例),core 包零运行时依赖、agents 包零外部依赖。

03 · 三步跑起来 ​

第一步,安装。 五个包按需组合,最小只要两个:

bash
pnpm add @toimc/core @toimc/vue @toimc/markdown

样式一次性引入(Design Token + 全部组件样式,零 CSS 框架):

ts
import '@toimc/vue/style.css'

第二步,实现一个 ChatAdapter。 前端只认这一个接口——sendMessage 返回 AsyncGenerator<StreamChunk>,接谁由你决定:

ts
import type { ChatAdapter } from '@toimc/core'

const adapter: ChatAdapter = {
  async *sendMessage({ messages, signal }) {
    const res = await fetch('/api/chat', {
      method: 'POST',
      headers: { 'Content-Type': 'application/json' },
      body: JSON.stringify({ messages }),
      signal, // 中止信号自动透传
    })
    const reader = res.body!.getReader()
    const decoder = new TextDecoder()
    while (true) {
      const { done, value } = await reader.read()
      if (done) break
      yield { type: 'text', content: decoder.decode(value, { stream: true }) }
    }
    yield { type: 'done', content: '' }
  },
}

对接 OpenAI 兼容协议、加思考帧、走 SSE,用法指南里有现成的完整实现;服务端想省事,@toimc/agents 内置 OpenAI 兼容 / Anthropic 协议适配器。

第三步,组装界面。 布局、滚动锚定、流式光标、中断切换,全部内置:

vue
<script setup lang="ts">
import { useChat } from '@toimc/core'
import {
  Conversation, ConversationContent,
  Message, MessageContent,
  PromptInput, PromptInputBody, PromptInputTextarea, PromptInputFooter, PromptInputSubmit,
} from '@toimc/vue'

const chat = useChat(adapter)
</script>

<template>
  <Conversation>
    <ConversationContent>
      <Message v-for="msg in chat.messages" :key="msg.id" :from="msg.role">
        <MessageContent :content="msg.content" :streaming="chat.isStreaming" />
      </Message>
    </ConversationContent>

    <PromptInput :disabled="chat.isStreaming" @send="(p) => chat.send(p.text)" @abort="chat.abort">
      <PromptInputBody>
        <PromptInputTextarea />
      </PromptInputBody>
      <PromptInputFooter>
        <PromptInputSubmit />
      </PromptInputFooter>
    </PromptInput>
  </Conversation>
</template>

完整可复制版本(含 Markdown 渲染注入、附件、思考链)见快速开始。

04 · 62 个组件,16 项开箱能力 ​

后端无关一个 AsyncGenerator 接口对接任何后端——OpenAI 兼容、Anthropic、自建网关随意换,前端代码零改动。了解详情 →流式渲染StreamChunk 六种帧(text / thinking / tool_call / tool_result / error / done)逐帧消费,打字机、光标、中止全内置。了解详情 →思考链ThinkingChain 多步骤时间线,pending / active / complete / error 分步流转,结束自动算耗时折叠成一行。了解详情 →工具调用ToolCall 六态状态机 + 参数/结果 JSON 面板 + awaiting-approval 人工审批,function call 全过程透明。了解详情 →RAG 引用InlineCitation 正文角标悬浮预览引用片段,Sources 来源列表,外链走 http(s) 白名单校验。了解详情 →生成式 UI工具结果携带 UISchema,经组件白名单注册表渲染成真实 Vue 组件——决策权给 AI,渲染权留在工程。了解详情 →主题令牌原始→语义→组件 73 个 CSS 变量,暗色只翻转语义层;4 套预设 + 在线主题配置器一键导出。了解详情 →样式隔离库样式全部收在级联层内不污染宿主;宿主一行普通 CSS 即可覆盖任意组件,全程零 !important。了解详情 →双语 i18n内置 zh-CN / en-US 字典,setAiChatLocale 一行切换并同步 <html lang>,与宿主 vue-i18n 实例天然隔离。了解详情 →多模态上传 / 粘贴 / 拖拽附件管道,canvas 压缩转 base64 直发视觉模型——blob 预览地址与发送数据各归其位。了解详情 →语音交互Web Speech API 零依赖封装:语音识别进输入框,回复按句朗读、可打断、状态持久化。了解详情 →分支对比BranchPicker 多分支翻页切换,ComparisonMessage 双模型 A/B 对比,点选后原地固化。了解详情 →服务端网关@toimc/server Hono 网关 + @toimc/agents 多协议适配,JWT / API Key / 每日配额开箱即用,Key 不出服务端。了解详情 →按包安装core 零依赖、agents 零外部依赖,Monorepo 五包独立发布——只要组件不要服务端?不装就是了。了解详情 →1600+ 测试173 个测试文件 + Playwright E2E 三浏览器覆盖,正常 / 边界 / 异常三场景纪律,改动有回归网兜底。了解详情 →参考实现Mastra 会话记忆、LibSQLVector 混合检索 RAG、MCP 双向、多 Agent 编排——dev-server 里都有可跑的实现。了解详情 →

05 · 架构:一个接口,任意后端 ​

组件不关心模型,useChat 不关心协议,你的应用只依赖 ChatAdapter 这一层薄接口。换模型 = 换一个 adapter 文件;API Key 永远留在服务端。

你的应用
Vue 3.5+ 宿主页面
@toimc/vue + markdown
62 个组件 · 流式渲染
@toimc/core
useChat 状态机 · StreamChunk
ChatAdapter
AsyncGenerator<StreamChunk>
后端任选
OpenAI 兼容AnthropicGLM / DeepSeekKimi / QwenOllama 本地自建网关

层间流向:你的应用 → 组件层 → 状态机 → ChatAdapter 接口 → 后端任选

可选@toimc/server Hono 网关(Bearer 认证 · 限流 · SSE · JWT / API Key / 配额) +@toimc/agents 多协议适配(OpenAI 兼容 · Anthropic · Mastra) —— API Key 只留在服务端

06 · 与主流方案对比 ​

React 生态的同类库很多,但「Vue 原生 + 后端无关 + 组件可拆用」三者同时成立的,目前只有这一家:

维度AI Chat UI@toimc · 本库assistant-ui12.4k starVercel AI Elements2.5k starCopilotKit37.8k star
框架支持Vue 3.5+ 原生React(Vue 绑定 npm 未发布)React(copy-paste)React 为主,Vue 包 2026-05 新发
后端耦合ChatAdapter 接口,任意后端默认绑 Vercel AI SDK绑 AI SDK 协议绑 CopilotRuntime + AG-UI
使用方式组件级拆用,5 包按需安装headless + 组件复制代码进仓库整体框架接入
样式方案零 CSS 框架 · CSS Variables · @layer 隔离Tailwind + shadcnTailwind + shadcnTailwind 系
思考链流式展示✅✅✅部分
工具调用人工审批✅✅—✅
RAG 行内引用✅✅✅部分
生成式 UI✅ 白名单注册表✅部分✅
消息分支 / 双模型对比✅✅ branching——
中文文档✅———

← 左右滑动查看完整对比 →

star 数与发布状态实测于 GitHub API / npm registry,数据截至 2026-10;CopilotKit 与 assistant-ui 的 Vue 支持均在快速演进,以各项目官网为准。

07 · 在线演示,点开即玩 ​

以下页面全部由本库组件搭建。「纯静态」演示无需任何后端,「需 dev-server」的页面在仓库里跑 pnpm dev 即可获得完整体验:

完整 Playground纯静态发送 / 中止 / 多会话 / 主题切换 / 思考流式,本地 mock 自包含进入演示 →RAG 引用演示纯静态思考链检索 + 正文角标 hover 预览 + 来源列表 + 工具审批全链路进入演示 →主题配置器纯静态73 个令牌在线编辑、实时预览、导出 CSS 覆盖文件进入演示 →反馈与分支纯静态Welcome 引导、/@ 内联建议、操作四件、三分支翻页,事件日志实时可见进入演示 →模型元数据纯静态15 家厂商图标、厂商分组、按百万 token 定价格式化、JSON diff 对比进入演示 →端侧语义搜索纯静态浏览器里跑 bge-small-zh 向量检索:零 API 调用、数据不出本机、可离线进入演示 →多模态输入纯静态压缩 → dataUrl → SSE 线协议可视化,未配模型时 mock 优雅降级进入演示 →Mock 流式对话需 dev-server真实 HTTP + SSE:token 粒度逐字输出,思考 / 工具 / 错误剧本一键触发进入演示 →向量检索演示需 dev-serverdocs-agent 关键词 vs 语义混合双路并排对比,链路耗时实测进入演示 →生成式 UI需 dev-server工具回复渲染成天气卡片 / 方案采纳按钮组,降级链一并演示进入演示 →多 Agent 编排需 dev-server委托 Supervisor / 并行 Council / 流水线 Workflow 三形态可复现可对比进入演示 →Workflow 直跑需 dev-serverMastra Workflow 原生接入:step 映射为工具帧,前端零协议改动进入演示 →

08 · 包矩阵:按需安装,不背包袱 ​

包版本职责什么时候装它
@toimc/core0.0.2类型 + useChat 状态机,零运行时依赖必装
@toimc/vue0.0.262 个组件、主题令牌、i18n必装
@toimc/markdown0.0.2流式 Markdown / Shiki 高亮 / KaTeX / Mermaid要渲染 Markdown 时
@toimc/agents0.2.0服务端模型适配层(OpenAI 兼容 / Anthropic / Mastra),零外部依赖自建后端时
@toimc/server0.1.1Hono 网关:Bearer 认证、限流、SSE 转发、JWT / API Key / 每日配额要现成服务端时

从界面到生产,链路是通的:服务端网关数行起一个带认证与限流的聊天网关;智能体接入一行 createMastraGateway 挂载 Mastra Agent(工具调用 + 会话记忆);语义检索演示 Ollama 本地向量化 + 混合检索的完整 RAG;会话记忆讲透 LibSQL 落盘与 token 成本取舍。仓库还内置 MCP 双向接入(Context7 客户端 + 把本地工具暴露给 Claude Code)与多 Agent 编排的参考实现。

09 · 现在就开始 ​

bash
pnpm add @toimc/core @toimc/vue

三分钟得到一个能流的聊天界面,剩下的零件——思考链、工具审批、引用角标、生成式 UI——在组件文档里随取随用。