OpenTiny NEXT全链路实战:WebMCP+GenUI+AI-Extension一站式开发
OpenTiny NEXT全链路实战:WebMCP+GenUI+AI-Extension一站式开发
摘要:随着前端智能化技术的快速发展,AI Agent与Web应用的连接、智能交互界面开发、浏览器AI插件落地成为前端开发者的核心需求。本文基于OpenTiny NEXT前端智能化系列直播1-4期内容,结合WebMCP、GenUI、AI-Extension三大核心技术,打造一站式实战教程,从环境搭建、核心功能开发到最终部署,提供完整可运行代码与踩坑指南,助力开发者快速掌握前端智能化落地技巧,同时贴合OpenTiny开源生态,实现技术与实践的深度融合。
一、背景与痛点:前端智能化的落地困境
当前前端开发正从“传统交互”向“智能交互”转型,AI Agent与Web应用的连接效率低、智能UI开发成本高、浏览器操作无法实现AI自动化等问题,成为制约前端智能化落地的核心痛点。传统开发模式中,AI能力与Web应用的耦合度低,需要大量自定义代码实现连接;智能对话界面开发需从零搭建组件,耗时费力;浏览器插件开发门槛高,且难以与AI能力深度融合。
OpenTiny NEXT作为前端智能化开源解决方案,提供了WebMCP(Web智能体连接协议)、GenUI(生成式UI)、AI-Extension(浏览器AI扩展)等核心能力,完美解决上述痛点,让开发者无需从零搭建,即可快速实现前端智能化功能落地。本文基于OpenTiny NEXT SDK,打造全链路实战案例,覆盖“连接-交互-自动化”三大核心场景,助力开发者快速上手。
二、环境搭建:OpenTiny NEXT开发环境准备
2.1 基础环境要求
本次实战需准备以下开发环境,确保代码可正常运行:
-
Node.js:v16.18.0 及以上(推荐v18.x)
-
包管理工具:pnpm v8.0.0 及以上(或npm、yarn)

-
浏览器:Chrome 110.0 及以上(用于AI-Extension开发与测试)
-
开发工具:VS Code(推荐安装TypeScript、ESLint插件)


2.2 环境搭建步骤
- 安装Node.js与pnpm,验证环境是否正常:
# 验证Node.js版本
node -v
# 验证pnpm版本
pnpm -v
# 若未安装pnpm,执行以下命令
npm install -g pnpm
- 初始化项目,安装OpenTiny NEXT核心依赖:
# 初始化TypeScript项目
pnpm create vite@latest opentiny-fullstack-demo --template vue-ts
cd opentiny-fullstack-demo
# 安装OpenTiny NEXT核心依赖
pnpm install @opentiny/next-sdk @opentiny/gen-ui @opentiny/ai-extension
- 配置项目,确保依赖正常引入:修改vite.config.ts,添加OpenTiny相关配置(可选,用于优化打包体验):
import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'
import path from 'path'
export default defineConfig({
plugins: [vue()],
resolve: {
alias: {
'@': path.resolve(__dirname, './src'),
'@opentiny': path.resolve(__dirname, './node_modules/@opentiny')
}
}
})
- 启动项目,验证环境搭建成功:
pnpm run dev
若浏览器能正常打开项目页面(默认localhost:5173),则环境搭建完成。
三、WebMCP原理与服务搭建:实现AI Agent与Web应用的连接
3.1 WebMCP核心原理
WebMCP(Web Agent Connection Protocol)是OpenTiny NEXT推出的Web智能体连接协议,核心作用是打通AI Agent与Web应用的通信壁垒,实现AI Agent对Web应用的“感知-操作-反馈”全流程控制。其核心架构分为三层:
-
协议层:定义AI Agent与Web应用的通信规范,支持JSON-RPC 2.0协议,确保数据传输的稳定性与一致性;
-
服务层:提供WebMCP Server,负责接收AI Agent的请求,转发至Web应用,并将执行结果反馈给AI Agent;
-
应用层:Web应用通过WebMCP Client接入服务,注册可被AI Agent调用的功能(如页面元素操作、接口请求等)。
通过WebMCP,开发者无需自定义通信逻辑,即可快速实现AI Agent与Web应用的联动,大幅降低前端智能化的开发成本。
3.2 WebMCP Server搭建
基于OpenTiny NEXT SDK,快速搭建WebMCP Server,实现AI Agent与Web应用的连接:
// src/server/webmcp-server.ts
import { createWebMCPServer } from '@opentiny/next-sdk'
// 初始化WebMCP Server
const webMCPServer = createWebMCPServer({
port: 8080, // 服务端口
auth: false, // 开发环境关闭权限验证,生产环境建议开启
handlers: {
// 注册可被AI Agent调用的自定义方法
async getPageInfo() {
// 模拟获取当前Web应用页面信息
return {
title: 'OpenTiny全链路实战Demo',
url: 'http://localhost:5173',
elements: ['button', 'input', 'dialog']
}
},
async clickElement(params: { elementId: string }) {
// 模拟点击页面元素
console.log(`点击元素:${params.elementId}`)
return { success: true, message: `元素${params.elementId}点击成功` }
}
}
})
// 启动WebMCP Server
webMCPServer.start().then(() => {
console.log('WebMCP Server启动成功,地址:http://localhost:8080')
})
启动WebMCP Server:
# 在项目根目录创建server文件夹,将上述代码保存为webmcp-server.ts
# 安装ts-node,用于运行TypeScript文件
pnpm install ts-node -D
# 启动服务
npx ts-node src/server/webmcp-server.ts
若控制台输出“WebMCP Server启动成功”,则服务搭建完成,AI Agent可通过http://localhost:8080与Web应用通信。
3.3 WebMCP Client接入Web应用
在Vue项目中接入WebMCP Client,实现与WebMCP Server的通信:
// src/utils/webmcp-client.ts
import { createWebMCPClient } from '@opentiny/next-sdk'
// 初始化WebMCP Client
export const webMCPClient = createWebMCPClient({
serverUrl: 'http://localhost:8080', // WebMCP Server地址
timeout: 5000 // 超时时间
})
// 封装调用AI Agent方法的工具函数
export const callAgentMethod = async (method: string, params?: any) => {
try {
const response = await webMCPClient.call(method, params)
return { success: true, data: response }
} catch (error) {
console.error(`调用AI Agent方法${method}失败:`, error)
return { success: false, error: (error as Error).message }
}
}
在Vue组件中使用Client调用服务端方法:
WebMCP 通信测试<button @="getPageInfo">获取页面信息<button @">点击测试元素{{ result }}<script setup
import { ref } from 'vue'
import { callAgentMethod } from '@/utils/webmcp-client'
const result = ref('')
// 调用获取页面信息方法
const getPageInfo = async () => {
const res = await callAgentMethod('getPageInfo')
result.value = res.success ? JSON.stringify(res.data) : res.error
}
// 调用点击元素方法
const clickElement = async (elementId: string) => {
const res = await callAgentMethod('clickElement', { elementId })
result.value = res.success ? res.data.message : res.error
}
运行项目后,点击按钮即可实现与WebMCP Server的通信,验证AI Agent与Web应用的连接功能。
四、GenUI智能对话界面实战:快速搭建AI交互界面
4.1 GenUI核心优势
GenUI是OpenTiny NEXT推出的生成式UI组件库,专为AI对话交互场景设计,具备“快速生成、灵活定制、自适应布局”三大优势。开发者无需手动编写大量UI代码,只需通过简单配置,即可生成符合需求的AI对话界面,支持消息发送、接收、加载状态、历史记录等核心功能,同时可与AI Agent深度联动,实现智能对话交互。
4.2 GenUI对话界面开发
基于OpenTiny GenUI组件,快速搭建AI对话界面,实现与AI Agent的智能交互:
GenUI 智能对话界面<tiny-genui-chat
:messages="messages"
:loading="loading"
@send="handleSendMessage"
placeholder="请输入消息..."
avatar="https://atomgit.com/opentiny.png"
bot-avatar="https://atomgit.com/opentiny/next-sdk/raw/develop/logo.png"
/>
<script setup ="ts">
import { ref } from 'vue'
import { TinyGenuiChat } from '@opentiny/gen-ui'
import { callAgentMethod } from '@/utils/webmcp-client'
// 对话消息列表
const messages = ref([
{
type: 'bot',
content: '你好!我是基于OpenTiny GenUI的AI助手,请问有什么可以帮你?'
}
])
// 加载状态
const loading = ref(false)
// 处理消息发送
const handleSendMessage = async (content: string) => {
// 添加用户消息
messages.value.push({ type: 'user', content })
loading.value = true
try {
// 调用AI Agent方法,获取回复(模拟AI处理逻辑)
const res = await callAgentMethod('getAIResponse', { content })
if (res.success) {
// 添加AI回复消息
messages.value.push({ type: 'bot', content: res.data.response })
} else {
messages.value.push({ type: 'bot', content: '抱歉,获取回复失败,请重试!' })
}
} catch (error) {
messages.value.push({ type: 'bot', content: '抱歉,系统异常,请重试!' })
} finally {
loading.value = false
}
}
补充WebMCP Server的getAIResponse方法,模拟AI回复逻辑:
// 在src/server/webmcp-server.ts的handlers中添加
async getAIResponse(params: { content: string }) {
const { content } = params
// 模拟AI回复,实际场景可对接真实AI接口(如ChatGPT、通义千问等)
let response = ''
if (content.includes('WebMCP')) {
response = 'WebMCP是OpenTiny NEXT的Web智能体连接协议,用于打通AI Agent与Web应用的通信壁垒,实现智能联动。'
} else if (content.includes('GenUI')) {
response = 'GenUI是OpenTiny NEXT的生成式UI组件库,专为AI对话交互设计,可快速搭建智能对话界面,降低开发成本。'
} else {
response = `你输入的内容是:${content},我已收到,后续将为你提供更精准的回复。`
}
return { response }
}
重启WebMCP Server和项目,即可看到完整的AI对话界面,输入消息后可获取AI回复,实现智能交互功能。GenUI组件支持自定义头像、占位符、消息样式等,开发者可根据需求灵活配置。
五、AI-Extension浏览器插件开发:实现浏览器AI自动化
5.1 AI-Extension核心功能
AI-Extension是OpenTiny NEXT推出的浏览器AI扩展工具,基于Chrome插件开发规范,结合AI能力,实现“页面元素识别、AI操作、自动填充”等核心功能。通过AI-Extension,开发者可快速开发浏览器插件,让AI能够“看得到”浏览器页面元素、“动得了”浏览器操作,实现浏览器自动化与AI智能化的深度融合。
5.2 AI-Extension插件开发步骤
5.2.1 创建插件目录结构
在项目根目录创建extension文件夹,目录结构如下:
extension/
├── manifest.json # 插件配置文件
├── popup.html # 插件弹窗页面
├── popup.js # 弹窗页面逻辑
├── content.js # 页面注入脚本(用于操作页面元素)
└── icon.png # 插件图标(可选)
5.2.2 配置manifest.json
manifest.json是Chrome插件的核心配置文件,定义插件的基本信息、权限、注入脚本等:
{
"manifest_version": 3,
"name": "OpenTiny AI Extension",
"version": "1.0.0",
"description": "基于OpenTiny NEXT的浏览器AI扩展,实现页面元素识别与AI操作",
"permissions": ["activeTab", "scripting"],
"action": {
"default_popup": "popup.html",
"default_icon": "icon.png"
},
"content_scripts": [
{
"matches": ["<all_urls>"],
"js": ["content.js"]
}
]
}
5.2.3 开发弹窗页面(popup.html + popup.js)
popup.html:插件弹窗页面,提供操作按钮与反馈信息:
<!DOCTYPE html>
OpenTiny AI ExtensionAI浏览器扩展
popup.js:弹窗页面逻辑,与content.js通信,实现页面操作:
// 获取页面元素
const identifyBtn = document.getElementById('identifyBtn')
const autoFillBtn = document.getElementById('autoFillBtn')
const result = document.getElementById('result')
// 识别页面元素
identifyBtn.addEventListener('click', async () => {
try {
// 获取当前激活的标签页
const [tab] = await chrome.tabs.query({ active: true, currentWindow: true })
// 向content.js发送消息,获取页面元素信息
chrome.tabs.sendMessage(tab.id, { action: 'identifyElements' }, (response) => {
if (response) {
result.textContent = `识别到${response.length}个元素:${response.join(', ')}`
} else {
result.textContent = '识别失败'
}
})
} catch (error) {
result.textContent = `识别失败:${error.message}`
}
})
// 自动填充表单
autoFillBtn.addEventListener('click', async () => {
try {
const [tab] = await chrome.tabs.query({ active: true, currentWindow: true })
// 向content.js发送消息,执行自动填充
chrome.tabs.sendMessage(tab.id, { action: 'autoFillForm' }, (response) => {
result.textContent = response ? '填充成功' : '填充失败'
})
} catch (error) {
result.textContent = `填充失败:${error.message}`
}
})
5.2.4 开发页面注入脚本(content.js)
content.js注入到当前浏览器页面,用于操作页面元素、与弹窗脚本通信:
// 监听弹窗脚本发送的消息
chrome.runtime.onMessage.addListener((request, sender, sendResponse) => {
switch (request.action) {
// 识别页面元素
case 'identifyElements':
const elements = Array.from(document.querySelectorAll('input, button, select'))
.map(el => el.tagName.toLowerCase())
// 去重并返回
const uniqueElements = [...new Set(elements)]
sendResponse(uniqueElements)
break
// 自动填充表单
case 'autoFillForm':
const inputElements = document.querySelectorAll('input[type="text"], input[type="email"]')
inputElements.forEach((el, index) => {
if (index === 0) el.value = 'opentiny@example.com' // 邮箱
if (index === 1) el.value = 'opentiny123' // 密码
})
sendResponse(true)
break
default:
sendResponse(false)
}
})
5.2.5 加载插件到Chrome浏览器
-
打开Chrome浏览器,输入chrome://extensions/,进入扩展管理页面;
-
开启“开发者模式”(右上角);
-
点击“加载已解压的扩展程序”,选择项目根目录下的extension文件夹;
-
加载成功后,浏览器右上角会出现插件图标,点击即可打开弹窗,测试识别页面元素、自动填充表单功能。
六、效果演示与踩坑总结
6.1 效果演示
本次实战实现了三大核心功能,效果如下:
-
WebMCP通信:启动WebMCP Server后,Web应用可通过Client与Server正常通信,调用自定义方法,实现AI Agent与Web应用的连接;
-
GenUI对话界面:页面呈现完整的AI对话交互界面,输入消息后可获取AI回复,加载状态、消息样式正常;
-
AI-Extension插件:加载插件后,点击弹窗按钮可识别当前页面元素、自动填充表单,实现浏览器AI自动化。
(实际投稿时可添加截图/动图,展示上述效果,提升稿件实用性与可读性,此处因格式限制省略)
6.2 踩坑总结
在实战过程中,遇到以下常见问题,整理解决方案供参考:
-
问题1:WebMCP Server启动失败,提示“端口被占用”;
解决方案:修改webmcp-server.ts中的port参数(如改为8081),确保端口未被其他服务占用,重启服务即可。 -
问题2:GenUI组件引入后报错,提示“组件未注册”;
解决方案:确保@opentiny/gen-ui依赖安装成功,在Vue组件中正确引入TinyGenuiChat组件,或在main.ts中全局注册组件。 -
问题3:Chrome插件加载失败,提示“manifest.json格式错误”;
解决方案:检查manifest.json的语法,确保JSON格式正确,manifest_version设置为3(Chrome插件最新规范),权限配置符合要求。 -
问题4:content.js无法操作页面元素;
解决方案:检查manifest.json中content_scripts的matches配置,确保覆盖当前页面URL,同时确保脚本注入成功(可通过浏览器开发者工具的Console面板查看日志)。
七、项目地址与参考文献
7.1 官方项目地址
-
OpenTiny NEXT SDK:https://atomgit.com/opentiny/next-sdk
-
OpenTiny GenUI:https://atomgit.com/opentiny/gen-ui
-
OpenTiny AI-Extension:https://atomgit.com/opentiny/ai-extension
7.2 参考文献
-
OpenTiny NEXT 官方文档:https://opentiny.design/docs/next/intro
-
Chrome插件开发文档:https://developer.chrome.com/docs/extensions/mv3
-
WebMCP 协议规范:https://atomgit.com/opentiny/next-sdk/blob/develop/docs/webmcp.md
结语:本文基于OpenTiny NEXT SDK,实现了WebMCP、GenUI、AI-Extension的全链路实战,覆盖了前端智能化的“连接-交互-自动化”三大核心场景,提供了完整可运行的代码与详细的步骤说明,助力开发者快速上手前端智能化技术。OpenTiny NEXT作为开源解决方案,为前端开发者提供了丰富的工具与组件,降低了前端智能化的开发门槛,未来可进一步探索AI与低代码、组件库的深度融合,推动前端智能化的普及与落地。
👍 如果本文对你有帮助,欢迎点赞、收藏、转发!
💬 有任何问题或建议,请在评论区留言交流~
✍️ 行文仓促,定有不足之处,欢迎各位朋友在评论区批评指正,不胜感激!
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐

所有评论(0)