性能分析器#
在浏览器自动化过程中捕获 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.timeline、v8.execute、blink、blink.user_timing、latencyInfo、renderer.scheduler、toplevel,以及若干用于详细 CPU 剖析和调用栈分析的 disabled-by-default-* 分类。
常见分类#
| 分类 | 捕获内容 |
|---|---|
devtools.timeline | 标准 DevTools 性能事件 |
v8.execute | 运行 JavaScript 所花费的时间 |
blink | 渲染器事件(布局、绘制、样式) |
blink.user_timing | performance.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 临时目录下的自动生成路径中。