浏览器自动化正在从「人写脚本」转向「AI agent 自己操作网页」。Vercel Labs 的开源项目 agent-browser 是这条路线上的代表项目,做成一个开箱即用的命令行工具:Rust 原生实现的浏览器自动化 CLI,GitHub star 数 41.7k、fork 数 2.8k,Apache-2.0 协议,134 名贡献者,已发布 106 个版本——最新版 v0.36.0 于 2026 年 9 月 1 日发布,项目仍处于高频迭代状态。

用引用快照代替 CSS 选择器

传统浏览器自动化以 Playwright、Puppeteer 为代表,面向「人写的脚本」:人用 CSS 选择器或 XPath 定位元素。这套方式交给 AI agent 后很快失效——agent 无法提前知道页面长什么样,CSS 选择器又脆弱,页面一改就断。

agent-browser 换了一种定位思路:先把页面变成一张带引用的无障碍树快照。运行 agent-browser snapshot,工具输出当前页面的无障碍树,每个可交互元素带一个稳定引用(如 @e1、@e2),agent 直接按引用操作:

agent-browser open example.com
agent-browser snapshot
agent-browser click @e2
agent-browser fill @e3 test@example.com
agent-browser screenshot page.png

点击时如果目标被其他元素(授权弹窗、模态框等)遮挡,命令会提前报错并指出遮挡元素,而不是静默点错位置。引用快照取代脆弱的选择器,是这套工具让 agent 可靠操作网页的关键设计。

语义定位与传统选择器并存

除了引用快照,它保留了传统定位方式,两者可混用:

  • 语义定位:find role button click --name "Submit"、find label fill "Email"、find placeholder 等,按无障碍角色、文本、标签、占位符找元素;
  • 传统选择器:click #submit、fill #email 这类 CSS 写法仍然可用。

覆盖完整操作链的命令集

核心命令能串起「打开页面 → 读取 → 交互 → 校验 → 输出」的完整流程:

  • 读取:snapshot 输出无障碍树;read 拉取页面正文(优先 Markdown,支持 --llms 读取 llms.txt);get text/html/value/attr 取元素内容;
  • 交互:click、dblclick、fill、type、press、hover、check、drag、upload、scroll,以及 wait(等待元素、文本、URL 或 JS 条件);
  • 输出:screenshot、pdf、js eval;
  • 调试与审计:console、errors、trace、profiler、无障碍审计(内嵌 axe-core 4.12.1,可离线运行)、React 组件树内省(需以 --enable react-devtools 启动)、Web Vitals 指标(LCP、CLS、TTFB、FCP、INP);
  • 网络控制:network route 拦截与 mock 请求、network har 录制 HAR,请求日志可按状态码、类型过滤;
  • 批量:batch 一次调用串起多条命令(参数模式或 stdin 传 JSON),避免多步流程反复启动进程。

CLI 与 MCP 双形态

同一套能力以两种形态提供:命令行给脚本和人工使用;agent-browser mcp 启动 Model Context Protocol 服务器(stdio),给 Claude、Codex 这类 MCP 客户端使用。MCP 工具按 profile 分组(core / network / react / debug / tabs / mobile 等),默认只开 core 以保持上下文精简;工具带类型化字段,MCP 客户端能展示有意义的授权确认。项目还在实验 WebMCP——页面自己声明工具的协议,agent-browser webmcp list、webmcp invoke 可直接调用页面提供的工具。

会话隔离与登录态持久化

agent 跑自动化最麻烦的是登录态。agent-browser 提供多种持久化方式:复用本机 Chrome profile(--profile Default,只读快照,不改动原 profile)、--session 会话自动保存与恢复 cookies 和 localStorage、--state 状态文件、以及 auth vault(凭据本地加密存储,AI 看不到明文密码)。多个 --session 可并行跑相互隔离的浏览器实例,互不干扰。

安装与快速上手

前置只有 Chrome:agent-browser install 会自动从 Chrome for Testing 渠道下载专用浏览器,已装好的 Chrome、Brave、Playwright、Puppeteer 环境会被自动识别。三种安装方式:

npm install -g agent-browser   # 官方推荐,安装原生 Rust 二进制
brew install agent-browser     # macOS
cargo install agent-browser    # Rust 用户

Linux 下用 agent-browser install --with-deps 一并安装系统依赖;agent-browser doctor 可诊断环境并自动清理失效的守护进程文件。

与 Playwright、Puppeteer 的定位差异

Playwright 和 Puppeteer 是「人写脚本」时代的工具,API 丰富、生态成熟,适合确定性的测试与抓取;agent-browser 则是「agent 自己决定做什么」的工具——它把页面状态序列化成 agent 能理解的结构(引用快照),并提供 MCP 接入,让大模型直接获得操作网页的能力。两者不是替代关系:需要库级别的精细控制时仍可选用 Playwright;而要把浏览器能力快速交给 agent,agent-browser 是目前最直接的选择。

「无障碍树 + 引用快照 + MCP」是当下让 agent 可靠操作网页的最实用组合,agent-browser 是把这个组合开箱即用化的代表项目。如果你正打算让 AI 替你操作网页,从 npm install -g agent-browser 开始,用 open、snapshot、click 三步即可跑通第一个自动操作。