开发与工程 browser-automationchrome-devtools-protocolrust-clishell-automationremote-browserweb-testingbrowser-observability

browser-control

让编码智能体通过 Shell 和 CDP 操控真实浏览器。

FollowAgents 评估 · FARS-2.1
谨慎使用
72/ 100 五分制 3.6 / 5
1 2 3 4 5 6
1信任安全13 / 29 · 2.2/5

工具由显式 CLI 子命令驱动,默认无子命令不会执行标准输入,并说明本地套接字、跟踪文件、CDP 端点、云服务及其环境变量;这些为数据流和外部效果提供了较好可见性。扣分在于 eval、原始 CDP、上传、脚本执行、配置文件同步和云会话均是高权限能力,没有权限收窄、危险操作确认或通用恢复机制;API 密钥仅说明从环境变量读取,未见脱敏、日志隔离或凭据生命周期措施。依赖版本精确固定且声称提交 Cargo.lock,发布物带 SHA-256,但所给证据未包含锁文件、漏洞扫描、SBOM,工作流动作也只固定到主版本标签。来源列出了两个灵感项目,许可证归属为 Om Labs,但发布者身份与维护主体关系不够清楚。

2可靠稳定11 / 14 · 3.9/5

README、Cargo 元数据、发布工作流和端到端测试脚本对二进制名称、Rust/CDP 架构和主要用法保持一致,故自洽性充分。依赖和运行前提写得较清楚,doctor 也用于发现 Chrome,但仍依赖近期 Chrome、固定 Rust 版本、外部云服务和平台发布资产,未见离线或服务中断策略。失败路径会返回命令错误、设置超时并保存紧凑跟踪,测试封装也保留 stdout/stderr;但未提供完整错误分类、稳定错误码或面向用户的修复指引目录。

3适用触发16 / 18 · 4.4/5

目标受众明确为已有规划与重试循环的编码代理,并覆盖本地浏览器、远程 CDP、云提供商、引用/CSS/坐标选择器及脚本组合,场景说明充分。README 明确工具只是浏览器控制管道,不承担代理规划,同时 raw CDP 是有意的能力边界。触发语义精确:操作由子命令启动,标准输入执行需显式 --from-stdin,空调用报错。环境适配扣分在于预构建目标只展示 macOS/Linux,要求较新的 Chrome/Chromium 与 Rust 1.92,且测试脚本的默认 Chrome 路径偏向 macOS;未见 Windows 支持说明。

4规范维护15 / 18 · 4.2/5

文档结构清晰,安装、要求、快速开始、命令、云端、观测性、架构和验证均有示例;crate 名与命令名差异也明确解释,命名较稳定。MIT 许可证文本与 Cargo 元数据一致,可给满分。已说明若干设计限制和守护进程行为,但没有集中列出安全限制、站点兼容性或不支持项。版本号和基于 v* 标签的发布路径存在,但没有变更日志、兼容策略或升级说明。仓库和版权主体可见,然而未给出明确维护者、支持渠道、响应承诺或发布责任分工,且发布者身份未知本身不作负面推断。

5有效结果12 / 13 · 4.6/5

文本或 JSON 输出、稳定元素引用、事件/网络/控制台环以及失败跟踪均直接服务代理消费,输出可用性证据充分。相较手写选择器或绑定特定 SDK,shell 组合、稳定引用及 raw CDP 后备机制提供明显增量价值。单一 Rust 二进制和本地模式降低部署成本,但仍需要真实 Chrome,云模式可能产生外部费用,端到端代理测试还依赖 Claude Code;文档未量化性能、资源占用或云成本,因此成本收益未给满分。

6证据核验5 / 8 · 3.1/5

主要功能主张能在 README 的命令接口、Cargo 配置、发布工作流和端到端测试源码中找到对应依据,但“tiny”“fast”“reproducible”等表述缺少所给材料中的尺寸、基准或构建产物证明。多个来源对名称、版本、构建和浏览器交互相互印证,测试还设计了独立状态校验;但没有测试运行结果,且 Cargo.lock、rust-toolchain.toml、verify.sh 和核心 src 实现未提供,无法完成强交叉核验。文档通常把设计选择与操作事实区分开,但部分营销性或可复现性结论超出了当前证据。

证据充分度: 评估于 2026年8月16日 审查版本 8df03afb21c3
上游仓库在本次评估后已有新提交;当前评分仍对应所示审查版本,可能尚未覆盖最新改动。
源码中未见的安全控制:执行前用户确认
使用前请注意
  • eval 和原始 CDP 可在浏览器上下文中执行任意操作;应把该二进制及其调用代理视为具有完整浏览器会话权限。
  • 同步本地配置文件或连接已登录浏览器可能暴露 Cookie、会话令牌、浏览历史和个人数据;材料未展示脱敏或最小化控制。
  • cloud-start 会把会话数据交给外部提供商,并使用环境变量中的 API 密钥;使用前应单独审查提供商、数据驻留、日志和费用。
  • 失败跟踪会写入 .browser-control/traces;网络、控制台或页面状态可能含敏感内容,必要时启用 BROWSER_CONTROL_NO_TRACE=1 并制定清理策略。
  • 预构建安装示例通过 latest 下载并直接解压安装;应固定具体版本并在执行前核对发布的 SHA-256 校验值。
评估证据 [1][2][3][4][5]
查看完整评分方法 →

这个 Agent 能做什么,适合哪些场景?

browser-control 是一个面向编码智能体的轻量 Rust 命令行程序,通过 Chrome DevTools Protocol 驱动本地或远程真实浏览器。它不包含 LLM,也不要求 MCP 或特定智能体框架,而是把快照、点击、输入、脚本执行和原始 CDP 调用暴露为可组合的 Shell 子命令。`snapshot` 会输出可操作元素及稳定的 `@e1`、`@e2` 引用,命令也可以使用 CSS 选择器或屏幕坐标定位目标。后台 daemon 保存有限的 DOM 事件、网络请求和控制台消息记录,失败时可在 `.browser-control/traces/` 下生成诊断材料。工具既能启动本地 Chrome,也能连接现有 CDP 端点,或通过内置配置使用 Browser Use、Steel、Hyperbrowser 和 Browserbase 等云浏览器。它适合已经具备规划与重试逻辑、只需要浏览器执行与观察接口的编码智能体。

典型流程从 browser-control init 创建 .browser-control/ 工作区开始,随后用 launch <url> 启动 Chrome,或通过 BROWSER_CONTROL_CDP_URLBROWSER_CONTROL_CDP_WS 连接已有浏览器。智能体调用 snapshot 或其别名 observe 读取页面上的可操作元素,并使用返回的 @eN 引用执行 clickfillselectuploaddragpress 和滚动操作;也可改用 CSS 选择器或坐标。观察命令包括 page-infotexteventsnetworkconsoleframescookiestabs,而 evalcdp 分别执行页面 JavaScript 和原始 CDP 方法。它还能等待页面加载、网络空闲或元素出现,生成截图和 PDF,管理标签页、视口、下载目录与原生对话框。run 可执行位于工作区中的脚本,并向脚本提供 BROWSER_CONTROL_BINBROWSER_CONTROL_WORKSPACE--from-stdin 则显式启用来自标准输入的 Shell 命令。隐藏 daemon 通过 .browser-control/daemon.sock 提供事件历史,在命令失败时将错误及可用的事件、网络和控制台上下文写入跟踪目录。

  1. 构建编码智能体的开发者,可让已有智能体通过 Shell 完成网页导航、表单填写和按钮操作,而无需引入浏览器 SDK。
  2. 调试网页流程的工程师,可结合 snapshoteventsnetworkconsole 和失败跟踪定位自动化步骤为何失效。
  3. 需要操作 Canvas、地图或缺少稳定 DOM 节点页面的自动化作者,可在元素引用与 CSS 选择器之外使用坐标点击和拖拽。
  4. 在本地与云浏览器之间切换的团队,可保留相同命令,只替换 CDP 端点或云提供商配置。
  5. 需要复现浏览器操作的 CI 或测试维护者,可使用锁定的 Rust 依赖、Shell 脚本、截图、PDF 和 scripts/verify.sh 建立可重复流程。

这个 Agent 有哪些优点和局限?

优点
  • Shell 原生接口输出紧凑文本或 JSON,不要求 SDK、常驻应用服务器、MCP 或特定编程语言。
  • snapshot 生成面向智能体的稳定 @eN 引用,同时保留 CSS 选择器和坐标操作作为补充。
  • evalcdp 提供底层逃生通道,辅助命令未覆盖的浏览器能力仍可通过 JavaScript 或原始 CDP 调用。
  • 同一套命令可连接本地 Chrome、已有 CDP 端点以及多个内置云浏览器提供商。
  • daemon 记录事件、网络与控制台历史,命令失败时自动生成紧凑跟踪,有利于自动诊断。
局限
  • 必须具备可通过 CDP 访问的 Chrome 或 Chromium;它不是面向 Firefox 或 Safari 的通用浏览器驱动。
  • 项目刻意不提供 LLM、规划、重试或完整智能体框架,采用者需要自行提供这些上层行为。
  • 运行会使用 .browser-control/ 工作区、Unix socket、状态文件和跟踪文件,需要本地文件系统访问与清理策略。
  • 远程云会话需要对应服务的 API 密钥;Browserbase 还需要项目 ID,自定义提供商则要配置 API、认证头、路径和 CDP 字段。
  • 资料未记录 ChatGPT、Claude AI、OpenAI API 或 Claude API 的原生适配,接入这些平台需要由宿主智能体执行 Shell 命令。

如何安装或部署这个 Agent?

最直接的方式是安装 crates.io 包:

cargo install browser-control-cli
browser-control --version

包名是 browser-control-cli,安装后的命令名是 browser-control。也可从 GitHub Releases 下载对应平台的预编译文件;macOS 或 Linux 示例:

curl -fsSL https://github.com/keon/browser-control/releases/latest/download/browser-control-aarch64-apple-darwin.tar.gz | tar xz
install -m 0755 browser-control /usr/local/bin/

从源码构建时运行:

git clone [email protected]:keon/browser-control.git
cd browser-control
rustup toolchain install
cargo build --locked --release
install -m 0755 target/release/browser-control /usr/local/bin/
browser-control --version

运行需要近期版本且可通过 CDP 访问的 Chrome 或 Chromium;源码构建还需要 rust-toolchain.toml 指定的 Rust 工具链。

如何使用这个 Agent?

本地首次运行可执行:

browser-control init
browser-control launch https://example.com
export BROWSER_CONTROL_CDP_URL=http://127.0.0.1:9222
browser-control doctor
browser-control snapshot
browser-control click @e1
browser-control eval 'document.title'
browser-control cdp Browser.getVersion

若浏览器已开放 CDP,可跳过 launch,设置 BROWSER_CONTROL_CDP_WSBROWSER_CONTROL_CDP_URL;短别名 BU_CDP_WSBU_CDP_URL 也受支持。使用云浏览器时,例如 Steel:

export BROWSER_CONTROL_CLOUD_PROVIDER=steel

export STEEL_API_KEY=...

browser-control cloud-start

其他内置提供商分别需要 BROWSER_USE_API_KEYHYPERBROWSER_API_KEY,或 BROWSERBASE_API_KEYBROWSERBASE_PROJECT_IDcloud-start 输出需要导出的 CDP 端点,随后即可继续使用相同的 snapshot、动作和观察命令。

这个 Agent 与同类方案有什么区别?

项目说明其灵感来自 Vercel 的 agent-browser 和 Browser Use 的 browser-harness。browser-control 对自身的定位是更小的 Shell 原生 Rust CLI:把 CDP、页面快照、脚本和浏览器状态作为通用机制暴露出来,把规划、重试和文件编辑留给外部编码智能体;来源没有提供与这两个项目的功能或性能对照数据。

常见问题

它是否内置大模型,或必须部署 MCP 服务?
否。它不包含 LLM,也不要求 MCP;宿主智能体只需能够执行 Shell 命令并处理文本或 JSON 输出。
能否使用已经运行的浏览器?
可以。将 BROWSER_CONTROL_CDP_WSBROWSER_CONTROL_CDP_URL 指向现有 CDP 端点即可跳过 launch
命令失败后能获得哪些诊断信息?
默认会在 .browser-control/traces/<timestamp>/ 下写入错误,以及当时可用的 daemon 状态、事件、网络和控制台历史;设置 BROWSER_CONTROL_NO_TRACE=1 可关闭。
云浏览器是否限定单一厂商?
否。内置预设覆盖 Browser Use、Steel、Hyperbrowser 和 Browserbase,也可通过环境变量描述其他能返回 CDP URL 的提供商。
是否必须从源码编译?
不必。可通过 cargo install browser-control-cli 安装,也可使用 GitHub Releases 的预编译二进制;只有源码构建需要 Rust 工具链。

对比同类 Agent

用同一套 FARS 评审,横向比较这个 Agent 所属的短名单。

相关 Agents