紧凑文本输出最小化上下文使用,比 JSON 节省 10x token。
50+ 命令覆盖导航、表单、截图、网络、存储。
# 安装
$ npm install -g agent-browser
$ agent-browser install # 下载 Chrome(仅首次)
# 或直接试用
$ npx agent-browser open example.com
专为 AI 代理上下文效率而优化的完整浏览器自动化
紧凑文本输出比 JSON 使用更少 token,~200-400 token vs ~3000-5000 全 DOM
快照返回带 @ref 的可访问性树,确定性元素选择,无需重新查询 DOM
CLI 和守护进程均为纯 Rust 实现,直接 CDP 通信,零 Node.js 依赖
50+ 命令:导航、表单、截图、网络拦截、Cookie/存储、标签管理、PDF 等
多实例隔离浏览器,独立认证、存储和导航历史,支持会话持久化
macOS (ARM64 / x64)、Linux (ARM64 / x64)、Windows (x64) 全原生二进制
snapshot 命令返回紧凑的可访问性树,每个元素都有唯一引用如 @e1、@e2。
# 导航并获取快照
$ agent-browser open example.com
$ agent-browser snapshot -i
# 输出:
# - heading "Example Domain" [ref=e1] [level=1]
# - link "More information..." [ref=e2]
# 使用引用交互
$ agent-browser click @e2
$ agent-browser screenshot page.png
$ agent-browser close
多种安装方式,三步即可运行
# npm(推荐 · 全平台)
$ npm install -g agent-browser
# macOS Homebrew
$ brew install agent-browser
# Rust Cargo
$ cargo install agent-browser
# 项目本地依赖
$ npm install agent-browser
$ agent-browser install # Chrome for Testing
# Linux 安装系统依赖
$ agent-browser install --with-deps
# 无需安装即可试用
$ npx agent-browser open example.com
$ npx agent-browser snapshot -i
$ npx agent-browser click @e1
# 打开网页
$ agent-browser open example.com
# 获取快照(仅交互元素)
$ agent-browser snapshot -i
# 输出:
# - heading "Example Domain" [ref=e1]
# - link "More information..." [ref=e2]
# 使用引用点击
$ agent-browser click @e2
# 截图
$ agent-browser screenshot page.png
# 注释截图(带编号标签)
$ agent-browser screenshot --annotate
# 关闭浏览器
$ agent-browser close
50+ 命令覆盖全部自动化场景
open <url> # 导航到 URL
click <sel> # 点击元素
dblclick <sel> # 双击
fill <sel> <text> # 清空并填充
type <sel> <text> # 输入文本
press <key> # 按键(Enter, Tab 等)
hover <sel> # 悬停
select <sel> <val> # 选择下拉
check / uncheck <sel> # 复选框
focus <sel> # 聚焦元素
drag <src> <tgt> # 拖放
upload <sel> <files> # 上传文件
snapshot # 可访问性树 + 引用
snapshot -i # 仅交互元素
snapshot -i -C # 含光标交互元素
snapshot -c -d 3 # 紧凑 + 限制深度
screenshot [path] # 截图
screenshot --full # 全页面
screenshot --annotate # 带编号标签
pdf <path> # 保存 PDF
keyboard type <text> # 真实按键输入
keyboard inserttext <t> # 插入文本
scroll <dir> [px] # 滚动页面
eval <js> # 运行 JavaScript
get text <sel> # 获取文本内容
get html <sel> # 获取 innerHTML
get value <sel> # 获取输入值
get attr <sel> <attr> # 获取属性
get title # 页面标题
get url # 当前 URL
get cdp-url # CDP WebSocket URL
get count <sel> # 统计匹配元素
get box <sel> # 边界框
get styles <sel> # 计算样式
is visible <sel> # 是否可见
is enabled <sel> # 是否启用
is checked <sel> # 是否勾选
cookies # 获取所有 cookie
cookies set <n> <v> # 设置 cookie
cookies clear # 清除 cookie
storage local # localStorage
storage local set <k> <v>
storage session # sessionStorage
find role button click --name "Submit" # 按角色
find text "Sign In" click # 按文本
find label "Email" fill "test@test.com" # 按标签
find placeholder "搜索" fill "query" # 按占位符
find alt "logo" click # 按 alt 文本
find title "Menu" click # 按 title
find testid "submit-btn" click # 按 data-testid
find first ".item" click # 第一个匹配
find last ".item" click # 最后一个匹配
find nth 2 "a" text # 第 N 个
# 选项: --name <name> --exact
wait <selector> # 等待元素可见
wait <ms> # 等待毫秒
wait --text "Welcome" # 等待文本出现
wait --url "**/dash" # 等待 URL
wait --load networkidle # 等待网络空闲
wait --fn "window.ready" # JS 条件
wait "#sp" --state hidden # 消失
network route <url> # 拦截
network route <url> --abort # 阻止
network route <url> --body <j> # 模拟
network unroute [url] # 移除
network requests # 查看
network requests --filter api # 过滤
clipboard read / write / copy / paste
set viewport <w> <h> [scale] # 视口
set device "iPhone 14" # 模拟设备
set geo <lat> <lng> # 地理位置
set offline [on|off] # 离线模式
set headers <json> # HTTP 头
set credentials <u> <p> # 基本认证
set media [dark|light] # 配色方案
tab # 列出标签页
tab new [url] # 新建标签页
tab <n> # 切换到第 n 个
tab close [n] # 关闭标签页
window new # 新建窗口
frame <sel> # 切换 iframe
frame main # 返回主框架
back / forward / reload # 导航
dialog accept / dismiss # 对话框
diff snapshot # 当前 vs 上次
diff snapshot --baseline f.txt # vs 文件
diff screenshot --baseline b.png # 视觉差异
diff url v1.com v2.com # 比较 URL
diff url a b --screenshot # URL 视觉对比
trace start / stop # 记录追踪
profiler start / stop # Chrome 分析
console # 控制台消息
errors # 页面错误
highlight <sel> # 高亮元素
inspect # DevTools
state save / load / list # 状态管理
connect <port> # CDP 连接
客户端-守护进程架构实现最优性能
解析命令,与守护进程通信。即时启动,零延迟体验。无需 Node.js 运行时。
纯 Rust 守护进程,直接 CDP 通信管理 Chrome。自动启动,命令间持久化。
使用 Chrome for Testing 或自定义浏览器。支持有头/无头模式,扩展在两种模式下均可工作。
守护进程在首个命令时自动启动 · 命令间持久化 · 可配置空闲超时自动关闭
多种方式持久化登录,隔离浏览器实例
# 不同会话
$ agent-browser --session agent1 open site-a.com
$ agent-browser --session agent2 open site-b.com
# 列出活动会话
$ agent-browser session list
# 每个会话拥有独立:
# 浏览器实例 · Cookie · 存储 · 导航历史
# 持久化浏览器配置文件
$ agent-browser --profile ~/.myapp open app.com
# 会话自动保存/恢复
$ agent-browser --session-name twitter open twitter.com
# 状态加密 (AES-256-GCM)
$ export AGENT_BROWSER_ENCRYPTION_KEY=<hex>
# 头作用域限于目标来源(安全)
$ agent-browser open api.example.com \
--headers '{"Authorization":"Bearer <token>"}'
# 适用于: 跳过登录 · API 测试 · 切换用户
# 保存凭据(始终加密)
$ echo "pass" | agent-browser auth save github \
--url https://github.com/login \
--username user --password-stdin
# 一键登录(LLM 永远不会看到密码)
$ agent-browser auth login github
| 方法 | 适用场景 | 标志 |
|---|---|---|
| 持久化配置文件 | 完整浏览器状态跨重启 | --profile <path> |
| 会话持久化 | 按名称自动保存/恢复 | --session-name <name> |
| 浏览器导入 | 从已登录 Chrome 获取认证 | --auto-connect + state save |
| 状态文件 | 加载之前保存的状态 | --state <path> |
| 认证保险库 | 加密存储凭据,按名称登录 | auth save / auth login |
为 AI 代理安全部署而设计的多层防护
本地存储凭据(始终加密),LLM 永远不会看到密码
用分隔符包装输出,LLM 区分工具输出和不受信任内容
限制导航到受信任域名,阻止子资源和 WebSocket 请求
静态策略文件控制破坏性操作
对敏感操作类别(eval、download)需要显式批准
防止上下文窗口溢出,可配置最大输出字符数
# 安全部署示例
$ agent-browser \
--allowed-domains "example.com,*.example.com" \
--content-boundaries \
--max-output 50000 \
--confirm-actions eval,download \
--action-policy ./policy.json \
open https://example.com
支持主流 AI 编程助手和云浏览器提供商
# 为所有支持的 AI 编程助手添加技能
$ npx skills add vercel-labs/agent-browser
# 或直接告诉代理
Use agent-browser to test the login flow.
Run agent-browser --help to see available commands.
临时微型 VM 中运行,无需外部服务器
Sandbox.create()
云浏览器基础设施,Sessions API
-p browserless
远程浏览器基础设施,轻松部署
-p browserbase
AI 代理云浏览器,免费额度可用
-p browseruse
隐身模式 + 持久化配置文件
-p kernel
真实 Mobile Safari,支持真机
-p ios --device "iPhone 16 Pro"
CDP 模式、流式预览、命令链、本地文件
连接现有浏览器:Electron、Chrome、WebView2、远程服务
$ agent-browser connect 9222
$ agent-browser --cdp "wss://..." snapshot
$ agent-browser --auto-connect snapshot
WebSocket 实时流式传输视口,人类可以观看 AI 代理操作
$ AGENT_BROWSER_STREAM_PORT=9223 \
agent-browser open example.com
# 连接 ws://localhost:9223 观看
用 && 链接命令,守护进程持久化保证高效安全
$ agent-browser open example.com \
&& agent-browser wait --load networkidle \
&& agent-browser snapshot -i
打开本地 PDF/HTML,使用自定义浏览器或轻量 Chromium
$ agent-browser --allow-file-access \
open file:///path/to/doc.pdf
$ agent-browser --executable-path /path \
open example.com
持久化默认值,环境变量覆盖
创建 agent-browser.json 设置持久化默认值
{
"headed": true,
"proxy": "http://localhost:8080",
"profile": "./browser-data",
"userAgent": "my-agent/1.0",
"ignoreHttpsErrors": true
}
$ agent-browser --config ./ci.json open example.com
一行命令即可安装,立即开始 AI 浏览器自动化之旅
$ npm install -g agent-browser
$ agent-browser install
$ agent-browser open example.com