project
Webwright - 微软开源的终端原生网页智能体框架
Webwright 是微软研究院开源的终端原生网页智能体框架,仅需约 1000 行代码可让 AI 模型在终端中编写 Playwright 代码、执行 bash 命令、查看日志并反复修正...
Webwright是什么
Webwright 是微软研究院开源的终端原生网页智能体框架,仅需约 1000 行代码可让 AI 模型在终端中编写 Playwright 代码、执行 bash 命令、查看日志并反复修正,完成复杂网页任务。Webwright能让模型直接在终端写代码操控浏览器。基于 GPT-5.4 的 Webwright 在 Odysseys 长链路浏览基准上得分 60.8%,相对此前最佳结果提升 35.1%,比基础 GPT-5.4 提升 81.49%;在 Online-Mind2Web 300 个真实网站任务中准确率达 86.67%。
Webwright的主要功能
-
终端代码操控浏览器:AI 模型在终端编写 Playwright 脚本,直接启动、检查、关闭浏览器会话,而非逐次预测点击或输入。
-
Shell 命令自由执行:支持执行 bash 命令,结合代码与系统级操作,灵活处理文件、日志和环境配置。
-
自我反思与验证机制:任务完成后,模型必须在全新文件夹中运行最终脚本,结合日志和截图进行自我反思判断,防止”过早宣告完成”。
-
上下文压缩管理:每 20 步自动将历史轨迹压缩为摘要,解决长链路任务的上下文膨胀问题。
-
可复用工具生成:完成的任务脚本可参数化为 CLI 工具,保存到工作区供后续复用,避免重复探索。
Webwright的技术原理
-
三模块极简架构:整个框架仅由 Runner(约 150 行,负责循环编排)、Model Endpoint(约 550 行,封装 LLM API 调用)、Environment(约 300 行,执行 shell 命令与终端交互)组成,无多智能体编排或复杂分层规划。
-
代码即动作范式:用代码表达多步网页任务(如表单填写、日期选择、跨页操作),借助循环、函数和抽象复用能力,相比传统单步动作链更高效。
-
观察-行动循环:Runner 将任务历史与终端观察发送给模型 → 模型返回思考内容与 shell 命令 → 环境执行并返回终端输出、日志、截图或错误 → 循环迭代直至完成。
-
工作区持久化:所有脚本、日志、截图和输出保存在本地工作区,最终生成可复用的任务程序。
如何使用Webwright
-
环境准备:克隆仓库并安装依赖,配置 LLM API 密钥。
-
启动任务:运行
run.py,输入自然语言任务描述(如”搜索 33-49 寸 240Hz OLED 显示器,预算 1000 美元以下”)。 -
观察循环:框架自动进入 Runner-Model-Environment 循环,模型编写脚本、执行命令、捕获输出。
-
自我验证:任务完成后,模型在
final_runs/目录重新运行脚本,通过self_reflection验证结果。 -
复用输出:从
workspace/中提取生成的.py脚本作为可复用 CLI 工具。
Webwright的核心优势
-
极简实现:仅约 1000 行 harness 代码,架构清晰,易于理解和扩展。
-
性能突破:在 Odysseys 长链路任务上大幅超越视觉基线模型,GPT-5.4 提升 81.49%,Claude Opus 4.7 也有显著增益。
-
终端原生:赋予 AI 真正的终端自由度,浏览器会话可随意创建和销毁,代码与日志持久留存。
-
输出可复用:支持生成可保存、分享和重复使用的程序,降低后续同类任务成本。
Webwright的项目地址
- 项目官网:https://microsoft.github.io/Webwright/
- GitHub仓库:https://github.com/microsoft/webwright
Webwright的同类竞品对比
| 维度 | Webwright | Browser Use |
|---|---|---|
| 开发方 | 微软研究院 | 独立开源项目(browser-use.com) |
| 核心范式 | 终端代码优先:AI 在终端编写 Playwright 脚本,自由执行 bash 命令 | DOM 蒸馏优先:剥离无关 HTML 元素后喂给 LLM,预测下一步动作 |
| 架构复杂度 | ~1000 行代码,Runner+Model+Environment 三模块极简架构,无多智能体编排 | 中等复杂度,基于 Playwright 的 SDK 封装,含 DOM 处理、多标签页管理等模块 |
| 代码复用能力 | 强:任务完成后生成可复用 CLI 工具,保存至工作区供后续直接调用 | 中:提供 SDK 供开发者集成,但单次任务为主,需手动封装复用逻辑 |
| 终端原生支持 | 是:完整终端闭环,模型在终端内自主写代码、执行、查看日志 | 否:Python SDK 形式,需开发者编写调用代码,非终端原生交互 |
| 视觉依赖 | 不依赖截图/DOM 状态,纯代码驱动浏览器 | 混合模式:支持视觉模型截图理解 + 文本 DOM 蒸馏双通道 |
| 上下文管理 | 每 20 步自动压缩历史为摘要,防止上下文膨胀 | 依赖 SDK 层面的对话历史管理,无自动压缩机制 |
| 任务验证机制 | 自我反思门控:模型必须在全新文件夹重跑最终脚本,通过日志和截图验证后才标记完成 | 无内置自我验证,依赖外部判断任务是否成功 |
| 代表性能 | Odysseys 60.8%(相对 SOTA 提升 35.1%),Mind2Web 86.7% | WebVoyager 89.1%,GAIA 66.6% |
| 适用模型 | GPT-5.4、Claude Opus 4.7、Qwen-3.5-9B 等 | GPT-5.5 Instant、Claude 4.0 Sonnet、DeepSeek 等 |
| 开源协议 | MIT(GitHub: microsoft/Webwright) | MIT(GitHub: browser-use/browser-use) |
| 主要适用场景 | 开发者构建可复用网页自动化工具、长链路任务脚本生成、端到端测试 | 开发者快速构建自定义 AI 浏览器代理、多标签页复杂任务、集成现有应用 |
| 部署方式 | 本地终端运行,需配置 LLM API 密钥 | 本地 Python 环境 + Playwright,支持 Docker 部署 |
| 反检测能力 | 无内置反检测,依赖 Playwright 基础能力 | 内置 stealth 插件、代理轮换、验证码处理等反检测机制 |
| 多标签页支持 | 通过代码自由控制,需模型自行管理 | 原生支持:自动跟踪标签页状态,支持跨标签页任务 |
Webwright的应用场景
-
自动化网页数据采集:AI 在终端编写 Playwright 脚本,批量抓取表格、填写表单、跨页整合信息,最终生成可复用的数据提取工具。
-
端到端网页测试:模型自主生成测试代码并执行,捕获截图与日志,通过自我反思验证功能正确性,输出标准化测试报告。
-
长链路在线任务:如航班比价、酒店预订等多步骤流程,利用循环和函数抽象一次性完成复杂操作,避免传统单步点击的低效。
-
可复用工具开发:将高频任务封装为参数化 CLI 工具保存至工作区,后续直接调用执行,无需重复探索。