用途
Browser Replay 用于重新驱动一段已录制的会话轨迹。它适用于回归测试、确定性重跑,也作为验证路径,确认 browser-record 与 browser-selectors 实际能产出可重放的内容。
该技能是 v0.2.0 架构的关键假设。ADR-0001 验证第 4 节要求:在 10 个具有不同漂移特征的网站上达到不低于 80% 的重放成功率,提案才能从 Proposed 变为 Accepted。如果发现重放不可靠,需将失败模式记录到 findings.md 并上报给 ADR。
适用时机
- 部署后对 UI 流程进行回归测试。
- 复现先前会话中捕获的 bug。
- 为 browser-screenshot-diff 比较同一流程的两次运行。
- 分叉会话(/ruflo-browser fork)并在变更前重放父会话。
使用步骤
- 定位源会话:
npx -y ruvector@0.2.25 rvf status <session-id>.rvf
-
加载轨迹:读取
.../trajectory.ndjson。每一行的格式为{ts, action, args, selector, result}。 -
通过
mcp__plugin_ruflo-core_ruflo__browser_open打开全新浏览器(目标 URL 为原始 URL 或通过--url覆盖指定)。 -
对轨迹中的每一步,调度匹配的 MCP 工具(
browser_click、browser_fill、browser_eval等),并传入录制时的参数。 -
遇到选择器未命中时,不要立即失败——查询 browser-selectors 命名空间,为同一
<host>:<intent>找到嵌入相似的候选选择器并重试一次:
npx -y @claude-flow/cli@latest memory search --namespace browser-selectors \
--query "<host> <intent>" --limit 5
-
为本次重放运行记录新的轨迹(分配全新 RVF 容器,通过
rvf derive追踪血缘)。 -
判定:统计 matched-step / total-step 比率。默认容差阈值为 0.85(可通过
--tolerance配置)。判定结果写入 findings.md。
限制与注意事项
- Browserbase 明确不提供重放功能(rrweb 会话重放已弃用)。本项目押注选择器嵌入恢复,在漂移严重的网站上预计会有噪声。
- 网络不确定性(时序、内容变化)可能产生误判失败。可使用
--mutate注入预期变化,或固定到 fixture。 - 如需视觉差异对比,可对接 browser-screenshot-diff,对父会话 id 进行比较。
- 如果某一步的选择器恢复需要超过一次重试,请记录下来。这表明该站点需要重新录制,而不是重放。