用 Playwright 代码直接驱动 AI Agent 才是降低 Token 成本的正确姿势

创业者阿杰 中级 2026/7/23 408 浏览 10 点赞 约 2 分钟

在开发 AI Agent 操作浏览器的功能时,最让人头疼的往往不是模型能不能识别按钮,而是那极其恐怖的 Token 消耗速度。很多传统的浏览器工具集采取的是“全量 DOM 传输”或“粗暴简化”的策略,把海量的页面信息强行塞给模型,这不仅导致上下文窗口迅速被填满,还经常因为无关信息的干扰导致模型在执行复杂指令时出现逻辑断层。

最近在实测 Browser Tools SDK 后发现,它解决成本问题的逻辑非常简洁:不再尝试通过一层层抽象的 API 来传指令,而是直接把执行权交给模型去写 Playwright 代码。

这个方案的核心在于它只暴露了 6 个精简的工具,其中最关键的是 browser_snapshot(高效快照)和 browser_exec(直接执行代码)。由于主流大模型(如 Claude 3.5 或 GPT-4o)在训练阶段接触过海量的 Playwright 源代码,它们写脚本的能力其实远强于通过 API 传递“点击某个 ID 的元素”这种指令。直接让模型生成代码并执行,反而比通过中间层转换要稳得多。

从实测数据来看,这种方案在 26 个真实场景任务中的通过率能够与目前顶级的浏览器工具持平,但最惊人的是成本控制——单个任务的成本比次优方案低了约 55%。对于需要大规模部署的生产环境 Agent 来说,这 55% 的成本下降直接决定了项目是否具有商业可行性。

在实际部署时,它的集成路径非常短。如果你使用的是 TypeScript,只需要几行代码就能将浏览器能力挂载到 AI SDK 中。例如,通过 LocalBrowserProvider 调用本地的 Chromium 实例,配合 createAiSdkBrowserTools 即可快速完成配置:

import { createAiSdkBrowserTools } from "libretto-browser-tools/ai-sdk";
import { LocalBrowserProvider } from "libretto-browser-tools";

const { tools } = createAiSdkBrowserTools(new LocalBrowserProvider());

const result = await generateText({
  model: anthropic("claude-sonnet-4-5"),
  tools,
  prompt: "Go to Hacker News and tell me the top story",
});

这里有几个技术细节值得关注。首先是快照机制的优化,它通过精简 DOM 信息的过滤算法,避免了冗余 HTML 标签在上下文中的刷屏,这也是 Token 占用量大幅下降的主因。其次是灵活的提供者模式,虽然示例中使用的是本地运行,但它同样支持接 Browserbase 等云端浏览器服务,这意味着你可以根据任务的并发量在本地和云端之间无缝切换。

此外,该 SDK 原生支持 AI SDK 和 Pi,兼容性处理得很好。如果你厌倦了调试那些笨重的浏览器插件,或者在尝试构建一个能够低成本运行的自动化 Agent 工作流,这种“以代码执行代替 API 指令”的轻量化路径非常值得尝试。

对于开发者而言,你可以直接参考 https://libretto.sh/docs/browser-tools/quickstart 快速开始。在实际运行中,建议重点观察 browser_snapshot 返回的页面片段,你会发现它在保留关键结构的同时,剔除了大量干扰模型判断的冗余代码。

大模型LLM

全部回复 (3)

独立开发者Leo 专家 2026/7/23
其实就是多了层抽象封装,不用每次都手写那些冗长的 selector 和等待逻辑,开发速度快多了,至于运行效率估计差不了多少。
0 回复
大Max爱学习 初级 2026/7/23
如果真是用 headless browser,那内存占用得高成什么样?感觉这种方案在生产环境下根本跑不动,大概率还是接的 API。
0 回复
杭漂码农 专家 2026/7/23
没图没表没法信,建议直接贴个对比表格,尤其是Token消耗那块,大家一眼就能看出水分多大。
0 回复

发表回复

支持 Markdown 格式