Agent 操控浏览器的框架选型:从”太脆(选择器)vs 太 agentic(不可预测)“的两难出发。工具实测见 RPA浏览器自动化实操方法,回归测试见 AI浏览器回归测试Passmark实测。
技术分层链
Chromium 底座 → CDP(远程控制协议)→ Puppeteer/Playwright(开发者框架)→ 面向 Agent 的封装层(browser-use/Stagehand/agent-browser/Playwright MCP/CLI+Skill)→ 补位路线(Midscene 视觉 / browsermcp 接管现用浏览器)。
核心对比
| 框架 | 路线 | 关键数据 | 定位 |
|---|---|---|---|
| Playwright MCP | Accessibility Tree 快照(ref=eXX) | 32 工具定义 ≈13.6K token 未干活先吃 7-8% 上下文;一次点击返回 10K+ token | 持续浏览器上下文/探索式;--extension 可复用 Chrome 登录态(Node≥20) |
| Playwright CLI+Skill | CLI 命令+按需技能 | 只返回摘要+快照路径;token 优势两说(见下):早期测评”省约 4 倍”,Checkly 2026-07 实测差距已缩小到 45-48K vs 48-50K;微软官方 README 立场:代码仓库+浏览器并用的编程 Agent 优先 CLI+Skills,探索式/自修复/持续分析仍用 MCP | 确定性任务首选 |
| agent-browser(Vercel) | 无障碍树+稳定 ref(@e5) | 省约 93% 上下文;SOP 3-4 分钟→1 分钟;Rust CLI 启动 5ms;守护进程保活会话 | 唯一支持 iOS Safari;5 种 provider 含反检测 |
| BrowserUse | DOM+整数索引 [1]<input> | 每元素约 2 token vs CSS 选择器 10 token,省 80% | Python 生态;GPT-4o 45s 效果最好但价格≈DeepSeek R1 的 7 倍;官方基于 Playwright(“自研 cdp-use 不用 Playwright”的说法与官方文档矛盾,以官方为准) |
| Stagehand | SDK 四原语 act/extract/observe/agent | observe() 返回真实 selector → page.locator().fill(环境变量),凭证永远不经过模型 | Playwright 为测试而生、Stagehand 为 Agent 而生;已知稳定操作用传统代码、易变操作才 act() |
| Midscene | 纯视觉(截图+多模态) | AndroidWorld 93.10%;AppControlBench 96.7% 且 $0.59/60 任务;v1.0 转 visual 后 token 降 80% | Canvas/跨域 iframe/纯图标按钮;Web/Android/iOS/鸿蒙全平台 |
| dev-browser | A11y Tree+UID+CDP 有状态服务 | 同任务 3m53s/0.88 vs Playwright Skill 8m07s/1.45/成功率 67%;QuickJS WASM 沙箱执行脚本 | 快 16.7%、便宜 39.3% |
| Jev Ultrafast | 原子 DOM+编号动作空间(8 枚举动作+编号元素表) | 协议调用 1092→101 次/任务;航班查询中位 7.09s($0.0039 为作者口径,见增补节);4 天 10,665★(2026-09-20 实测) | System One 专用决策模型路线:无截图、无多模态 token,动作+目标一次往返投机多头输出;详见 [[ai/Jev与SystemOne模型 |
竞品 star(采集时点):browser-use 78.4k / playwright-mcp 27.2k / stagehand 21.1k / skyvern 20.4k / agent-browser 14.1k;jev-ultrafast 4 天破万(10,665★ @2026-09-20)。
选型结论
- token 效率优先:CLI+Skill(渐进式加载)> agent-browser 快照 > Playwright MCP(schema 全量注入);MCP 的三问题:急切加载、无状态、每操作独立往返;
- 视觉 vs 无障碍树:主流程 Accessibility(快且确定),Canvas/布局/视觉回归用 Vision(Midscene 30s vs Accessibility 5s,同一页面两次路径可能不同)——混用;
- shadow DOM/微前端(如 wujie):DOM 路线找不到节点 → Midscene 视觉路线可解;
- 登录态三方案:
--extension复用现用 Chrome /userDataDir持久化 profile /codegen --save-storage=auth.json;BrowserUse 是复制 profile 克隆专用实例(非接管现窗口); - 三级效率阶梯(实战数据):AI 自由探索耗 41% 上下文 → 沉淀成 Skill 后 5% → 完全固定流程编成脚本 0 token;
- 平台特异性坑:小红书 HTTPS 拒 HTTP localhost 图片(自写 CORS 静态服务)、掘金 CodeMirror 异步加载须轮询、公众号 UEditor iframe+动态 token 用原生粘贴——Skill 不能做成通用模板,每个目标页面独立适配。
多 Agent 浏览器编排
CrewAI 三角色(Planner→Executor→Synthesis);Browserbase Model Gateway 自动选最便宜模型 + cache:true 相同调用走缓存;tenacity 指数退避;生产建议云端(会话回放、自动处理 CAPTCHA)。
增补:参数级细节(二次提炼 2026-09-19)
- Playwright MCP
--caps按需开关(官方省 token 途径):vision/pdf/devtools/network/storage/testing/config不开不注入;关键参数全表:--timeout-action 5000 / --timeout-navigation 60000 / --timeout-settle 500 / --idle-timeout(headless 默认 1h 自动关、headed 永不)/--image-responses allow|omit|only/--snapshot-boxes/--mobile(移动页面更轻省 token,不能与 —device 同用);--secrets文件:把工具响应中匹配的明文替换掉防误入上下文(官方原话”是便利性不是安全特性”——与 Stagehand 凭证不过模型是两种强度); - 持久 profile 并发坑:同一 profile 同时只能一个实例,多客户端并行必须
--isolated或各自--user-data-dir——登录态复用方案的隐藏限制; - 值得单独记的 MCP 工具:
browser_find(按文本搜快照返回局部节点,比全量 snapshot 省);browser_run_code_unsafe(直接跑 Playwright 代码,官方标注 RCE 等价);browser_type slowly:true(逐字符触发按键事件); - BrowserUse CDP 调用数对比(第三方源码分析,v0.11.5):Playwright 一次 click 内部 6-9 次 CDP 往返 vs browser-use 2-3 次(推理阶段已确认可见性省掉预检);单次往返 20-50ms;视觉激活启发式:仅首访/连败 2 次/复杂元素才发截图,省 60-70% 视觉成本;
- BrowserUse 二开清单(实战向):频繁存 cookie 需限流;默认无键盘回车 action(controller 自定义);不支持的组件=人员/浏览/日期时间选择框;用户自定义系统提示词部分不生效;web-ui 接管本机 Chrome 须先关全部 Chrome 窗口、WebUI 用非 Chrome 浏览器打开;云 API 断开 CDP 不会停托管浏览器,必须显式
client.browsers.stop(); - Stagehand 配置要点:
modelName用 litellm 风格 provider 前缀接国产模型(dashscope/qwen3-max-preview);dom_settle_timeout_ms加大显著提高 SPA 识别率;userDataDircookie 持久化=登录态第四方案;deep locators 支持嵌套 iframe 与 closed Shadow DOM;Browserbase Search/Fetch 可不起浏览器; - Midscene 成本与缓存:每次 aiTap/aiInput ≈500-1500 token、私有化单控件识别约 5s;缓存以自然语言描述文本为 key——同一指令封装成组件复用同一文案即命中缓存;
aiQuery('{count: number}', '描述')带类型签名直接返回结构化对象;MIDSCENE_MODEL_FAMILY 白名单qwen2.5-vl/gemini/glm-v/doubao-vision/gpt-5,私有化注释掉即跳过校验;Playwright worker 读不到主进程 dotenv(每 spec 单独 config);v-select 双 DOM 须:not(.is-hidden)过滤隐藏副本; - Page Agent(阿里,客户端内嵌路线):纯 JS 解析 DOM 文本、不需多模态模型、CDN 一行引入;一行对比:Midscene 慢 3-10 倍但吃 Canvas,Page Agent 快且 token 低 3-10 倍但吃不了非 DOM、且 API key 前端有泄露风险——产品内嵌 Copilot 选它,外部测试用 Midscene;
- agent-browser 要点:核心循环
open → snapshot -i --json → 按 @eN 操作 → 变化后重新 snapshot(引用失效的处置是重新 snapshot,不要硬重试);90+ 命令;iOS:-p ios --device "iPhone 16 Pro";迁移注意:登录态保存与 proxy 在早期版本未补齐(选型时核对当前版本); - dev-browser 补全:四方案基准补第三/四方——Playwright MCP 51 轮、Chrome Extension 12m54s/$2.81/80 轮(最慢最贵);登录流程 MCP 12 次独立调用 vs dev-browser 2-3 次(省 80%);脚本跑 QuickJS WASM 沙箱(无文件/网络/进程访问、死循环强制中断),特权操作由常驻 daemon 代理——“暴露完整 Playwright API 但默认安全”;选型口诀:日常验证用 Dev Browser、深度调试用 Chrome DevTools MCP、跨浏览器用 Playwright MCP、大规模回归回原生 Playwright。
增补:Jev Ultrafast 与”窄模型”范式(2026-09-21)
browser-use 2026-09 发布的架构宣言式 MVP:把浏览器 agent 每步决策大脑从通用 LLM 换成专用小模型 Jev(TypeSafe System One)。四层提速机制(乘积关系):
- 动作空间索引化:编号元素表 + 8 枚举动作(CLICK/TYPE_TEXT/SELECT/SCROLL_UP/SCROLL_DOWN/WAIT/DONE/BLOCKED),模型从”写作文”变”做选择题”,输出 token 砍到个位数;
- 投机式多头定向(Speculative Multi-Head Targeting,核心创新):click/type/select 三个头在一次网络往返里同时投机输出,只执行与最终动作匹配的头——“选操作+定目标”两步推理折叠成一次调用;
- 视觉通道整个砍掉:无截图、无多模态 token,只喂结构化页面状态与可见文本;
- 协议调用极限压缩:同任务浏览器协议调用 1092→101 次(原子快照、DOM 校验防无效点击、等待封顶、焦点模拟规避后台节流)。
结构性安全:模型输出永不被转成 CSS 选择器/坐标/shell/JS——动作只能在枚举表选、目标只能在编号表选;TYPE_TEXT 辅助小 LLM 的输出必须能解析成小 JSON 才被接受。危险动作不可表达,靠架构而非提示词。
代价(官方 MVP 限制清单):不支持 shadow DOM、iframe、canvas、文件上传、弹出标签、嵌套滚动、复杂键盘控件——几乎精确排除了所有困难场景(公众号后台、AntD 动态表单全是重灾区)。是”80% 常规 Web 任务”的特化武器,非通用 agent。发布姿态是开源样板间+云端 ultrafast 候补名单导流。
生态位重排(决策引擎视角):
| 生态位 | 玩家 | 决策引擎 | 一步延迟 | 一步成本 | 通用性 |
|---|---|---|---|---|---|
| 官方公共道路 | Playwright MCP/CLI | 用户自选 LLM | 秒级 | 中 | 最高 |
| 框架+通用 LLM | browser-use 框架 | 用户自选 LLM | 秒级 | 高 | 高 |
| SDK 渐进混合 | Stagehand | 通用 LLM(按需调用) | 秒级 | 中 | 高 |
| 专用决策模型 | jev-ultrafast | Jev(System One) | 亚秒级 | 极低 | 窄(MVP 清单) |
| 视觉路线 | Midscene / Skyvern | 多模态 LLM | 5s+/控件 | 中高 | 广(含非 DOM) |
AI 分析
AI 分析(横纵分析报告三判断,2026-09-20):①真正产品不是仓库而是”浏览器 agent 的 System One 化”范式;②”结构化决策 vs 生成式智能”会成为选型第一问——任务能枚举成有限动作空间时,选择题小模型在速度/成本/安全三维碾压作文大模型;③中文独立开发者现在还不用动:MVP 限制清单覆盖不了本库实战场景(iframe/动态表单),放观察名单,观察点=shadow DOM/iframe 支持与 Jev 本地化/开源(HN 最高赞诉求);中文场景+复杂控件仍是 Midscene+国产模型地盘,“国产 Jev”是新空位。
中文站实测与口径修正(2026-09-22 增补,来源 石臻说AI 实测):
- 12306 余票查询(OpenRouter
typesafe/jev-1.13+gpt-luna文本模型):北京南→上海虹桥,7 次操作 20.391s,1 次页面变化恢复,URL/出发/到达/日期四项独立校验通过,未触预订/候补/支付。原版连撞三个通用兼容坑:①联想输入依赖逐键事件(一次性写入文字候选列表不更新)②自定义 div 仅cursor:pointer无 ARIA 角色(快照器看得见但不能当可执行目标)③点击查询开新标签页(驱动仍盯旧页,模型在错误页面上宣布 DONE)。本地补三项通用能力(逐字符派发键盘事件、可见短文本顶层 pointer 元素纳入动作空间、跟随新标签页)后通过 32 pytest + 23 项浏览器防护回归——Jev 决策很快,拖后腿的是网页工程细节;补丁未进上游; - 数字限制:单页最多 60 个动作、120 次决策请求,候选动作超 250 截断;
- **
0.0039/任务口径修正**:仓库公开数据仅能确认文本模型两次调用0.00006272(Zurich 581ms + London 346ms),TypeSafe 侧有 token 记录无完整美元账单,浏览器成本未计——引用时注明作者口径; - 7 秒的测量边界:从首次预测到接受 DONE,含模型调用/文字生成/浏览器操作/过期决策/页面加载;不含浏览器初始化、首屏打开、结束后的独立结果校验;
- OpenRouter 替代路径:官方默认需
TYPESAFE_API_KEY+TEXT_MODEL_API_KEY两把钥匙;可改走https://openrouter.ai/api/alpha/decisions(Decisions Alpha,接口格式可能变)共用一把 OpenRouter Key,文本模型示例inception/mercury-2.5(需关闭 reasoning)。
原始素材(重点篇目)
- 技术栈分层
- 登录态复用
- 四方案基准表
- agent-browser 实测
- Stagehand 官方
- 视觉 vs DOM
- 范式迁移
相关页面
出处 · raw/articles/bookmarks/(浏览器收藏 2026-09-19,BrowserUse/Playwright MCP/Agent Browser/Stagehand 等文件夹)