TL;DR

Microsoft Research vừa mã nguồn mở Webwright - một framework web agent tối giản chỉ ~1.000 dòng code nhưng đạt kết quả SOTA trên hai benchmark lớn nhất của ngành. Điểm khác biệt cốt lõi: thay vì dự đoán từng click UI, agent viết code Playwright và chạy bash command trong terminal. Với GPT-5.4, Webwright đạt 60.8% trên Odysseys (SOTA cũ là 44.5%) và 86.7% trên Online-Mind2Web. Framework hoàn toàn mã nguồn mở, hỗ trợ OpenAI, Anthropic và OpenRouter.

Vấn Đề Với Web Agent Truyền Thống

Hầu hết web agent hiện tại hoạt động theo kiểu screenshot → predict click → execute → repeat. Mỗi hành động là một bước riêng biệt, đồng nghĩa với hàng chục LLM call cho một tác vụ đơn giản. Cách tiếp cận này có ba điểm yếu căn bản:

  • Fragile: một click sai vị trí pixel là toàn bộ chuỗi hành động sụp đổ.

  • Đắt: nhiều bước = nhiều token = chi phí leo thang nhanh.

  • Không tái sử dụng: mỗi lần chạy là từ đầu, không có gì tích lũy.

Webwright phá vỡ vòng lặp này bằng một quan điểm đơn giản: "trình duyệt là công cụ, không phải môi trường sống của agent."

Cách Webwright Hoạt Động

Thay vì giữ một browser session liên tục, Webwright cho agent một terminal và quyền tự do viết code. Vòng lặp hoạt động như sau:

  1. Runner gửi context (task + workspace state) cho model.

  2. Model trả về bash command hoặc Python/Playwright script.

  3. Terminal thực thi, ghi lại output, logs, screenshots.

  4. Observations được đưa lại context, lặp tiếp cho đến khi hoàn thành.

Agent có thể spawn browser mới bất kỳ lúc nào, chạy nhiều session song song trong một step, và quan trọng nhất - code sinh ra là artifact bền vững, có thể tái sử dụng và parameterize thành CLI tool.

So sánh trajectory: Webwright (code-based) vs browser agent truyền thống (click-based)

So sánh trajectory: Webwright viết Playwright code (trái) vs browser agent truyền thống dự đoán từng click (phải). via Microsoft/Webwright

Quick Start

Cài đặt chỉ cần ba bước:

# Yêu cầu Python 3.10+
git clone https://github.com/microsoft/Webwright
cd Webwright
pip install -e .
playwrigt install chromium

Sau đó set API key (OpenAI, Anthropic, hoặc OpenRouter) và chạy:

python -m webwright --task "Search for the best Python web scraping libraries and compile a comparison table"

Framework hỗ trợ YAML config stackable, có thể khai báo custom tools và pre-built scripts cho các tác vụ lặp lại. Plugin chính thức đã có cho Claude CodeOpenAI Codex.

Tính Năng Nổi Bật

  • Codebase tối giản: Core agent loop ~450 lines, Playwright environment ~570 lines, CLI ~150 lines. Dependencies: chỉ httpx, pydantic, playwright, typer.

  • Self-reflection gate: Trước khi báo hoàn thành, agent phải tự chạy validation script trong folder mới - loại bỏ lỗi "claim done prematurely".

  • Context compaction: Cứ mỗi 20 steps, trajectory dài được nén thành summary để tránh token explosion.

  • Multi-backend: OpenAI, Anthropic, OpenRouter - mỗi backend chỉ ~150-200 lines code riêng.

  • Reusable scripts: Script sinh ra có thể parameterize, chạy lại với CLI args khác nhau - tiết kiệm chi phí cho tác vụ lặp.

Số Liệu Benchmark

Hai benchmark được dùng để đánh giá là Online-Mind2Web (300 tác vụ thực tế trên 136 website) và Odysseys (200 tác vụ long-horizon phức tạp).

Webwright đạt 60.8% trên Odysseys benchmark

Odysseys benchmark: Webwright + GPT-5.4 đạt 60.8%, bỏ xa Claude Opus 4.6 (44.5%) và base GPT-5.4 (33.5%).

Odysseys (200 tác vụ, long-horizon):

  • Webwright + GPT-5.4: 60.8%

  • SOTA trước đó (Claude Opus 4.6): 44.5% - cải thiện 16.3 điểm tuyệt đối

  • Base GPT-5.4 không có framework: 33.5% - cải thiện 27.3 điểm

Online-Mind2Web AutoEval benchmark

Online-Mind2Web (AutoEval, 100-step budget): Webwright + GPT-5.4 đạt 86.7%, Webwright + Claude Opus 4.7 đạt 84.7%.

Online-Mind2Web (300 tác vụ, 136 website):

  • Webwright + GPT-5.4: 86.7% overall (Easy: 96.2%, Medium: 88.1%, Hard: 76.6%)

  • Webwright + Claude Opus 4.7: 84.7% overall (hard tasks: 80.5% - tốt hơn GPT-5.4 ở phân khúc khó)

Về chi phí: GPT-5.4 tốn trung bình $2.37/task (26.3 steps), Claude Opus 4.7 tốn $6.09/task (21.9 steps - ít bước hơn nhưng đắt hơn 2.5 lần).

Giới Hạn Và Khi Nào Nên Dùng

Webwright hoạt động tốt với:

  • Multi-site research - tổng hợp từ nhiều nguồn

  • Conditional form filling - logic phức tạp

  • Long-tail scraping qua nhiều trang

  • Tác vụ lặp lại cần script tái sử dụng

Webwright kém hiệu quả với:

  • Canvas-rendered apps (trình soạn thảo rich text, game web)

  • Real-time interactive content (live chart, WebSocket feed)

  • Fine-grained drag-and-drop

  • Dynamic DOM ID shifts liên tục

Nếu pipeline của bạn cần automation lặp đi lặp lại trên các form, booking, research web phức tạp - Webwright là lựa chọn đáng thử. Nếu cần tương tác với canvas hoặc real-time UI, cần kết hợp thêm fallback low-level action.

Kết

Webwright là minh chứng rõ ràng rằng kiến trúc đơn giản + đúng abstraction layer thắng hệ thống phức tạp. Thay vì stack multi-agent, graph engine và persistent browser session, Microsoft Research chỉ cần một terminal, một workspace và model đủ mạnh để viết code. Kết quả là SOTA với 1.000 dòng - trong khi nhiều framework competitor cần hàng chục nghìn.

Repo tại via GitHub microsoft/Webwright. Plugin cho Claude Code và OpenAI Codex đã sẵn trong repo.