当前位置: 首页 > article >正文

WebAgent :基于 MCP 协议打造的智能应用“超级路由器”

本文由云软件体验技术团队李锦浩原创。在 NextSDK 介绍文章里我们聊了怎么用opentiny/next-sdk给前端页面快速接入智能化能力——几行代码嵌进去用户扫个二维码手机上就能弹出一个 Remoter 对话窗口直接用自然语言远程操控网页上的功能。效果是挺酷的但不知道你有没有好奇过这个对话窗口到底是怎么跨设备、跨网络把 AI 的指令传到网页上去执行的答案就是WebAgent。你手机上弹出的 Remoter 对话窗口和网页之间其实并没有直连——中间隔着企业网络、防火墙直连根本不现实。WebAgent 就是站在中间的那个“MCP 转发中枢”网页端通过opentiny/next-sdk把自己的业务能力封装成 MCP 工具注册到 WebAgent 上Remoter 端连上 WebAgent 后就能拿到这些工具的列表再结合大模型做意图理解和决策。大模型决定调用哪个工具后调用指令通过MCPModel Context Protocol协议发给 WebAgentWebAgent 把它原样转发到对应的网页端去执行再把结果送回来。简单说WebAgent 就在 Remoter 和网页之间可靠地转发 MCP 消息。WebAgent 是什么简单说WebAgent是一个MCP 协议的代理中转服务现已在 GitHub 正式开源opentiny/web-agent。还记得上一篇提到的场景吗网页端用opentiny/next-sdk把业务能力注册成 MCP 工具手机上的 Remoter 对话窗口连上大模型来调用这些工具。但问题是——网页藏在企业内网里手机在外网两边根本连不上。WebAgent 做的事情就是站在中间帮它们传话。具体点说WebAgent 的代理中转机制核心实现在opentiny/agent的useProxyHandles()维护了两个连接池——一边管着所有的Client被控端一边管着所有的Remoter遥控端。整个过程是这样的Client 连上来注册工具网页端或任何业务系统通过opentiny/next-sdk的WebMcpClient建立 MCP 连接WebAgent 负责接收并保管它暴露的所有 MCP 工具。Remoter 连上来拿到工具列表遥控端比如 Remoter 对话窗口、Cursor、Dify 这样的 AI 应用通过 MCP 协议连接到 WebAgent指定要操控哪个 Client。WebAgent 会启动一个代理 MCP Server把目标 Client 的工具列表原样透传给 Remoter。调用指令双向转发当 Remoter 端的大模型决定调用某个工具时指令不会直接发到网页——而是先发给 WebAgent, WebAgent 再把调用请求转发给对应 ClientClient 执行完再把结果沿原路返回。换句话说WebAgent 就像一个MCP 协议层面的双向快递站Client 往这儿发工具清单Remoter 往这儿发调用指令WebAgent 负责认准地址、原样投递两边全程不需要知道对方在哪。先看一下架构图有个全局印象对照架构图核心角色的分工非常清晰左侧 — 受控端Client网页应用、桌面应用、移动应用通过 OpenTiny NEXT SDKs 连接到 WebAgent把自己的业务能力注册为 MCP 工具。中间 — Web Agent Server代理中枢负责维护两端的会话连接做 MCP 消息的双向转发——工具列表、调用请求、执行结果全部经它中转。右侧 — 遥控端RemoterAgent Workflow如 n8n、Dify、IDE Copilot如 Cursor、VSCode、聊天对话框等 AI 应用作为 MCP Client 连入 WebAgent获取并调用远端业务工具。上方 — 用户通过自然语言与 AI 应用交互AI 理解意图后自动转化为 MCP 工具调用。深度阅读如需了解更完整的生态与逆向设计思考推荐阅读《一场 MCP 生态的变革——详解 OpenTiny NEXT 逆向思维的技术创新》。核心亮点1. 三端分离【遥控-被控】代理架构前面提到 WebAgent 维护了两个连接池——一边是所有的 Client被控端一边是所有的 Remoter遥控端。当 Remoter 连上来时WebAgent 会自动帮它和指定的 Client 之间搭一条消息通道Remoter 想调什么工具WebAgent 原样转给 Client 去执行执行完了结果再原样送回来。这套设计的好处很直接Remoter 和 Client 之间完全不需要知道对方在哪。Client 在企业内网Remoter 在手机上没关系只要它们各自能连上 WebAgent 就行。大模型负责想Client 负责干WebAgent 负责在中间递纸条——三个角色各管各的互不耦合。2. 标准 MCP 协议开箱即用WebAgent 没有另起炉灶造私有协议——它从头到尾走的都是 MCP 标准完整覆盖了工具调用、资源读取、提示词管理等所有 MCP 规范定义的能力。这意味着你不需要为了接入 WebAgent 学任何新东西。Cursor、Dify、n8n、MCP Inspector……任何支持 MCP 协议的工具直接连上来就能用。业务端也一样用 SDK 把自己的功能注册成 MCP 工具就行协议握手、会话管理这些事 WebAgent 全包了。3. 两种传输方式不挑网络环境实际部署中网络环境千差万别WebAgent 因此同时支持了两种传输方式Streamable HTTP标准的 HTTP 请求响应适合防火墙严格、不允许长连接的环境。SSE 长连接服务端主动推送消息适合需要实时响应的场景。两种方式对上层完全透明——不管用哪种接入中间的转发逻辑都是同一套。部署到 Nginx 后面加一行配置就能穿透。Serverless 环境用 Streamable HTTP 模式就行。甚至可以直接拿 MCP Inspector 连上来联调不需要任何额外配置。5 分钟快速上手将 WebAgent 运行在本地只需几条命令即可启动服务。唯一的前提要求是你的本地运行环境包含 Node.js22及其配套工具链# 1. 获取项目代码gitclone https://github.com/opentiny/web-agent.gitcdweb-agent# 2. 安装项目依赖请使用 pnpm 管理器pnpminstall# 3. 启动开发模式支持热重载pnpmdev生产部署用pnpm build pnpm start也可以挂 PM2 跑守护进程。服务跑起来之后我们用一个最典型的场景把整个流程走一遍假设你有一个网页应用你想让 AI 能远程调用它上面的功能。整个过程分三步——接入、确认、调用。第一步把你的网页应用接入 WebAgent在你的前端项目里用 SDK 几行代码就能把业务功能注册到 WebAgent 上// 业务前端/微服务作为 Client 接入NextSDK 将自动处理底层的双向连接 import { WebMcpClient } from opentiny/next-sdk; // 创建连接把你的应用挂到 WebAgent 上 const client new WebMcpClient({ name: my-app-client, version: 1.0.0 }); const { sessionId } await client.connect({ agent: true, url: http://localhost:3000/api/v1/webmcp/mcp, sessionId: my-client-001, // 给你的应用起个名字 }); console.log( Client 已挂载到WebAgentSession ID:, sessionId);第二步确认被控端已上线应用接入之后可以用 curl 看一眼——你的应用是不是已经在线了# 看看当前有哪些被控端Client连着 curl http://localhost:3000/api/v1/webmcp/list如果返回结果里能看到my-client-001说明你的应用已经成功挂载到 WebAgent 上了。第三步用 AI 远程调用你的应用确认连接没问题后就可以从另一端遥控端接入大模型让 AI 来调你的应用了import { AgentModelProvider } from opentiny/next-sdk; const webAgent new AgentModelProvider({ llmConfig: { apiKey: your-llm-api-key, baseURL: https://api.deepseek.com/v1, // 换成你的大模型地址 providerType: deepseek, }, mcpServers: { // 指向第一步接入的那个应用 my-mcp-server: { type: streamableHttp, url: http://localhost:3000/api/v1/webmcp/mcp?sessionIdmy-client-001, }, }, }); // 大模型现在能看到 my-client-001 暴露的所有工具直接用自然语言调用 const result await webAgent.chat({ model: deepseek-ai/DeepSeek-V3, messages: [ { role: system, content: 你是一个智能助手可以通过工具操作业务系统。 }, { role: user, content: 帮我查一下 ID 为 1001 的业务数据 }, ], }); console.log( 执行结果:, result.text);遥控端连接成功后你也可以用 curl 确认它已经在线# 看看有哪些遥控端Remoter在线 curl http://localhost:3000/api/v1/webmcp/remoter典型落地场景上面跑通的是最基础的链路。实际业务里WebAgent opentiny/next-sdk能玩出不少花样这里举三个比较典型的方向1. 跨系统自动办事——拿出差申请举个例子出过差的人都知道这个流程有多烦先登 OA 看差旅政策再开携程或同程查航班酒店然后切到报销系统估费用最后把截图和数据搬回申请表单——光是在几个系统之间来回切就得小半天。接入 WebAgent 之后员工只需要在工作台的对话框里说一句“我要去深圳出差下周二去周五回帮我订符合标准的最早航班和离高新园最近的酒店并提交出差申请”。剩下的事情 WebAgent 替你跑去 OA 系统查差旅政策和报销额度去商旅平台挑符合标准的航班和酒店把信息汇总填进审批表单直接发起审批原来要在好几个系统间来回跳的活儿变成了一句话的事。点击观看出差申请场景演示视频官网首页视频2. 老系统低成本加上 AI 能力很多企业的 ERP、工单系统里沉淀了几十上百张表单全部重写不现实。但用 SDK 把关键操作包一层注册到 WebAgent 上改动量其实很小。改完之后操作员对着对话框说一句审批流程转到第三级并抄送采购部主管AI 理解意图WebAgent 把指令转给对应系统去执行——不用培训员工记菜单在哪、按钮点哪个说句话就能办。3. 微前端集群的统一调度入口如果你的业务拆成了很多微前端子应用每个子应用作为 Client 挂到 WebAgent 上之后大模型就能一次请求同时操作多个子应用——比如一边从销售看板拉数据一边往通知服务发消息。以前跨子应用的联动要写一堆胶水代码现在 WebAgent 当中间人子应用之间不需要互相知道对方的存在通过 WebAgent 转发就能协作。未来展望与共建邀请目前开源出来的 WebAgent核心的 MCP 代理转发能力已经跑通了。但说实话这只是我们想做的事情的一小部分——既然 WebAgent 已经站在了 AI 和业务系统之间很多事情顺着这个位置自然就能往下延伸LLM 代理中转现在遥控端要自己配大模型的 API Key 和地址如果团队里十几个应用都要接每个都单独管一套密钥和配额运维起来很头疼。我们在考虑让 WebAgent 直接内置大模型的代理能力——业务端只管发请求模型选择、密钥管理、限流熔断这些事情统一在 WebAgent 这一层搞定。MCP 工具的统一管理当接入的 Client 越来越多、注册的工具越来越杂谁能调什么就变成了一个实际问题。我们计划加上工具的权限控制、版本管理和可视化的管理后台让管理员能清楚地看到当前有哪些工具在线、谁在用、调用情况怎么样。Agent 托管再往后想一步——如果 WebAgent 不只是转发消息而是能直接托管一个完整的 Agent 运行时呢业务方定义好 Agent 的 Prompt、工具集和工作流往 WebAgent 上一扔它就能自己跑起来。这样业务团队连 Agent 的运行环境都不用操心了。我们将继续打磨和探索 WebAgent 的更多可能性。如果你正站在业务智能改造的关键节点或被各路模型杂乱不齐的长链接交互卡住了业务节奏我们非常诚挚地邀请你试用并打磨立即访问体验 WebAgentGitHub 仓库https://github.com/opentiny/web-agent 在此邀请试用并提交 Issue 反馈也极其感谢能为这群满怀赤诚的开源工程师点上一颗 StarWebAgent 文档https://docs.opentiny.design/web-agent/guide/getting-started.htmlOpenTiny 官网体验请移步 OpenTiny 访问关于 NEXT 智能化解决方案的完整技术蓝图。关于我们https://opentiny.design/opentiny-design/about

相关文章:

WebAgent :基于 MCP 协议打造的智能应用“超级路由器”

本文由云软件体验技术团队李锦浩原创。 在 NextSDK 介绍文章里,我们聊了怎么用 opentiny/next-sdk 给前端页面快速接入智能化能力——几行代码嵌进去,用户扫个二维码,手机上就能弹出一个 Remoter 对话窗口,直接用自然语言远程操控…...

PNAS|收入不足对婴儿早期脑发育的影响

本文揭示了逆境在出生后最早期脑发育阶段中的关键作用。基于 Baby Steps 研究(一项正在进行的纵向研究;在一所服务于贫困与压力发生率较高家庭的初级保健门诊中采集婴儿脑电(EEG)与社会经济地位相关数据)的数据表明&am…...

汽车智能制造如何落地?从“黑灯工厂”看AI赋能的关键路径

一、当工厂学会在黑暗中自行运转偌大的汽车生产车间里,灯光熄灭,只有AGV小车穿梭的微光和机械臂有节奏的运作声。没有工人的手电筒,也没有巡检的脚步,一切生产、检测、调度都在黑灯状态下有条不紊地进行。这并非科幻电影&#xff…...

操作系统-lazy allocation

只有真正需要使用这些页的时候,才进行物理内存页的实际分配sbrk()在xv6操作系统中,进程的用户内存布局由代码段(text)、数据段(data)、堆区(heap)和栈区(stack)组成。sbrk()主要修改的是堆区的大小,堆在xv6中由低地址向高地址拓展。当程序调用sbrk(n)时,操作系统内核…...

太原烘焙培训排名

在太原选择烘焙培训机构时,许多朋友会关注不同机构的教学质量与特色。以下整理了一些选择时可以考虑的方面,供您参考。教学方式与内容部分机构采用以实操为主的教学模式,例如山西旭梦圆食品有限公司的课程安排中,实践操作占较大比…...

Java学习——String 类的不可变性、底层实现(JDK1.8+)

目录 一、核心定义与设计思想 1. 核心定义 2. 核心设计思想 二、底层实现原理(含 JDK 源码分析 / 反编译验证) 1. JDK1.8 String 核心源码解析 2. 字符串常量池(JDK1.8 底层) 3. 反编译验证(不可变性 编译器优…...

Qwen3-TTS开源大模型效果展示:俄文/葡萄牙文/意大利文等小语种高自然度语音生成

Qwen3-TTS开源大模型效果展示:俄文/葡萄牙文/意大利文等小语种高自然度语音生成 你听过AI用俄语讲普希金的诗吗?或者用意大利语念一段歌剧台词?过去,想让AI生成地道的小语种语音,要么音色机械,要么口音奇怪…...

AntdUI实战:用WinForm和.NET 6给老旧内部管理系统“换肤”的完整记录

AntdUI实战:用WinForm和.NET 6给老旧内部管理系统“换肤”的完整记录 当企业内部的WinForm系统运行超过十年,那些灰底蓝框的界面早已与现代审美格格不入。去年接手某制造业ERP系统改造时,我面对的是一个基于.NET Framework 4.0的"古董&q…...

万象视界灵坛效果展示:血条式置信度进度条与‘同步率’动态分布图实录

万象视界灵坛效果展示:血条式置信度进度条与同步率动态分布图实录 1. 平台概览 万象视界灵坛(Omni-Vision Sanctuary)是一款基于OpenAI CLIP技术的高级多模态智能感知平台。不同于传统视觉识别工具的单调界面,它将复杂的"语…...

Gemma-3 Pixel Studio实战教程:离线模式部署与本地模型权重缓存策略

Gemma-3 Pixel Studio实战教程:离线模式部署与本地模型权重缓存策略 1. 项目概述与核心价值 Gemma-3 Pixel Studio是基于Google最新开源Gemma-3-12b-it模型构建的多模态对话终端,将强大的文本理解能力与视觉感知功能完美结合。与传统对话系统相比&…...

Qwen3-0.6B-FP8应用场景:开发者测试LLM应用前端UI兼容性的沙盒环境

Qwen3-0.6B-FP8应用场景:开发者测试LLM应用前端UI兼容性的沙盒环境 1. 引言:为什么需要一个轻量级的“测试沙盒”? 如果你正在开发一个基于大语言模型的应用,比如一个智能客服系统、一个文档助手,或者一个创意写作工…...

手把手教你用Flotherm做热管仿真

🎓作者简介:科技自媒体优质创作者 🌐个人主页:莱歌数字-CSDN博客 💌公众号:莱歌数字(B站同名) 📱个人微信:yanshanYH 211、985硕士,从业16年 从…...

OpenRGB:开源跨平台RGB灯光控制方案,告别多软件困扰实现设备统一管理

OpenRGB:开源跨平台RGB灯光控制方案,告别多软件困扰实现设备统一管理 【免费下载链接】OpenRGB Open source RGB lighting control that doesnt depend on manufacturer software. Supports Windows, Linux, MacOS. Mirror of https://gitlab.com/CalcPr…...

深入ELF文件:从rpath和interpreter看懂Linux程序如何‘找到家’

深入ELF文件:从rpath和interpreter看懂Linux程序如何‘找到家’ 在Linux系统中,每个可执行程序背后都隐藏着一个精巧的加载机制。当你在终端输入一个命令时,系统如何找到并加载程序所需的所有组件?这背后是ELF(Execut…...

DanKoe 视频笔记:原创思维指南:如何进行原创思考

在本教程中,我们将学习如何摆脱思维定式,培养真正的原创思考能力。我们将探讨为何独立思考如此困难,并提供一套实用的方法来帮助你形成自己的观点、连接不同领域的知识,并最终创造出有价值的内容。 概述 每个人都希望成为一个原创…...

[模电]从PN结到实用电路:二极管的深度解析与设计指南

1. PN结:二极管的物理基础 想象一下把一块P型半导体和N型半导体紧密贴合在一起,就像把两块不同颜色的橡皮泥揉捏在一起。P型半导体里充满了带正电的"空穴"(可以理解为缺少电子的位置),而N型半导体则富含自由…...

千问3.5-2B镜像免配置优势解析:supervisor自恢复+健康检查+7860端口标准化

千问3.5-2B镜像免配置优势解析:supervisor自恢复健康检查7860端口标准化 1. 千问3.5-2B镜像核心价值 千问3.5-2B是Qwen系列的小型视觉语言模型,专为图片理解与文本生成任务优化设计。这个开箱即用的镜像解决了传统AI模型部署中最让人头疼的三个问题&am…...

源码级重构与低代码交付:企业级 AI 视频管理平台的二次开发实战

作为一位在安防行业摸爬滚打 10 年的架构师,我经常被集成商朋友的灵魂拷问:“有没有一套代码,既能直接拿去给客户演示(低代码),又能让我根据客户需求改得‘面目全非’(深度定制)&…...

如何为华硕笔记本安装轻量级性能控制工具:G-Helper完整指南

如何为华硕笔记本安装轻量级性能控制工具:G-Helper完整指南 【免费下载链接】g-helper Lightweight, open-source control tool for ASUS laptops and ROG Ally. Manage performance modes, fans, GPU, battery, and RGB lighting across Zephyrus, Flow, TUF, Stri…...

Android BLE开发实战:从BlueDroid扫描流程到性能调优全解析(附代码示例)

Android BLE开发深度优化:从BlueDroid扫描机制到实战性能调优 1. 理解BLE扫描的核心机制 在Android蓝牙低功耗(BLE)开发中,扫描机制是连接设备的第一步,也是最容易出现性能瓶颈的环节。与传统的蓝牙扫描不同&#xff0…...

Neeshck-Z-lmage_LYX_v2多场景落地:LoRA动态加载赋能数字人直播背景实时生成系统

Neeshck-Z-lmage_LYX_v2多场景落地:LoRA动态加载赋能数字人直播背景实时生成系统 1. 项目简介:一个专为本地绘画优化的轻量级工具 如果你对AI绘画感兴趣,特别是想体验国产的Z-Image文生图模型,但又被复杂的部署流程、繁琐的参数…...

Face Analysis WebUI在金融领域的应用:远程开户身份核验

Face Analysis WebUI在金融领域的应用:远程开户身份核验 1. 引言 想象一下这样的场景:一位偏远地区的客户想要开设银行账户,但最近的银行网点在100公里外。传统方式下,他需要亲自前往网点,排队等待,提交各…...

YOLO26涨点改进| CVPR 2026 | 独家创新首发、注意力改进篇| 引入SDGW空间偏差引导加权模块,含多种二次创新改进,助力图像去噪、红外小目标检测、图像分割、变换检测、关键点检测高效涨点

一、本文介绍 🔥本文给大家介绍使用 SDGW空间偏差引导加权模块 改进YOLO26网络模型,可以在空间域对每个像素位置进行自适应加权,动态增强目标信号、抑制噪声,使网络在特征提取阶段对低亮度、小目标或高噪声区域更加敏感,从而提升检测精度和召回率,同时减少假阳性。该模…...

ROS 实战指南:从 rosbag 高效提取 RGB 与深度图数据

1. rosbag基础操作与核心概念 在机器人开发领域,rosbag就像是一个万能的数据记录仪。想象一下你正在调试一个机器人视觉系统,传感器数据像流水一样不断涌来,这时候rosbag就能帮你把关键数据"冻住",方便后续反复分析。我…...

零成本打造私有云盘:从PHPStudy安装到IPv6动态域名解析全攻略

零成本打造私有云盘:从PHPStudy安装到IPv6动态域名解析全攻略 在数字化时代,个人数据存储需求呈爆炸式增长。网盘限速、隐私泄露、订阅费用高昂等问题困扰着许多用户。本文将手把手教你如何利用闲置电脑和免费工具,打造一个完全由自己掌控的私…...

Java如何实现Excel表格中间插入列

在日常Excel数据处理中,通常需要调整表格结构,例如在特定列之间插入新列。本文将介绍如何有效地使用Java代码,特别是在现有的A列和B列之间插入新列。Excel文件的高效处理,避免直接操作二进制数据带来的复杂性和错误风险&#xff0…...

判断一个链表是否是环形链表

给你一个链表的头节点 head ,判断链表中是否有环。 如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环。 为了表示给定链表中的环,评测系统内部使用整数 pos 来表示链表尾连接到链表中的位置(索…...

客服机器人开放平台能自建知识库吗?以百应Agent为例,探讨成都企业售后自动解答的实现路径

在数字化转型加速的今天,成都作为西部电商和制造业重镇,众多企业面临售后咨询量激增的挑战。退货、物流追踪、产品故障排查等售后问题占客服咨询的 60% 以上,传统人工客服成本高、响应慢,已难以满足用户即时需求。客服机器人开放平…...

s2-pro实战落地:跨境电商产品介绍多语种语音批量生成

s2-pro实战落地:跨境电商产品介绍多语种语音批量生成 1. 场景痛点与解决方案 跨境电商企业面临一个共同挑战:如何高效地为全球不同语言市场的产品生成专业语音介绍。传统方案需要雇佣多语种配音人员,成本高、周期长,且难以保证语…...

云原生图书馆管理系统架构设计:基于SaaS的一站式解决方案与实战案例分析

某中学图书馆数字化改造实战:传统Excel管理迁移至云端系统,借还效率提升300%,系统响应时间降低至200ms以内一、背景:传统图书馆管理的痛点分析1.1 技术债务积累在数字化转型的过程中,许多中小型学校图书馆依然停留在传…...