agent-browser:快速 Rust CLI,用于 AI 浏览器自动化

agent-browser:快速 Rust 命令行工具,用于 AI 浏览器自动化

为什么需要新的浏览器自动化工具?

AI 代理越来越需要与真实网页交互:测试 UI 流程、抓取动态内容或爬取电商站点。现有工具如 Selenium 或 Playwright 是优秀的库,但它们需要学习曲线、设置开销,且往往运行时体积较大。若让 Claude、GPT‑4、Gemini 等 AI 系统控制浏览器,采用轻量级、命令行接口从任何语言调用将更为方便。

进入 agent-browser —— 一款自带 Rust 可执行文件的单二进制,支持 macOS、Linux、Windows,并在原生二进制不可用时自动回退至 Node.js。它通过 Node.js 守护进程管理 Playwright 实例,提供 Playwright(Chromium, Firefox, WebKit)的全部功能,同时保持 CLI 的速度与确定性。

快速开始

# 全局安装
npm install -g agent-browser
# 下载捆绑的 Chromium
agent-browser install
# 打开网址
agent-browser open https://example.com
# 取基于引用的快照
agent-browser snapshot --json
# 通过引用点点击按钮
agent-browser click @e2
# 截图
agent-browser screenshot page.png
# 关闭
agent-browser close

安装选项

  • Rust 原生pnpm build:native 需要 Rust 1.75+。启动最快。
  • Node.js 回退 – 在所有环境下都可用,但略慢。
  • Linux 依赖agent-browser install --with-deps 可自动安装 Playwright 的系统级依赖。

功能与命令

类别 命令 描述
核心 open <url> 浏览至 URL(别名:gotonavigate)。
click <sel> 点击元素。
fill <sel> <text> 清空并输入文本。
screenshot [path] 截全页或视口。
snapshot 输出带确定性引用的可访问树(如 @e1, @e2)。
wait <selector> 等待可见或满足自定义条件。
eval <js> 执行任意 JavaScript。
close 终止浏览器实例。
语义定位器 find role button click --name "Submit" 按 ARIA 角色和名称点击。
find text "Sign In" click 按显示文本点击。
会话隔离 agent-browser --session chat1 open https://foo.com 为并行代理创建隔离会话。
无头 / 有头 --headed 显示 GUI 以便调试。
流式 AGENT_BROWSER_STREAM_PORT=9223 agent-browser open https://example.com 打开 WebSocket,流式传输视口帧(适用于“配对浏览”)。
授权 & 头信息 --headers '{"Authorization": "Bearer <token>"}' 为每个源设置 HTTP 头,跳过登录 UI。
调试 & 日志 trace start, trace stop 记录 CDP 轨迹以便调试。

架构快照

  • Rust CLI – 解析命令,构造 JSON DSL,然后发送给守护进程。
  • Node.js 守护进程 – 启动并管理 Playwright 浏览器;在调用之间保持进程存活。
  • 客户端-守护进程设计 – 每系统仅有一个守护进程,避免每次命令都重启 Chromium。

AI 代理如何使用

  1. 打开 页面。
  2. 采用 snapshot --json 取快照。结果包含结构化树(rolenameref)。
  3. AI 推理器解析树,找到目标引用(如 @e3 对应邮箱框)。
  4. 执行 CLI 命令(click @e3fill @e4 "[email protected]")。
  5. 如页面变动,重新快照,随后重复。

CLI 的 JSON 输出非常小(约 2‑3 KB),非常适合有限提示 token 的 LLM。

用例

场景 agent-browser 的帮助
CI/CD 测试 用零配置脚本在 CI 任务中自动化 UI 测试。
无服务器函数 部署一个最小 Lambda,运行 CLI 浏览器进行抓取或集成任务。
AI-人类协同 通过 WebSocket 流式传输视口,让 AI 与人类配对浏览。
无头分析 在不加载 GUI 的情况下收集表单数据或商品价格。
API 绕过流程 直接传送授权头,跳过登录页,直接访问受限 API。

示例:用 10 行代码打造迷你抓取器

#!/usr/bin/env node
const { execSync } = require('child_process');

execSync('agent-browser install');
execSync('agent-browser open https://books.toscrape.com');
const data = execSync('agent-browser snapshot -i --json').toString();
const snapshot = JSON.parse(data).data.snapshot;
console.log('Page has books:', snapshot.children.filter(c=>c.role==='link').length);
execSync('agent-browser close');

运行 node scrape.js,即可得到书链接数的快速统计,全部通过 CLI 完成。

性能与可靠性

  • 原生 Rust 二进制在 macOS 上启动不到 50 ms,远快于需 200–300 ms 的 Node‑only 方案。
  • 守护进程在首次运行后保持驻留,后续命令几乎瞬时。
  • 在所有主流平台上均可运行;二进制通过 GitHub releases 分发。

如何参与

  • 欢迎在 GitHub 上贡献:fork、提交 PR,或提出问题。
  • 想要更多语义?添加新的 find 操作或支持更多浏览器引擎。
  • 文档不断演进——查看 docs/ 文件夹和 CLI --help 输出,获取最新命令。

最后思考

agent‑browser 将 Web 自动化交到任何 AI 系统或开发者的指尖,提供一条命令即可完成。它将 Rust 速度、Playwright 多样性以及 AI‑友好的引用快照相结合,成为测试、抓取和构建面向代理工作流的优选工具。无论是自动化 CI 流水线,还是让大型语言模型进行实时浏览,agent‑browser 都给你一个轻量、确定且易编程的接口,适合在 shell 或无服务器函数中使用。

Happy automating!

原创文章: 查看原文

分享本文