agent-browser:让 AI 代理用 Shell 驱动浏览器
一个给 AI agent 用 Shell 操作网页的 Rust CLI,靠 snapshot 引用元素,不必维护脆弱坐标。
GitHub vercel-labs/agent-browser 更新 2026-11-06 分支 main 星标 45.9K 分叉 3.1K
Rust TypeScript 浏览器自动化 Chrome for Testing AI agents CLI

🧭 决策指南

适合,如果你

  • 你要让 AI agent 按 open、snapshot、click、get 操作网页。
    README「Quick start」展示了这组命令;「For AI agents」说明了 agent 使用流程。
  • 你的 agent harness 需要 MCP、skills.sh 或 AGENTS.md 接入浏览器能力。
    README「For AI agents」列出 agent-browser mcp、npx skills add 和 AGENTS.md 配置。
  • 项目需要 Chrome DevTools Protocol、Lightpanda、Obscura 或云浏览器提供商。
    README「How it works」明确列出 --cdp、--auto-connect、--engine 以及 Browserbase、Browserless 等提供商。

不适合,如果你

  • 你的自动化流程不能在导航或 DOM 变化后重新执行 snapshot。
    README「Quick start」说明 refs 只描述 snapshot 时刻的页面,变化后必须重新 snapshot。
  • 目标页面经常被 consent banner 覆盖,且流程不能处理覆盖元素后重试 click。
    README「Quick start」说明覆盖、隐藏、禁用或视口外目标会使 click 失败。
  • 运行环境不是 macOS、Linux 或 Windows x64,且无法自行提供对应构建方式。
    README「Platforms」只列出 macOS ARM64/x64、Linux ARM64/x64 glibc/musl 和 Windows x64。

前置条件

  • 预编译安装需要 Node.js/npm;源码构建需要 Node.js 24 或更高、pnpm 11 或更高以及 Rust。 / Prebuilt installation uses Node.js/npm; source builds require Node.js 24+, pnpm 11+, and Rust.
  • 首次使用需要运行 agent-browser install 下载 Chrome for Testing;Linux 可用 agent-browser install --with-deps 安装系统库。 / First use requires agent-browser install to download Chrome for Testing; Linux can use agent-browser install --with-deps for system libraries.
  • 项目支持 macOS ARM64/x64、Linux ARM64/x64 glibc/musl 和 Windows x64。 / The project supports macOS ARM64/x64, Linux ARM64/x64 glibc/musl, and Windows x64.

第一步命令(README 原文)

agent-browser open example.com

要注意

  • 不要跨导航复用 @e1 等旧引用,否则 click 可能针对过期页面状态。
    README「Quick start」关于 refs 与 snapshot 时点的说明。
  • 被 consent banner 覆盖时,先处理覆盖元素再重新 snapshot 和 click。
    README「Quick start」关于 click 失败条件的说明。
  • 源码端到端测试会启动真实 headless Chrome,并要求使用 --ignored --test-threads=1。
    README「Development」中的 cargo test e2e -- --ignored --test-threads=1。
  • 不同 --session 使用独立 daemon 和 browser,默认空闲一小时后关闭。
    README「How it works」关于 session、daemon 和一小时超时的说明。

替代方案

  • Browserbase:需要云浏览器提供商而不是本地 Chrome for Testing 时,README 将 Browserbase 列为可用提供商。
    README「How it works」
  • Browserless:需要使用 Browserless 云浏览器服务时,README 将其列为可连接的云浏览器提供商。
    README「How it works」
  • Lightpanda:希望用不同于 Chrome for Testing 的浏览器引擎时,README 支持通过 --engine 选择 Lightpanda。
    README「How it works」

材料未说明

  • 材料没有给出不同浏览器引擎的性能、兼容性或资源占用对比。 / The material does not provide performance, compatibility, or resource-usage comparisons across browser engines.
  • 材料没有说明 Chrome for Testing 的具体版本、并发会话上限或吞吐量。 / The material does not specify the Chrome for Testing version, concurrent-session limit, or throughput.
  • 材料没有给出认证流程、auth vault 的配置示例及安全边界的详细限制。 / The material does not provide detailed authentication examples or limits for the auth vault and security boundaries.
  • 材料没有说明 Windows、macOS 和 Linux 各平台的安装失败处理或系统依赖差异。 / The material does not describe installation-failure handling or system-dependency differences across Windows, macOS, and Linux.

💡 深度解析

6
适合 我用 Shell 编排 AI 代理,需要让它在网页上完成导航、点击和结果确认,而不是运行预先写死的完整脚本;agent-browser 是否适合?
适合读者: 使用 Shell 编排 AI 代理、需要让模型逐步操作真实网页的自动化开发者

适合,因为它把浏览器操作拆成模型容易调用的短命令,并保留跨命令状态。

  • snapshot -i 会返回紧凑的可访问性树,并给交互元素生成如 @e1 的引用,模型不必处理完整 DOM。
  • 后台 daemon 会持续维护浏览器;每个 session 拥有独立 daemon 和浏览器,因此可以执行“观察—动作—再次观察”的循环。
  • README 明确要求导航或 DOM 变化后重新获取 snapshot,避免继续使用失效引用;click 遇到隐藏、禁用、遮挡元素时也会失败,而不是假报成功。
  • Shell 接口覆盖 open、snapshot、click、get 等核心步骤,且有与当前 CLI 版本匹配的 skills,可供代理读取命令和等待规则。

它更适合需要逐步决策的代理,而不是只想用一个稳定脚本批量回放固定定位器的任务。

  • README:agent-browser is a native Rust CLI that gives an AI agent a browser it can drive one command at a time
  • README:snapshot returns the page as compact text with a ref such as @e1
  • README:After navigation or a DOM change, take a new snapshot before using refs again
  • README:How it works;For AI agents
agent-browser open example.com
材料未说明:README 未说明特定 AI 模型在复杂页面上的规划准确率、调用次数或总体延迟。;README 未说明代理如何自动判断业务动作已经成功。
适合 我使用 MCP 客户端接入 AI 代理,并且无法维护一套与 agent-browser CLI 同步的手写命令说明;这个项目是否能降低版本不一致问题?
适合读者: 使用 MCP 客户端接入代理、希望避免工具说明与 CLI 版本不一致的集成工程师

适合,因为项目同时提供 MCP 入口和按已安装 CLI 版本提供的 skills,但它不会替代理解代理执行结果的工程逻辑。

  • README 明确支持 agent-browser mcp,该命令通过 stdio 启动 MCP server,适合 MCP 客户端接入。
  • agent-browser skills get core 会提供核心循环、refs、等待和常见工作流;--ref commands 与 --full 还能加载命令参考和模板。
  • README 说明 discovery skill 只是一个薄 stub,会让代理加载当前 CLI 的 skills get core,因此文档来源跟随已安装版本,而不是长期复制到项目里的静态文本。
  • MCP 只是接入层;snapshot 引用仍会因导航或 DOM 变化失效,代理仍必须重新观察并处理弹窗、等待和失败恢复。

这对不想手工维护工具提示的 MCP 集成尤其合适,但 README 没有证明所有 MCP 客户端都支持同样的会话生命周期。

  • README:For AI agents;agent-browser mcp starts an MCP server over stdio
  • README:agent-browser skills get core
  • README:The installed skill is a thin stub that tells the agent to load agent-browser skills get core
  • README:After navigation or a DOM change, take a new snapshot before using refs again
agent-browser skills get core
材料未说明:README 未列出具体 MCP 客户端的兼容矩阵、并发行为或错误传播方式。;README 未说明 skills 内容是否会随每次命令调用自动注入到模型上下文。;README 未说明 MCP 会话断线后的 daemon 和浏览器状态恢复策略。
视情况 我需要让 AI 代理操作已登录的企业后台,但必须限制可访问域名和高风险动作;agent-browser 的安全能力是否足以直接满足这个约束?
适合读者: 负责高权限企业代理安全的工程师,需要限制域名、动作和认证状态

视情况:项目提供了面向代理的安全控制,但 README 不足以证明它单独满足高权限生产环境的完整安全要求。

  • Commands 表包含 confirm、deny、auth、profiles、session 和 state;项目洞察还列出认证保险库、域名允许列表和动作策略,说明它考虑了代理自主操作的风险边界。
  • 每个 session 对应独立 daemon 和浏览器,有利于隔离不同任务的页面、标签页及认证状态。
  • 项目洞察明确提醒 cookies、storage、network、eval 和认证功能可能访问高敏感度浏览器状态;生产环境需要最小权限、域名限制、审计和人工确认。
  • Apache-2.0 只说明代码许可,不代表目标网站允许自动化,也不替企业解决凭据保管、审计留存、MFA、越权和回滚问题。

所以它可作为安全控制层的一部分,但不能仅凭 README 把它视为完整的企业代理安全方案。

  • README Commands:Sessions and auth includes session, state, auth, profiles, confirm, deny
  • 项目洞察 key_features:认证保险库、域名允许列表和动作策略等安全能力
  • 项目洞察 usage_limitations:cookies、storage、network、eval 和认证功能可以访问高敏感度浏览器状态
  • 项目数据:Apache License 2.0
agent-browser --help
材料未说明:README 未描述域名允许列表、动作策略和 confirm/deny 的默认值、配置格式及绕过方式。;README 未说明审计日志是否包含完整动作、认证访问和策略决策记录。;README 未说明 MFA、验证码和高风险动作的具体拦截或人工批准流程。
视情况 我在 Linux CI 使用 Chrome for Testing,需要跨多条 CLI 命令保持登录、标签页和页面状态;agent-browser 是否适合,部署时要注意什么?
适合读者: 在 Linux CI 中运行 Chrome for Testing、需要持久登录状态完成后台流程的企业自动化工程师

视情况:状态保持和 Linux 安装路径匹配,但 CI 的认证、资源和无图形环境约束仍可能成为阻碍。

  • daemon 会在第一条命令启动,并让浏览器保持打开;每个 --session 对应独立 daemon 和浏览器,适合把多步后台流程放在同一会话中。
  • Chrome for Testing 是默认浏览器;Linux 可使用 agent-browser install --with-deps 安装系统库,README 也提供了原生 Linux ARM64、x64、glibc 和 musl 二进制。
  • sessions、state、auth 和 profiles 覆盖会话及认证持久化,但 daemon 默认在一小时无命令后关闭;持久化行为还取决于是否配置 session persistence。
  • 如果改用云浏览器或 CDP,README 只列出连接方式和提供商,并未承诺 CI 中的认证、并发资源或网络行为与本地 Chrome 一致。

因此它能覆盖基础部署,但企业 CI 仍需单独核实凭据注入、浏览器依赖和并发 session 的容量。

  • README:How it works;Each --session gets its own daemon and browser
  • README:By default, the daemon closes a headless browser and exits after one hour without commands
  • README:Linux: agent-browser install --with-deps
  • README:Platforms;Sessions and auth
agent-browser install --with-deps
材料未说明:README 未给出单个 Linux CI worker 可承载的 session 数量、内存消耗或启动时间。;README 未说明认证保险库与 CI secret manager 的具体集成方式。;README 未说明目标后台系统的验证码、多因素认证和反自动化策略是否可用。
适合 我维护一个 React 后台,需要在回归测试中截图、比较页面差异,并在失败时查看 console、errors 和 React 信息;agent-browser 是否适合替代一部分现有浏览器工具?
适合读者: 负责 React 后台端到端回归的测试工程师,需要截图、DOM 差异和调试诊断

适合用于这类回归与调试流程,因为命令表同时覆盖捕获、差异比较和 React 诊断,而不只提供点击能力。

  • Commands 表列出 screenshot、pdf、record、download 和 diff,可以保存视觉或页面结果用于回归检查。
  • 调试组包含 console、errors、trace、profiler、vitals、react 和 a11y,与 React 页面失败定位直接相关。
  • highlight、inspect 和 snapshot 可帮助确认代理或测试实际命中了哪个元素;页面内容也能通过 get、read 和可访问性树读取。
  • 但项目的主要观察界面是可访问性树;README 没有声称它能完整表达 Canvas、像素布局或所有 Shadow DOM,因此纯视觉回归不能只依赖 snapshot。

所以它适合作为端到端操作、证据采集和故障诊断层;若验收标准是像素级视觉一致性,仍需确认 screenshot/diff 的具体比较能力。

  • README Commands:Capture includes screenshot, pdf, record, download, diff
  • README Commands:Debug and performance includes console, errors, highlight, inspect, trace, profiler, vitals, react, a11y
  • README:agent-browser is a native Rust CLI that reads pages as an accessibility tree
  • 项目洞察 usage_limitations:可访问性快照可能无法完整表达视觉布局、Canvas 内容或某些自定义组件
agent-browser open example.com
材料未说明:README 未说明 diff 是文本、DOM、截图还是多种差异模式,也未给出比较阈值。;README 未说明 React 诊断命令支持的 React 版本范围。;README 未提供在复杂 Shadow DOM 或 Canvas 页面上的覆盖率数据。
视情况 我不能总是下载并启动本地 Chrome for Testing:部分环境已有运行中的 Chrome,另一些环境要求使用 Lightpanda 或 Browserbase;agent-browser 能否保持同一套 CLI 操作方式?
适合读者: 需要连接已经运行的 Chrome、Lightpanda 或云浏览器的基础设施工程师

视情况:项目明确提供多种浏览器连接模式,但不同引擎和云提供商的兼容性、延迟及能力并不由 README 保证。

  • Chrome for Testing 是默认浏览器,同时支持通过 --cdp 或 --auto-connect 连接已运行的 Chrome,适合不能重复启动浏览器的环境。
  • README 还列出 --engine 选择 Lightpanda 或 Obscura,并支持 iOS Simulator 以及 Browserbase、Browserless、Browser Use、Kernel、AgentCore 等云浏览器。
  • 这些模式共享 agent-browser 的命令面,包括导航、snapshot、交互、session 和调试命令,基础设施选择与代理调用接口相对解耦。
  • 但项目洞察明确指出替代引擎、iOS 模拟器和云浏览器在功能、兼容性、延迟及调试能力上可能不同;目标网页使用 Canvas、非标准控件或反自动化机制时,快照与操作稳定性也会下降。

因此它适合统一接入层的目标,但不应把默认 Chrome 的行为直接推断到所有后端。

  • README:How it works;You can also attach to a running Chrome with --cdp or --auto-connect
  • README:select the Lightpanda or Obscura engine with --engine
  • README:use a cloud browser provider such as Browserbase, Browserless, Browser Use, Kernel, or AgentCore
  • 项目洞察 common_pitfalls:使用云浏览器、替代引擎或 iOS 模拟器时,功能、兼容性、延迟和调试能力可能不同
npx agent-browser open example.com
材料未说明:README 未提供各浏览器引擎和云提供商支持的命令、版本或功能矩阵。;README 未给出 CDP、云浏览器和本地 Chrome 之间的延迟、成本及并发数据。;README 未说明 iOS Simulator 模式是否支持全部 session、auth 和调试命令。

✨ 核心亮点

  • Rust 原生 CLI,按命令驱动 Chrome for Testing
  • snapshot 输出可供 AI 使用的页面引用,如 @e1
  • 支持 MCP、skills、WebMCP 与多种浏览器引擎
  • 原生覆盖 macOS、Linux 与 Windows x64

🔧 工程化

  • 用 open、snapshot、click、get 组成 AI 浏览器操作循环
  • 后台 daemon 保持浏览器会话,支持 session 持久化
  • 提供 cookies、network、trace、profiler、a11y 等调试命令

⚠️ 风险

  • DOM 变化或导航后旧 ref 失效,必须重新执行 snapshot
  • 隐藏、禁用或被 consent banner 覆盖时 click 会失败
  • Linux 使用 --with-deps 会安装浏览器系统库,增加环境改动
  • daemon 默认一小时无命令后关闭 headless browser

👥 适合谁?

  • 需要让 AI agent 从 Shell 操作网页的自动化团队
  • 使用 MCP、AGENTS.md 或 skills.sh 接入 agent harness 的开发者
  • 需要 Chrome DevTools Protocol、iOS Simulator 或云浏览器的项目