从18,000个Token到300个:我们如何打造出超越MCP的轻量级浏览器技能
Claude & Jozo· 8 min read· 2026/01/22
智能体技能浏览器自动化MCPClaude Code开发者工具

从18,000个Token到300个:我们如何打造出超越MCP的轻量级浏览器技能

从18,000个Token到300个:我们如何打造轻量级浏览器技能

2025年12月。TeamDay的智能体运行时需要浏览器自动化能力。

显而易见的选择:MCP服务器。Playwright MCP(约13,700个token),Chrome DevTools MCP(约18,000个token)。两者都经过实战检验,文档完善,广泛采用。

后来我们读了Mario Zechner的文章。然后我们走了一条不同的路。


没人谈论的Token税

当你将MCP服务器连接到Claude时,所有工具描述会立即加载进上下文。Chrome DevTools MCP仅26个工具定义就消耗了18,000个token——占Claude上下文窗口的9%,而你还什么事都没做。

Playwright MCP稍好一些,13,700个token(21个工具),但仍占用了6.8%的配额。

问题会叠加:

  • 每增加一个MCP服务器就会再添加数千个token
  • 不论是否使用,工具描述始终保持加载状态
  • 复杂工具需要详细文档,因此代价高昂
  • 工具过多让智能体难以选择

数字触目惊心。 连接3-4个MCP服务器,你就在工具定义上烧掉了3-4万token。这些本可用于实际工作的上下文就这样白白浪费了。

如果根本不需要MCP呢?

Mario Zechner提出了这个问题并给出了答案:使用Puppeteer Core的简单bash脚本,文档只需约225个token。

他的洞见: 现代大语言模型本身就擅长编写代码。与其提供26个专用工具,不如给它们几个基础原语,让它们自由组合解决方案。

核心优势:

  • Token效率:约300个token vs 约18,000个token
  • 真正的可组合性:输出到文件,可与其他工具管道连接
  • 易于扩展:几分钟内添加新功能
  • 配置文件支持:使用已有登录状态连接正在运行的浏览器
  • 渐进式加载:技能仅在需要时才加载

我们采用这种方式,为Claude Code构建了 /browser ——一个轻量级技能。

我们构建的成果:7个脚本,无限可能

核心原语

# 一次启动浏览器(带Chrome配置文件,用于已认证的会话)
bun browser-start.ts --profile

# 导航到任意页面
bun browser-navigate.ts https://example.com

# 在页面上下文中执行JavaScript
bun browser-eval.ts 'document.title'

# 快速截图保存到文件
bun browser-screenshot.ts page.webp

# 交互式元素选择器(用户点击,智能体获取选择器)
bun browser-pick.ts --multi

# 提取仅限HTTP的Cookie
bun browser-cookies.ts --domain=example.com

# 清理关闭
bun browser-stop.ts

就是这些。 七个简单脚本。每个只做一件事,但做得很好。智能体将它们组合起来处理复杂工作流。

为何有效

连接到正在运行的浏览器,而非启动新实例:

  • 即时启动(无浏览器启动开销)
  • 保留认证状态(Google、GitHub、LinkedIn等)
  • 用户可以交互(点击元素、手动登录)
  • 快速迭代(命令之间无需清理)

渐进式加载:

  • 技能元数据:约50个token("你有一个浏览器技能")
  • 技能文档:约300个token(按需加载)
  • 总开销:比Chrome DevTools MCP少60倍

真正的可组合性:

# 提取数据到文件
bun browser-eval.ts 'data' > output.json

# 截图并处理
bun browser-screenshot.ts page.webp && magick page.webp page.jpg

# 链式导航与提取
bun browser-navigate.ts https://site.com && bun browser-eval.ts 'scrape()'

真实考验:548位斯洛伐克专业人士

Leaf NGO需要在海外工作的斯洛伐克资深专业人士,用于一项导师计划。这些数据存在Clay.com中,受认证保护并有API限制。

挑战:

  • 必须通过Clay.com认证
  • API未公开文档(需从网络流量逆向工程)
  • 每次请求最多预览100条结果
  • 需要按国家分段以绕过限制
  • 提取500+条包含LinkedIn URL、职位、公司、地点的档案

传统方式: 构建完整爬虫,管理会话,处理分页,导出数据。耗费数小时。

使用 /browser 技能: 从开始到导出548位专业人士,仅用了45分钟。

具体过程

1. 带配置文件启动浏览器(保留Clay登录状态):

bun browser-start.ts --profile
bun browser-navigate.ts https://app.clay.com

2. 通过检查网络流量发现API:

bun browser-eval.ts 'performance.getEntriesByType("resource").map(r => r.name)'

发现:https://api.clay.com/v3/actions/run-enrichment

3. 提取认证Cookie:

bun browser-cookies.ts --domain=clay.com

4. 构建按国家分段的提取脚本:

智能体编写了一个专用脚本(clay-slovak-experts.ts),功能包括:

  • 使用浏览器中的已认证会话
  • 搜索在斯洛伐克境外的斯洛伐克语使用者
  • 按资历级别过滤(高级、总监、VP、C级)
  • 按国家分段以绕过每次100条结果的预览限制
  • 覆盖11个国家:美国、英国、德国、奥地利、捷克、荷兰、瑞士、爱尔兰、加拿大、澳大利亚、法国
  • 处理分页和速率限制
  • 按LinkedIn URL去重

5. 运行提取:

bun clay-slovak-experts.ts --count=500 --seniority=senior,director,vp

输出:

🇸🇰 Slovak Experts Extractor for Leaf NGO
=========================================
Target: 500 senior Slovak professionals working abroad
Seniority levels: senior, director, vp

🔐 Getting authentication cookies...
📊 Checking total available records...
   Found 1,247 Slovak experts abroad with selected seniority

📥 Extracting 500 records in 5 batches...
   Batch 1/5 (offset 0)... ✅ Got 100 records
   ⏳ Waiting 3s before next batch...
   Batch 2/5 (offset 100)... ✅ Got 100 records
   ...
   Batch 5/5 (offset 400)... ✅ Got 100 records

✅ Extracted 500 Slovak experts
   After deduplication: 548 unique profiles
💾 Saved to: slovak-experts.json
📄 CSV saved to: slovak-experts.csv

📈 Summary:
   Top locations:
   - United States: 198
   - United Kingdom: 142
   - Germany: 87
   - Netherlands: 34
   - Switzerland: 28
   - Austria: 21
   - Czech Republic: 18
   - Canada: 11
   - Ireland: 5
   - Australia: 3
   - France: 1

总耗时: 45分钟(包括API发现、脚本编写、数据提取)。

威力所在: 智能体将浏览器自动化用作可组合的基础能力。导航、检查、认证、提取——每一步都清晰简洁。

为何重要

复合叠加的Token效率

方案Token开销占上下文比例
Chrome DevTools MCP约18,000个token9.0%
Playwright MCP约13,700个token6.8%
浏览器技能约300个token0.15%

节省:上下文消耗减少60倍。

那就是17,700个token,可以用于真正的工作——文档、代码、推理。

简单带来速度

MCP方式:

  • 每次会话启动新浏览器
  • 等待初始化
  • 通过MCP协议运行工具
  • 解析结构化响应

技能方式:

  • 连接到运行中的浏览器(即时)
  • 直接执行脚本(无协议开销)
  • 输出到文件(与标准工具组合)
  • 命令之间保持浏览器存活

实际差异: 45分钟提取548位专业人士,而非数小时的自定义集成。

设计即可扩展

需要新功能?写一个50行的脚本。

示例:交互式元素选择器(15分钟内构建完成):

// browser-pick.ts
// 用户在浏览器中点击元素,智能体获取选择器

import puppeteer from 'puppeteer-core';

async function pick() {
    const browser = await puppeteer.connect({...});
    const page = await browser.pages()[0];

    // 注入点击监听器
    await page.evaluate(() => {
        document.addEventListener('click', (e) => {
            const el = e.target;
            // 返回选择器、文本、属性等
            console.log({
                tag: el.tagName,
                selector: getSelector(el),
                text: el.textContent,
                ...
            });
        });
    });
}

试试把这个做成MCP工具,再试试为你的特定用例修改它。

配置文件支持改变一切

使用你的Chrome配置文件:

  • 已登录Google、GitHub、LinkedIn、Clay等
  • 无需凭据管理
  • 无需OAuth流程
  • 无需会话处理
  • 直接导航即可工作

对于Clay提取: 我们没有编写任何认证代码。浏览器已有会话,智能体直接使用即可。

架构:技能 > 工具

Anthropic在他们的智能体技能演讲中阐述了这一点:

"代码不仅是一个使用场景,更是通向数字世界的通用接口。"

技能是包含程序性知识的有组织的文件夹。 渐进式加载意味着你可以给智能体数百个技能,而不会淹没上下文。

MCP提供连接性。 技能提供专业能力。

浏览器技能证明了这一点:

  • 元数据:"你有浏览器自动化能力"
  • 文档:6,131个字符(加载时约300个token)
  • 脚本:仅在需要时执行,不加载到上下文
  • 可组合:输出文件,与其他技能配合工作

何时使用MCP vs 技能

使用MCP服务器的情况:

  • 需要实时数据流(数据库、API)
  • 外部服务提供官方MCP集成
  • 工具状态必须跨请求持久化
  • 多个智能体需要共享访问

使用技能的情况:

  • 想要最小的token开销
  • 与bash/文件的可组合性很重要
  • 需要频繁自定义行为
  • 迭代速度 > 标准化协议

两者结合使用: MCP负责连接(数据库、Slack、Notion),技能负责专业能力(浏览器自动化、数据处理、工作流)。

亲自尝试

浏览器技能在TeamDay中已可使用。可以让智能体:

"导航到example.com并提取所有文章标题"
"分别在亮色和暗色模式下截取我们主页的截图"
"找到此页面上搜索按钮的选择器"
"提取Hacker News上得分超过100的前50篇帖子"

智能体将自动使用浏览器技能——连接、导航、提取、输出结果。

Token开销: 加载时约300个token。比Chrome DevTools MCP少60倍。


核心洞见

现代大语言模型的编码能力已足够强大,简单脚本加文档的方式胜过复杂工具。

你不需要26个专用浏览器工具。你只需要7个基础原语,以及一个知道如何组合它们的智能体。

结果: 上下文开销更少。执行更快。定制更易。实际工作在几分钟而非数小时内完成。

为Leaf NGO提取548位斯洛伐克专业人士。 45分钟内完成,Token开销仅300个。

这就是轻量级技能的威力。


基于Mario Zechner的洞见。为TeamDay智能体构建。已在真实NGO工作中投入生产使用。

Turn the best models into shipped work

Teamday installs AI employees with the right model, harness, MCP servers, workspace files, review path, and recurring mission. Stop comparing tools in isolation and put them to work.