Webwright的SOTA战绩深度解析:如何在Online-Mind2Web拿下86.7%、Odysseys长程任务突破60.1%?
【免费下载链接】WebwrightA simple SWE style browser agent framework that achieves SOTA results on long horizon web tasks.项目地址: https://gitcode.com/gh_mirrors/web/Webwright
Webwright 是一个极简的 SWE 风格浏览器 Agent 框架:它给大模型一个终端,让模型自己编写 Playwright 脚本、自主启动浏览器会话,端到端完成网页任务。凭借"代码即动作"的设计,这个约 1.5k 行代码的框架在 Online-Mind2Web 与 Odysseys 两大真实网站基准上取得 SOTA 成绩——整体 86.7%,长程任务 60.1%。本文带你拆解这份战绩背后的技术逻辑。
🏆 战绩速览:两个基准,两个第一
在统一的 100 步预算下,Webwright 的评测结果如下:
| 基准 | 任务数 | Webwright 成绩 | 对比基线 | 提升 |
|---|---|---|---|---|
| Online-Mind2Web(AutoEval) | 300 | 86.7%(GPT-5.4) | GPT-5.4 视觉基线 82.7% | +4.0 |
| Odysseys(长程任务) | 200 | 60.1%(GPT-5.4,平均 76.1 步) | 前 SOTA:Opus 4.6 44.5% | +15.6 |
换成 Claude Opus 4.7,Online-Mind2Web 整体为84.7%,且在 Hard 子集上更强(80.5%)。Odysseys 的长程任务对比尤为直观:
📊 Online-Mind2Web 的 86.7% 是怎么打出来的?
传统浏览器 Agent 是"看图 → 预测下一步点击坐标"的循环,误差会逐步累积。Webwright 换了一条路:让模型直接写代码操作浏览器。每一轮,模型只输出一条 shell 命令(通常是运行一段 Playwright 脚本),执行后观察返回的输出与截图,再决定下一步。
从图中可以看到三个关键点:
- 整体 86.7%:浅蓝色"轻帽"(Step 50 vs 100)显示 82.0%,说明多给的 50 步带来了 4.7 个百分点的真实收益;
- Hard 子集 80.5%:远超视觉基线的 56.1%——这正是"写代码"相对"点坐标"的碾压区间;
- Easy 子集 96.2%:简单任务几乎没有失误。
代码层面的关键机制都在配置与核心循环里:
- 系统提示与观察模板:src/webwright/config/base.yaml
- 核心 Agent 循环(写代码 → 执行 → 观察 → 修复):src/webwright/agents/default.py
- 完成前必须通过"自我反思"验收:src/webwright/tools/self_reflection.py
🚀 长程任务为何能突破 60.1%?
Odysseys 平均需要 76 步,是典型的长程任务。Webwright 的答案是三个字:状态化。
- 工作区即状态,而非浏览器即状态——真正的"记忆"是本地工作区里的代码、截图和日志。浏览器随时可以丢弃重建,脚本重跑一遍即可复现现场;
- 脚本可重跑、可复用——多步操作(选日期、填表单)被压缩成一段程序,循环与函数让模型可以泛化到相似任务,无需重复预测同样的低层动作,长程下的错误累积因此大幅减少;
- 历史压缩机制——每 N 步自动把对话压缩成摘要(见 src/webwright/agents/default.py 的
_compact_history),上下文不会爆炸。
💰 附赠福利:Token 效率对比工具
同样的任务,Webwright 本地浏览器模式总共消耗约42.4 万token,而某通用编码助手的同类轨迹高达329 万——差距接近 8 倍。项目内置了一个轨迹对比查看器,可上传raw_responses.jsonl与trajectory.json逐步对照不同框架的思考、命令与 token 消耗:
前端源码在 assets/compare_trajectory/app.js,本地起个静态服务器即可使用。
🗺️ 极简架构:1.5k 行里都有什么
| 模块 | 职责 |
|---|---|
| src/webwright/run/cli.py | CLI 入口(约 150 行) |
| src/webwright/agents/default.py | 核心 Agent 循环(约 450 行) |
| src/webwright/environments/local_workspace.py | 本地终端 + Playwright 浏览器环境 |
| src/webwright/models/ | OpenAI / Anthropic / OpenRouter 可插拔后端 |
| src/webwright/tools/image_qa.py | 截图问答自检工具 |
| skills/webwright/SKILL.md | 以插件形式接入 Claude Code / Codex 的技能定义 |
没有多 Agent 编排、没有图引擎、没有插件层——依赖只有httpx、pydantic、playwright、typer,完整清单见 pyproject.toml。
🚀 三步跑通你的第一个 Web 任务
前提:Python 3.10+,以及一个模型 API Key。
git clone https://gitcode.com/gh_mirrors/web/Webwright cd Webwright pip install -e . && playwright install chromium然后一条命令开跑(以 OpenAI 后端为例,换 Claude 只需把model_openai.yaml换成model_claude.yaml):
python -m webwright.run.cli \ -c base.yaml -c model_openai.yaml \ -t "Search for flights from SEA to JFK on 2026-08-15 to 2026-08-20" \ --start-url https://www.google.com/flights \ --task-id demo_openai -o outputs/default运行结束,outputs/default/下会留下完整轨迹与截图,生成的final_script.py本身就是一个可反复执行、可改参数复用的自动化脚本。
📌 总结:为什么这套"笨办法"反而 SOTA
- 代码即动作:把"点哪里"换成"写什么代码",长程任务错误累积显著降低;
- 工作区即状态:代码 + 截图 + 日志是可检查、可重放的真实状态;
- 极简可调试:约 1.5k 行核心代码,整条 prompt → 观察 → 执行循环通读无压力;
- 战绩说话:Online-Mind2Web 86.7%、Odysseys 60.1%,两项均为开源框架中的最强水平。
如果你想要一个轻量、易调试、能直接 fork 二开的浏览器 Agent 起点,Webwright 是目前最干净的选择。
【免费下载链接】WebwrightA simple SWE style browser agent framework that achieves SOTA results on long horizon web tasks.项目地址: https://gitcode.com/gh_mirrors/web/Webwright
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考