这篇文章主要对 browser-use、Chrome DevTools MCP 和 agent-browser 三类工具做一个并排分析,方便在不同场景下做选型。
它们看起来都属于“AI + 浏览器自动化”,但本质上处于不同抽象层:
browser-use是一个 Python AI Agent 框架,LLM 是其内核。给它一句自然语言任务,它会自行完成从感知、推理到执行的完整闭环。agent-browser是一个面向 AI Agent 的浏览器控制 CLI,更像基础设施层,不内置推理能力,通常作为 Claude Code、Cursor 等外部 Agent 的“手脚”。底层通过 Playwright 与浏览器通信。Chrome DevTools MCP是一个直接暴露 CDP(Chrome DevTools Protocol)的 MCP Server,给 AI Agent 提供对 Chrome 浏览器内部状态和调试能力的低层访问。
一、browser-use 的技术原理
1.1 核心架构
用户任务(自然语言)
↓
LLM(大脑)
↓
感知层(Perception) 行动层(Action)
├─ DOM 抽取与压缩 ├─ click(index)
├─ 截图(Vision Mode) ├─ type(index, text)
└─ 转为 Markdown / JSON ├─ extract_structured()
└─ navigate()
↓
Playwright(执行器)
↓
Chromium / Chrome
1.2 感知-行动循环
browser-use 的核心是一个持续迭代的 perception-action loop。每一步大致会做这些事:
- DOM 抽取:注入规范化脚本,剥离
<script>、<style>、隐藏元素,为可操作节点打上数字索引,并压缩成适合模型消费的表示。 - 视觉辅助:对支持视觉的模型,如 GPT-4o,同时抓取视口截图,用来处理 Canvas 页面、动态内容或复杂布局。
- LLM 决策:把简化后的 DOM、原始任务和对话历史一并交给模型,模型输出结构化动作。
- Playwright 执行:执行
click、type、navigate等动作。 - 反馈更新:把执行结果回写到状态中,进入下一轮。
默认情况下,它通常最多运行 100 步,每一步允许最多 3 个并行动作。
1.3 LLM 集成层
| LLM | 能力 |
|---|---|
| GPT-4o | 复杂导航与空间推理能力较强 |
| Claude | 长上下文和结构化推理较好 |
| Gemini | 适合 Google 生态场景 |
| Ollama(本地) | 适合离线部署和隐私场景 |
| ChatBrowserUse | 面向浏览器任务优化的专有模型 |
1.4 记忆与状态管理
max_history_items:控制上下文窗口中的历史长度,避免 token 失控。save_conversation_path:持久化完整执行轨迹。AgentHistoryList:记录 URL、截图、动作名和最终结果等执行历史。structured_output:通过 Pydantic Schema 对输出结构做约束。
1.5 依赖的浏览器能力
| 能力 | 实现方式 |
|---|---|
| DOM 访问 | Playwright Python API |
| 底层浏览器通信 | Playwright 内部封装 CDP |
| 元素交互 | Playwright 高级 API |
| 截图 | Playwright screenshot API |
| JS 执行 | Playwright evaluate() |
| 多 Tab 管理 | Playwright context / page |
| 无头 / 有头模式 | Playwright 均支持 |
二、agent-browser 的技术原理
2.1 核心架构
AI Agent(Claude Code / Cursor / Copilot / etc.)
↓ Shell 命令
Rust CLI(二进制)
↓ Unix Domain Socket
Node.js 常驻守护进程
↓ Playwright API
Playwright(Node.js)
↓ CDP(内部封装)
Chrome / Chromium / Lightpanda
2.2 三层架构
第一层是 Rust CLI:
- 负责解析命令行参数并路由到具体操作。
- 启动快,降低 Node.js 冷启动成本。
- 原生二进制分发,适配多平台。
第二层是 Node.js 常驻守护进程:
- 负责管理 Playwright 浏览器实例。
- 保持进程持久化,避免每条命令都重新拉起浏览器。
- 支持多个命名 Session,每个 Session 保持独立认证上下文。
第三层是通过 Playwright 控制浏览器:
- 支持本地 Chromium、远程 Chrome、Browserbase,以及 Lightpanda。
- 本质上仍然是 Playwright 在封装 CDP,而不是工具直接裸连 CDP。
这一点很关键:agent-browser 的底层是 Playwright,Playwright 内部再去使用 CDP。这和 Chrome DevTools MCP 的直接 CDP 路径是两条不同技术路线。
2.3 Snapshot + Refs 的设计
这是 agent-browser 最有代表性的设计之一:
# Step 1: 获取交互元素快照
$ agent-browser snapshot -i
# 返回:
@e1: button "Sign In"
@e2: input[type=email] "Email"
@e3: input[type=password] "Password"
@e4: link "Forgot Password"
# Step 2: 用 Refs 执行操作
$ agent-browser fill @e2 "user@example.com"
$ agent-browser fill @e3 "password123"
$ agent-browser click @e1
它的目标,是把一次页面快照压缩成对 Agent 友好的引用集合,再让后续操作以极小上下文成本完成。
与 Playwright MCP 的对比里,这类设计经常被拿来强调 token 效率优势:
| 操作 | agent-browser | Playwright MCP |
|---|---|---|
| Tool 定义开销 | 近乎为零 | 很高 |
| 单页快照 | 约千级 tokens | 明显更高 |
| 按钮点击响应 | 极短 | 明显更长 |
| 多步自动化总 token | 更低 | 更高 |
2.4 支持的命令集
| 类别 | 命令 |
|---|---|
| 导航 | open、back、forward、reload |
| 元素交互 | click、fill、type、press、hover、select、check、drag、upload |
| 数据提取 | get text/html/value/attr、is visible/enabled |
| 页面信息 | snapshot、snapshot -i、screenshot |
| 会话管理 | --session <name> |
| 网络监控 | 请求拦截、网络监控 |
2.5 依赖的浏览器能力
| 能力 | 实现方式 |
|---|---|
| 底层控制协议 | Playwright(内部封装 CDP) |
| Accessibility Tree | Playwright Accessibility API |
| 元素快照 | 自研紧凑 refs 系统 |
| 截图 | Playwright screenshot API |
| 网络监控 | Playwright network interception |
| 多 Session | Playwright 多 context 管理 |
| 备用引擎 | Lightpanda |
三、Chrome DevTools MCP 的技术原理
3.1 核心架构
AI Agent(Claude Code / Cursor / etc.)
↓ MCP 工具调用(JSON-RPC)
Chrome DevTools MCP Server(Node.js)
↓ Chrome DevTools Protocol (CDP) 直连
Chrome(需开启 --remote-debugging-port=9222)
3.2 工作机制
Chrome DevTools MCP 本质上是对 Chrome DevTools Protocol 的直接暴露:
- 需要 Chrome 预先以
--remote-debugging-port=9222启动,或已有远程调试端口可连。 - MCP Server 直接通过 WebSocket 连接 Chrome 的 CDP 端点。
- 不经过 Playwright,不需要额外驱动层。
- 可以连接用户当前正在使用的真实 Chrome,会话、Cookie、插件等都可直接复用。
3.3 核心能力
| 能力 | MCP 工具 |
|---|---|
| 页面导航 | navigate_page |
| 截图 | take_screenshot |
| JS 执行 | evaluate_script |
| DOM 快照 | take_snapshot |
| 网络请求监控 | list_network_requests、get_network_request |
| 控制台日志 | list_console_messages、get_console_message |
| 性能分析 | performance_start_trace、performance_stop_trace、performance_analyze_insight |
| 内存快照 | take_memory_snapshot |
| Lighthouse 审计 | lighthouse_audit |
| 元素点击与填写 | click、fill、fill_form |
| 多页面管理 | list_pages、new_page、select_page、close_page |
3.4 独特优势
- 零驱动依赖:不需要安装 Playwright 或 Puppeteer。
- 复用真实会话:可直接接入用户已登录的 Chrome。
- 调试深度更强:性能 Trace、内存分析、Lighthouse、Console 和 Network 能力都更完整。
- 多页面能力直接继承自 Chrome。
四、三条技术路径的核心对比
| 维度 | browser-use | agent-browser | Chrome DevTools MCP |
|---|---|---|---|
| 定位 | AI Agent 框架,内置推理闭环 | 浏览器控制 CLI,偏基础设施 | CDP 直连 MCP Server |
| 调用方式 | Python API | Shell 命令 | MCP 工具调用 |
| 语言 | Python | Rust + Node.js | Node.js |
| LLM 位置 | 内置 | 外部 Agent 提供 | 外部 Agent 提供 |
| 浏览器接口 | Playwright → CDP | Playwright → CDP | 直接 CDP |
| DOM 处理 | DOM 压缩 + 数字索引 + 可选截图 | Accessibility Tree + refs | 原始 DOM / Snapshot |
| token 消耗 | 中到高 | 低 | 中 |
| 性能分析 | 不擅长 | 不擅长 | 强 |
| 网络监控 | 有限 | 有限 | 强 |
| Console 监控 | 有限 | 有限 | 强 |
| 复用真实 Chrome | 需要额外配置 | 可支持 | 原生支持 |
| 跨浏览器 | 是 | 是 | 否,仅 Chrome |
| 需预启动 Chrome | 否 | 否 | 是 |
| 确定性 | 相对低 | 高 | 高 |
| MCP 集成 | 有服务端实现 | 无原生 MCP | 原生 MCP |
五、适用场景
browser-use 更适合什么
- 目标明确但路径未知的自主 Web 研究任务。
- 没有 API 的 SaaS 系统自动化。
- 页面结构变化较大、需要语义理解的场景。
- 多步骤表单填写与探索式导航。
- “Agent 自主浏览网页”本身就是产品能力的一部分。
不太适合的场景:
- 高频、强确定性的重复任务。
- WAF 防护严格的站点。
- 大规模、长时间的低成本批量抓取。
agent-browser 更适合什么
- AI 编码 Agent 的浏览器验证与 UI 测试。
- token 预算紧张的长流程自动化。
- CI/CD 场景下的可脚本化 E2E 测试。
- 登录、表单、精确点击这类确定性任务。
- 多 Session 并行工作流。
不太适合的场景:
- 需要强语义理解和自主探索的页面任务。
- 需要深层调试、性能分析或内存观测的任务。
Chrome DevTools MCP 更适合什么
- 前端调试与性能分析。
- 复用已登录 Chrome 会话访问内部系统。
- Lighthouse 自动审计。
- 内存泄漏分析与 Heap Snapshot。
- 作为 AI Agent 的浏览器探针,读取更底层页面状态。
不太适合的场景:
- 跨浏览器自动化。
- 依赖高层抽象的通用自动化流程。
- 纯 CI 无头环境下的即插即用接入。
六、设计哲学差异
browser-use 的思路是:让 LLM 做主要决策者,浏览器只是它的感官和执行器。
- 优势是灵活,能处理未预见的页面结构变化。
- 代价是速度、成本和可重复性都会受到影响。
agent-browser 的思路是:尽可能压缩工具开销,让外部 Agent 以更低上下文成本精确操控浏览器。
- 优势是确定性更强、token 更省、执行更快。
- 代价是它本身不提供任务级推理。
Chrome DevTools MCP 的思路是:尽量少做封装,直接把浏览器内部调试能力暴露给 AI。
- 优势是内部可见性强,尤其适合调试、性能和内存分析。
- 代价是使用门槛更高,也不适合跨浏览器通用自动化。
七、使用建议
如果你要的是“给我一个目标,自己把路径走出来”,优先看 browser-use。
如果你已经有 Agent,只缺一个高效、确定的浏览器执行层,优先看 agent-browser。
如果你更关心页面内部状态、性能、网络和内存,而不是高层自动化封装,优先看 Chrome DevTools MCP。
实际工程里,这三者也并不冲突:
- 用
browser-use负责高层任务规划与探索。 - 用
agent-browser负责长流程里的确定性步骤。 - 用 Chrome DevTools MCP 负责调试、观测和读取页面内部状态。
八、局限性
agent-browser迭代较快,文档和平台兼容信息可能滞后。browser-use在强对抗型站点上容易出现低效循环。- Chrome DevTools MCP 依赖本地 Chrome 远程调试端口。
- 三者在新浏览器引擎和生态整合上都还处于快速变化阶段。
来源
- browser-use GitHub - AGENTS.md
- agent-browser GitHub - AGENTS.md
- Headless Browser Automation for AI | agent-browser.dev
- Why Vercel’s agent-browser Is Winning the Token Efficiency War - DEV Community
- The Context Wars: Why Your Browser Tools Are Bleeding Tokens - paddo.dev
- browser-use AI Browser Automation Guide - Apify Blog
- Browser-Use Agent Architecture - Labellerr
- agent-browser Complete Guide - apiyi.com
- Self-Verifying AI Agents: Vercel’s Agent-Browser - Pulumi Blog