Token导航 LogoToken导航TokenDH.com
Browser Automation Token Benchmark logo
浏览器工具stdio官方级别未说明来源级核验

Browser Automation Token Benchmark

MCP Server

playwright

该工具通过比较不同浏览器自动化方法的令牌消耗,提供高效的令牌使用策略,显著降低AI代理的浏览器交互成本。

工具数

0

提示词数

0

GitHub Stars

2

资源数

0
浏览器自动化JavaScriptClaude令牌优化Claude

安装说明

本站只整理中文说明和来源信息,不托管安装包,也不代用户安装。

作者 / 组织

moc-com

提供方

moc-com

最后核验

2026/5/17 20:20

运行时

Node.js

快速接入

先看主来源和安装命令,再打开仓库或文档;下面只保留这个条目的关键接入事实。

命令预览

npx playwright install chromium

详细介绍

隐藏的代币税

量化AI浏览器自动化的真实成本

每次点击复杂页面都会通过MCP默默地消耗10000多个令牌。 通过CLI进行相同的点击?只有35岁。

![License: MIT](LICENSE) ![Playwright CLI](https://www.npmjs.com/package/@playwright/cli) ![Playwright MCP](https://www.npmjs.com/package/@playwright/mcp) ![Benchmark](benchmarks/)

______________________________________________________________________

*一个经验基准揭示了标准MCP浏览器工具中2-5倍的令牌浪费,* *使用测量的CDP协议开销和混合路由解决方案。*

______________________________________________________________________

摘要

人工智能代理越来越依赖浏览器自动化进行网络交互,但 代币成本 对这些相互作用的理解仍然很差。我们提出了第一个系统的、实证的基准,比较了人工智能代理的四种浏览器自动化方法: @剧作家/cli (基于文件的快照), @剧作家/mcp (协议嵌入快照), 克劳德铬合金 (CDP中继),以及 原始CDP (Chrome DevTools协议)。

我们对4个真实世界网站(5-882个DOM元素)的测量表明 MCP在每个动作响应中嵌入完整的可访问性树,创建 O(n)上下文增长 这会默默地耗尽代理的上下文窗口。相比之下,CLI的基于文件的方法实现了 O(1)每次行动成本,通过以下方式减少代币总消费量 37-84% 在多步骤工作流程中。

对于每天运行50个浏览器自动化工作流的10名开发人员团队来说,这意味着 每年节省20890美元API成本 (按克劳德·索内特的定价)。

我们提供可重复的基准脚本、原始测量数据和实用的混合路由策略。

______________________________________________________________________

目录

- 每次操作令牌成本 - 多步骤工作流成本 - 上下文增长模型 - CDP协议深度学习 - 延时分析 - 成本影响分析

______________________________________________________________________

视觉摘要

______________________________________________________________________

主要发现

🔍 发现1:代币税

MCP在每个动作响应中都包含完整的ARIA快照。

已验证源代码: setIncludeSnapshot() 被召唤 browser_click, browser_type, browser_navigate以及所有交互工具。

每次点击、每次击键、每次导航——整个页面树都会被重新发送。

📊 发现2:规模

第页每个操作的MCP每个动作的CLI比率
简单(5个元素)86托35托2.5倍
形状(44个元素)248托35托7.1x
复合体(458个元素)3499托41托85倍
重(882种元素)10162托35托290x

💰 发现3:成本

一个10人的团队每天运行50个浏览器工作流,浪费时间 20890美元/年 在冗余令牌上。

||MCP|CLI|节省| |--|-----|-----|---------| |每个工作流程(HN)|0.159美元|0.044美元|72%| |每位开发者/年|2900美元|811美元|2089美元| |10人团队/年|29000美元|8110美元| $20,890 |

*Claude Sonnet的投入定价为3美元/MTok*

⚡ 发现4:CDP原始开销

原始CDP可访问性树为 大15-157倍 与处理后的ARIA快照相比。

第页ARIA快照CDP原始A11y比率
example.com232 B5807 B25x
httpbin912 B39311 B43x
黑客新闻40620 B631263b15.5x

这表明Playwright的ARIA处理管道提供了大量的压缩,但MCP通过重新发送每个动作来否定这一点。

______________________________________________________________________

问题:隐形语境流失

当AI代理使用MCP浏览器工具时, 每个操作都会将整页可访问性树静默地注入上下文窗口:

Action 1: navigate    → +10,162 tokens (full snapshot)
Action 2: click link  → +10,167 tokens (full snapshot again)
Action 3: fill form   → +10,162 tokens (full snapshot again)
Action 4: click btn   → +10,167 tokens (full snapshot again)
Action 5: snapshot    → +10,162 tokens (full snapshot again)
─────────────────────────────────────────────────────
Total: 50,820 tokens consumed (for 5 simple actions on Hacker News)

使用CLI,相同的工作流程:

Action 1: navigate    → +99 tokens (URL + title only)
Action 2: click link  → +35 tokens (confirmation only)
Action 3: fill form   → +35 tokens (confirmation only)
Action 4: click btn   → +35 tokens (confirmation only)
Action 5: snapshot    → +39 tokens (stdout) + 14,646 tokens (file, read once)
─────────────────────────────────────────────────────
Total: 14,889 tokens consumed (71% savings)

区别?CLI将快照写入文件。MCP将它们嵌入到每个响应中。

上下文增长可视化

---
config:
  themeVariables:
    xyChart:
      plotColorPalette: "#10B981, #F59E0B"
---
xychart-beta
    title "Cumulative Token Cost Over 10 Actions (Medium Page, S=3000 tok)"
    x-axis ["1", "2", "3", "4", "5", "6", "7", "8", "9", "10"]
    y-axis "Total Tokens" 0 --> 35000
    line "CLI (O(1) + on-demand read)" [3035, 3070, 3105, 3140, 6175, 6210, 6245, 6280, 6315, 6350]
    line "MCP (O(n) every action)" [3035, 6070, 9105, 12140, 15175, 18210, 21245, 24280, 27315, 30350]
CLI以35个令牌/操作的速度增长 (恒定)。MCP的生长速度为 3035个令牌/动作 (与页面大小呈线性关系)。 通过动作10,MCP已消耗 代币数量增加4.8倍 而不是CLI。

______________________________________________________________________

方法论

环境

参数
操作系统WSL2(Linux 6.6.87.2微软件标准-WSL2)
Node.jsv22.21.1
@剧作家/cliv0.1.1(剧作家1.59.0-alpha)
@剧作家/mcpv0.0.68
浏览器Chromium(捆绑,无头)
代币估算ceil(bytes / 4) (标准英文文本近似)

目标页面

我们选择了4页,涵盖了复杂性范围:

页面URLDOM元素HTML大小复杂性
example.comhttps://example.com5528 B最小
httpbin表单https://httpbin.org/forms/post441419 B形状沉重
黑客新闻https://news.ycombinator.com88234706B内容丰富
GitHub趋势https://github.com/trending458567849 B综合SPA

测量方法

flowchart LR
    subgraph "Three Independent Measurement Paths"
        A["CLI\n(subprocess)"] --> D["stdout bytes\n+ file bytes"]
        B["MCP-equivalent\nPlaywright API"] --> E["JSON response\nbytes"]
        C["CDP Raw\n(DevTools Protocol)"] --> F["Protocol response\nbytes"]
    end
    D --> G["Token = ceil(bytes/4)"]
    E --> G
    F --> G
    G --> H["Comparison\nTables"]
  1. 命令行界面:实际 playwright-cli 子进程调用,测量stdout和快照文件大小
  2. MCP等效物:剧作家API ariaSnapshot(),包装在MCP JSON信封中
  3. CDP原始:直接 page.context().newCDPSession() 用于原始协议测量

每次测量进行3次;我们报告中位数。

可重复性

所有基准脚本和原始数据都包含在此存储库中。 看 重现我们的结果 以获取说明。

______________________________________________________________________

结果

1.每次行动代币成本

基本指标: 每种方法每次浏览器操作消耗多少令牌?

CLI标准输出与MCP响应(每次操作)

页面CLI标准输出MCP响应MCP/CLI比率
example.com35托86托2.5倍
httpbin格式35tok248tok7.1x
黑客新闻35 tok10162 tok290x
GitHub趋势41 tok3499 tok85倍
关键洞察:CLI标准输出为 恒定 (约35个标记),与页面复杂性无关。 它只包含URL、标题和文件链接。快照已写入磁盘。

读取CLI快照文件时

页面CLI文件MCP响应比率
example.com79托86托1.1倍
httpbin格式420托248托0.6倍\*
黑客新闻14646 tok10162 tok0.7倍\*
GitHub趋势6625 tok3499 tok0.5x\*

*\*由于元素引用(e1,e2,…)和YAML格式,CLI文件有时会更大。* *但文件已被读取 一次,当MCP在上发送快照时 每一个行动.*

**这是关键的见解:每个快照,MCP和CLI都是相似的。但MCP发送了N次;CLI发送它K次(K\ 55000 bar "CLI (1 snapshot read)" [254, 595, 14821, 6800] bar "MCP (snapshot every action)" [430, 1370, 53090, 18745]


|第页| CLI总计| MCP总计|节省|节省百分比|
|------|----------|----------|---------|-----------|
|example.com | 254托| 430托| 176托| 41%|
|httpbin表单| 595 tok | 1370 tok | 775 tok | 57%|
| **黑客新闻** | **14821托** | **53090托** | **38269托** | **72%** |
|GitHub趋势| 6800托| 18745托| 11945托| 64%|

> **公式**:
>
> - CLI: `C(n) = n × 35 + k × S(page)` 其中k=快照读取(通常为1-2)
> - MCP: `C(n) = n × (35 + S(page))` --每个操作都包括完整快照

#### 7-动作表单填写工作流(httpbin)

导航→ 快照→ 填充×3→ 点击→ 快照

|模式|总字节数|令牌|与MCP|
|------|------------|--------|--------|
|命令行界面(标准)|4637 B|~1159| **节省39%** |
|CLI(优化,1次读取)|2921 B|~730| **节省62%** |
|MCP(标准)|7658 B|~1914 |基线|

#### 6-Action复杂页面(黑客新闻)

导航→ 快照→ 点击→ 快照→ 点击→ 快照

|模式|总字节数|令牌|与MCP|
|------|------------|--------|--------|
|命令行界面(标准)|122764 B|~30691| **节省52%** |
|命令行界面(优化,1次读取)|41788 B|~10447| **节省84%** |
|MCP(标准)|254826 B|~63706|基线|

### 3.情境增长模型

动作和上下文消费之间的数学关系:

CLI: C(n) = n × 35 + k × S(page) // k = snapshot reads (1-3 typical) MCP: C(n) = n × (35 + S(page)) // snapshot in every response CDP: C(n) = n × (35 + R(page)) // R >> S (raw >> processed)


对于 `n = 10` 行动:

|页面大小(S)|CLI(k=2)|MCP|CDP原始|MCP/CLI|CDP/CLI|
|---------------|-----------|-----|---------|---------|---------|
|50托(最小值)| 450 | 850 | 15000+| 1.9倍| 33倍|
|500托(形式)|1350|5350|10000+|4.0x|74x|
|3000托(中等)|6350|30350|1500000+|4.8x|236x|
|10000托(重)|20350|100350|--| **4.9倍** | — |

> **交叉点**:CLI优势在以下情况下变得显著 `S > 200 tokens` (任何包含>10个交互元素的页面)。

### 4.CDP协议深度学习

我们测量了原始CDP协议输出,以了解Playwright的ARIA处理压缩了什么。

#### CDP响应大小比较

|页面|DOMSnapshot |完整A11y树|ARIA快照|A11y/ARIA比率|
|------|------------|----------------|---------------|-----------------|
|示例.com | 999 B | 5807 B | 232 B| **25倍** |
|httpbin表单|1002 B|39311 B|912 B| **43x** |
|黑客新闻| 1001 B | 631263 B | 40620 B| **15.5x** |
|GitHub趋势| 999亿| 1036亿| 1436亿| 0.7倍\*|

*\*GitHub Trending显示CDP A11y输出异常低(1036 B),可能是由于动态内容加载或反抓取措施影响了CDP会话。*

> **洞察**:剧作家的ARIA处理管道提供 **15-43x压缩** 基于原始CDP可访问性数据。
> 这是一项有价值的工作,但MCP通过在每个操作上重新发送压缩结果来抵消这一好处。

#### 数据管道

flowchart LR A["Raw DOM\n(34-567KB HTML)"] --> B["CDP Accessibility\ngetFullAXTree\n(1-631KB)"] B --> C["ARIA Snapshot\nProcessing\n(232B-40KB)"] C --> D{"Delivery Method"} D -->|"MCP"| E["Embedded in\nevery response\n❌ O(n) growth"] D -->|"CLI"| F["Written to file\nread on demand\n✅ O(1) growth"] D -->|"chrome"| G["Same as MCP\n+ 15% CDP relay\n❌ O(n) growth"]

style E fill:#FEF3C7,stroke:#F59E0B style F fill:#D1FAE5,stroke:#10B981 style G fill:#EDE9FE,stroke:#6366F1


#### 克劳德铬分析

`claude --chrome` 内部使用相同的Playwright MCP服务器,通过CDP WebSocket中继连接:

Claude CLI → MCP JSON-RPC → Playwright MCP Server → CDP WebSocket → CDPRelayServer → WebSocket → Chrome Extension → Native Messaging → Chrome


源代码分析 `cdpRelay.js` 确认:

- 与MCP相同的ARIA快照处理
- 额外的WebSocket中继开销(~15%)
- **WSL2上不可用** (需要Chrome UI+原生消息桥)

**预计代币成本**: `C_chrome(n) ≈ 1.15 × C_mcp(n)`

### 5.延迟分析

令牌效率和延迟代表了一种权衡:

|操作|CLI|MCP|CDP Direct|
|-----------|-----|-----|------------|
|冷启动(浏览器启动+导航)|3200-6100ms|590-1500ms|50-910ms|
|温快照|130-350ms |16-345ms |8-140ms|
|点击/填充动作|~1200ms|~200ms|不适用|

> **CLI的每次操作延迟更高** (~1.2s)由于Playwright代码生成。
> 但 **工作流总成本更低** 因为:
>
> 1. 更少的上下文标记=更快的LLM推理
> 1. 所需往返次数减少(按需快照)
> 1. 代币节省远远超过大规模的延迟成本

### 6.成本影响分析

#### 每个工作流程成本(Claude Sonnet,3美元/MTok输入)

|页面|MCP成本|CLI成本|节省|
|------|----------|----------|---------|
|简单页面(5个操作)|$0.001|$0.001| ~$0|
|表单填写(7项操作)|0.006|0.002|0.004美元|
|复杂页面(5个操作)| **$0.159** | **$0.044** | **$0.115** |
|GitHub抓取(4个操作)|0.056美元|0.020美元|0.036美元|

#### 年化影响

|规模|MCP年度|CLI年度| **年度储蓄** |
|-------|-----------|-----------|-------------------|
|单人开发者(10人/天)|580美元|162美元| **$418** |
|活跃开发者(50人/天)|2900美元|811美元| **$2,089** |
|10人团队(每人每天50人)|29000美元|8110美元| **$20,890** |
|企业(100名开发人员)|290000美元|81100美元| **$208,900** |

> *承担复杂的页面繁重的工作负载。实际节省因页面复杂性分布而异。*
> *Claude Opus定价(15美元/公吨)将使节省增加5倍。*

______________________________________________________________________

## 体系结构比较

flowchart TB subgraph CLI ["@playwright/cli (Token-Efficient)"] direction LR A1["Agent"] -->|"subprocess"| A2["playwright-cli"] A2 -->|"35 tok stdout"| A1 A2 -->|"file write"| A3[".playwright-cli/page.yml"] A3 -.->|"read on demand"| A1 end

subgraph MCP ["@playwright/mcp (Standard)"] direction LR B1["Agent"] -->|"JSON-RPC"| B2["MCP Server"] B2 -->|"response + full snapshot\n(100-10,000+ tok)"| B1 end

subgraph Chrome ["claude --chrome (Extension)"] direction LR C1["Agent"] -->|"JSON-RPC"| C2["MCP Server"] C2 -->|"CDP WebSocket"| C3["Relay"] C3 -->|"Native Msg"| C4["Chrome"] C2 -->|"response + snapshot\n+ 15% overhead"| C1 end

subgraph CDP ["Raw CDP (Reference)"] direction LR D1["Agent"] -->|"CDP Session"| D2["Browser"] D2 -->|"Full A11y Tree\n(15-157x larger)"| D1 end

style CLI fill:#D1FAE5,stroke:#10B981,stroke-width:3px style MCP fill:#FEF3C7,stroke:#F59E0B,stroke-width:2px style Chrome fill:#EDE9FE,stroke:#6366F1,stroke-width:2px style CDP fill:#FEE2E2,stroke:#EF4444,stroke-width:2px


### 为什么CLI不同

关键的架构差异是 **何时以及如何交付快照**:

|特性|CLI|MCP|chrome|
|--------|-----|-----|--------|
|快照传递|磁盘上的文件|每次响应中|每次响应+中继|
|代理读取快照|需要时(0-3次)|强制(每次操作)|强制|
|每次操作开销|~35个令牌(常数)|~S个令牌(取决于页面)|~1.15S个令牌|
|上下文增长| **O(1)** | **O(n)** | **O(n)** |
|元素引用| `e1`, `e2`, ...(指针ID)|全树重新解析|全树再次解析|

______________________________________________________________________

## 解决方案:混合路由

根据我们的测量结果,我们建议 **混合路由策略**:

flowchart TD A["Browser Action Request"] --> B{"Action Type?"} B -->|"Deterministic\n(click, fill, type,\npress, goto)"| C["CLI\n✅ 35 tok/action"] B -->|"Exploratory\n(unknown page,\ndebugging)"| D["MCP\n📊 Full tree access"] B -->|"Visual/Manual\nCollaboration"| E["chrome\n🖥️ GUI needed"]

C --> F{"Need snapshot?"} F -->|"Yes (first time\nor state changed)"| G["Read file\n(one-time cost)"] F -->|"No (using refs)"| H["Skip\n(0 extra tokens)"]

style C fill:#D1FAE5,stroke:#10B981 style D fill:#FEF3C7,stroke:#F59E0B style E fill:#EDE9FE,stroke:#6366F1


### 路由决策表

|用例|推荐|令牌比率与MCP |原因|
|----------|-------------|-------------------|--------|
|表单填写(5+个字段)| **命令行界面** |节省1.9倍|元素引用,无重复快照|
|点击顺序| **命令行界面** |2-5倍的节省|每次行动节省O(1)|
|大页面抓取(>500个元素)| **命令行界面** | **节省4.9倍** |基于文件的快照,读取一次|
|CI/CD E2E测试| **命令行界面** |节省4.8倍|子流程友好,成本低|
|未知页面探索| **主控程序** |基线|发现所需的完整树|
|实时调试| **MCP/铬** |--|交互式树、状态管理|
|GUI协作| **铬** |--|视觉上下文,不支持WSL2|

______________________________________________________________________

## 重现我们的结果

### 先决条件

Node.js 18+ required

node --version # v18.0.0+

Install dependencies

npm install

Install Chromium browser

npx playwright install chromium


### 运行基准

Full benchmark (all 4 pages, all 3 approaches)

npm run benchmark

JSON output (for further analysis)

npm run benchmark:json > my_results.json

CLI workflow demo

npm run demo:cli


### 配置

对于未安装Google Chrome的环境(例如CI、WSL2):

Use bundled Chromium instead of Chrome

export PLAYWRIGHT_MCP_CONFIG=$(cat Summary Table (all measurements)

页面方法操作令牌字节延迟(毫秒)
example.com命令行界面打开1265033356
example.com命令行界面快照(文件)79315130
example.comMCP导航88352593
example.comMCP快照7831222
example.comCDP全A11y树1452580722
example.comCDP已处理ARIA5823274
httpbin命令行界面打开943733529
httpbin命令行界面快照(文件)4201677149
httpbinMCP导航2581032651
httpbinMCP快照24899216
httpbinCDP全A11y树98273931143
httpbinCDPARIA已处理22891277
黑客新闻命令行界面打开993963728
黑客新闻命令行界面快照(文件)1464658637284
黑客新闻MCP导航1017240688830
黑客新闻MCP快照1016240648125
黑客新闻CDP完整的A11y树157,732631,263139
黑客新闻CDPARIA已处理1014240620240
GitHub趋势命令行界面打开1074296096
GitHub趋势命令行界面快照(文件)662526502348
GitHub趋势MCP导航3509140361499
GitHub趋势MCP快照349913996345
GitHub趋势CDP完整的A11y树25910368
GitHub趋势CDPARIA已处理3591436382

______________________________________________________________________

讨论

已验证的索赔

索赔来源我们的测量状态
CLI的令牌效率提高了4.2倍微软1.7-6.1倍(工作流)✅ 下限已确认
单个操作的CLI高达100倍Microsoft2.5-290x(每个操作的stdout)✅ 超过复杂页面的索赔要求
按需快照减少上下文设计目标O(1)vs O(n)已验证✅ 根据经验确认
CLI的每次操作延迟较高预期~1.2s对~200ms✅ 已确认(代码生成步骤)

局限性

  1. 代币估算:我们使用 ceil(bytes/4) 作为代理。实际标记器输出可能变化±15%
  2. 单次运行计时:延迟测量显示中位数为3次运行;网络方差影响结果
  3. GitHub趋势异常GitHub Trending的CDP A11y树显示出意外的低输出(1036 B),这表明动态内容或反机器人措施影响了CDP会话
  4. WSL2环境: claude --chrome 无法直接测量;令牌成本是通过源代码分析估算的
  5. 主控程序 ariaSnapshotDiff:@description/mcp中存在增量差异支持,但尚未广泛公开;如果可用,它将减少MCP的上下文增长

新颖的贡献

  1. 第一次实证测量 CLI、MCP和CDP中每个操作的令牌成本
  2. 源代码验证 MCP在每个动作响应中嵌入快照(setIncludeSnapshot())
  3. CDP中继分析 确认 claude --chrome 使用相同的ARIA管道,开销约为15%
  4. 上下文增长模型 用数学公式: C(n) = n × 35 + k × S 对比 C(n) = n × (35 + S)
  5. 实用的路由策略 基于动作类型分类

未来工作

  • 基准 ariaSnapshotDiff 在MCP中广泛使用时
  • 使用实际的LLM标记器(cl100k、o20k)进行测量,而不是基于字节的估计
  • 扩展到其他MCP浏览器实现(例如Browsebase、Stagehand)
  • 衡量端到端任务完成率(令牌效率与任务成功率)

______________________________________________________________________

参考文献

  1. 微软编剧团队。“@description/cli——AI代理的令牌高效浏览器自动化。”npm,2025。https://www.npmjs.com/package/@剧作家/cli
  2. 微软编剧团队。“@description/mcp——mcp的编剧工具。”npm,2025。https://www.npmjs.com/package/@剧作家/mcp
  3. 人类学。“与克劳德一起使用电脑——浏览器工具(claude --chrome).《人类学文献》,2025年。https://docs.anthropic.com/en/docs/claude-code/browser-tool
  4. Chrome DevTools协议。“可访问性域”。Chrome DevTools协议,2025年。https://chromedevtools.github.io/devtools-protocol/tot/Accessibility/
  5. W3C。“WAI-ARIA可访问的富互联网应用程序”。W3C推荐标准,2024年。https://www.w3.org/TR/wai-aria/

______________________________________________________________________

许可证

MIT许可证。看 许可证 了解详情。

______________________________________________________________________

如果这个基准帮助您优化了AI浏览器自动化成本, 请考虑给它一个⭐

*基于经验测量而非估计。*

目录标签

目录标签

浏览器自动化JavaScriptClaude令牌优化本地部署AI代理性能基准成本节约

支持客户端

Claude

接入字段

传输方式(transport,传输协议)

stdio

鉴权方式(authType,认证方式)

token

运行时(runtime,运行环境)

Node.js

来源包(packageName,安装包名)

playwright

工具数量(toolCount,工具数)

0

资源数量(resourceCount,资源数)

0

提示词数量(promptCount,提示词数)

0

权限和风险

stdiotoken部署方式未说明

接入前请确认传输方式、认证方式和部署位置,并根据实际工具能力限制访问范围。

安装前确认

不要直接授予不必要的文件、网络或账号权限;先核对安装命令和配置内容。

来源信息

继续浏览同类 MCP