
分享一个浏览器可观测性工具 Skill:browser-trace
来自 @browserbase 团队,在你已有主自动化(Playwright、Stagehand、browser skill、bb 等经 CDP 连上的会话)上,再挂一个只读 CDP 客户端,把 DevTools 事件、截图、DOM 快照成体系落盘,供事后用 jq/rg/脚本检索。
https://t.co/anAw0g6XAC
技术前提(为什么能「不打断主流程」)
同一个 Chrome DevTools 目标允许多个 CDP 客户端并行。主自动化是一个客户端发指令;这个 skill 的第二个客户端只开观测域(Network、Console、Runtime、Log、Page 等),不发送会改变页面的动作域命令,故与主驱动并存。
三块机制
· Firehose:browse cdp 把 CDP 全量流按行写成 NDJSON(cdp/raw.ndjson)。
· Sampler:定时用 browse --ws screenshot 与 browse --ws get html body(--ws 一次性、不抢常驻 daemon)拉截图与整页 HTML,与事件流并行。
· Bisector(跑完后):bisect-cdp.mjs 扫一遍 raw.ndjson,按 CDP 方法分桶成多份 JSONL;并依顶层 Page.frameNavigated 按「页面段」再切,形成 pages/000/… 等树状结构,便于按导航切片分析。
适用场景
· 自动化失败/卡住/选不到元素/JS 异常需要事后还原。
· 希望在不重启的前提下,对已运行中的会话中途挂上 trace。
· 需要把网络、控制台、DOM/页面、截图用时间戳对齐,做因果推断。
实践上最重要的约束
· 采样间隔不宜过密(建议别快于约 1s,默认 2s 较稳):每次采样都是额外 CDP/截图成本。
· 需要 DOM 域的细粒度树变更 可扩展 O11Y_DOMAINS 加 DOM,但会很吵。
· 跑完即使用户代码崩了,也应 stop-capture.mjs,避免僵尸进程与缺失 stopped_at。
· bisect 对同一 run 可反复跑(幂等覆盖分桶结果)。
· 远程自动化应用 browse --connect 对同一会话,不要每次 browse env remote 新开 session。
derek (@derekmeegan)
Introducing the /browser-trace skill,
Give your agent 100% observability into its browser: dump network requests, DOM content, screenshots, and CDP logs into a searchable filesystem.
Great for reverse engineering, autoresearch loops, and monitoring the situation ™️.