Recorder 用于录制用户手动执行的实时浏览器工作流,并将其转换为可回放的脚本或 API。它面向需要手动捕获浏览器操作的场景,例如多标签页操作等。如果用户希望进行无需手动录制的程序化浏览器自动化,则不应使用本技能,而应改用 opensteer 技能。
用途
录制真实浏览器流程并保存为确定性回放脚本。适用于手动浏览器捕获、多标签页等场景。
前置条件
验证 CLI 是否可用:
command -v opensteer >/dev/null 2>&1 && echo "ok" || echo "opensteer not found"
云端录制需验证所需环境变量已设置:
test -n "$OPENSTEER_API_KEY" && test -n "$OPENSTEER_CLOUD_APP_BASE_URL" && echo "ok" || echo "missing cloud env vars"
快速开始
本地录制:
opensteer record --workspace <id> --url <url>
云端录制:
opensteer record --provider cloud --workspace <id> --url <url>
模式选择
当用户希望与本地 Playwright 浏览器窗口交互时,使用 provider=local。本地模式需要带界面的持久化浏览器,不要传入 --headless true。
当用户希望通过云端浏览器会话 UI 交互时,使用 provider=cloud。云端模式不要强制 headless=false。云端不支持 browser.mode="attach"。
工作流程
- 运行 opensteer record --workspace <id> --url <url>(云端则加上 --provider cloud)。
- 若为云端,将 CLI 打印的浏览器会话 URL 提供给用户。
- 告知用户手动执行工作流。
- 明确告知用户如何停止:本地模式点击浏览器页面中注入的 Stop recording 按钮;云端模式点击浏览器会话工具栏 UI 中的 Stop recording。
- 用户录制期间保持 record 命令运行,不要中断。除非用户明确要中止,否则不要用 Ctrl+C 停止。
- 等待 CLI 进程退出。不要仅因为浏览器 URL 已打印就认为录制完成。
- 验证输出文件存在于 .opensteer/workspaces/<id>/recorded-flow.ts(或指定的 --output 路径)。
- 编辑前先阅读并总结生成的脚本。
- 若用户需要验证,回放脚本:npx tsx <path-to-recorded-flow.ts>。
主要能力
录制器可捕获点击、文本输入、按键、滚动、下拉选择变更、导航以及多标签页操作。
限制
不完全支持以下内容:
- 跨源 iframe(不会录制)
- Shadow DOM 选择器(尽力而为)
- 文件上传、拖放和 canvas 交互
- 浏览器后退/前进检测(可能回退为直接导航回放)
规则
- 录制要求 engine=playwright。
- 不要使用已移除的超时标志,如 --record-timeout-ms。
- 如果启动参数值以 -- 开头,应传为 --arg=...,而不是 --arg ...。
- 用户录制期间不要混入额外的 agent 操作,除非用户明确要求。
- 如果回放失败,应调试并修复生成的脚本,而不是立即重新录制。
故障排除
- 录制器无法启动:验证 workspace ID 有效且浏览器引擎为 playwright。
- CLI 以错误退出:重试前先阅读 stderr 中的错误信息。
- 生成的脚本有错误:检查并修复脚本,而不是重新录制。
- 输出文件缺失:检查用户是否正确停止录制(点击按钮,而非 Ctrl+C)。