news 2026/9/11 4:51:52

ruflo 浏览器自动化技能指南:基于 agent-browser 的 AI 优化快照与 Claude-Flow 集成实战

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
ruflo 浏览器自动化技能指南:基于 agent-browser 的 AI 优化快照与 Claude-Flow 集成实战

ruflo 浏览器自动化技能指南:基于 agent-browser 的 AI 优化快照与 Claude-Flow 集成实战

【免费下载链接】ruflo🌊 The original agent meta-harness. Deploy intelligent multi-player swarms, coordinate autonomous workflows, and build conversational AI systems. Features adaptive memory, self-learning intelligence, RAG integration, and native Claude Code / Codex / Hermes and many more Integrated项目地址: https://gitcode.com/GitHub_Trending/cl/ruflo

浏览器自动化是 AI Agent 落地真实业务的关键能力,而传统 DOM/CSS 选择器方案对 LLM 极其不友好——超长页面会把上下文撑爆。本文以 ruflo 仓库中v3/@claude-flow/browser模块的浏览器技能文档为主体,系统讲解基于 agent-browser CLI 的自动化工作流:如何用元素引用(Element Refs)将上下文消耗降低 93%,如何通过snapshot -i获取仅含可交互元素的无障碍树,以及如何与 Claude-Flow 的记忆、Hooks 与 MCP 工具体系深度集成。读完本文,你将掌握一套可复制、可运行的浏览器自动化技能,并理解其背后的源码级原理。

一、技能概览:为 Agent 优化的浏览器自动化

浏览器技能(Browser Automation Skill)位于 v3/@claude-flow/browser/skills/browser/SKILL.md,其技能元数据定义如下:

name: browser description: Web browser automation with AI-optimized snapshots for claude-flow agents version: 1.0.0 triggers: - /browser - browse - web automation - scrape - navigate - screenshot tools: - browser/open - browser/snapshot - browser/click - browser/fill - browser/screenshot - browser/close

核心设计理念只有一句话:用元素引用(@e1@e2)代替完整 DOM 来压缩上下文。该技能声称可将上下文消耗降低 93%——其依据在 v3/@claude-flow/browser/README.md 中有明确示例:传统写法body > div.container > form#login > button[type="submit"].btn.btn-primary对应的元素引用仅为@e3。元素引用来源于无障碍树快照,指向页面上的可交互元素。

从源码结构看,该模块采用分层架构(src/index.ts 及各子目录):

  • 领域层(src/domain):定义ActionResultSnapshotOpenInputClickInput等类型与浏览器适配接口;
  • 应用层(src/application):BrowserService聚合业务逻辑、action-router负责动作分发;
  • 基础设施层(src/infrastructure):AgentBrowserAdapter封装 agent-browser CLI 调用,memory-integrationhooks-integrationsecurity-integration完成生态对接;
  • MCP 工具层(src/mcp-tools/browser-tools.ts):将全部操作注册为browser/前缀的 MCP 工具。

二、环境准备与核心工作流

2.1 安装依赖

技能依赖 agent-browser CLI 与 Claude-Flow 运行时:

# agent-browser CLI(全局安装,必需) npm install -g agent-browser # Claude-Flow CLI(对等依赖) npm install @claude-flow/cli@^3.0.0-alpha # Playwright 浏览器(agent-browser 通常会自动安装,缺失时手动补装) npx playwright install

2.2 四步核心工作流

任何自动化任务都遵循"打开 → 快照 → 交互 → 重新快照"的循环:

# 1. 导航到页面 agent-browser open <url> # 2. 获取含元素引用的无障碍树(-i = 仅可交互元素) agent-browser snapshot -i # 3. 使用快照返回的引用进行交互 agent-browser click @e2 agent-browser fill @e3 "text" # 4. 页面状态变化后重新快照 agent-browser snapshot -i

第 4 步至关重要:页面跳转、弹窗、异步渲染都会让旧引用失效,每次导航后都必须重新快照。这也是 SKILL.md Tips 中第 4 条"Re-snapshot after navigation"的由来。

三、命令速查手册

3.1 导航(Navigation)

命令说明
open <url>导航到 URL
back后退
forward前进
reload刷新页面
close关闭浏览器

在 MCP 工具层,这些对应 browser-tools.ts 中的browser/openbrowser/backbrowser/forwardbrowser/reloadbrowser/close。其中browser/open支持三个可选参数:waitUntil(可选loaddomcontentloadednetworkidle)、headers(设置限定于 URL 来源域的 HTTP 头)、session(隔离会话)。底层实现见 agent-browser-adapter.ts,它通过execFileSync拼装open <url> [--wait <state>] [--headers <json>]调用 agent-browser。

3.2 快照与截图(AI 优化)

命令说明
snapshot完整无障碍树
snapshot -i仅可交互元素(按钮、链接、输入框)
snapshot -c紧凑模式(移除空元素)
snapshot -d 3限制树深度为 3 层
screenshot [path]截图(不传路径时返回 base64)

快照是技能的灵魂。在 MCP 工具browser/snapshot的定义中(browser-tools.ts),interactivecompact默认均为true,即"只显示可交互元素 + 移除空结构元素",正是为了把 LLM 收到的 DOM 压缩到最小。快照还支持selector参数,可将快照范围限定在某个 CSS 选择器内。适配层实现(agent-browser-adapter.ts)会将这些选项映射为-i-c-d-s命令行参数。

3.3 交互(Interaction)

命令说明
click <sel>点击元素
fill <sel> <text>清空并填充输入框
type <sel> <text>以键盘事件方式输入
press <key>按键(Enter、Tab 等)
hover <sel>悬停
select <sel> <val>选择下拉选项
check/uncheck <sel>勾选/取消勾选复选框
scroll <dir> [px]滚动页面

适配层为这些命令提供了更细的参数(agent-browser-adapter.ts):click支持--button(left/right/middle)、--click-count(2 表示双击)、--force(元素不可见时强制点击);type支持--delay模拟真实输入节奏;scroll支持 up/down/left/right 方向与像素值。此外还有快照引用之外的补充操作:dblclickfocusscrollintoviewdragupload,可用于文件上传等复杂场景。

3.4 信息获取(Get Info)

命令说明
get text <sel>获取文本内容
get html <sel>获取 innerHTML
get value <sel>获取输入框值
get attr <sel> <attr>获取属性
get title获取页面标题
get url获取当前 URL

适配层还扩展了get count(统计元素数量)与get box(获取元素坐标尺寸),以及is visible/enabled/checked状态断言(agent-browser-adapter.ts),这些对测试类 Agent 非常实用。

3.5 等待(Wait)

命令说明
wait <selector>等待元素出现
wait <ms>等待指定毫秒数
wait --text "text"等待文本出现
wait --url "pattern"等待 URL 匹配模式
wait --load networkidle等待加载状态

等待是避免竞态条件的关键。适配层实现(agent-browser-adapter.ts)还支持--fn传入自定义等待函数,四类条件(selector / text / url / load)任选其一即可。

3.6 会话(Sessions)

命令说明
--session <name>使用隔离会话
session list列出活动会话

会话是并行与隔离的基础。MCP 工具层通过内存中的sessions注册表(Map<string, AgentBrowserAdapter>,见 browser-tools.ts)按 session ID 复用适配器实例,多个 Agent 可共享浏览器进程但互不干扰;browser/close关闭会话后会自动从注册表中移除。

四、选择器体系:三种定位方式

4.1 元素引用(推荐)

# 从快照获取引用 agent-browser snapshot -i # Output: button "Submit" [ref=e2] # 使用引用交互 agent-browser click @e2

元素引用直接来自无障碍树,确定性强、输出紧凑,是技能文档明确推荐的首选方式。

4.2 CSS 选择器

agent-browser click "#submit" agent-browser fill ".email-input" "test@test.com"

CSS 选择器适合快照之外的兜底定位,但表达冗长,会显著增加上下文开销。

4.3 语义定位器(Semantic Locators)

agent-browser find role button click --name "Submit" agent-browser find label "Email" fill "test@test.com" agent-browser find testid "login-btn" click

语义定位器按 role、label、testid 等语义属性定位,接近自然语言表达,比 CSS 更稳定,适合页面结构频繁变化的场景。

五、实战示例

5.1 登录流程

agent-browser open https://example.com/login agent-browser snapshot -i agent-browser fill @e2 "user@example.com" agent-browser fill @e3 "password123" agent-browser click @e4 agent-browser wait --url "**/dashboard"

5.2 表单提交

agent-browser open https://example.com/contact agent-browser snapshot -i agent-browser fill @e1 "John Doe" agent-browser fill @e2 "john@example.com" agent-browser fill @e3 "Hello, this is my message" agent-browser click @e4 agent-browser wait --text "Thank you"

5.3 数据提取

agent-browser open https://example.com/products agent-browser snapshot -i # 遍历产品元素引用 agent-browser get text @e1 # 产品名 agent-browser get text @e2 # 价格 agent-browser get attr @e3 href # 链接

在编程式场景中,README.md 展示了等价的 TypeScript 写法:browser.extractData(['@e1', '@e2', '@e3'])可批量提取多个引用的文本,返回Record<string, string>

5.4 多会话协作(Swarm)

# 会话 1:导航者(Navigator)登录并保存状态 agent-browser --session nav open https://example.com agent-browser --session nav state save auth.json # 会话 2:爬取者(Scraper)复用同一登录态 agent-browser --session scrape state load auth.json agent-browser --session scrape open https://example.com/data agent-browser --session scrape snapshot -i

这种"导航者登录、多个爬取者共享认证态"的模式是 Swarm 并行爬取的标准做法:只做一次认证,所有工作会话复用,既高效又避免触发风控。模块提供了createBrowserSwarm(见 README.md)用于程序化编排,支持hierarchical拓扑与navigator/scraper/validator/tester/monitor五种预置角色。

六、与 Claude-Flow 的深度集成

6.1 MCP 工具集成

所有浏览器操作均以browser/前缀注册为 MCP 工具(browser-tools.ts),技能元数据声明了核心六个:browser/openbrowser/snapshotbrowser/clickbrowser/fillbrowser/screenshotbrowser/close。注册方式:

import { browserTools } from '@claude-flow/browser'; mcpServer.registerTools(browserTools);

每个工具都带 JSON Schema 输入校验,例如browser/clickbutton字段枚举left|right|middle且默认leftforce可强制点击不可见元素(browser-tools.ts)。技能的导出入口在 src/skill/index.ts,它将 MCP 工具、BrowserService与 Hooks 一并对外暴露。

6.2 记忆集成(Memory Integration)

成功的行为模式可以沉淀为可复用的"模式记忆",下次遇到相似任务时直接检索:

# 存储成功模式 npx @claude-flow/cli memory store --namespace browser-patterns --key "login-flow" --value "snapshot->fill->click->wait" # 相似任务前检索 npx @claude-flow/cli memory search --query "login automation"

程序化层面,BrowserMemoryManager(见 README.md)提供storeTrajectorystorePatternstoreSnapshotstoreError,以及语义检索findSimilarTrajectoriesgetSessionStats。轨迹(Trajectory)在browser.startTrajectory(goal)时开始记录、endTrajectory(success, verdict)时落库,其中包含目标、逐步动作、每步快照与成败判定——这些数据会交给 ReasoningBank 进行模式学习。

6.3 Hooks 集成

# 浏览前 Hook:获取上下文建议 npx @claude-flow/cli hooks pre-edit --file "browser-task.ts" # 浏览后 Hook:记录执行结果 npx @claude-flow/cli hooks post-task --task-id "browse-1" --success true

preBrowseHook会根据目标推荐步骤、检索相似模式并给出模型建议与安全警告;postBrowseHook记录轨迹结果,若成功则沉淀为模式供下次复用(README.md 的 Hooks Integration 章节)。

6.4 安全集成

README 明确该模块是安全优先设计:createBrowserService({ enableSecurity: true })默认开启 URL 校验与 PII 检测。scanUrl会识别钓鱼仿冒域名(如paypa1-secure.xyz)、非法 TLD;scanForPII能识别身份证、信用卡等敏感信息并打码(如***-**-6789);validateInput可拦截 XSS 与 SQL 注入载荷。安全扫描器支持requireHttpsblockedDomainsallowedDomainsmaxRedirects等配置(见 README.md 的 Security Scanner API)。

七、使用建议与注意事项

  1. 始终使用快照——快照针对 AI 优化过,自带元素引用;
  2. 优先-i标志——只取可交互元素,输出更小、信噪比更高;
  3. 用引用而非选择器——更可靠、更确定;
  4. 导航后重新快照——页面状态会变,旧引用会失效;
  5. 并行任务用会话隔离——每个会话相互独立,避免共享状态冲突。

八、相关资源

  • 技能定义:v3/@claude-flow/browser/skills/browser/SKILL.md
  • 模块说明与 API:v3/@claude-flow/browser/README.md
  • MCP 工具实现:v3/@claude-flow/browser/src/mcp-tools/browser-tools.ts
  • CLI 适配层:v3/@claude-flow/browser/src/infrastructure/agent-browser-adapter.ts
  • 技能导出:v3/@claude-flow/browser/src/skill/index.ts
  • 测试用例:v3/@claude-flow/browser/tests(覆盖适配器、安全、记忆、轨迹等 128 项测试)

【免费下载链接】ruflo🌊 The original agent meta-harness. Deploy intelligent multi-player swarms, coordinate autonomous workflows, and build conversational AI systems. Features adaptive memory, self-learning intelligence, RAG integration, and native Claude Code / Codex / Hermes and many more Integrated项目地址: https://gitcode.com/GitHub_Trending/cl/ruflo

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/11 4:50:51

持续更新的Wayland客户端开发指南:从裸协议到实战源码

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

作者头像 李华
网站建设 2026/9/11 4:48:50

免费邮件营销平台BillionMail:从零到群发指南

免费邮件营销平台BillionMail&#xff1a;从零到群发指南 【免费下载链接】BillionMail BillionMail gives you open-source MailServer, NewsLetter, Email Marketing — fully self-hosted, dev-friendly, and free from monthly fees. Join the discord: https://discord.gg…

作者头像 李华
网站建设 2026/9/11 4:48:47

CAN总线从物理层到协议层:车载与机器人控制实战解析

搞车载和机器人控制这些年&#xff0c;我最大的感受是&#xff1a;CAN总线就是那个绕不过去的"基础设施"。不管是整车电子电气架构里的动力域、车身域、底盘域&#xff0c;还是一条机械臂里的多个关节电机&#xff0c;只要涉及多节点、实时性强、环境又恶劣的通信场景…

作者头像 李华
网站建设 2026/9/11 4:46:58

CesiumJS 地下可视化:3 处配置,让浏览器相机钻入地球内部

CesiumJS 地下可视化&#xff1a;3 处配置&#xff0c;让浏览器相机钻入地球内部 【免费下载链接】cesium An open-source JavaScript library for world-class 3D globes and maps :earth_americas: 项目地址: https://gitcode.com/GitHub_Trending/ce/cesium CesiumJS…

作者头像 李华