Loading...
正在加载...
请稍候

给 AI agent 一个它能驱动的浏览器:vercel-labs/agent-browser 用 Rust 把无障碍树变成了 agent 的操作台

✨步子哥 (steper) • 2026年11月09日 21:36

给 AI agent 一个它能驱动的浏览器:vercel-labs/agent-browser 用 Rust 把无障碍树变成了 agent 的操作台

来源: vercel-labs/agent-browser · Rust · 今日 Stars: 914 · 协议: Apache-2.0
一句话: 一个原生 Rust CLI,让 AI agent 用一条条短命令驱动浏览器——snapshot 把页面压缩成带 ref 的文本,agent 点 ref、看结果、再循环


一个场景

你让 AI agent 去 GitHub 上给你的项目点个 star。

传统做法是给 agent 一个 Playwright 脚本,或者让它截屏看页面、然后用坐标点击。前者需要提前写好选择器,页面一变就废;后者 token 消耗惊人,一张截图几千 token,点错了还得重来。

agent-browser 给了第三条路:

agent-browser open github.com/vercel-labs/agent-browser
agent-browser snapshot -i       # 返回交互元素列表,每个带 ref
agent-browser click @e3         # 点 star 按钮
agent-browser get url           # 确认结果
agent-browser close

snapshot -i 返回的不是 HTML,不是截图,是一个精简的无障碍树(accessibility tree),每个可交互元素带一个 @e1、@e2 这样的 ref。agent 只需要读文本、点 ref、再读文本——一个循环就完成了浏览器操作。

为什么是"无障碍树"

浏览器自动化有三种主流路线:

  1. CSS 选择器 / XPath:Playwright、Selenium 的路线。精确,但脆弱——页面结构一变选择器就废了,而且 agent 需要提前知道选择器是什么
  2. 视觉 + 坐标:截屏让多模态模型看,然后用坐标点击。灵活,但 token 消耗巨大,一张截图几千 token,而且视觉模型对"小按钮被遮挡"这类情况判断不准
  3. 无障碍树:浏览器为屏幕阅读器维护的页面结构化表示,天然就是文本,每个元素有 role、name、state

agent-browser 选了第三条路。snapshot 命令把页面输出成这样的文本:

- link "Learn more" [ref=e1]
- button "Submit" [ref=e2]
- textbox "Search" [ref=e3]

agent 读这段文本,知道页面有什么、每个元素的类型和名字、对应的 ref 是什么。然后 click @e2 就完事了。

这比 HTML 精简一个数量级——没有 div 嵌套、没有 class 名、没有样式代码。也比截图省 token——几十个元素的页面,snapshot 可能就几百 token。

Rust 原生 + 守护进程

agent-browser 不是 Node.js 包里包了个 Playwright。它是一个原生 Rust 二进制,通过 Chrome DevTools Protocol(CDP)直接控制浏览器。

架构上有一个细节值得注意:浏览器在命令之间保持打开。

传统 CLI 浏览器自动化工具每次命令都启动新浏览器实例。agent-browser 的做法是第一次命令时启动一个后台守护进程,守护进程持有浏览器实例。后续每条命令发给守护进程,浏览器状态保持连续。

这意味着 agent 可以:

  1. open 打开页面
  2. snapshot 看元素
  3. click 点按钮
  4. snapshot 看结果
  5. fill 填表单
  6. submit 提交

每一步都是一条短 shell 命令,不需要在一个长脚本里维护状态。守护进程默认 1 小时无命令后自动关闭。

为 agent 生态设计

agent-browser 不只是个 CLI,它还自带了"技能系统":

agent-browser skills get core           # 核心循环:snapshot → act → check
agent-browser skills get core --full    # 完整命令参考
agent-browser skills list               # 专门技能:electron、slack 等

这些 skills 是给 AI agent 的"使用说明书"。agent 第一次用 agent-browser 时,跑 skills get core 就能学会怎么用——不需要人类写 prompt 教。

它还支持 MCP(Model Context Protocol):

agent-browser mcp    # 启动 MCP server over stdio

这意味着任何支持 MCP 的 agent 客户端(Claude Desktop、Cursor 等)都能直接调用 agent-browser。

命令一览

agent-browser 的命令分组很清晰:

组 命令 用途
导航和读取 open back forward reload read snapshot get is 打开页面、读内容
交互 click dblclick fill type press hover select check scroll drag upload 操作元素
等待 wait 等条件满足
捕获 screenshot pdf record download diff 截图、录屏、对比
页面状态 cookies storage network set clipboard eval Cookie、存储、网络
标签页和框架 tab frame dialog 多标签、iframe、弹窗
调试 console errors highlight inspect trace profiler vitals react a11y 调试和性能
会话和认证 session state auth profiles confirm deny 会话持久化、认证
Agent 集成 skills mcp webmcp flow chat batch plugin 与 agent 框架集成

有个细节:click 命令在目标被隐藏、禁用、在视口外、被遮挡(比如 cookie 同意横幅盖住了)时会报告失败而不是假装成功。这对 agent 很重要——它需要知道"我点成功了吗"。

引擎和云浏览器

默认用 Chrome for Testing,但也支持其他引擎:

  • Lightpanda:一个为 AI agent 优化的浏览器引擎
  • Obscura:另一个可选引擎
  • CDP 模式:连接到已运行的 Chrome 实例
  • iOS Simulator:驱动 Mobile Safari
  • 云浏览器:Browserbase、Browserless、Browser Use、Kernel、AgentCore

这意味着 agent-browser 不只是一个浏览器工具,而是一个"浏览器抽象层"——agent 用同一套命令操作不同的浏览器后端。

为什么值得关注

2025-2026 年浏览器自动化赛道很热:browser-use、Stagehand、Ego、BrowserForge 都在做。但大多数方案要么是 Python 库(需要在一个进程里跑),要么是 SaaS(数据走云端)。

agent-browser 的独特之处在于:

  1. Rust 原生:启动快、内存占用低,适合在 agent 的工具链里作为常驻工具
  2. CLI 优先:不是 SDK,是命令行工具。任何能调 shell 的 agent 都能用,不绑定编程语言
  3. 守护进程模式:浏览器状态在命令间保持,agent 不需要在一个长脚本里管理状态
  4. Skills 系统:agent 自带使用说明书,不需要人类写 prompt 教
  5. MCP 原生支持:直接接入 MCP 生态

Vercel Labs 出品也意味着它和 Next.js 生态、Vercel 的 AI SDK 有天然的协同效应。如果你在构建 AI agent,需要让它能操作浏览器,agent-browser 目前是最"agent-native"的选择。


链接

讨论回复

加载中...
正在加载回复...

正在加载回复...

推荐
智谱 GLM-5 已上线

我正在智谱大模型开放平台 BigModel.cn 上打造 AI 应用,智谱新一代旗舰模型 GLM-5 已上线,在推理、代码、智能体综合能力达到开源模型 SOTA 水平。

领取 2000万 Tokens 通过邀请链接注册即可获得大礼包,期待和你一起在 BigModel 上畅享卓越模型能力
登录