技术深度解析
核心问题在于架构:现代网络栈是为“人在回路中”范式设计的。HTML、CSS和JavaScript渲染内容供眼睛和手指使用,而非解析器和函数调用。一个AI代理试图与典型的电商网站交互时,必须首先解析渲染后的DOM元素,推断按钮和表单的语义含义,生成合成点击事件,并处理不可预测的JavaScript状态变化。这个过程脆弱、缓慢且容易出错。
对比之下,一个真正的API优先设计则截然不同。像Stripe这样的网站会暴露一个RESTful端点`POST /v1/charges`,带有明确定义的参数。代理可以直接调用它,行为确定,错误代码清晰。那97%的差距,正是这种端点的缺失。
有几个开源项目正试图从代理端弥合这一差距。[BrowserGym](https://github.com/ServiceNow/BrowserGym)(5.2k星)提供了一个用于训练和评估代理在网页导航任务上的gym环境,但它仍然依赖脆弱的DOM解析。[Playwright](https://github.com/microsoft/playwright)(68k星)提供了强大的浏览器自动化功能,但它是一个通用工具,而非代理原生协议。[AgentQL](https://github.com/tinyfish-io/agentql)(1.8k星)是一个较新的入局者,试图为网页数据提取提供结构化查询语言,但它仍然是只读的。
一种更有前景的方法正从协议端浮现。Google的Agent-to-Agent Protocol(A2A)和Anthropic的Model Context Protocol(MCP)是标准化代理如何发现和调用能力的早期尝试。尤其是MCP,作为一种轻量级、基于JSON-RPC的协议,它允许服务器(即网站)暴露一个代理可以调用的“工具”列表,正在获得关注。一个实现了MCP的网站可以暴露诸如`search_products`、`add_to_cart`或`checkout`之类的工具。代理只需用所需参数调用这些工具即可。
当前代理-网页交互方法的性能对比:
| 方法 | 成功率(预订航班) | 平均延迟 | 错误率 | 可维护性 |
|---|---|---|---|---|
| DOM解析 + 点击模拟 | 42% | 8.2秒 | 23% | 极低(UI更新即失效) |
| 视觉(截图 + OCR) | 38% | 12.5秒 | 31% | 低(依赖渲染引擎) |
| 自定义API(例如Expedia API) | 97% | 1.1秒 | 2% | 高(稳定契约) |
| MCP协议(假设) | 95%(估计) | 0.8秒 | 3%(估计) | 高(标准化) |
数据要点: 基于DOM的方法与基于API/MCP的方法之间的差距巨大——延迟大约相差2倍,错误率相差10倍。这不是一个渐进式改进的问题;这是一个根本性的架构错配。实现可靠代理-网页交互的唯一途径,是通过标准化的服务器端协议。
关键参与者与案例研究
当前格局是一场双马竞赛:自下而上(代理端适配)与自上而下(协议标准化)。
自下而上:代理框架
像Anthropic(Claude的计算机使用功能)、OpenAI(Operator)和Microsoft(Copilot的浏览器自动化)这样的公司,正在大力投资于让它们的代理能够“看见”和“点击”网页。Anthropic于2024年底发布的“计算机使用”功能,允许Claude截取屏幕截图并模拟鼠标点击。虽然在演示中令人印象深刻,但它存在上述性能问题。OpenAI的Operator采用了类似的方法,但使用了一个专门的“浏览器代理”模型。两者都是权宜之计。
自上而下:协议标准化
- Anthropic的Model Context Protocol(MCP): 于2024年底开源,MCP在开发者工具领域迅速获得采用。GitHub、Replit和Linear都已实现MCP服务器,允许Claude直接与代码仓库、代码执行环境和问题追踪器交互。例如,GitHub的MCP服务器暴露了诸如`create_repository`、`search_code`和`create_issue`之类的工具。这是代理访问的黄金标准。
- Google的Agent-to-Agent Protocol(A2A): 于2025年初宣布,A2A更为雄心勃勃,旨在允许来自不同生态系统的代理协商和委派任务。它不如MCP成熟,目前实际部署较少。
- Stripe的Agent Toolkit: Stripe一直是先驱,发布了专为AI代理设计的SDK,将其现有API封装成对代理友好的工具定义。这是一个务实的、公司特定的解决方案。
协议方法对比:
| 协议 | 创建者 | 焦点 | 采用情况(服务器数量) | 复杂度 | 关键限制 |
|---|---|---|---|---|---|
| MCP | Anthropic | 为LLM暴露工具 | ~500(估计) | 低 | 仅限客户端;无代理间通信 |
| A2A | Google | 代理间委派 | ~50(估计) | 高 | 对于简单工具调用而言过度设计 |
| 自定义SDK(Stripe) | Stripe | 单一公司API封装 | 1(Stripe) | 极低 | 不通用 |
数据要点: MCP