第一篇:理论基础篇——AI Agent与Web应用的连接困局

第一章:从大模型到智能体:理解AI Agent的本质

1.1 大模型的“能说不能做”困境

大语言模型的出现无疑是人类技术史上的里程碑。GPT系列、Claude、文心一言、通义千问等模型展现出了惊人的语言理解和生成能力。然而,当我们试图将这些模型应用于实际的Web应用开发时,一个根本性的矛盾浮出水面:

大模型是“大脑”,但缺少“手脚”。

传统的LLM只能进行文本输入和文本输出,它们被困在对话框的牢笼中。即使是最先进的模型,也无法直接操作DOM元素、无法读取用户的浏览器状态、无法与现有的前端组件库进行交互。这种“能说不能做”的困境,成为LLM从“玩具”走向“工具”的最大障碍。

在OpenTiny NEXT系列直播的第一讲中,主讲人用一个生动的比喻揭示了这一困境:

“现在的AI就像是一个被蒙住眼睛的专家,它拥有丰富的知识,却看不见你的界面,摸不到你的按钮。它只能通过文字与你交流,却无法真正帮你完成任何操作。”

这种困境在前端开发领域尤为明显。当我们希望AI能够辅助开发、自动生成界面、智能操作组件时,仅仅依靠文本对话是远远不够的。

1.2 AI Agent的概念与核心能力

AI Agent(智能体)概念的提出,正是为了解决“能说不能做”的困局。一个完整的AI Agent应当具备以下核心能力:

  1. 感知能力:能够理解当前环境的状态(用户的浏览器界面、页面结构、组件状态)

  2. 规划能力:能够将复杂任务分解为可执行的步骤序列

  3. 行动能力:能够实际执行操作(点击按钮、填写表单、导航页面)

  4. 记忆能力:能够记住历史交互和上下文信息

  5. 反思能力:能够评估行动结果并调整策略

在Web应用场景下,一个真正的AI Agent应该像一名人类用户一样,能够“看到”界面、“理解”功能、“操作”组件、“完成”任务。

1.3 智能体与Web应用之间的“鸿沟”

尽管AI Agent的概念令人兴奋,但当我们试图将其落地到Web应用时,却发现了一条难以逾越的鸿沟:

鸿沟一:感知鸿沟

Web应用的界面是动态的、可视化的,而AI只能处理文本。如何让AI“看见”界面?如何将DOM结构、样式信息、组件状态转化为AI可以理解的语言?

鸿沟二:行动鸿沟

AI无法直接操作浏览器。如何让AI能够“点击”按钮、“填写”输入框、“滚动”页面?这需要建立一套AI可以调用的操作接口。

鸿沟三:语义鸿沟

即使AI能够获取DOM树,它也无法理解每个组件的业务含义。一个<button>标签可能代表“提交”、“取消”、“删除”等完全不同的操作。如何让AI理解组件的语义?

鸿沟四:上下文鸿沟

Web应用的状态是瞬时的、有状态的。AI需要理解当前页面所处的状态、用户的操作历史、组件间的数据流动,才能做出正确的决策。

这四大鸿沟,构成了智能体与Web应用融合的核心挑战。

第二章:MCP的启示——模型上下文协议

2.1 什么是MCP

MCP(Model Context Protocol,模型上下文协议)是由Anthropic提出的一种标准化协议,旨在为AI模型提供统一的工具调用和数据访问接口。MCP的核心思想是:将AI的能力扩展从“模型内部”转移到“协议层面”,通过标准化的接口让模型能够与外部世界进行交互。

MCP定义了三个核心概念:

  • Resources(资源):AI可以读取的数据源,如文件、数据库、API返回

  • Tools(工具):AI可以调用的函数,如执行操作、发送请求

  • Prompts(提示模板):预定义的提示词模板,用于引导模型行为

MCP的出现,为AI Agent与外部世界的连接提供了一套标准化的“插座”。任何遵循MCP协议的服务器,都可以被AI Agent发现、理解和使用。

2.2 MCP在Web场景下的局限性

然而,MCP最初的设计目标并非针对Web应用。它更适用于后端场景,如文件系统、数据库、API服务等。当我们将MCP应用于前端Web场景时,它的局限性暴露无遗:

  1. 缺乏对DOM的理解:MCP的Tool定义是函数式的,无法描述Web组件的结构、属性、事件

  2. 无状态性:MCP的每次调用都是独立的,难以维护会话上下文

  3. 忽略UI语义:MCP无法表达按钮、表单、列表等UI元素的语义信息

  4. 缺少可视化感知:MCP只能处理结构化数据,无法让AI“看到”界面

这意味着,我们需要在MCP的基础上,构建一层专门针对Web场景的连接范式——这就是WebMCP诞生的背景。

第三章:WebMCP的提出——专为Web定制的连接范式

3.1 WebMCP的核心思想

WebMCP(Web Model Context Protocol)是在MCP的基础上,针对Web应用场景进行扩展和优化的连接协议。它的核心思想是:

将Web应用的组件树、状态、事件、语义等信息,以AI可理解、可操作的方式暴露出来。

WebMCP不是要取代MCP,而是MCP在Web领域的“方言”——它继承MCP的核心理念,但针对Web的特殊性进行了专门设计。

3.2 WebMCP的三层架构

在OpenTiny NEXT系列直播中,讲师详细剖析了WebMCP的三层架构:

第一层:视图层感知(View Perception)

这一层负责将Web应用的DOM树、组件树、样式信息、可视区域等转化为AI可理解的结构化描述。主要包括:

  • DOM语义化:将DOM节点映射为具有业务含义的组件描述

  • 组件树提取:对于使用组件库(如TinyVue)的应用,提取组件树结构

  • 可访问性增强:利用ARIA属性等增强语义信息

  • 可视区域描述:描述当前可见区域的布局、焦点元素等

第二层:能力暴露层(Capability Exposure)

这一层负责将Web应用的可交互元素(按钮、输入框、表单等)暴露为AI可调用的工具(Tools)。主要包括:

  • 组件动作映射:将组件的操作(点击、输入、选择)映射为Tool函数

  • 事件监听:监听组件事件,将结果反馈给AI

  • 状态同步:将组件的状态(值、禁用、可见性)同步给AI

第三层:交互执行层(Interaction Execution)

这一层负责执行AI发起的操作指令,并将执行结果反馈给AI。主要包括:

  • 动作执行器:实际执行DOM操作或组件方法调用

  • 结果反馈:将操作结果(成功/失败、返回值、新状态)返回给AI

  • 错误处理:处理操作异常,提供错误信息供AI调整策略

通过这三层架构,WebMCP成功地将一个静态的Web页面,转化为一个AI可以“感知”和“操作”的智能体环境。

3.3 WebMCP的数据格式设计

为了实现AI与Web应用的高效交互,WebMCP定义了一套专门的数据格式。以下是一个典型的WebMCP视图描述示例:

json

{
  "type": "webpage",
  "url": "https://example.com/form",
  "title": "用户注册表单",
  "components": [
    {
      "id": "name-input",
      "type": "Input",
      "label": "姓名",
      "value": "",
      "placeholder": "请输入姓名",
      "required": true,
      "actions": ["setValue", "clear", "focus"]
    },
    {
      "id": "email-input",
      "type": "Input",
      "label": "邮箱",
      "value": "",
      "placeholder": "example@domain.com",
      "required": true,
      "validation": "email",
      "actions": ["setValue", "clear", "focus"]
    },
    {
      "id": "submit-btn",
      "type": "Button",
      "label": "提交注册",
      "variant": "primary",
      "disabled": false,
      "actions": ["click"]
    }
  ],
  "layout": "vertical-form",
  "focus": "name-input"
}

这种结构化的描述,让AI能够像人类一样“理解”页面的组成、每个组件的用途、可执行的操作,以及当前的状态。


第二篇:核心范式篇——WebMCP在OpenTiny中的实践

第四章:WebSkills——能力封装的最佳实践

4.1 从工具到技能:WebSkills的设计哲学

在WebMCP的架构中,每一个可交互的组件都被暴露为一个“工具”。然而,仅仅有工具是不够的——AI需要知道“何时”使用“哪个”工具,以及如何组合使用多个工具来完成复杂任务。

这就是WebSkills(网络技能)要解决的问题。WebSkills是对WebMCP Tools的进一步封装,它将一组相关的工具组合成一个“技能”,并附带使用说明、适用场景、限制条件等元信息。

在OpenTiny NEXT的实战分享中,讲师将WebSkills比作“给AI的说明书”:

“Tools是零件,Skills是组装好的模块。当AI需要完成一个任务时,它不是在零件箱里翻找,而是直接拿起一个技能模块,按照说明书来使用。”

4.2 设计一个典型的WebSkill:表单填写技能

以“表单填写”为例,我们可以设计一个WebSkill,它包含以下内容:

  • 技能名称:FormFiller

  • 适用场景:当页面包含表单,且用户意图是填写并提交表单时

  • 依赖工具getFormFieldssetFieldValuevalidateFieldsubmitForm

  • 使用流程

    1. 调用getFormFields获取所有表单字段及其要求

    2. 根据用户输入或上下文,为每个字段生成值

    3. 逐个调用setFieldValue填充字段

    4. 调用validateField检查每个字段的有效性

    5. 如果全部有效,调用submitForm提交

    6. 返回提交结果

  • 限制条件:不支持文件上传类型的表单

通过这样的技能封装,AI无需理解每个工具的底层实现,只需按照技能描述来执行即可。这大大降低了AI执行复杂任务的认知负担。

4.3 WebSkills的注册与发现机制

为了实现WebSkills的动态注册和发现,OpenTiny设计了一套基于Manifest(清单)的机制:

json

{
  "skillName": "FormFiller",
  "version": "1.0.0",
  "description": "智能表单填写技能",
  "triggers": ["填写表单", "提交表单", "注册", "登录"],
  "requiredTools": ["getFormFields", "setFieldValue", ...],
  "examples": [
    {
      "userInput": "帮我填写这个注册表单,姓名张三,邮箱zhang@example.com",
      "executionSteps": [...]
    }
  ]
}

AI在启动时,会加载当前页面支持的所有WebSkills,并根据用户的意图匹配合适的技能。这种机制让AI能够“因地制宜”地选择能力,而不是盲目地调用工具。

第五章:WebAgent——智能体的落地形态

5.1 WebAgent的架构设计

WebAgent是运行在浏览器中的AI智能体,它集成了WebMCP协议和WebSkills能力,能够理解用户的自然语言指令,并自动执行相应的操作。

WebAgent的典型架构包含以下模块:

  1. 意图理解模块:分析用户输入,识别任务类型和关键参数

  2. 技能匹配模块:根据意图匹配合适的WebSkill

  3. 执行规划模块:将任务分解为一系列步骤

  4. 工具调用模块:通过WebMCP调用具体的组件操作

  5. 状态感知模块:持续监控页面状态,为决策提供依据

  6. 反馈生成模块:将执行结果转化为自然语言反馈给用户

5.2 WebAgent的工作流程

以一个实际场景为例:用户打开一个电商网站,对WebAgent说:“帮我筛选出价格在100-200元之间的商品,并按销量排序。”

WebAgent的工作流程如下:

步骤1:意图理解

  • 任务类型:商品筛选

  • 关键参数:价格区间[100,200]、排序方式“销量”

步骤2:技能匹配

  • 匹配到“ProductFilter”技能

步骤3:页面感知

  • 通过WebMCP获取当前页面的组件结构,发现存在“价格滑块”、“排序下拉框”、“筛选按钮”等组件

步骤4:规划执行

  • 规划序列:

    1. 将价格滑块的低值设为100,高值设为200

    2. 点击排序下拉框,选择“按销量排序”

    3. 点击“筛选”按钮

    4. 等待结果加载

步骤5:执行与反馈

  • 依次调用对应的Tool执行操作

  • 监控页面变化,确认筛选结果已更新

  • 向用户反馈:“已为您筛选出12件商品,已按销量排序”

5.3 WebAgent的状态管理与记忆

在实际运行中,WebAgent需要维护会话状态和历史记忆。OpenTiny实现了一套轻量级的状态管理机制:

  • 短期记忆:存储当前会话的交互历史、最近执行的操作、页面状态快照

  • 长期记忆:存储用户的偏好、历史任务完成情况等(通过localStorage或云端)

  • 任务记忆:对于多步骤任务,存储中间结果和已完成步骤

这种记忆机制让WebAgent能够处理复杂的多轮对话场景,而不是每次交互都从零开始。

第六章:WebMCP + WebSkills + WebAgent = 前端智能化三驾马车

通过前面的分析,我们可以看到,WebMCP、WebSkills、WebAgent三者构成了前端智能化的完整技术栈:

  • WebMCP:提供了AI与Web应用之间的“通信协议”和“数据格式”

  • WebSkills:提供了能力封装和“使用说明书”

  • WebAgent:提供了智能体的“大脑”和“执行器”

这三者相辅相成,缺一不可。没有WebMCP,AI无法感知和操作页面;没有WebSkills,AI不知道如何组合工具完成任务;没有WebAgent,整个体系缺少执行和决策的中心。

在OpenTiny NEXT系列直播中,讲师用一个形象的比喻总结了三者的关系:

“WebMCP是神经系统,WebSkills是肌肉记忆,WebAgent是大脑。神经系统传递信号,肌肉记忆提供动作模式,大脑做出决策。”


第三篇:交互革命篇——生成式UI重构对话交互

第七章:GenUI的概念与演进

7.1 从GUI到CUI再到GenUI

人机交互的演进,大致经历了三个阶段:

GUI(图形用户界面):用户通过鼠标、键盘操作界面元素,界面是静态的、预定义的。

CUI(对话式用户界面):用户通过自然语言与系统交互,系统以文本或语音回复。ChatGPT、Siri等都是CUI的典型代表。

GenUI(生成式用户界面):在对话的基础上,系统能够动态生成UI组件,提供比纯文本更丰富、更直观的交互方式。

GenUI的核心思想是:让AI成为UI的生成器,根据对话上下文和用户意图,实时生成最适合当前任务的界面。

7.2 GenUI的三种生成模式

在OpenTiny的GenUI实践中,总结了三种主要的生成模式:

模式一:内联组件生成

在对话流中动态插入UI组件,如按钮、表单、卡片等。例如:

用户:“我想预订明天上午10点的会议室。”
AI:(生成一个会议室预订表单组件,内嵌在对话中)
用户:(填写并提交表单)

这种模式下,UI是对话的延伸,用户无需跳出对话即可完成操作。

模式二:全屏界面生成

当任务复杂度较高时,AI可以生成一个完整的界面(如仪表盘、编辑器、配置面板)。例如:

用户:“帮我创建一个数据分析仪表盘,展示销售数据。”
AI:(生成一个包含图表、筛选器、表格的完整界面)
用户:(在界面中进行深度操作)

这种模式下,AI承担了部分前端开发的工作,将用户的意图直接转化为可交互的应用。

模式三:混合模式

结合内联和全屏两种模式,根据任务的不同阶段动态切换。例如,先通过内联组件收集关键信息,然后生成全屏界面进行深度操作。

7.3 GenUI的技术实现

实现GenUI需要解决三个核心问题:

  1. 组件库的AI可理解性:AI需要知道有哪些组件可用、每个组件的属性和事件、组件的使用场景。这正是TinyVue Skill要解决的问题。

  2. 布局的智能生成:AI需要根据用户意图,决定如何布局组件。这需要结合设计系统(如TinyTheme)和布局算法。

  3. 状态的动态绑定:生成的UI需要与AI的后台逻辑进行状态同步。例如,用户点击按钮后,AI需要感知并响应。

第八章:GenUI实战案例——智能表单生成器

8.1 案例背景

假设用户说:“我需要一个员工信息收集表单,包含姓名、部门、入职日期、照片上传,部门要下拉选择。”

传统的做法是:开发人员手动编写表单代码,或者使用低代码平台拖拽生成。而在GenUI的场景下,AI可以自动生成这个表单。

8.2 AI的处理流程

第一步:意图解析

AI识别出:

  • 任务类型:生成表单

  • 字段列表:姓名(文本)、部门(选择)、入职日期(日期)、照片上传(文件)

  • 特殊要求:部门字段需要下拉选择

第二步:组件选择

AI根据TinyVue组件库的知识,选择合适的组件:

  • 姓名:<Input> 组件

  • 部门:<Select> 组件,选项从用户上下文或API获取

  • 入职日期:<DatePicker> 组件

  • 照片上传:<Upload> 组件

第三步:布局生成

AI根据设计规范,生成合理的布局(通常是垂直表单布局),并添加提交按钮。

第四步:代码生成与渲染

AI生成Vue组件代码,并在对话中动态渲染。

生成的代码可能如下:

vue

<template>
  <Form :model="formData" :rules="rules" ref="formRef">
    <FormItem label="姓名" prop="name">
      <Input v-model="formData.name" placeholder="请输入姓名" />
    </FormItem>
    <FormItem label="部门" prop="department">
      <Select v-model="formData.department" :options="departmentOptions" />
    </FormItem>
    <FormItem label="入职日期" prop="hireDate">
      <DatePicker v-model="formData.hireDate" />
    </FormItem>
    <FormItem label="照片" prop="photo">
      <Upload action="/api/upload" v-model="formData.photo" />
    </FormItem>
    <Button type="primary" @click="submit">提交</Button>
  </Form>
</template>

<script setup>
import { ref } from 'vue'
import { Form, FormItem, Input, Select, DatePicker, Upload, Button } from '@opentiny/vue'

const formData = ref({
  name: '',
  department: '',
  hireDate: '',
  photo: ''
})

const departmentOptions = ref([
  { label: '技术部', value: 'tech' },
  { label: '市场部', value: 'marketing' },
  { label: '销售部', value: 'sales' }
])

const rules = {
  name: [{ required: true, message: '请输入姓名' }],
  department: [{ required: true, message: '请选择部门' }]
}

const submit = () => {
  // 提交逻辑
}
</script>

第五步:交互增强

AI还可以为表单添加智能提示、实时校验、自动填充等功能,进一步提升用户体验。

8.3 GenUI的优势与挑战

优势:

  • 零代码:用户无需编程即可获得定制化界面

  • 动态适配:根据对话上下文实时调整UI

  • 一致性:生成的UI符合设计规范

挑战:

  • 精确性:AI生成的UI能否完全符合用户预期?

  • 可控性:用户如何修改AI生成的UI?

  • 性能:动态生成UI对性能的影响如何?


第四篇:扩展能力篇——AI-Extension让AI真的“看得到、动得了”

第九章:浏览器扩展的智能化

9.1 AI-Extension的设计目标

AI-Extension是OpenTiny推出的浏览器扩展解决方案,它旨在将AI的能力注入到任意Web页面中,让AI能够“看到”任何网站的界面,“操作”任何网站的组件。

传统的AI对话工具(如ChatGPT)只能处理文本输入输出,无法与用户当前浏览的页面进行交互。而AI-Extension通过浏览器扩展的API,实现了与页面的深度集成。

9.2 AI-Extension的核心功能

功能一:页面感知

AI-Extension能够获取当前页面的DOM结构、截图、用户选中的文本等,并将这些信息传递给AI。这让AI能够“看到”用户正在浏览的内容。

功能二:操作执行

AI-Extension能够模拟用户操作,如点击、输入、滚动、导航等。这让AI能够“动得了”页面元素。

功能三:数据提取

AI-Extension能够从页面中提取结构化数据,如表格内容、商品信息、新闻列表等,并导出为JSON、CSV等格式。

功能四:自动化任务

AI-Extension支持用户创建自动化任务,如“每天早上8点登录公司系统,下载昨天的销售报表”,让AI成为用户的“数字助理”。

9.3 AI-Extension的架构

AI-Extension采用三层架构:

  • Content Script:注入到页面中,负责与DOM交互、监听页面事件

  • Background Script:运行在扩展的后台,负责管理状态、与AI服务通信

  • Popup UI:提供用户界面,展示AI的思考过程、执行记录等

这种架构保证了AI能力与页面的安全隔离,同时提供了高效的通信机制。

9.4 实战案例:智能表单填写助手

一个典型的AI-Extension应用场景是:当用户在网上填写表单时,AI自动识别表单字段,并根据用户的历史信息或上下文自动填充。

例如,用户在注册一个新网站时,AI-Extension会自动:

  1. 识别出“姓名”、“邮箱”、“手机号”等字段

  2. 从用户存储的档案中取出对应信息

  3. 自动填写到表单中

  4. 如果用户同意,还可自动提交

这种体验极大地提升了用户填写表单的效率。


第五篇:实战落地篇——TinyRobot与AI对话组件库

第十章:TinyRobot的设计与实现

10.1 TinyRobot是什么

TinyRobot是OpenTiny推出的一套AI对话组件库,它提供了一系列开箱即用的Vue组件,帮助开发者快速构建具有AI能力的对话界面。

TinyRobot的核心组件包括:

  • ChatContainer:对话容器,管理消息列表

  • MessageBubble:消息气泡,支持文本、Markdown、组件等多种内容类型

  • InputArea:输入区域,支持文本输入、语音输入、文件上传

  • ThinkingIndicator:思考指示器,展示AI的思考过程

  • ActionButton:操作按钮,支持快捷操作建议

10.2 TinyRobot与WebAgent的集成

TinyRobot不仅是一个UI组件库,它还内置了与WebAgent的集成能力。开发者只需简单配置,即可让TinyRobot的对话界面连接到WebAgent后端,实现真正的智能对话。

集成流程如下:

  1. 初始化:创建TinyRobot实例,配置WebAgent的API地址

  2. 用户输入:用户输入消息,TinyRobot调用WebAgent的接口

  3. WebAgent处理:WebAgent理解意图、规划执行、调用WebMCP操作页面

  4. 结果返回:WebAgent将执行结果返回给TinyRobot

  5. 界面更新:TinyRobot将结果渲染为消息气泡,并展示给用户

10.3 TinyRobot的应用场景

场景一:智能客服

在电商网站中嵌入TinyRobot,用户可以通过自然语言咨询商品、下单、查询订单等。WebAgent可以自动操作页面完成用户请求。

场景二:开发辅助

在低代码平台或IDE中嵌入TinyRobot,开发者可以通过对话生成页面、修改配置、调试代码。WebAgent可以自动操作编辑器完成开发任务。

场景三:办公自动化

在OA系统中嵌入TinyRobot,员工可以通过对话发起审批、预订会议室、查询日程。WebAgent可以自动操作办公系统完成流程。

第十一章:TinyRobot实战案例——智能客服机器人

11.1 需求分析

假设我们需要为一个电商网站开发一个智能客服机器人,支持以下功能:

  • 商品咨询:用户询问商品信息,机器人展示商品卡片

  • 下单:用户表达购买意愿,机器人引导完成下单

  • 订单查询:用户查询订单状态,机器人展示订单详情

  • 退换货:用户申请退换货,机器人发起流程

11.2 技术选型
  • 前端框架:Vue 3 + TinyRobot组件库

  • 后端:WebAgent服务 + WebMCP桥接

  • 页面操作:AI-Extension(在浏览器端)

11.3 实现步骤

步骤1:集成TinyRobot

在Vue项目中安装TinyRobot,并引入组件:

vue

<template>
  <ChatContainer
    :messages="messages"
    :onSend="handleSend"
    :thinking="thinking"
  />
</template>

<script setup>
import { ref } from 'vue'
import { ChatContainer } from '@opentiny/robot'

const messages = ref([])
const thinking = ref(false)

const handleSend = async (text) => {
  thinking.value = true
  const response = await fetch('/api/agent', {
    method: 'POST',
    body: JSON.stringify({ message: text })
  })
  const data = await response.json()
  messages.value.push({ role: 'assistant', content: data.reply })
  thinking.value = false
}
</script>

步骤2:实现WebAgent逻辑

WebAgent需要处理不同类型的用户意图:

javascript

// 意图识别
const intent = await classifyIntent(userMessage)

switch(intent.type) {
  case 'product_inquiry':
    // 搜索商品
    const products = await searchProducts(intent.keywords)
    // 生成商品卡片
    return generateProductCards(products)
  case 'place_order':
    // 调用WebMCP操作购物车
    await webMCP.click('#add-to-cart')
    await webMCP.click('#checkout')
    return '已将商品加入购物车,请确认订单信息。'
  case 'order_query':
    // 获取订单列表
    const orders = await fetchOrders(intent.orderId)
    return generateOrderDetails(orders)
  // ... 其他意图
}

步骤3:集成AI-Extension(可选)

如果希望机器人能够直接操作页面,可以在浏览器中安装AI-Extension,并通过postMessage与页面通信。

步骤4:部署与测试

完成开发后,部署到生产环境,并进行充分的测试,确保机器人能够准确理解用户意图并正确执行操作。

11.4 优化与迭代

上线后,根据用户反馈持续优化:

  • 收集未处理的意图,扩充意图分类模型

  • 优化商品卡片的展示效果

  • 增加更多快捷操作按钮,提升交互效率


第六篇:协议实践篇——深入MCP开发

第十二章:MCP协议详解

12.1 MCP的消息格式

MCP基于JSON-RPC 2.0,定义了客户端和服务器之间的消息格式。主要有三种消息类型:

  • 请求(Request):客户端向服务器发送请求,需要响应

  • 响应(Response):服务器对请求的响应

  • 通知(Notification):单向消息,无需响应

一个典型的工具调用请求:

json

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "search_products",
    "arguments": {
      "keyword": "laptop",
      "limit": 10
    }
  }
}

对应的响应:

json

{
  "jsonrpc": "2.0",
  "id": 1,
  "result": {
    "content": [
      {
        "type": "text",
        "text": "找到以下商品:..."
      }
    ]
  }
}
12.2 MCP服务器的开发

开发一个MCP服务器,需要实现以下核心能力:

  1. 工具列表:返回服务器提供的所有工具及其描述

  2. 工具调用:执行具体的工具逻辑

  3. 资源列表:返回可访问的资源

  4. 资源读取:返回资源内容

以下是一个简单的MCP服务器示例(Node.js):

javascript

import { Server } from '@modelcontextprotocol/sdk/server/index.js'
import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js'

const server = new Server({
  name: 'example-mcp-server',
  version: '1.0.0'
}, {
  capabilities: {
    tools: {}
  }
})

// 注册工具列表
server.setRequestHandler('tools/list', async () => ({
  tools: [
    {
      name: 'greet',
      description: '打招呼',
      inputSchema: {
        type: 'object',
        properties: {
          name: { type: 'string' }
        },
        required: ['name']
      }
    }
  ]
}))

// 处理工具调用
server.setRequestHandler('tools/call', async (request) => {
  const { name, arguments: args } = request.params
  if (name === 'greet') {
    return {
      content: [{ type: 'text', text: `Hello, ${args.name}!` }]
    }
  }
  throw new Error(`Unknown tool: ${name}`)
})

// 启动服务器
const transport = new StdioServerTransport()
await server.connect(transport)
12.3 MCP在OpenTiny中的实践

OpenTiny将MCP协议应用于多个场景:

  • TinyVue组件库的MCP服务器:提供组件文档、示例代码、属性说明等资源

  • TinyEngine的MCP集成:允许AI通过MCP调用低代码平台的API,进行页面创建、组件拖拽、属性配置等操作

  • TinyRobot的MCP客户端:内置MCP客户端,可以与任何MCP服务器通信,扩展AI的能力


第七篇:组件智能化篇——TinyVue Skill让AI真正懂组件库

第十三章:组件库的AI可理解性

13.1 为什么需要组件库的AI理解

在前端智能化的大背景下,组件库不再只是给人类开发者使用的工具,它也需要被AI“理解”。当AI需要生成UI、操作页面、回答组件相关问题时,它必须知道:

  • 有哪些组件可用?

  • 每个组件的用途是什么?

  • 组件的属性有哪些,分别有什么作用?

  • 组件的事件如何触发?

  • 组件的使用场景和最佳实践是什么?

传统的组件文档是为人类设计的,以自然语言和代码示例为主,AI难以直接利用。我们需要一种结构化的、机器可读的组件描述方式。

13.2 TinyVue Skill的设计

TinyVue Skill是一个专门为TinyVue组件库设计的MCP技能,它将整个组件库的知识转化为AI可以理解和使用的能力。

TinyVue Skill包含以下内容:

  • 组件目录:所有组件的列表,包括名称、分类、简要描述

  • 组件详情:每个组件的详细说明,包括属性、事件、插槽、方法、示例

  • 设计规范:颜色、字体、间距、阴影等设计token

  • 使用指南:常见使用场景、组合方式、注意事项

  • 代码生成模板:用于AI生成代码的模板

所有这些信息以结构化的JSON格式存储,并暴露为MCP的资源和工具。

13.3 TinyVue Skill的实践效果

通过TinyVue Skill,AI能够:

  1. 智能推荐组件:根据用户需求,推荐最合适的组件

  2. 生成组件代码:根据用户描述,生成符合TinyVue规范的代码

  3. 解答组件问题:回答关于组件使用的各种问题

  4. 自动配置组件:根据设计稿或需求,自动设置组件的属性和样式

例如,当用户说“我想要一个带搜索功能的下拉选择框”时,AI可以通过TinyVue Skill了解到,TinyVue的Select组件支持filterable属性,从而生成正确的代码。

第十四章:TinyVue Skill的实现细节

14.1 组件元数据的提取

首先,需要从TinyVue的源码中提取组件的元数据。这可以通过静态分析实现:

javascript

// 提取组件的props
const props = extractProps(componentFile)
// 提取events
const events = extractEvents(componentFile)
// 提取slots
const slots = extractSlots(componentFile)
// 提取methods
const methods = extractMethods(componentFile)

然后,将这些元数据转换为标准格式:

json

{
  "name": "Button",
  "category": "通用",
  "description": "按钮用于开始一个即时操作",
  "props": [
    {
      "name": "type",
      "type": "string",
      "default": "default",
      "options": ["primary", "success", "warning", "danger", "info"],
      "description": "按钮类型"
    },
    {
      "name": "size",
      "type": "string",
      "default": "medium",
      "options": ["large", "medium", "small", "mini"],
      "description": "按钮尺寸"
    }
  ],
  "events": [
    {
      "name": "click",
      "description": "点击按钮时触发",
      "params": ["event"]
    }
  ],
  "slots": [
    {
      "name": "default",
      "description": "按钮内容"
    }
  ]
}
14.2 示例代码的生成

为了让AI更好地理解如何使用组件,还需要提供丰富的示例代码。这些示例可以来自组件库的文档、demo,也可以自动生成。

例如,对于Button组件,可以提供:

javascript

// 基础用法
<Button type="primary">主要按钮</Button>

// 不同尺寸
<Button size="large">大按钮</Button>
<Button size="medium">中按钮</Button>
<Button size="small">小按钮</Button>

// 禁用状态
<Button disabled>禁用按钮</Button>

// 加载状态
<Button loading>加载中</Button>
14.3 AI的提示工程

为了让AI更好地利用TinyVue Skill,需要设计合适的提示词模板。例如,当AI需要生成组件代码时,可以使用以下提示:

text

你是一个前端开发专家,使用TinyVue组件库进行开发。
请根据用户需求,生成符合TinyVue规范的Vue代码。

可用的组件及其属性如下:
{{componentMetadata}}

用户需求:{{userRequirement}}

通过这种方式,AI能够准确地生成代码。


第八篇:平台融合篇——TinyEngine低代码与AI的深度融合

第十五章:低代码平台与AI的天然契合

15.1 低代码平台的现状与挑战

低代码平台通过可视化拖拽的方式,让开发者能够快速构建应用。然而,传统低代码平台存在一些痛点:

  • 学习成本:用户需要学习平台的操作方式、组件使用等

  • 灵活性不足:拖拽操作对于复杂的布局和逻辑往往力不从心

  • 效率瓶颈:即使是简单的修改,也需要手动操作

AI的引入,为低代码平台带来了新的可能性。

15.2 TinyEngine的AI融合战略

TinyEngine是OpenTiny推出的低代码平台,它从设计之初就将AI作为核心能力进行融合。TinyEngine的AI融合体现在三个层面:

层面一:AI辅助开发

  • 自然语言生成页面:用户通过自然语言描述页面需求,AI自动生成页面结构和组件配置

  • 智能布局推荐:AI根据内容类型和设计规范,推荐最合适的布局

  • 组件智能配置:AI根据业务语义,自动配置组件的属性和数据绑定

层面二:AI驱动交互

  • 对话式构建:用户可以通过对话与TinyEngine交互,如“把标题改成红色”、“添加一个表格,显示用户数据”

  • 智能问答:用户可以随时询问平台的使用方法、组件的属性含义等

  • 实时预览与反馈:AI对用户的操作提供实时建议和反馈

层面三:AI赋能运行时

  • 智能表单:根据数据模型自动生成表单,并支持智能校验

  • 智能报表:根据用户意图动态生成图表和报表

  • 智能工作流:根据业务规则自动推荐工作流节点

第十六章:TinyEngine的AI实战案例

16.1 案例一:自然语言生成页面

用户打开TinyEngine,输入:“创建一个员工信息管理页面,包含员工列表、搜索框、新增员工按钮。列表显示姓名、部门、职位、操作按钮。”

AI的处理流程:

  1. 意图解析:识别出页面包含员工列表、搜索框、新增按钮

  2. 数据模型推断:推断出员工信息的数据结构(姓名、部门、职位)

  3. 组件选择:选择Table组件作为列表,Input组件作为搜索框,Button作为新增按钮

  4. 布局生成:将搜索框放在顶部,表格居中,按钮放在表格上方或表格内

  5. 代码生成:生成页面配置(JSON Schema),TinyEngine渲染引擎将其转换为实际页面

最终,用户得到一个功能完整的管理页面,无需任何拖拽操作。

16.2 案例二:对话式修改页面

用户已经构建了一个页面,然后通过对话进行修改:

用户:“把表格的列宽调整一下,姓名列宽200,部门150,职位150。”
AI:解析后,修改表格列的宽度配置。

用户:“搜索框增加一个搜索按钮,放在输入框右边。”
AI:在搜索框旁边添加一个按钮,并绑定搜索事件。

这种对话式修改,让页面的调整变得更加直观和高效。

16.3 案例三:智能数据绑定

用户创建了一个图表组件,AI自动提示:“我检测到页面中有‘销售数据’表格,是否需要将图表绑定到该表格的数据源?”用户确认后,AI自动完成数据绑定。

这种智能感知能力,大大减少了用户的配置工作量。

第十七章:TinyEngine的AI架构

TinyEngine的AI架构主要包含以下模块:

  • 意图理解引擎:基于大模型,理解用户的自然语言输入

  • 页面生成器:根据意图生成页面配置(JSON Schema)

  • 修改处理器:处理用户的修改请求,更新页面配置

  • 智能推荐引擎:基于页面上下文,提供智能推荐

  • 反馈学习模块:收集用户反馈,持续优化AI模型

所有AI能力都通过MCP协议暴露,使得TinyEngine的AI能力可以被其他应用复用。


第九篇:开源实践篇——从学习者到贡献者的蜕变

第十八章:OpenTiny开源社区介绍

OpenTiny是华为云开源的前端生态,包含TinyVue组件库、TinyEngine低代码平台、TinyPro后台模板、TinyCLI命令行工具等多个项目。OpenTiny的目标是打造一个“轻量、易用、高性能”的前端解决方案。

OpenTiny的开源社区非常活跃,有大量的开发者和企业用户参与贡献。我本人也是通过OpenTiny NEXT系列直播了解到这个社区,并逐步从学习者成长为贡献者。

第十九章:参与开源的心路历程

19.1 初识OpenTiny

最初接触OpenTiny,是因为在工作中需要选择一个企业级组件库。经过对比,TinyVue的轻量级和易用性吸引了我的注意。在使用的过程中,我发现了OpenTiny NEXT系列直播,便开始了系统的学习。

19.2 从学习到贡献

在学习的过程中,我逐渐发现了一些文档中的不足、示例中的bug,以及一些可以优化的地方。起初,我只是在GitHub上提issue,后来在社区成员的鼓励下,我开始尝试提交PR。

第一次提交PR的过程是紧张的,担心自己的代码不符合规范、担心被拒绝。但社区成员非常友好,他们耐心地review我的代码,指出问题,并指导我改进。最终,我的第一个PR被合并了,那种成就感是无与伦比的。

19.3 深度参与

随着时间的推移,我参与了越来越多的贡献:

  • 修复了TinyVue的多个bug

  • 为TinyEngine贡献了AI辅助开发的功能

  • 编写了WebMCP相关的中文文档

  • 在社区中帮助新手解答问题

这些经历让我对前端智能化的理解更加深入,也让我感受到了开源的魅力——一群人为了共同的目标,不计回报地付出,推动技术的进步。

第二十章:开源实践中的技术感悟

20.1 关于WebMCP的思考

在参与WebMCP的开发过程中,我深刻体会到“标准化”的重要性。如果没有一个统一的协议,每个AI应用都要重复造轮子,这不仅浪费资源,也不利于生态的发展。WebMCP的价值在于,它为前端智能化提供了一个共同的语言。

20.2 关于AI与前端融合的感悟

前端智能化的核心不是让AI替代前端开发者,而是让AI成为前端开发者的“超级助手”。AI可以处理重复性、机械性的工作,让开发者专注于创造性、业务性的工作。在TinyEngine的AI辅助开发实践中,我看到了这种“人机协作”的巨大潜力。

20.3 关于开源社区的感悟

开源社区是一个“赠人玫瑰,手有余香”的地方。你帮助别人解决问题,自己也会从中学习和成长。在OpenTiny社区,我不仅学到了技术,还结识了一群志同道合的朋友。这种社区氛围,是开源最宝贵的财富。


第十篇:未来展望篇——前端智能化的星辰大海

第二十一章:技术趋势预测

21.1 WebMCP将成为Web智能化的基础设施

随着AI应用的普及,WebMCP有望成为Web浏览器的标准能力。未来,浏览器可能会内置WebMCP的支持,让任何网站都可以被AI感知和操作。这将开启一个全新的“AI原生”Web时代。

21.2 组件库的AI标准化

未来,组件库不仅要提供UI组件,还要提供结构化的AI元数据。可能会诞生类似“AI组件描述语言”的标准,让AI能够统一理解不同组件库的组件。

21.3 低代码平台与AI的深度融合

低代码平台将不再是“拖拽工具”,而是“对话式应用构建平台”。用户通过自然语言即可构建复杂应用,低代码平台则负责将意图转化为实现。

21.4 AI Agent的普及

AI Agent将像浏览器一样成为每个用户的标配。用户可以雇佣多个AI Agent,分别处理不同领域的工作,Agent之间还可以相互协作。

第二十二章:挑战与应对

22.1 安全性挑战

当AI能够操作Web页面时,安全性成为首要问题。如何防止AI执行恶意操作?如何确保用户的隐私不被泄露?这需要从协议层面、权限管理层面、审计层面共同解决。

22.2 可靠性挑战

AI的操作并不总是正确的。当AI执行了错误的操作,如何快速恢复?如何让用户能够干预和纠正AI的行为?这需要设计良好的用户交互机制。

22.3 性能挑战

AI的推理和执行需要时间,如何在保证响应速度的同时提供智能体验?这需要优化AI模型、采用缓存策略、预加载等。

22.4 标准化挑战

目前,WebMCP、MCP等都处于早期阶段,标准尚未统一。如何推动这些标准的演进和普及,需要整个社区的努力。


结语:连接智能,创造未来

从AI Agent到WebMCP,从WebSkills到WebAgent,从GenUI到TinyVue Skill,从TinyEngine到AI-Extension——我们见证了前端智能化的蓬勃发展,也亲身参与了这场技术变革。

回望过去几个月的学习与实践,我深深感受到:技术的进步不仅仅是代码的堆砌,更是人类智慧的延伸。当我们让AI“看得到”界面、“动得了”组件,我们实际上是在创造一种全新的人机交互方式——一种更加自然、更加高效、更加智能的方式。

未来的Web,将不再是静态的文档,而是动态的、智能的、可交互的“数字生命体”。每一个页面都可以被AI理解,每一个组件都可以被AI操作,每一个用户都可以通过自然语言完成复杂的任务。

Logo

欢迎加入 MCP 技术社区!与志同道合者携手前行,一同解锁 MCP 技术的无限可能!

更多推荐