🔌 NEXT SDK 源码深度分析:让 AI 直接操控浏览器的"魔法棒"
你有没有想过,让 AI 不只是聊天助手,而是能直接帮你操作网页——帮你填表、帮你点按钮、帮你截图?NEXT SDK 就是干这个的。而且——不需要改你现有代码,零重构就能让 AI 操作你的应用。
一、这项目到底有多酷?
NEXT SDK(WebMCP SDK)是 OpenTiny 团队推出的一套前端 AI 与浏览器自动化工具包。它的核心能力:
通过 WebMCP 协议,让 AI 代理能够远程操控任意网页——哪怕你的网页没有做任何 AI 适配。
这不是 UI 组件库,不是聊天框,而是AI 与浏览器之间的协议桥梁——定义了网页如何向 AI 暴露"能力",以及 AI 如何通过标准协议调用这些能力。
当前版本 v0.3.3,MIT 许可证,78 Stars。语言构成:TypeScript 68.7% + Vue 21.4%。
二、WebMCP 协议:MCP 的浏览器版
MCP vs WebMCP
MCP(Model Context Protocol)是 Anthropic 提出的 AI 代理与外部系统交互的标准协议。NEXT SDK 把 MCP 扩展到浏览器环境,形成 WebMCP:
| 维度 | MCP(原版) | WebMCP(NEXT SDK 扩展) |
|---|---|---|
| 运行环境 | 服务端/桌面 | 浏览器网页 |
| 工具注册 | 代码中硬编码 | navigator.modelContext.registerTool |
| 通信方式 | stdio/SSE | MessageChannel/SSE/HTTP/Chrome Extension |
| 跨页面 | 不涉及 | 自动路由跨页面/iframe 消息 |
navigator.modelContext Polyfill —— 今天可用,明天兼容
NEXT SDK 最妙的创新是为浏览器注入 navigator.modelContext 对象:
import { initializeBuiltinWebMCP } from '@opentiny/next-sdk'
initializeBuiltinWebMCP()
一行代码,SDK 就做了:
- 在
navigator上注入modelContext对象 - 提供标准工具注册 API(
registerTool、registerResource) - 设置自动路由与桥接,处理跨页面/iframe 消息同步
最关键的点:当浏览器未来原生支持 navigator.modelContext 时,Polyfill 会自动切换到原生引擎。你今天写的 WebMCP 代码,明天浏览器原生支持后无缝兼容。这叫"面向未来编程"。
三、核心架构:三步工作流
┌─────────────────────────────────────────────────────────────┐
│ Web Browser │
│ ┌──────────────────┐ ┌───────────────────┐ │
│ │ Front-end App │◄── Bridge ──►│ AI Assistant │ │
│ │ (WebMCP Server) │ │ (MCP Client) │ │
│ └──────────────────┘ └───────────────────┘ │
└─────────────────────────────────────────────────────────────┘
三步走:
- 注册:前端用
navigator.modelContext.registerTool声明"我能做什么" - 桥接:Bridge 自动将 AI 请求路由到正确的页面/iframe
- 执行:工具在页面上下文中运行,可直接访问 DOM、State 和 APIs
四、源码结构拆解
webmcp-sdk/
├── packages/
│ ├── next-sdk/ # 核心 SDK 包 ⭐
│ │ ├── agent/ # WebAgent 实现
│ │ ├── page-tools/ # 页面工具
│ │ ├── remoter/ # 遥控器逻辑
│ │ ├── skills/ # WebSkills 定义
│ │ ├── transport/ # 传输层实现
│ │ ├── utils/ # 工具函数
│ │ ├── WebAgent.ts # WebAgent 核心
│ │ ├── WebMcp.ts # WebMCP 核心逻辑
│ │ ├── WebMcpClient.ts # MCP 客户端
│ │ ├── WebMcpServer.ts # MCP 服务端
│ │ ├── McpSdk.ts # MCP SDK 封装
│ │ ├── Zod.ts # Zod 验证模块
│ │ ├── core.ts # 核心公共模块
│ │ ├── index.ts # 主入口
│ │ └── vite.config.*.ts # 多模块构建配置
│ ├── next-remoter/ # Vue3 AI 聊天组件
│ ├── webmcp-cli/ # CLI 工具 ⭐
│ ├── webmcp-cli-skill/ # AI 代理技能包
│ ├── next-sdk-playground/ # Playground
│ ├── vue-playground/ # Vue 演示
│ ├── doc-ai-angular/ # Angular 示例
│ ├── doc-ai-react/ # React 示例
│ └── ...
六大核心模块逐一拆解
WebMcpServer —— 让你的页面变成 MCP 工具提供方
const server = new WebMcpServer({ name: 'my-app', version: '1.0.0' })
server.registerTool('tool-name', {
title: 'Tool Title',
description: 'Tool Description',
inputSchema: { /* Zod schema */ }
}, async (params) => {
return { content: [{ type: 'text', text: 'Result' }] }
})
你的前端应用摇身一变,成了 MCP 的"工具提供方"。AI 客户端来调用你注册的工具,你在页面里执行,结果回传给 AI。
WebMcpClient —— 让 AI 连上你的页面
const client = new WebMcpClient({ name: 'my-client', version: '1.0.0' })
const { sessionId } = await client.connect({
agent: true,
url: 'https://agent.opentiny.design/api/v1/webmcp-trial/mcp'
})
建立 SSE/HTTP 连接,获取 sessionId,AI 通过 sessionId 远程调用你页面上的工具。
WebAgent —— AI 代理的中枢调度器
AI 说"我要调用工具 X",WebAgent 把请求路由到正确的工具,执行结果回传给 AI。多轮工具调用编排——AI 可以连续调用多个工具完成复杂任务。
Transport 层 —— 多通道通信
| 传输方式 | 适用场景 |
|---|---|
| MessageChannel | 浏览器内跨窗口(iframe、跨页面) |
| SSE | AI → 前端流式响应 |
| HTTP | 同步工具调用 |
| Chrome Extension | 浏览器扩展消息传递 |
四种传输方式,覆盖所有可能的浏览器通信场景。
Skills 层 —— 把工具组织成"业务技能"
不是暴露单个工具,而是组织成技能包("订单管理技能"、"数据分析技能")。渐进式向 AI 揭示能力——先展示核心技能,按需展开细节。技能描述包含使用指南,帮 AI 正确调用——给 AI 写说明书,这想法绝了。
Zod.ts —— 参数验证
用 Zod 定义工具参数结构,自动转换为 JSON Schema 供 AI 参考,运行时验证 AI 传入参数。AI 传了错误参数?Zod 直接拦住,不会让你的代码炸掉。
五、多模块构建体系:按场景选择
next-sdk 通过不同的 vite.config.*.ts 实现模块化构建:
| 构建配置 | 输出模块 | 说明 |
|---|---|---|
vite.config.mcpSdk.ts | MCP SDK 模块 | 核心 MCP SDK 封装 |
vite.config.webAgent.ts | WebAgent 模块 | AI 代理核心逻辑 |
vite.config.webMcp.ts | WebMCP 模块 | Client + Server |
vite.config.webMcpFull.ts | WebMCP 完整版 | 全功能版本 |
vite.config.zod.ts | Zod 验证模块 | 参数校验子集 |
你只用 Client?那就只引入 Client 模块。包体积最小化,不拉全家桶。
六、webmcp-cli:AI 操控浏览器的命令行
webmcp-cli 通过 Chrome DevTools Protocol (CDP) 控制浏览器——这才是真正的"魔法棒":
# 打开网页(唯一可在未先 state 的情况下直接执行的命令)
webmcp-cli tabs open https://example.com
# 获取浏览器完整状态(URL、标题、标签页、DOM索引、可用工具)
webmcp-cli state
# 执行页面工具
webmcp-cli run page-agent-tool '{"action": "click", "index": 18}'
webmcp-cli run page-agent-tool '{"action": "fill", "index": 13, "text": "Hello"}'
webmcp-cli run page-agent-tool '{"action": "scroll", "down": true, "numPages": 1}'
page-agent-tool:AI 可操作任何网页
page-agent-tool 是 CLI 在每个页面自动注入的通用操作工具:
| Action | 说明 |
|---|---|
click | 点击指定 DOM 索引的元素 |
fill | 在指定输入框填入文本 |
scroll | 滚动页面 |
executeJavascript | 执行任意 JavaScript |
browserState | 获取浏览器状态 |
关键:AI 代理可以操作任何网页,即使该网页没有注册任何自定义 MCP 工具。 这就是"零重构"的秘密——你的页面什么都不改,AI 也能通过 page-agent-tool 的 DOM 操作来操控它。
领域专用工具:比 DOM 操作更精准
CLI 导航到特定域名时,会自动注入该域名的专用工具:
| 域名 | 注入的工具 |
|---|---|
| excalidraw.com | excalidraw_execute_command(绘图操作) |
| juejin.cn | create_article(发布文章) 👀 |
| xiaohongshu.com | xhs_search_notes、xhs_get_note_detail 等 |
专用工具直接调用页面业务 API,比 DOM 操作更精准、更可靠。 这就是为什么掘金能发文章、小红书能搜笔记——不是模拟点击,而是直接调用。
七、next-remoter:即用型 AI 远程控制面板
@opentiny/next-remoter 是基于 TinyRobot 的 Vue3 AI 聊天组件:
- AI 助手 UI(聊天界面)
- MCP 插件市场(动态发现和加载 WebSkills)
- PC 端和移动端遥控器模式
一句话:引入 next-remoter,用户就能通过聊天界面指挥 AI 操作你的页面。不需要你自己写聊天 UI。
八、零重构智能化:不改代码就能让 AI 操作你的应用
NEXT SDK 最核心的承诺:
无需改变应用核心架构,即可将现有业务逻辑和 UI 操作暴露为 MCP 工具。
三步搞定:
- 应用入口调用
initializeBuiltinWebMCP() - 用
navigator.modelContext.registerTool注册想暴露的能力 - 工具的
execute函数直接调用现有 Service/Store——已有代码不用改
一个已上线运行的 Vue/React/Angular 应用,可以在不重构的情况下让 AI 代理理解和操作它的功能。这才是真正的"AI 原生应用"——不是从零开始写,而是让 AI 能理解你已有的代码。
九、跨框架支持
| 技术栈 | 支持方式 |
|---|---|
| Vue | @opentiny/next-remoter 直接使用 |
| Angular | SDK 核心 + MessageChannel 连接 iframe Remoter |
| React | SDK 核心 + MessageChannel 连接 iframe Remoter |
| 纯 JS | SDK 核心 + 自定义 UI |
核心 SDK 框架无关,next-remoter 只是 Vue 的即用型封装。 不管你用什么框架,WebMCP 都能用。
十、在 OpenTiny 生态中的位置
| 搭档 | 关系 |
|---|---|
| TinyRobot | next-remoter 基于 TinyRobot AI 聊天组件 |
| GenUI SDK | WebMCP 能力为 GenUI 工具调用提供浏览器端通道 |
| TinyEngine | AI 代理通过 WebMCP 远程操作低代码设计器 |
| web-agent | 配套的 WebAgent 服务端(独立仓库) |
NEXT SDK 在生态中处于协议基础设施层——它不解决"AI 怎么聊天"(那是 TinyRobot/GenUI),而是解决"AI 怎么操作网页"。分层设计,各司其职。
十一、总结:AI + 浏览器的"万能钥匙"
🌟 核心创新
- WebMCP 协议 —— MCP 标准扩展到浏览器,网页向 AI 暴露能力有标准可循
- Polyfill + 原生兼容 —— 今天可用,明天浏览器原生支持自动切换
- 零重构智能化 —— 不改代码就能让 AI 操作现有应用,这能力太香了
- page-agent-tool —— AI 可操作任何网页,没有自定义工具也能用
- 领域专用工具 —— 特定网站精准操作,比 DOM 模拟更可靠
👍 优势
- 标准化协议(MCP),不造私有协议
- 多传输方式,覆盖所有浏览器通信场景
- 多框架支持,核心 SDK 不绑 Vue
- CLI + SDK 双模式,本地和远程 AI 代理都能接入
🤔 挑战
- 78 Stars,社区认知度仍在建设期
- Polyfill 是临时方案,最终需要浏览器原生支持
- 需要配套 WebAgent 服务端部署,增加运维复杂度
- CDP 控制浏览器在企业环境可能受限
🎯 适用场景
- AI 客服远程帮用户操作网页 —— 用户说"我不会填这个表",AI 直接帮你填
- 自动化测试/数据采集
- AI 代理驱动的浏览器自动化
- 为文档网站添加智能问答和操作助手
- 浏览器扩展的 AI 能力增强
📚 项目资源
| 资源 | 地址 |
|---|---|
| 🏠 GitHub 源码 | github.com/opentiny/we… |
| 📖 官方文档 | docs.opentiny.design/next-sdk/ |
| 🚀 快速入门 | docs.opentiny.design/next-sdk/gu… |
| 🔌 API 参考 | docs.opentiny.design/next-sdk/ap… |
| 🤖 TinyRobot Remoter | docs.opentiny.design/next-sdk/gu… |
| 🔗 官网首页 | opentiny.design |
这项目真的有点酷——让 AI 直接操作浏览器,不用改代码。如果你对 AI + 浏览器自动化感兴趣,一定要试试!点赞👍收藏⭐,评论区聊聊你的想法~