Agent Browser
将以下提示词粘贴到你的 AI 对话框中:
请根据 https://skillhub.cn/install/skillhub.md,安装 @zcwl/agent-browser。
技能介绍
解决的具体问题
在构建 AI Agent 自动化处理网页任务时,开发者经常面临一系列具体挑战。首先是元素选择的不确定性:动态网页(如 React 或 Vue 应用)中的 CSS 或 XPath 选择器容易失效,导致自动化脚本脆弱且难以维护。其次,性能至关重要,尤其是在处理复杂单页应用(SPA)时,需要快速、可靠的交互来完成多步骤工作流。此外,会话隔离也是一个常见需求,例如并行测试不同用户状态或执行互不干扰的任务。Agent Browser 正是为解决这些问题而设计,它通过无障碍树快照和基于引用(ref)的交互机制,为 AI Agent 提供了一种确定性的、高性能的浏览器自动化解决方案。
核心能力与关键步骤
Agent Browser 的核心能力在于其独特的交互方式,它利用浏览器的无障碍树(Accessibility Tree)。无障碍树是浏览器为辅助技术提供的语义化结构,其中包含了页面的逻辑元素,这些元素通过稳定的 ref(如 ref="42")进行标识,不受页面视觉样式或动态更新的影响。
关键工作流程和步骤如下:
- 导航与快照获取:首先使用
agent-browser navigate命令导航至目标页面。随后,必须执行agent-browser snapshot -i --json来获取快照。-i标志确保只收集可交互元素(如按钮、链接),减少无关信息;--json标志输出结构化的 JSON 数据,便于程序解析。 - 基于引用的精确交互:从快照的 JSON 输出中提取目标元素的
ref值。然后,使用如agent-browser click --ref 42、agent-browser type --ref 5 --text "Hello"等命令进行交互。这种基于引用的方式完全绕过了脆弱的元素选择器,实现了确定性操作。 - 状态管理与等待策略:为处理异步加载和复杂工作流,可使用
agent-browser wait --load networkidle等待网络请求空闲,确保页面稳定。更重要的是,支持会话状态持久化:通过agent-browser save-state保存当前浏览器状态(包括 Cookies 和 LocalStorage),在后续会话中用agent-browser load-state加载,从而跳过重复的登录流程。 - 会话隔离与并行处理:通过
--session <name>参数创建独立的浏览器上下文。不同会话间的 cookies、存储和缓存完全隔离,非常适合并行测试或操作多个账户的场景。
最佳实践是使用 Agent Browser 时必须遵循的,包括:始终结合使用 -i 和 --json 标志;在关键操作前使用 wait 命令;保存认证状态以提升效率;利用会话进行隔离;在调试时使用 --headed 参数启动有头浏览器以可视化过程。
适用边界与注意点
尽管 Agent Browser 功能强大,但其应用存在明确的边界和注意事项:
- 依赖 LLM 环境:本技能本质上是基于 Markdown 指令集,其命令的解析和执行依赖内置的 LLM。因此,在没有 LLM 支持的纯命令行或传统脚本环境中无法直接使用。
- 不适用于复杂决策场景:它擅长执行预定义的、步骤明确的自动化任务(如数据抓取、表单填写、流程测试)。但对于需要实时复杂逻辑判断、视觉设计评估或开放性探索的场景,其能力有限,仍需人工辅助。
- 性能与执行环境:自动化任务的执行效率受底层 LLM 推理速度和运行环境影响。确保运行环境满足依赖说明(如支持
exec命令行执行),并遵循最佳实践以优化性能。 - 安全配置:自动化涉及网页交互和潜在的数据传输,需注意安全。API 密钥等敏感信息应通过环境变量配置,严禁硬编码。执行命令时,应考虑在沙箱等安全环境中进行,以降低风险。
使用场景
- QA测试工程师需要自动化测试一个复杂的电商网站,该网站使用React构建,涉及用户登录、加入购物车、结算等多个动态页面交互步骤,要求测试脚本稳定且能复用登录状态。
- 数据分析师需要从某个基于JavaScript的交互式商业智能仪表板中,每日自动提取销售趋势图表背后的具体数据点并保存为结构化文件,仪表板需多次点击和悬停才能加载完整数据。
- 业务运营专员需要自动处理公司内部系统中固定格式的周报提交流程,该流程包括登录、导航至特定表单页、填写多个字段并上传附件,且每周需执行一次。
- 前端开发人员在开发一个新的单页应用(SPA)功能后,需要快速在多个独立的浏览器会话中(模拟不同用户登录态)验证该功能的交互逻辑和数据隔离是否正确。
适合人员
- 需要为动态Web应用编写稳定、可维护的自动化回归测试用例的**QA测试工程师**。
- 需要从JavaScript密集型的交互式图表或仪表板中,程序化提取结构化数据以进行分析的**数据分析师或数据科学家**。
- 负责构建企业内部或跨系统网页操作自动化流程的**RPA开发者或业务流程自动化专员**。
- 需要在开发周期中,快速、可靠地测试前端组件交互逻辑或进行浏览器端集成测试的**全栈开发工程师**。