Agent Browser 浏览器自动化技能
为 AI 代理优化的无头浏览器自动化,基于无障碍树快照和引用式元素选择,实现确定性的网页交互。
该技能文档提供了明确的使用边界(何时使用agent-browser vs 内置浏览器工具),并提及了会话隔离和状态持久化功能,但没有涉及权限最小化、用户确认、数据流透明度或敏感数据处理等安全细节。由于它只是CLI工具的封装,未发现恶意或越权风险,但缺乏安全指导,扣分至15。
文档包含了安装命令、核心工作流和大量命令示例,但未提供测试或错误处理说明,静态审查无法验证实际运行情况。扣分至6。
明确描述了适用场景(复杂SPA、多步工作流)和非适用场景(需要截图分析等),触发条件清晰。但未提及环境依赖(如网络访问)或中文支持,且核心功能依赖于外部CLI工具,适用性有限,扣分至10。
文档结构清晰,有安装说明、命令示例和最佳实践,但未提及版本管理、变更日志、故障排除或已知限制,且依赖外部工具,维护责任不明确。扣分至9。
展示了两个示例(搜索提取和多会话测试),但未提供实际输出或验证,静态审查无法确认结果可直接使用。扣分至5。
文档纯为作者描述,无测试或其他验证证据,静态审查无法独立确认功能。扣分至4。
- 技能依赖外部CLI工具 agent-browser,其可用性和安全性未在文档中验证。
- 未提及敏感数据处理、凭据存储或网络请求的安全注意事项,使用时需自行评估。
- 未提供故障排除指南,遇到错误时可能难以定位问题。
- 文档为英文,中国用户可能需要翻译,且未提及中国大陆网络可达性。
- 静态审查,未实际执行,功能可靠性需进一步验证。
这个 Skill 能做什么,适合哪些场景?
此技能封装了 agent-browser 命令行工具,提供快速、确定性的浏览器自动化能力。它通过可访问性树快照生成元素引用(refs),从而避免脆弱的 CSS 选择器。它支持多标签页、iframe、网络拦截、Cookie 与存储管理、会话隔离以及状态持久化。该技能非常适合需要稳定、可重复交互的复杂单页应用(SPA)和多步骤工作流。
执行无头浏览器操作,包括:打开/导航/返回/前进/刷新/关闭页面;生成可访问性树快照(交互元素、JSON 输出、作用域限定);基于引用执行点击、填充、输入、悬停、勾选、选择、按键、滚动和拖拽;获取文本、HTML、值、属性、标题、URL 和元素数量;检查元素可见性、启用状态和勾选状态;等待元素、延时、文本、URL、网络空闲或自定义函数;创建和管理隔离的浏览器会话;保存和加载认证状态(Cookie 和存储);截图和生成 PDF;拦截和模拟网络路由;管理 Cookie 和本地存储;切换标签页和 iframe。
- 自动化多步骤网页表单提交,例如注册或结账流程,需要稳定且确定性的元素选择。
- 抓取需要登录的网站数据,通过保存和加载认证状态来避免重复登录。
- 在复杂的单页应用(如内部仪表盘或 SPA)中测试用户流程,这些应用频繁更新 DOM。
- 同时管理多个用户会话(如管理员和普通用户)进行并行的浏览器测试。
- 通过网络拦截模拟 API 响应,以进行前端开发或测试,无需后端服务。
这个 Skill 有哪些优点和局限?
- 基于引用(ref)的选择机制相比 CSS 选择器更稳定,不易因 DOM 变化而失效
- 体积小巧,仅依赖 agent-browser CLI 和 Chromium
- 支持会话隔离和状态持久化,可跳过登录流程
- 提供网络拦截和模拟能力,便于测试各种场景
- 生成无障碍树快照,输出 JSON 便于解析,对 AI 代理友好
- 需要安装和下载 Chromium,可能会占用较多磁盘空间
- 仅支持 Chromium 内核,不支持其他浏览器
- 文档中未提及在 Windows 上的支持情况(安装命令针对 Linux 有 `--with-deps`)
- 与其他自动化工具相比,生态和社区相对较小
- 无头模式下,复杂页面可能需要额外的等待逻辑以确保稳定性
如何安装这个 Skill?
全局安装 agent-browser 命令行工具:npm install -g agent-browser。然后运行 agent-browser install 下载 Chromium(Linux 上可添加 --with-deps 安装系统依赖)。此技能无需特殊安装,只需确保命令在 PATH 中可用。
如何使用这个 Skill?
将 agent-browser 命令作为工具使用。典型工作流:先用 agent-browser open <url> 打开页面,再用 agent-browser snapshot -i --json 获取交互元素快照并解析引用,最后用 agent-browser click @e2 或 agent-browser fill @e3 "text" 进行交互。页面变化后重新快照。最佳实践:始终使用 -i --json 参数,等待页面稳定(wait --load networkidle),使用会话隔离不同上下文,并用 state save/load 保存认证状态。调试时使用 --headed 查看浏览器。