用途
browser-record 是 ruflo 中所有其他浏览器技能赖以组合的基础原语。它打开一个具名浏览器会话,为其分配一个 RVF 认知容器,并把每一个动作绑定到 ruvector 轨迹步骤上。在插件中,任何非一次性的浏览器交互都应通过本技能(或包装它的技能)来发起。
主要能力
- 分配会话 ID 与 RVF 容器:会话 ID 采用固定格式
<YYYYMMDD-HHMMSS>-<task-slug>,下游的/ruflo-browser ls会解析该格式。 - 通过 ruvector 钩子开启轨迹记录(trajectory-begin),并在每次交互前后记录轨迹步骤(trajectory-step),记录动作、参数与结果。
- 通过 MCP 工具
mcp__plugin_ruflo-core_ruflo__browser_open打开浏览器并访问 URL。 - 对初始状态进行快照:使用 browser_snapshot 获取可访问性树,使用 browser_screenshot 获取基线图像。
- 干净结束:调用 trajectory-end 给出判定(如 pass),并用 rvf compact 压缩容器。
- 在 AgentDB 的 browser-sessions 命名空间下建立索引,存储 rvf_id、host、task、verdict 等信息。
使用方式
技能通过自身的 bash 步骤驱动整个生命周期。典型流程如下:
- 分配会话 ID 并创建 RVF 容器:
SID="$(date +%Y%m%d-%H%M%S)-${TASK_SLUG:-record}"
npx -y ruvector@0.2.25 rvf create "$SID.rvf" --dimension 384
npx -y ruvector@0.2.25 hooks trajectory-begin --session-id "$SID" --task "$1"
-
通过
mcp__plugin_ruflo-core_ruflo__browser_open打开浏览器并传入 URL。 -
快照初始状态:browser_snapshot 获取可访问性树,browser_screenshot 获取基线图像。
-
每次交互前后记录轨迹步骤:
npx -y ruvector@0.2.25 hooks trajectory-step \
--session-id "$SID" --action click --args '{"selector":"#login"}' --result ok
- 干净结束:
npx -y ruvector@0.2.25 hooks trajectory-end --session-id "$SID" --verdict pass
npx -y ruvector@0.2.25 rvf compact "$SID.rvf"
- 在 AgentDB 的 browser-sessions 下建立索引:
npx -y @claude-flow/cli@latest memory store --namespace browser-sessions \
--key "$SID" --value "{rvf_id:$SID,host:...,task:...,verdict:pass}"
适用场景
- 启动任何非一次性、非临时探测的浏览器交互。
- 在交互式探索站点时保留轨迹,以便后续回放或分析。
- 建立可复用的会话,供下游技能(browser-extract、browser-form-fill、browser-test)组合使用。
限制与注意事项
- 在
browser_session_recordMCP 工具发布之前(ADR-0001 §7),本技能需在自身的 bash 步骤内驱动生命周期。不要在没有这些包装的情况下直接调用mcp__plugin_ruflo-core_ruflo__browser_open。 - 会话 ID 格式固定为
<YYYYMMDD-HHMMSS>-<task-slug>,下游/ruflo-browser ls依赖该格式解析。 --with-dom开销较大(每次导航都会完整转储 HTML),默认关闭。- AIDefence 门控在提取时生效,而非在导航时生效。browser-record 是原语,内容脱敏由读取内容的技能(browser-extract、browser-test)负责。