性能分析器

在浏览器自动化过程中捕获 Chrome DevTools 性能分析数据。 使用这些分析数据来诊断页面加载缓慢、昂贵的 JavaScript 执行、布局抖动以及其他在智能体工作流中的性能瓶颈。

基本用法

# 开始分析
agent-browser profiler start

# 执行操作
agent-browser navigate https://example.com
agent-browser click "#button"

# 停止并保存分析数据
agent-browser profiler stop ./trace.json

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

命令

命令说明
profiler start开始记录性能分析数据
profiler start --categories <列表>使用自定义的跟踪类别启动
profiler stop [路径]停止分析并将数据保存到文件

跟踪类别

--categories 标志接受一个以逗号分隔的 Chrome 跟踪类别列表。

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 文件:

{
  "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 -- 性能面板 > 加载分析数据
  • Perfetto -- https://ui.perfetto.dev/(拖放 JSON 文件)
  • Trace Viewer -- 在任意 Chromium 浏览器中访问 chrome://tracing

使用场景

  • 页面加载分析 -- 对导航过程进行分析,以识别缓慢的资源加载、长时间任务或布局变化
  • 交互性能分析 -- 衡量点击、表单填写等用户交互的成本
  • CI 回归检测 -- 每次构建时捕获分析数据,并随时间对比追踪数据
  • 智能体工作流优化 -- 找出智能体流程中成本最高的步骤

限制

  • 仅适用于基于 Chromium 的浏览器(Chrome、Edge)。不支持 Firefox 或 WebKit。
  • 分析期间,跟踪数据会累积在内存中(最多容纳 500 万个事件)。应在感兴趣区域结束后尽快停止分析。
  • 停止数据收集存在 30 秒超时。如果浏览器无响应,停止命令可能失败。
  • 当未提供输出路径时,分析数据将保存至 agent-browser 临时目录下的自动生成路径中。