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

news2026/3/31 7:23:09
本文由云软件体验技术团队李锦浩原创。在 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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2467696.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

SpringBoot-17-MyBatis动态SQL标签之常用标签

文章目录 1 代码1.1 实体User.java1.2 接口UserMapper.java1.3 映射UserMapper.xml1.3.1 标签if1.3.2 标签if和where1.3.3 标签choose和when和otherwise1.4 UserController.java2 常用动态SQL标签2.1 标签set2.1.1 UserMapper.java2.1.2 UserMapper.xml2.1.3 UserController.ja…

wordpress后台更新后 前端没变化的解决方法

使用siteground主机的wordpress网站,会出现更新了网站内容和修改了php模板文件、js文件、css文件、图片文件后,网站没有变化的情况。 不熟悉siteground主机的新手,遇到这个问题,就很抓狂,明明是哪都没操作错误&#x…

网络编程(Modbus进阶)

思维导图 Modbus RTU(先学一点理论) 概念 Modbus RTU 是工业自动化领域 最广泛应用的串行通信协议,由 Modicon 公司(现施耐德电气)于 1979 年推出。它以 高效率、强健性、易实现的特点成为工业控制系统的通信标准。 包…

UE5 学习系列(二)用户操作界面及介绍

这篇博客是 UE5 学习系列博客的第二篇,在第一篇的基础上展开这篇内容。博客参考的 B 站视频资料和第一篇的链接如下: 【Note】:如果你已经完成安装等操作,可以只执行第一篇博客中 2. 新建一个空白游戏项目 章节操作,重…

IDEA运行Tomcat出现乱码问题解决汇总

最近正值期末周,有很多同学在写期末Java web作业时,运行tomcat出现乱码问题,经过多次解决与研究,我做了如下整理: 原因: IDEA本身编码与tomcat的编码与Windows编码不同导致,Windows 系统控制台…

利用最小二乘法找圆心和半径

#include <iostream> #include <vector> #include <cmath> #include <Eigen/Dense> // 需安装Eigen库用于矩阵运算 // 定义点结构 struct Point { double x, y; Point(double x_, double y_) : x(x_), y(y_) {} }; // 最小二乘法求圆心和半径 …

使用docker在3台服务器上搭建基于redis 6.x的一主两从三台均是哨兵模式

一、环境及版本说明 如果服务器已经安装了docker,则忽略此步骤,如果没有安装,则可以按照一下方式安装: 1. 在线安装(有互联网环境): 请看我这篇文章 传送阵>> 点我查看 2. 离线安装(内网环境):请看我这篇文章 传送阵>> 点我查看 说明&#xff1a;假设每台服务器已…

XML Group端口详解

在XML数据映射过程中&#xff0c;经常需要对数据进行分组聚合操作。例如&#xff0c;当处理包含多个物料明细的XML文件时&#xff0c;可能需要将相同物料号的明细归为一组&#xff0c;或对相同物料号的数量进行求和计算。传统实现方式通常需要编写脚本代码&#xff0c;增加了开…

LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器的上位机配置操作说明

LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器专为工业环境精心打造&#xff0c;完美适配AGV和无人叉车。同时&#xff0c;集成以太网与语音合成技术&#xff0c;为各类高级系统&#xff08;如MES、调度系统、库位管理、立库等&#xff09;提供高效便捷的语音交互体验。 L…

(LeetCode 每日一题) 3442. 奇偶频次间的最大差值 I (哈希、字符串)

题目&#xff1a;3442. 奇偶频次间的最大差值 I 思路 &#xff1a;哈希&#xff0c;时间复杂度0(n)。 用哈希表来记录每个字符串中字符的分布情况&#xff0c;哈希表这里用数组即可实现。 C版本&#xff1a; class Solution { public:int maxDifference(string s) {int a[26]…

【大模型RAG】拍照搜题技术架构速览:三层管道、两级检索、兜底大模型

摘要 拍照搜题系统采用“三层管道&#xff08;多模态 OCR → 语义检索 → 答案渲染&#xff09;、两级检索&#xff08;倒排 BM25 向量 HNSW&#xff09;并以大语言模型兜底”的整体框架&#xff1a; 多模态 OCR 层 将题目图片经过超分、去噪、倾斜校正后&#xff0c;分别用…

【Axure高保真原型】引导弹窗

今天和大家中分享引导弹窗的原型模板&#xff0c;载入页面后&#xff0c;会显示引导弹窗&#xff0c;适用于引导用户使用页面&#xff0c;点击完成后&#xff0c;会显示下一个引导弹窗&#xff0c;直至最后一个引导弹窗完成后进入首页。具体效果可以点击下方视频观看或打开下方…

接口测试中缓存处理策略

在接口测试中&#xff0c;缓存处理策略是一个关键环节&#xff0c;直接影响测试结果的准确性和可靠性。合理的缓存处理策略能够确保测试环境的一致性&#xff0c;避免因缓存数据导致的测试偏差。以下是接口测试中常见的缓存处理策略及其详细说明&#xff1a; 一、缓存处理的核…

龙虎榜——20250610

上证指数放量收阴线&#xff0c;个股多数下跌&#xff0c;盘中受消息影响大幅波动。 深证指数放量收阴线形成顶分型&#xff0c;指数短线有调整的需求&#xff0c;大概需要一两天。 2025年6月10日龙虎榜行业方向分析 1. 金融科技 代表标的&#xff1a;御银股份、雄帝科技 驱动…

观成科技:隐蔽隧道工具Ligolo-ng加密流量分析

1.工具介绍 Ligolo-ng是一款由go编写的高效隧道工具&#xff0c;该工具基于TUN接口实现其功能&#xff0c;利用反向TCP/TLS连接建立一条隐蔽的通信信道&#xff0c;支持使用Let’s Encrypt自动生成证书。Ligolo-ng的通信隐蔽性体现在其支持多种连接方式&#xff0c;适应复杂网…

铭豹扩展坞 USB转网口 突然无法识别解决方法

当 USB 转网口扩展坞在一台笔记本上无法识别,但在其他电脑上正常工作时,问题通常出在笔记本自身或其与扩展坞的兼容性上。以下是系统化的定位思路和排查步骤,帮助你快速找到故障原因: 背景: 一个M-pard(铭豹)扩展坞的网卡突然无法识别了,扩展出来的三个USB接口正常。…

未来机器人的大脑:如何用神经网络模拟器实现更智能的决策?

编辑&#xff1a;陈萍萍的公主一点人工一点智能 未来机器人的大脑&#xff1a;如何用神经网络模拟器实现更智能的决策&#xff1f;RWM通过双自回归机制有效解决了复合误差、部分可观测性和随机动力学等关键挑战&#xff0c;在不依赖领域特定归纳偏见的条件下实现了卓越的预测准…

Linux应用开发之网络套接字编程(实例篇)

服务端与客户端单连接 服务端代码 #include <sys/socket.h> #include <sys/types.h> #include <netinet/in.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <arpa/inet.h> #include <pthread.h> …

华为云AI开发平台ModelArts

华为云ModelArts&#xff1a;重塑AI开发流程的“智能引擎”与“创新加速器”&#xff01; 在人工智能浪潮席卷全球的2025年&#xff0c;企业拥抱AI的意愿空前高涨&#xff0c;但技术门槛高、流程复杂、资源投入巨大的现实&#xff0c;却让许多创新构想止步于实验室。数据科学家…

深度学习在微纳光子学中的应用

深度学习在微纳光子学中的主要应用方向 深度学习与微纳光子学的结合主要集中在以下几个方向&#xff1a; 逆向设计 通过神经网络快速预测微纳结构的光学响应&#xff0c;替代传统耗时的数值模拟方法。例如设计超表面、光子晶体等结构。 特征提取与优化 从复杂的光学数据中自…