1. 为什么 Claude Code 操作网页总在“选择器”上翻车
如果你最近在折腾 Claude Code 的自动化能力,大概率会遇到一个尴尬场景:让 AI 帮你登录后台抓个数据,结果它在 CSS 选择器上反复横跳,class 名一变脚本就挂,页面结构微调定位就失效。更难受的是,一个简单的表单填写,上下文窗口先被 DOM 树塞爆——一万五千多个 token 全用来描述页面结构,真正干活的空间所剩无几。
这就是传统浏览器自动化工具的死结。选择器脆弱得像玻璃,完整可访问性树是 Token 黑洞,每次初始化浏览器又慢得像等快递。而 Vercel Labs 开源的 agent-browser,正是冲着这三个痛点来的。它给 AI 装上了一双“能看懂网页的眼睛”和一双“能操作网页的手”,用语义定位替代 CSS 选择器,用元素引用替代 DOM 树 dump,实测下来 Token 消耗能压到原来的零头。
agent-browser 是什么?一句话:它是专为 AI Agent 设计的浏览器自动化 CLI 工具,不是新发明的浏览器,而是把 Playwright 的能力包装成 AI 友好的命令集。108+ 命令覆盖导航、交互、抓取、截图、会话、移动模拟、视频录制等 16 个类别,启动时间低于 50ms,相比 Playwright MCP 能省下约 93% 的 Token。适合谁?自动化测试工程师、数据分析师、运维巡检、以及所有想让 Claude Code 真正“动手操作网页”的开发者。
但光有 agent-browser 还不够。Claude Code 要调用它,中间需要一条稳定的模型通道来解析指令、生成操作序列。如果每次调用都走官方直连,成本和稳定性都是问题。这篇就聚焦一件事:怎么在 Claude Code 里接入 agent-browser,并用 TaoToken 统一 Key 和 API 通道把整条链路配通,最后附一条可复制的验证命令,确认调用链路连通、Token 消耗符合预期。
2. TaoToken 前置:给 Claude Code 一条统一的模型通道
在动手配 agent-browser 之前,先把模型通道这件事说清楚。Claude Code 本身是个 CLI 工具,它需要调用大模型来理解你的自然语言指令,再翻译成 agent-browser 能执行的命令。默认情况下它走官方通道,但实际用起来你会遇到两个问题:一是多工具切换时 Key 管理混乱,二是长会话下成本不好控制。
TaoToken 在这里扮演的角色,是给 Claude Code 提供一个统一的 API 入口。你只需要一个 Key,就能在 Claude Code、Cline、Codex 等多个工具之间复用同一条通道,Base URL 统一指向https://taotoken.net/api。这样做的好处很直接:配置一次,多处生效;Token 消耗集中可见;模型 ID 切换不用改代码。
具体到 agent-browser 这个场景,链路是这样的:你在 Claude Code 里输入“打开某网站并填写表单”,Claude Code 通过 TaoToken 通道调用模型,模型返回 agent-browser 命令序列,Claude Code 执行这些命令,agent-browser 操作浏览器完成动作。整条链路里,TaoToken 负责的是模型调用这一段,agent-browser 负责的是浏览器操作这一段,两者通过 Claude Code 的 settings.json 串起来。
这里要强调一个配置原则:Base URL、API Key、Model ID 这三件套必须写全。很多人配的时候只填了 Key,结果报 401;或者 Base URL 写成了官网首页而不是 API 地址,导致请求打到错误端点。正确的 Base URL 是https://taotoken.net/api,注意不带任何路径后缀。API Key 在控制台的 API Keys 页面生成,Model ID 根据你实际使用的模型填写,比如 Claude 系列就填对应的模型标识。
如果你还没生成 Key,可以先去控制台创建。整个流程不复杂:登录后进入 API Keys 页面,点新建,复制生成的 Key 保存好。这个 Key 后面要写进 settings.json,所以别弄丢。另外,TaoToken 的接入文档里有各工具的详细配置示例,遇到不确定的字段可以去对照一下。
配好通道之后,Claude Code 就有了稳定的模型调用能力。接下来才是 agent-browser 的安装和 CLI 配置。顺序别搞反:先通模型,再通浏览器,否则排障时分不清是哪一段出的问题。
3. 可复制配置:settings.json 与 agent-browser CLI 骨架
这一节是整篇的核心,直接给你可复制的配置片段。先装 agent-browser,再配 Claude Code 的 settings.json,最后把两者串起来。
agent-browser 的安装有两种方式。如果你用 OpenClaw 生态,直接clawhub install agent-browser。如果独立使用,走 npm:
npm install -g agent-browser装完之后验证一下:
agent-browser --version能输出版本号就说明 CLI 就位了。接下来配 Claude Code 的 settings.json。这个文件的位置根据系统不同有差异,macOS 和 Linux 通常在~/.claude/settings.json,Windows 在%USERPROFILE%\.claude\settings.json。如果文件不存在就新建一个。
配置骨架如下,注意把sk-开头的 Key 换成你自己在 TaoToken 控制台生成的那个:
{ "env": { "ANTHROPIC_BASE_URL": "https://taotoken.net/api", "ANTHROPIC_API_KEY": "sk-你的TaoToken密钥", "ANTHROPIC_MODEL": "claude-sonnet-4-20250514" }, "permissions": { "allow": [ "Bash(agent-browser:*)" ] } }这里有几个关键点。第一,ANTHROPIC_BASE_URL必须写https://taotoken.net/api,不要加/v1或其他后缀,否则请求会 404。第二,ANTHROPIC_API_KEY填 TaoToken 的 Key,不是 Anthropic 官方的。第三,ANTHROPIC_MODEL填你实际要用的模型 ID,上面只是个示例,具体以你账号可用的模型为准。第四,permissions.allow里加上Bash(agent-browser:*),这样 Claude Code 执行 agent-browser 命令时不会每次弹权限确认。
如果你用的是 Cline 或 Codex,配置逻辑类似,只是文件位置和字段名不同。Cline 在 VS Code 的设置里找 API Provider 配置,Base URL 同样填https://taotoken.net/api。Codex 走auth.json,里面配OPENAI_BASE_URL和OPENAI_API_KEY,Base URL 也是同一个。核心原则不变:Base URL + Key + Model ID 三件套写全。
配完 settings.json 后,还需要让 agent-browser 知道怎么被调用。agent-browser 本身不需要额外配模型,它只负责执行命令。但为了让 Claude Code 能顺畅地生成 agent-browser 命令,你可以在项目根目录放一个CLAUDE.md,里面写清楚 agent-browser 的常用命令格式,比如:
## agent-browser 使用约定 - 打开页面:agent-browser open <url> - 获取交互快照:agent-browser snapshot -i - 点击元素:agent-browser click @e1 - 填充输入框:agent-browser fill @e1 "内容" - 等待加载:agent-browser wait --load networkidle这样 Claude Code 在生成命令时就有参考,不会瞎编参数。整个配置过程不复杂,但每一步都要核对字段,尤其是 Base URL 和 Key 这两项,写错了后面验证必挂。
4. 验证请求:一条命令确认链路连通与 Token 消耗
配置写完,别急着上复杂任务,先用一条最小验证命令确认整条链路是通的。这一步能帮你快速定位问题出在模型通道还是浏览器操作。
验证分两段。第一段验证 TaoToken 通道是否通,第二段验证 agent-browser 是否能被 Claude Code 调用。
先验证通道。在终端里直接发一个请求:
curl -s https://taotoken.net/api/v1/messages \ -H "x-api-key: sk-你的TaoToken密钥" \ -H "anthropic-version: 2023-06-01" \ -H "content-type: application/json" \ -d '{ "model": "claude-sonnet-4-20250514", "max_tokens": 64, "messages": [{"role": "user", "content": "回复 OK"}] }'如果返回里有content字段且包含文本,说明通道通了。如果返回 401,检查 Key 是否写对;如果返回 404,检查 Base URL 是否多了路径;如果返回模型不存在,检查 Model ID 是否拼错。
通道通了之后,验证 agent-browser 本身:
agent-browser open https://example.com && agent-browser snapshot -i正常的话你会看到类似这样的输出:
@e1 [link] "More information..."这说明 agent-browser 能打开页面并生成元素引用快照。注意这里的@e1就是后面操作要用的引用,AI 直接说“点击 @e1”就行,不用管底层 DOM 怎么变。
最后一步,在 Claude Code 里发一条自然语言指令,看它能不能生成并执行 agent-browser 命令。启动 Claude Code:
claude然后输入:
用 agent-browser 打开 https://example.com,获取交互快照,告诉我页面上有哪些可点击元素如果 Claude Code 通过 TaoToken 通道拿到模型响应,并正确调用了agent-browser open和agent-browser snapshot -i,你会看到它把快照结果整理成自然语言回复你。这一步成功,说明整条链路——Claude Code → TaoToken → 模型 → agent-browser → 浏览器——全部连通。
关于 Token 消耗,你可以在 TaoToken 控制台的用量页面看到这次请求消耗了多少。对比一下传统方式:完整 DOM 树 dump 动辄一万五千 token,而 agent-browser 的快照只给关键元素引用,通常几百 token 就够。93% 的节省不是虚的,实测下来差距很明显。
5. 本篇常见错排查:401、local proxy failed 与 reading choices
配置过程中最容易踩的坑就那么几个,这一节按真实报错来对照排查。
报错一:401 Unauthorized
这是最常见的。原因通常是 Key 写错、Key 过期、或者 Base URL 和 Key 不匹配。排查步骤:先确认ANTHROPIC_API_KEY填的是 TaoToken 的 Key 而不是 Anthropic 官方的;再确认这个 Key 在控制台里是启用状态;最后确认 Base URL 是https://taotoken.net/api,没有多余路径。如果用的是 Cline,检查 API Provider 是否选对了,Base URL 是否填在正确字段。
报错二:local proxy failed / connection refused
这个报错通常出现在 Claude Code 启动时,说明它尝试连接的端点不通。排查方向:检查网络是否能访问https://taotoken.net/api,可以用 curl 测一下;检查 settings.json 里 Base URL 是否拼写错误;如果之前配过其他代理工具,确认没有残留的环境变量干扰,比如HTTP_PROXY、HTTPS_PROXY这类。把无关的代理环境变量清掉再试。
报错三:reading choices / unexpected response format
这个报错说明请求发出去了,但返回的数据结构不是 Claude Code 预期的。常见原因是 Model ID 填错了,或者 Base URL 指向了一个不兼容的端点。排查:确认ANTHROPIC_MODEL填的是你账号实际可用的模型 ID;确认 Base URL 没有指向官网首页或其他非 API 地址。如果用的是 Codex 的auth.json,检查OPENAI_BASE_URL是否也指向了https://taotoken.net/api。
报错四:agent-browser command not found
这个跟模型通道无关,是 CLI 没装好或没进 PATH。排查:npm install -g agent-browser是否成功;npm bin -g的路径是否在 PATH 里;如果是 OpenClaw 安装的,确认clawhub命令可用。Windows 用户注意 npm 全局路径可能需要手动加到环境变量。
报错五:OAuth 相关错误
如果你之前配过 Claude Code 的 OAuth 登录,可能会和 API Key 模式冲突。解决方式:确认 settings.json 里用的是ANTHROPIC_API_KEY而不是 OAuth token;如果之前登录过,可以清理一下~/.claude下的缓存文件再重启。
排查的核心思路是分段定位:先确认 TaoToken 通道通不通(curl 测),再确认 agent-browser 能不能独立跑(命令行测),最后确认 Claude Code 能不能串起来(自然语言指令测)。哪一段挂了一目了然,不用瞎猜。
6. 配好之后:让 agent-browser 真正跑起来的几个实操建议
链路通了只是开始,真正让 agent-browser 发挥价值,还得在实操上注意几点。
第一,善用会话保持。agent-browser 支持--session-name参数,登录一次之后状态自动保存,下次直接恢复:
agent-browser --session-name myapp open https://app.example.com # 走登录流程 agent-browser close # 下次直接恢复 agent-browser --session-name myapp open https://app.example.com/dashboard这样不用每次重新登录,省时省 Token。
第二,用snapshot -i而不是全量快照。-i只返回可交互元素,Token 消耗最低。如果你需要页面文本,用agent-browser get text body > page.txt导出,别让 AI 直接读整个 DOM。
第三,批量任务用链式命令。比如批量填表单:
for email in $(cat emails.txt); do agent-browser open https://example.com/signup && \ agent-browser snapshot -i && \ agent-browser fill @e1 "John Doe" && \ agent-browser fill @e2 "$email" && \ agent-browser click @e3 && \ agent-browser wait 2000 done第四,安全边界要设。agent-browser 支持域名白名单和输出长度限制:
export AGENT_BROWSER_ALLOWED_HOSTS="example.com,api.example.com" export AGENT_BROWSER_MAX_OUTPUT_LENGTH=10000这样 AI 不会跑到不该去的域名,输出也不会撑爆上下文。
第五,调试用视频录制。agent-browser open https://example.com --record session.mp4能把整个操作过程录下来,出问题时回看比看日志直观得多。
如果你需要长期跑编码和 Agent 任务,可以考虑 TaoToken 的 Coding Plan,Token 消耗更可控。验证模型效果的话,模型对话页面可以直接试。接入配置遇到问题,API Keys 页面和接入文档里有详细说明。整条链路配通之后,Claude Code 加 agent-browser 的组合,能让你把上下文窗口真正留给重要任务,而不是浪费在描述页面结构上。