OpenTiny训练营实操体验|轻松解锁TinyVue智能组件开发Web应用
1.背景描述
TinyVue 是一套企业级的 Vue 框架下的组件库,它具有跨端、跨框架的特性,同时支持 Vue2 和 Vue3,支持 PC 端和移动端浏览器。
本次实验是通过改造一个使用 TinyVue 组件的常规 Web 应用,秒变为一个能够对接大语言模型的智能应用。这个应用可以让用户通过自然语言与网页进行对话,直接"精准"操作网页上的组件。
2.实验简介
首先,我们提供了一个用 Vue3 搭建的商品列表管理的单页面应用,它使用 TinyVue 组件库中的 Select、Grid 等组件。该商品管理应用默认会显示商品管理的表格,并且已经实现了条件查询商品,添加、删除商品和保存商品等功能。但此应用目前不支持 AI 大模型的操作,比如打开智能助手,发送的信息不会正确执行。
对接 TinyVue Next 智能框架的相关包,给 Select、Grid 等组件添加业务描述后,让智能助手等功能可以遥控操作网页。
3.基本要求
- 熟练使用 VSCode 或其他代码编辑器
- 具有 Chrome、Edge 等浏览器的调试能力
- 熟悉 Vue 开发,以及具有 TinyVue 或其它组件库的开发经验
4.代码实战
4.1 启动电商平台 demo 页面,熟悉功能
解压桌面上的工程压缩文件 agent-app-demo (可能位置与名称有调整,有疑问可咨询)
解压完成后用 VSCode 软件打开指定的工程目录,打开终端,执行以下命令安装依赖:
npm install
安装完成后执行以下命令,启动电商平台 demo 页面。
npm run dev
启动成功后,查看商品列表并简单的进行增删改查的操作。
但此时测试 AI 智能助手,则是无响应的。下一步就来对应用进行简单改造。
4.2 引用 vue-next 等智能包进行应用改造
将上面的普通应用,秒变为智能应用,需要以下 4 步, 需要按顺序完成。
4.2.1 引入智能包
在终端中执行以下命令,安装相关智能包。
npm install @opentiny/tiny-vue-mcp @opentiny/next-vue -S
4.2.2 全局注册 TinyVue MCP 的工具
在main.ts
文件中,引入@opentiny/tiny-vue-mcp
,注册 TinyVue MCP 的工具。
import { createMcpTools, getTinyVueMcpConfig } from "@opentiny/tiny-vue-mcp"; import { registerMcpConfig } from "@opentiny/vue-common"; // 1、 将 TinyVue MCP的工具注入到 vue-common 层中,之后应用可以TinyVue MCP的功能 registerMcpConfig(getTinyVueMcpConfig(), createMcpTools);
4.2.3 创建 MCP Client 的远端会话
在App.vue
文件中,引入@opentiny/next-vue
, 创建 MCP Client 的远端会话。
注意:代码中连接需要自行提供 目前 agent 代理服务器代码未开源,如想进一步了解可以在 github 中提 issue 单 提交 issue 连接:https://github.com/opentiny/tiny-vue/issues
import { useNextClient } from "@opentiny/next-vue"; import { globalConversation } from "./composable/utils"; // 2、创建 sessionId , 一个 ref<string> 的值, 并保存起来,智能助手会访问该变量进行通讯 const { sessionId } = useNextClient({ clientInfo: { name: "my-project", version: "1.0.0" }, // url为工具调用方,token为对应的凭证 proxyOptions: { url: "https://xxx/sse", token: "" }, }); globalConversation.sessionId = sessionId;
4.2.4 在应用页面,创建 MCP Server, 并给组件声明"业务属性"
在views/productManager/index.vue
中,创建 MCP Server
import { useNextServer } from "@opentiny/next-vue"; // 3、创建web应用所需的 McpServer 变量, 用于注册页面中的组件到系统中。 const { server } = useNextServer({ serverInfo: { name: "company-list", version: "1.0.0" }, }); // 4、 模板中,在AI智能助手要操作的组件上,去绑定 server 和 组件的 "业务描述"。 这样 AI就能关联mcp,并识别每个组件的业务定义了。
在views/productManager/index.vue
文件中, 可以改造 TinyVue 的组件,它们支持属性 tiny_mcp_config, 传入 server 和组件的业务描述,例如:
<tiny-base-select v-model="statusFilter" :options="statusOptions" placeholder="商品状态" clearable :tiny_mcp_config="{ server, business: { id: 'category-status', description: '商品状态的下拉框', }, }" > </tiny-base-select>
其中 business.id 是组件在页面上的唯一 id。 business.description 是描述组件的业务含义, 这样与大模型对话时,大模型可以"精准"的知道页面上有什么可以操纵。
接下来,给商品状态的 Select, 商品列表的表格,按钮等等,都可以添加上 :tiny_mcp_config 属性了。
给分类下拉框添加 tiny_mcp_config
<tiny-base-select v-model="categoryFilter" :options="categoryOptions" placeholder="商品分类" clearable :tiny_mcp_config="{ server, business: { id: 'category-select', description: '商品分类的下拉框', }, }" > </tiny-base-select>
给商品列表表格添加
<tiny-grid auto-resize ref="gridRef" :data="displayProducts" :height="520" :edit-config="{ trigger: 'click', mode: 'cell', showStatus: true }" :tiny_mcp_config="{ server, business: { id: 'category-list', description: '商品列表', }, }" > <!--省略部分代码--> </tiny-grid>
4.3 通过页面的 AI 智能助手进行网页的智能操作
经过 4.2 节, 我们已经将普通的应用秒变为智能应用。此时就可以通过"AI 智能体"工具跟网页对话了
对下拉框,你可以尝试提问: 在商品分类下拉框中,弹出下拉面板选中手机分类。
对于表格, 你可以问:帮我在商品列表中删除最贵的且分类为手机的商品。
这里就可以发挥想像力,对网页进行各种提问,看看大模型能否正确判断行为,并调用正确的 MCP 方法。
如果"AI 智能体"工具不能执行成功,可以打开浏览器控制台,参考以下内容进行排查:
控制台有无报错
打开"网络" 面板,查看 chat-messages 接口是否异常
查看控制台打印的: SSE data: xxxx 信息。可以跟踪大模型的执行过程,查看调用 MCP 工具的中间过程等。
4.4 页面添加可识别二维码,通过手机远程操作
通过文字去操作页面有点麻烦,如果能通过语音就是远程遥控网页是不是就好了。
在"App.vue"的顶部增加 的二维码组件:
<div class="qr-code"> <span> 页面识别二维码, 请用手机扫码后,在浏览器中打开。 微信的浏览器可能没有语音功能,需要使用手机内置的浏览器访问。 </span> <tiny-qr-code :value="sessionUrl" :size="100" color="#1677ff"></tiny-qr-code> </div>
二维码的 value= sessionUrl ,它是通过 sessionId 计算出来的一个 url。在App.vue
添加以下 js 代码:
注意:代码中连接需要自行实现并部署远程操控服务 如对此有疑问或者有兴趣交流,欢迎提交 issue: https://github.com/opentiny/tiny-vue/issues
import CryptoJS from "crypto-js"; import { computed } from "vue"; const sessionUrl = computed(() => { // 未创建session时 if (!sessionId.value) return "no session"; // 创建好 sessionId后,加密后拼接成 sessionUrl , 这样手机扫码后会连接这个Url页面 const encryptedId = CryptoJS.AES.encrypt( sessionId.value, "secret-session-id" ).toString(); return "https://xxx?id=" + encodeURIComponent(encryptedId); });
这样,我们的应用顶部会有一个二维码,用手机扫描后,使用手机上的浏览器打开,就可以选择"语音控制器",跟它对话了,通过手机远程指挥网页。
因为上述流程中 proxyOptions.url 与 语音远程操控页面需要自行部署服务,因此提供了临时的线上体验连接:https://opentiny.design/tiny-vue/zh-CN/os-theme/comprehensive
5.实验总结
通过本次实验,我们不仅掌握了将普通 Web 应用转化为智能 Web 应用的关键技能,还学会了利用智能助手或远程手机对网页进行精准操控。
该实验引导用户深入思考网页未来可能呈现的形态与无限可能,让每一位用户都能深切体验到人工智能为 Web 开发领域所带来的震撼,感受技术进步如何重塑我们的网页世界。
关于 OpenTiny
欢迎加入 OpenTiny 开源社区。添加微信小助手:opentiny-official 一起参与交流前端技术~
OpenTiny 官网:https://opentiny.design
OpenTiny 代码仓库:https://github.com/opentiny
TinyVue 源码:https://github.com/opentiny/tiny-vue
TinyEngine 源码: https://github.com/opentiny/tiny-engine
欢迎进入代码仓库 Star🌟TinyEngine、TinyVue、TinyNG、TinyCLI、TinyEditor~ 如果你也想要共建,可以进入代码仓库,找到 good first issue 标签,一起参与开源贡献~

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
开源中国亮相 2025 全球数字经济大会·全球开源创新发展论坛
7 月 5 日上午,由国家工业信息安全发展研究中心、开源中国、国际内源基金会联合承办的专题论坛——全球开源创新发展论坛(以下简称“论坛”)在北京国家会议中心正式召开。 本次论坛以“开源惠全球·集智创未来”为主题,围绕全球开源技术发展趋势、优质开源社区培育路径、区域开源生态建设实践等内容,凝聚开源发展共识,形成发展合力,充分释放数字经济的放大、叠加、倍增效应,助力全球数字经济高质量发展。 在主题演讲环节,开源中国董事长马越以《开发者的崛起才是开源的崛起》为题,深度解构了开源中国 17 年的发展脉络——从开源技术社区,到代码托管平台、研发效能平台,再到如今在 AI 智能浪潮下的战略升级。他以时间轴为线索,系统梳理了开源中国从技术交流、代码托管到产业赋能、AI 创新的迭代路径,同时也揭示了开源理念如何在本土化实践中与开发者技术创新需求深度耦合。 马越介绍:“开源中国是一家 17 年的公司,最开始我们创建的 OSChina 是一个内容社区。而在 2013 年,我们致敬了一个伟大的友商 GitHub ,发布了 Gitee 代码托管平台,发展至今已成为了全世界第二大代码托管平台。时间来到 2020...
- 下一篇
AI助力快速引入外部组件到TinyEngine低代码引擎
本文由羽毛笔记作者观默原创。 背景:低代码时代的开发挑战 TinyEngine作为一款优秀的低代码平台,以其强大的功能和快速迭代能力赢得了众多开发者的青睐。它让开发者能够通过可视化界面快速构建应用,大大提升了开发效率。 然而,就像一座美丽的花园需要更多花卉品种来装点一样,TinyEngine也面临着组件生态的挑战:官方提供的组件虽然精心设计,但数量有限,难以满足企业级项目的多样化需求。更具挑战性的是,要将私有组件库接入TinyEngine,必须先为每个组件生成对应的schema文件——这就像为每朵花制作专属的标签卡片。 从痛点到机遇:AI时代的解决方案 最近,我们公司面临着将私有组件库接入TinyEngine的需求。如果采用传统的人工方式为每个组件编写schema文件,不仅耗时费力,更重要的是缺乏那种让人兴奋的技术创新感。想象一下,如果有几十个组件需要处理,那将是一个令人望而却步的重复性工作。 这让我开始思考:在AI技术日新月异的今天,是否有更优雅的解决方案? 传统方案 VS AI方案 在AI时代之前,我可能会选择**Babel + AST(抽象语法树)**的技术路线: 解析Vue组件...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- SpringBoot2初体验,简单认识spring boot2并且搭建基础工程
- CentOS8安装Docker,最新的服务器搭配容器使用
- SpringBoot2整合Thymeleaf,官方推荐html解决方案
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- CentOS7,8上快速安装Gitea,搭建Git服务器
- 设置Eclipse缩进为4个空格,增强代码规范
- SpringBoot2全家桶,快速入门学习开发网站教程
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- Red5直播服务器,属于Java语言的直播服务器
- Docker安装Oracle12C,快速搭建Oracle学习环境