关于 Web Agent Protocol
Web Agent Protocol(WAP)是一个用于录制和回放浏览器操作的 Python SDK。它将操作录制与执行分离,便于自动化任务的复用。
主要功能
- 01通过 OTA-WAP Chrome 扩展采集用户交互数据
- 02将原始事件转换为精确回放或智能回放列表
- 03通过 WAP-Replay 协议回放操作列表
- 04将录制的操作转换为 MCP 服务
适用场景
- 01录制网页操作流程并生成可复用的自动化脚本
- 02将浏览器操作封装为 MCP 服务供 Agent 调用
- 03基于智能回放列表执行目标导向的网页任务
MCP 相关
WAP 可将录制的浏览器操作转换为 MCP 服务,供任意 Agent 或用户调用。仓库中的 wap_service.py 与 mcp_client.py 演示了通过 MCP 回放操作的流程。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
我们还没有获取到这个服务的安装包或远程地址,请按项目 README 中的说明安装。
工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
Web Agent Protocol
概述
Web Agent Protocol(WAP)是一种标准化框架,旨在通过记录和回放浏览器操作,实现用户、Web Agent 和浏览器之间的无缝交互。它将操作记录与执行分开,从而实现高效自动化和重复使用。WAP 的 Python SDK 实现了完整规范,让你可以轻松地:
- 收集 用户交互数据,使用 OTA‑WAP Chrome 扩展。
- 转换 原始事件流,生成 精确回放 或 智能回放 操作列表。
- 转换 已记录的操作,将其转换为 MCP 服务,供任何 Agent 或用户重复使用
- 使用 WAP-Replay 协议 回放 这些列表,确保浏览器操作准确无误。
WAP 完整演示
不使用 WAP
WAP 记录
WAP 回放
使用 WAP 的示例
设置
使用以下命令安装依赖项:
创建 conda 环境
conda create -n WAP python=3.11
激活 conda 环境
conda activate WAP
安装依赖项
pip install -r requirements.txt
设置你的仓库源路径:
set PYTHONPATH=C:/path/to/webagentprotocol # for Windows
export PYTHONPATH=/path/to/webagentprotocol # for Linux
在仓库根目录下创建 .env 文件,并填入你自己的 API 密钥:
OPENAI_API_KEY=sk-proj-...
DEEPSEEK_API_KEY=sk-...
记录
WAP 记录扩展
请参阅 OTA‑WAP Chrome 扩展,在 Chrome 浏览器中设置操作捕获器。
启动数据收集服务
运行以下命令,启动服务以从扩展收集数据:
python action_collect_server.py
服务启动后,你就可以使用 WAP Chrome 扩展开始记录页面操作。
服务默认监听 http://localhost:4934/action-data,请确保扩展设置中的 Host 和 Port 与此服务配置一致。 每个会话都会保存到:
data/YYYYMMDD/taskid/summary_event_<timestamp>.json
WAP 后端服务收到的格式化数据示例如下:
{
"taskId": "MkCAhQsHgXn7YgaK",
"type": "click",
"actionTimestamp": 1746325231479,
"eventTarget": {
"type": "click",
"target": "<a ota-use-interactive-target=\"1\" data-ordinal=\"3\" href=\"https://www.allrecipes.com/recipe/68925/cheesy-baked-salmon/\" data-tax-levels=\"\" data-doc-id=\"6592066\" class=\"comp mntl-card-list-card--extendable mntl-universal-card mntl-document-card mntl-card card card--no-image\" id=\"mntl-card-list-card--extendable_3-0\">\n<div class=\"loc card__top\"><div class=\"card__media mntl-image card__media universal-image__container\">...",
"targetId": "mntl-card-list-card--extendable_3-0",
"targetClass": "comp mntl-card-list-card--extendable mntl-universal-card mntl-document-card mntl-card card card--no-image"
},
"allEvents": {},
"pageHTMLContent": "<header data-tracking-container=\"true\" data-collapsible=\"true\" class=\"comp header mntl-header mntl-header--magazine mntl-header--open-search-bar mntl-header--myr\" id=\"header_1-0\"><a data-tracking-container=\"true\" id=\"mntl-skip-to-content_1-0\" class=\"mntl-skip-to-content mntl-text-link\" rel=\"nocaes\" href=\"#main\"></a><div class=\"mntl-header__menu-top\">..."
}
生成回放列表
| 模式 | 命令 |
|---|---|
| 精确回放 – 精确重现每个操作 | python wap_replay/generate_exact_replay_list.py --data_dir_path data/<date>/<task_id> --output_dir_path data_processed/exact_replay |
| 智能回放 – 精简的目标导向步骤 | python wap_replay/generate_smart_replay_list.py --data_dir_path data/<date>/<task_id> --output_dir_path data_processed/smart_replay |
将 <task_id> 替换为扩展程序生成的文件夹 (例如:em3h6UBDZykz0gnH)。
输出结构:
data_processed/smart_replay/
├─ subgoals_<task_id>/ # intermediate prompts & replies
└─ wap_smart_replay_list_<task_id>.json # final smart replay list for the agent
data_processed/exact_replay/
└─ wap_smart_replay_list_<task_id>.json # final exact replay list for the agent
回放
python run_replay.py --model-provider openai --wap_replay_list data_processed/exact_replay/wap_exact_replay_list_<task_id>.json --max-concurrent 1
对于智能回放,请将路径替换为智能回放 JSON 文件,以测试此模式。
转换为 MCP 服务
python wap_replay\generate_mcp_server.py --task_id <task_id>
转换后的 MCP 服务将位于 mcp_servers 文件夹下
使用 MCP 回放
使用 MCP 回放需要打开 2 个终端。在第一个终端中
python wap_service.py
在第二个终端中
python mcp_client.py
然后在第二个终端中输入提示词
example: find a top rated keyboard on amazon.ca using smart replay
使用我们的桌面应用回放
我们提供开箱即用的桌面应用来运行回放列表。安装简单,无需额外的设置和部署步骤。访问 WAP Replay Tool 发布页面了解详情。
故障排查
ModuleNotFoundError – 请在项目根目录运行命令,或导出 PYTHONPATH=.(Windows 请设置 PYTHONPATH=.)。
“no task‑start file” – 请确保扩展程序记录了完整会话; 生成器要求恰好有一条 task-start 记录和一条 task-finish 记录。
致谢
Browser-Use: https://github.com/browser-use/browser-use
MCP: https://github.com/modelcontextprotocol/python-sdk
DOM Extension: https://github.com/kdzwinel/DOMListenerExtension
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。
