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(别名:goto、navigate)。 |
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 代理如何使用
- 打开 页面。
- 采用
snapshot --json取快照。结果包含结构化树(role、name、ref)。 - AI 推理器解析树,找到目标引用(如
@e3对应邮箱框)。 - 执行 CLI 命令(
click @e3、fill @e4 "[email protected]")。 - 如页面变动,重新快照,随后重复。
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!
原创文章:
查看原文