跳转到主要内容
Claude Code 是 Anthropic 官方的 Claude CLI 工具。配置 Playwright MCP 服务器后,它可以操控真实浏览器完成 Web 任务,并通过 browseruse-bench 以非交互模式(-p)进行基准测试。

工作原理

与基于 SDK 的 Agent 不同,Claude Code 以外部子进程方式运行:
bubench → claude -p "<任务>" --output-format stream-json → Playwright MCP → 浏览器
Agent 从 Claude Code 进程流式读取 JSON 事件,从 browser_take_screenshot 工具结果中提取截图,并将结构化日志写入 api_logs/

前置条件

1. 安装 Claude Code
npm install -g @anthropic-ai/claude-code
2. 登录认证
claude auth login
3. 添加 Playwright MCP(用户级别) 使用 user scope,确保 Claude Code 在作为子进程调用时、无论工作目录在哪都能加载 MCP 服务器:
claude mcp add playwright --scope user -- npx @playwright/mcp@latest
验证服务器已连接:
claude mcp list
# playwright: npx @playwright/mcp@latest - ✓ Connected

配置

在根目录 config.yamlagents.claude-code 下配置:
agents:
  claude-code:
    active_model: sonnet        # 当前使用的模型配置名
    models:
      sonnet:
        model_id: claude-sonnet-4-6
        api_key: $ANTHROPIC_API_KEY
      opus:
        model_id: claude-opus-4-6
        api_key: $ANTHROPIC_API_KEY
    defaults:
      max_turns: 50
      timeout: 300
      allowed_tools: "mcp__playwright*"
active_model 设置为默认使用的模型配置名,也可在运行时切换:
bubench run --agent claude-code --benchmark LexBench-Browser --model opus

配置参数说明

参数说明默认值
model_idClaude 模型 IDclaude-sonnet-4-6
max_turns最大对话轮数(--max-turns50
timeout任务超时时间(秒)300
allowed_tools传给 --allowedTools 的工具名模式mcp__playwright*
system_prompt自定义 system prompt(覆盖默认值)见下方
playwright_mcp_command启动 Playwright MCP 服务器的可执行文件npx
playwright_mcp_args传给 MCP 启动程序的参数(包名 + 选项)["@playwright/mcp@latest"]

默认 System Prompt

若未设置 system_prompt,Agent 使用内置提示词,涵盖三个方面:
  1. 工具限制 — Claude 只能使用 mcp__playwright__* 工具;Bash、WebFetch、Skill、Agent 等内置工具被明确禁止。
  2. 任务完成规则 — 若页面(如搜索结果)中已有足够信息,立即给出答案,不再点击进入子页;遇到验证码或访问限制时,最多重试一次后回退到已收集的数据。
  3. 截图规则 — 调用 browser_take_screenshot 时仅传 {"type": "png"},不指定 filename,确保图像以 base64 内联方式返回并被结果解析器捕获。
如需覆盖,在 config.yamlagents.claude-code.defaults 下设置 system_prompt
不推荐:configs/agents/claude-code/config.yamlconfigs/agents/ 下的独立配置文件不再是推荐方式,后续版本可能下掉。请改用根目录 config.yaml(见上方)。

使用示例

基础运行

# 运行 LexBench-Browser 前 3 个任务
bubench run \
  --agent claude-code \
  --benchmark LexBench-Browser \
  --mode first_n \
  --count 3

运行全部任务

bubench run \
  --agent claude-code \
  --benchmark LexBench-Browser \
  --mode all \
  --skip-completed

评估

bubench eval \
  --agent claude-code \
  --benchmark LexBench-Browser \
  --model-id claude-sonnet-4-6

输出目录结构

每个任务完成后写入以下文件:
experiments/LexBench-Browser/All/claude-code/<model-id>/<timestamp>/tasks/<id>/
├── result.json          # AgentResult:答案、状态、指标、费用
├── stdout.txt           # claude CLI 的完整 stream-json 输出
├── stderr.txt           # Claude Code 标准错误
├── trajectory/
│   ├── screenshot-1.png # 从 browser_take_screenshot 工具结果提取
│   ├── screenshot-2.png
│   └── ...
└── api_logs/
    ├── system_prompt.txt # 使用的 system prompt
    ├── step_001.json     # 每轮:URL、工具调用、工具结果
    ├── step_002.json
    ├── ...
    └── summary.md        # 可读的逐步操作日志
截图从流式输出中的 browser_take_screenshot 工具结果提取。该工具必须在不指定 filename 参数的情况下调用,图像才能以内联 base64 方式返回并被解析器捕获;默认 system prompt 已强制执行此规则。Playwright MCP 的操作超时时间设置为 30 秒(高于默认 5 秒),以应对加载外部字体较慢的页面。

支持的 Benchmarks

  • ✅ LexBench-Browser
  • ✅ Online-Mind2Web
  • ✅ BrowseComp

常见问题

“Executable ‘claude’ not found” Claude Code 未安装或不在 $PATH 中。执行 npm install -g @anthropic-ai/claude-code 并用 claude --version 验证。 MCP 工具权限被拒绝 Agent 运行时会自动添加 --dangerously-skip-permissions(非交互模式必需)以及与配置匹配的 --allowedTools。若工具仍被拒,用 claude mcp list 确认 MCP 服务器名称,并检查配置中的 allowed_tools 前缀是否匹配(如 mcp__playwright*)。 结果中没有截图 确认 Playwright MCP 服务器已连接(claude mcp list)。默认 system prompt 会指示 Claude Code 调用 browser_take_screenshot 且不传 filename 参数——若使用自定义 system_prompt,请保持相同规则以确保图像内联返回并被解析器捕获。若截图仍然失败,检查 stdout.txt 中是否有 TimeoutError: browserBackend.callTool——这表明页面加载外部资源较慢,可通过在 playwright_mcp_args 中增大 --timeout-action 值来解决。 stream-json requires —verbose 错误 Agent 已自动添加该标志。若手动运行 claude 时遇到此错误,请加上 --verbose

相关链接