性能分析器#

在浏览器自动化过程中捕获 Chrome DevTools 性能剖析。可用于诊断页面加载缓慢、JavaScript 开销过高、布局抖动以及代理工作流中的其他性能瓶颈。

基本用法#

bash
# Start profiling
agent-browser profiler start

# Perform actions
agent-browser navigate https://example.com
agent-browser click "#button"

# Stop and save profile
agent-browser profiler stop ./trace.json

输出的 JSON 文件可以加载到 Chrome DevTools、Perfetto UI,或任何接受 Chrome Trace Event 格式的工具中。

命令#

命令描述
profiler start开始记录性能剖析
profiler start --categories <list>使用自定义 trace 分类开始
profiler stop [path]停止剖析并保存到文件

跟踪分类#

--categories 标志接受以逗号分隔的 Chrome trace 分类列表。

bash
agent-browser profiler start --categories "devtools.timeline,v8.execute,blink.user_timing"

默认分类包括 devtools.timelinev8.executeblinkblink.user_timinglatencyInforenderer.schedulertoplevel,以及若干用于详细 CPU 剖析和调用栈分析的 disabled-by-default-* 分类。

常见分类#

分类捕获内容
devtools.timeline标准 DevTools 性能事件
v8.execute运行 JavaScript 所花费的时间
blink渲染器事件(布局、绘制、样式)
blink.user_timingperformance.mark()performance.measure() 调用
latencyInfo从输入到显示的延迟
disabled-by-default-v8.cpu_profiler基于采样的 JS CPU 剖析

输出格式#

输出是一个 Chrome Trace Event 格式的 JSON 文件:

json
{
  "traceEvents": [
    {
      "cat": "devtools.timeline",
      "name": "RunTask",
      "ph": "X",
      "ts": 12345,
      "dur": 100,
      "pid": 1,
      "tid": 1
    }
  ],
  "metadata": {
    "clock-domain": "LINUX_CLOCK_MONOTONIC"
  }
}

metadata.clock-domain 字段反映宿主平台(Linux 或 macOS)。在 Windows 上该字段会被省略。

查看剖析文件#

  • Chrome DevTools - Performance 面板 > 加载剖析文件
  • Perfetto - https://ui.perfetto.dev/(拖放 JSON 文件)
  • Trace Viewer - 任意 Chromium 浏览器中的 chrome://tracing

使用场景#

  • 页面加载分析 - 对导航进行剖析,找出缓慢资源、长任务或布局偏移
  • 交互剖析 - 衡量点击、填写表单和其他用户交互的成本
  • CI 回归检查 - 按构建捕获剖析结果,并随时间比较 trace 数据
  • 代理工作流优化 - 找出 agentic 流程中最昂贵的步骤

限制#

  • 仅适用于基于 Chromium 的浏览器(Chrome、Edge)。不支持 Firefox 或 WebKit。
  • 剖析进行时,trace 数据会在内存中累积(上限为 500 万个事件)。请在关注区域完成后尽快停止剖析。
  • 停止时的数据收集有 30 秒超时。如果浏览器无响应,停止命令可能会失败。
  • 如果未提供输出路径,剖析文件会保存到 agent-browser 临时目录下的自动生成路径中。