五层全记录管道:深入解析ClawBench的会话回放、截图与HTTP流量捕获机制

发布时间:2026/10/16 6:21:34

五层全记录管道:深入解析ClawBench的会话回放、截图与HTTP流量捕获机制 【免费下载链接】ClawBenchOpen-source benchmark for browser AI agents on daily tasks.项目地址https://gitcode.com/gh_mirrors/cl/ClawBench点击查看免费下载ClawBench 是一个面向浏览器 AI Agent 日常任务的开源基准测试框架其核心设计是五层全记录管道5-Layer Recording Pipeline每次任务运行都会同步捕获会话回放视频、动作截图、HTTP 流量、浏览器动作日志和智能体消息转录让AI 是否真的完成了任务成为一件可回放、可核查的事。本文将带你完整看懂这套证据采集机制的原理与落地细节。五层全记录管道解决什么问题评估让 AI 订餐、订机票、投简历这类任务时只看最终分数是不够的。如果 Agent 失败了你需要知道它看到了什么页面点了哪个按钮发出了哪个网络请求脑子里在想什么ClawBench 的答案是每次运行产出五个时间同步的证据层分别回答五个问题。评估规则见 eval/agentic_eval.md层级产出文件回答的问题会话回放data/recording.mp4Agent看到了什么动作截图data/screenshots/*.png每一步的视觉状态HTTP 流量data/requests.jsonlAgent触发了哪些网络请求浏览器动作data/actions.jsonlAgent做了什么点击、按键、滚动智能体消息data/agent-messages.jsonlAgent在想什么推理、工具调用五层数据全部落在容器的/data目录运行结束后统一归档到本地test-output/。会话回放recording.mp4 如何捕获全程视频第一层是最直观的监控录像。容器内跑着一个虚拟显示器XvfbDISPLAY:99Chromium 渲染在它上面。启动时Runtime Server 会用 ffmpeg 的x11grab输入直接抓屏录制成 H.264 视频分辨率 1920×1080、15fps、ultrafast编码预设兼顾画质与体积写入路径/data/recording.mp4结束时通过/api/stop-recording向 ffmpeg 发送 SIGINT 优雅收尾保证 MP4 容器头完整、文件可播放核心代码在 server.py启动录像和 stop_ffmpeg_recording收尾逻辑。一个贴心细节Agent 在新标签页导航时服务器会自动把该标签页切到前台auto-focus确保视频和截图始终拍的是 Agent 正在操作的那个页面。 如果改用 Browserbase 等托管远程浏览器则由服务商录制视频回放链接记录在run-meta.json的browser_runtime.recording_url字段其余四层证据仍保存在本地。配置方式见 docs/browser-runtimes.md。动作截图500ms 节流机制如何既全又不炸盘截图层不是疯狂截图而是与动作事件联动的按需截图每当 CDP 收到一个 DOM 动作事件如点击、输入Runtime Server 就发起一次Page.captureScreenshotCDP 命令两次截图间隔不足500msSCREENSHOT_THROTTLE_MS时自动跳过防止滚动/输入类高频事件刷爆磁盘截图以毫秒时间戳命名存入screenshots/{timestamp}.png天然与actions.jsonl中的时间戳对齐。关键实现见 request_screenshot 节流逻辑 与 截图落盘。这样每跑一步留一张照片评审时能精确复现 Agent 在每个决策点看到的页面。浏览器动作日志actions.jsonl 的 DOM 事件捕获原理第三层记录Agent 到底做了什么。实现方式是 CDP 脚本注入Runtime Server 对每个新页面会话注入一段监听脚本ACTION_CAPTURE_SCRIPT捕获以下事件交互类click、keydown、keyup、input、change、submit页面级pageLoad含 URL 与标题、scroll每条记录包含事件类型、时间戳、当前 URL、目标元素的tagName/id/xpath/ 文本内容、鼠标坐标、输入值等。其中scroll和input是高频事件同样做 500ms 节流。浏览器与服务器之间通过 CDP 的Runtime Binding__clawbenchAction回传数据注入与事件捕获脚本见 ACTION_CAPTURE_SCRIPT。这套注入 绑定的设计意味着任何 harness 的浏览器操作都无法绕过记录——无论是 OpenClaw、Hermes 还是 Claude Code走的是同一条捕获通道。HTTP 流量捕获requests.jsonl 记录与请求拦截的双职第四层是 ClawBench 的看家本领由 CDP 的Fetch 域驱动同时承担两个职责职责一全量流量记录对每个页面会话执行Fetch.enableurlPattern: *requestStage: Request浏览器发出的每一个出站请求都会被暂停并记录一条 JSONurl、method、headers、body自动解析 JSON/表单、query_params、resource_type追加写入requests.jsonl。记录逻辑见 _log_request。职责二拦截不可逆请求保证真网站、零副作用这是 ClawBench 敢在真实生产网站上跑基准的关键。每个任务的task.json中定义了eval_schemaurl_pattern正则 method可选body/params过滤任务目录结构遵循 task.schema.json当最终提交请求下单、投递、提交表单同时命中 URL、方法、请求体过滤条件时Runtime Server 用Fetch.failRequestBlockedByClient就地阻断该请求——用户永远不会被真实扣款被拦截请求写入interception.json含完整请求与匹配到的 schema随即调用/api/stop冻结所有五层记录并结束会话。拦截判定链路见 start_cdp_handler。没有需要拦截的任务则使用占位符__PLACEHOLDER_WILL_NOT_MATCH__让会话跑到超时。拦截还兼任第一阶段评分V2 语料的评分是两阶段的第一阶段就是检查最终被拦截的 HTTP 请求是否匹配任务的 URL/方法确定性、可复现第二阶段再由 LLM 评审员检查请求负载是否满足自然语言指令。评分公式见 eval/scoring.md。智能体消息转录agent-messages.jsonl 记录思考过程第五层回答Agent 在想什么。不同 harness 的消息格式各异AGENTS.md 有完整说明OpenClaw→ session-schema 事件Claude Code→ stream-json 事件system/assistant/user/resultCodex→ 完整会话回放含 reasoning、function_call与function_call_outputPi→ 过滤后的 JSON mode 事件保留完整message_end与thinking块省略流式*_delta片段配合前四层的行为证据评审员可以把意图与行为对照起来检查——比如 Agent 声称已填入免花生酱备注但截图和 HTTP 请求体里都没有这个字段即可判 FAIL。回放与再评分证据如何变成分数每次运行的产物结构固定单任务输出位于test-output/model/harness-case-model-时间戳/run-meta.json # 运行元数据模型、harness、时长、拦截状态 eval-schema.json # 本次运行使用的拦截 schema data/ recording.mp4 # 第一层会话回放 screenshots/ # 第二层动作截图 actions.jsonl # 第三层浏览器动作 requests.jsonl # 第四层HTTP 流量 interception.json # 第四层拦截结果 agent-messages.jsonl # 第五层智能体消息评估流程eval/README.md是会话后post-session评分用--human模式让人类以同样方式完成任务生成人类参考轨迹同样五层格式评审智能体按 agentic_eval.md 评分细则逐任务对比 Agent 轨迹与人类参考轨迹每个判定PASS/FAIL必须附证据引用——具体文件路径加行号例如requests.jsonl 第 42 行显示提交请求缺少配送地址。由于证据全部落盘分数还可以离线复算用clawbench-rescore对已发布的 trace 数据集换评审模型/规则重新打分或用clawbench-reproduce --model 模型 --tolerance 2.0一键验证排行榜分数容差 ±2pp。这正是五层全记录带来的最大红利分数稳定、可审计、可复现。快速上手自己跑一遍记录管道git clone https://gitcode.com/gh_mirrors/cl/ClawBench cd ClawBench ./run.sh容器首次启动会构建镜像Chromium ffmpeg noVNC随后终端会打印一个noVNC 地址如http://localhost:6080/vnc.html——打开它就能实时观看 Agent 操作。单任务运行uv run clawbench-run test-cases/v1/001-daily-life-food-uber-eats claude-sonnet-4-6跑完后到test-output/里翻一翻五层证据一目了然。任务与模型配置说明见 models/models.example.yaml 与 docs/cli.md。社区交流与延伸阅读 ClawBench 中文社区微信群欢迎研究者与开发者交流 trace 分析、harness 适配等话题想继续深入推荐按顺序阅读Runtime Server 端点与数据目录src/clawbench/runtime/runtime-server/README.md容器内架构与五层数据流AGENTS.md评审细则与评分判例eval/agentic_eval.md远程浏览器运行时Browserbase / remote-cdpdocs/browser-runtimes.md赞分享【免费下载链接】ClawBenchOpen-source benchmark for browser AI agents on daily tasks.项目地址https://gitcode.com/gh_mirrors/cl/ClawBench点击查看免费下载相关推荐SoloPi录制回放原理深入触摸事件捕获与重放机制分析SoloPi录制回放原理深入触摸事件捕获与重放机制分析 SoloPi作为一款强大的Android免root性能测试工具其录制回放功能是其核心亮点之一。通过触测试性能测试GoReplay 实时流量捕获与回放实战指南基于 input-raw 的 HTTP 流量录制、转发与多目标回放GoReplay 实时流量捕获与回放实战指南基于 input raw 的 HTTP 流量录制、转发与多目标回放 GoReplay 是一款开源的网络流量监控与回性能测试可观测性网络GoReplay 入门实战指南基于 UNIX 管道哲学的流量捕获与回放GoReplay 入门实战指南基于 UNIX 管道哲学的流量捕获与回放 GoReplaygor是一个开源的 HTTP 流量捕获与回放工具本文基于 doc性能测试可观测性网络上一篇OHIF DICOMweb Proxy 数据源深度解析用动态 JSON 配置驱动 DICOM 图像加载下一篇LeetCode 1044 最长重复子串全解字符串哈希 二分与后缀数组倍增实现创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
延伸阅读

更多相关文章

2026/10/16 6:21:34

Android App与微信小程序双向跳转传参实战指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/16 6:21:34

【链表-9】148.排序链表

题目描述:给你链表的头结点 head ,请将其按 升序 排列并返回 排序后的链表 。示例 1:输入:head [4,2,1,3] 输出:[1,2,3,4]示例 2:输入:head [-1,5,3,4,0] 输出:[-1,0,3,4,5]示例 3…

2026/10/16 6:21:34

【链表-8】146.LRU缓存

题目描述: 请你设计并实现一个满足 LRU (最近最少使用) 缓存 约束的数据结构。 实现 LRUCache 类: LRUCache(int capacity) 以 正整数 作为容量 capacity 初始化 LRU 缓存int get(int key) 如果关键字 key 存在于缓存中,则返回关键字的值&am…

2026/10/16 7:42:01

基于Vue+SpringBoot+Node.js的评奖评优管理系统全栈实践

这不是我第一次做高校业务系统,但每次遇到“评奖评优”这类流程型需求,还是会格外谨慎。原因很简单:表面上它只是“学生提交申请、老师审核、名单公示”三步,实际上背后牵涉多角色协作、材料完整性、量化打分、状态变更留痕、批次…

2026/10/16 7:42:01

外卖点评系统核心设计:维度拆解、评分聚合与异常识别

1. 系统设计与需求拆解1.1 外卖点评和到店点评的本质差异说到点评系统,很多人第一反应是照搬到店评价那一套:打分、写文字、传图片。但真正在外卖场景里跑过一遍就会明白,两者面对的完全是两种信任模型。到店评价建立在“我亲眼看到了环境、摸…

2026/10/16 7:42:01

Python文件读取:read()、readline()、readlines()的区别与选型

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/16 7:42:01

Flink Exactly Once 实现原理与生产落地四大关键

1. 为什么“Exactly Once”不是一句口号,而是Flink工程落地的生死线在某次跨部门数据对账会上,A同学指着大屏上实时订单金额与T1离线报表的3.7%偏差,语气平静但问题尖锐:“上游说Flink保证Exactly Once,下游说Kafka消费…

2026/10/16 7:37:00

考研408应用层协议高频考点与复习方法全解析

1. 应用层到底在考什么:先搞清楚这章的分值分布很多人复习到应用层就开始飘了,觉得前面传输层、网络层那么难都啃下来了,应用层不就是几个协议背一背的事吗。我当年第一次做真题也是这个心态,结果选择题连着错三道,大题…

2026/10/16 5:33:43

Python调用Gemini Structured Outputs实现工单路由门禁

客服工单最怕的不是模型“答错一句话”,而是它给出一段看起来合理的说明,程序却从中猜错优先级。通俗做法是:要求模型只交 JSON(JavaScript Object Notation,轻量数据格式),再让代码验证它。Gem…

2026/10/16 4:03:48

Spring Boot超市进销存系统毕设实战:从需求拆解到答辩通关

最近带的一个学生项目组里,有A同学跑来问我:选什么毕设题目最稳妥,既能让评审老师觉得工作量够,又不会在答辩时被问到语无伦次。我第一反应就是推荐基于Spring Boot的超市仓库管理系统——也就是超市进销存系统。这个题目乍一看平…

2026/10/15 13:42:16

Flutter StatefulWidget 生命周期核心解析

很多刚开始接触 Flutter 的朋友,在看完一堆“Hello World”和基础组件之后,大概率都会撞上同一堵墙:StatefulWidget 里那堆 initState、build、dispose 方法,到底什么时候被调用?为什么顺序是那样?在里面到…

2026/10/16 0:01:11

Cephadm实战指南:Linux系统工程师的生产级Ceph集群部署与排障

简介:本资源是一份完整的Ceph分布式存储系统中文技术文档合集,面向Linux系统运维工程师、云平台架构师及存储方向开发者,帮助读者系统掌握Ceph集群的部署、配置与运维核心能力。文档覆盖对象存储(RGW)、块设备&#xf…

2026/10/16 0:01:11

ITK中SpatialObject几何体系解析:坐标系、变换与管道集成

1. 空间对象的定位:为什么 ITK 需要一套几何描述体系很多刚开始接触 ITK 的朋友,包括我自己,最初都是被它的图像滤波、配准、分割这些“正统”功能吸引进来的。等真正上手做点实际项目,比如把分割出来的器官边界做量化分析、给血管…

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
☎咨询二维码 ☎ ↑