Automation Skills
浏览器自动化、基于截图的交互以及请求路由。这些技能赋予 CLI-JAW 通过 CDP 控制 Chrome、从截图中点击 UI 元素以及以编程方式路由 Web 请求的能力。
browser
通过 Chrome DevTools Protocol (CDP) 控制 Chrome 浏览器。可以打开页面、导航、拍摄参考快照、点击元素、输入文本、提取内容以及捕获截图。需要 cli-jaw 浏览器服务器处于运行状态。
| 属性 | 值 |
|---|---|
| Skill ID | browser |
| 类别 | Automation |
| 协议 | CDP (Chrome DevTools Protocol) |
| 前置条件 | cli-jaw 浏览器服务器正在运行 |
| 触发方式 | 打开页面、截图、点击、输入、抓取、导航 |
功能
| 操作 | 说明 |
|---|---|
| Open page | 在受控的 Chrome 实例中导航到指定 URL |
| Screenshot | 捕获整页或视口截图,格式为 PNG |
| Click | 通过 CSS 选择器或 XPath 点击 DOM 元素 |
| Type | 在输入框和文本区域中输入文本 |
| Extract | 读取元素的文本内容、属性或 innerHTML |
| Evaluate | 在页面上下文中执行任意 JavaScript |
| Wait | 等待选择器、导航或网络空闲 |
| Ref snapshot | 拍摄当前 DOM 状态的参考快照,用于比对差异 |
使用示例
# Open a page and take a screenshot
/browser open https://example.com
/browser screenshot
# Click a button by selector
/browser click "#submit-btn"
# Type into an input field
/browser type "#search-input" "CLI-JAW documentation"
# Extract text content from an element
/browser extract ".main-content" text
# Execute JavaScript in the page
/browser eval "document.title"
自然语言触发:
"https://example.com 열어줘" -- 在浏览器中打开该 URL
"이 페이지 스크래핑해줘" -- 抓取并提取当前页面的内容
"스크린샷 찍어줘" -- 捕获当前视口的截图
"로그인 페이지에서 이메일 입력해줘" -- 在登录页面的邮箱字段中输入内容
"https://example.com 열어줘" -- 在浏览器中打开该 URL
"이 페이지 스크래핑해줘" -- 抓取并提取当前页面的内容
"스크린샷 찍어줘" -- 捕获当前视口的截图
"로그인 페이지에서 이메일 입력해줘" -- 在登录页面的邮箱字段中输入内容
CDP 连接
browser 技能通过 cli-jaw 浏览器服务器连接到 Chrome,该服务器管理 CDP WebSocket 连接。使用浏览器命令前必须先启动服务器。
# Start the browser server (runs on a dedicated port)
jaw browser serve
# The skill auto-connects when invoked
# Connection is reused across commands in the same session
注意:浏览器服务器管理单个 Chrome 实例。通过 CDP 目标(标签页)支持并发页面操作,但同一时间只有一个浏览器实例处于活动状态。
vision-click
基于截图的 UI 交互,使用视觉模型。该技能不依赖 DOM 选择器,而是通过截图识别 UI 元素,并在正确的坐标位置进行点击。适用于屏幕上可见的任何应用程序——不仅限于浏览器。
| 属性 | 值 |
|---|---|
| Skill ID | vision-click |
| 类别 | Automation |
| 方法 | 截图分析 + 坐标映射 |
| 模型 | 具备视觉能力的 LLM(Claude、GPT-4V) |
| 适用范围 | 任何屏幕上的 UI(浏览器、桌面应用、终端) |
工作原理
- 捕获 -- 对当前屏幕或指定区域进行截图
- 分析 -- 将截图发送给视觉模型以识别目标元素
- 定位 -- 模型返回要点击的元素的像素坐标
- 执行 -- 在识别到的坐标位置执行点击(或其他操作)
| 操作 | 说明 |
|---|---|
| Click | 点击视觉识别到的 UI 元素 |
| Double-click | 双击目标元素 |
| Right-click | 右键点击目标元素 |
| Hover | 将光标移动到目标元素上方,但不点击 |
| Describe | 返回屏幕上可见内容的描述 |
使用示例
# Click a button described by its visual label
/vision-click "the blue Submit button"
# Click on a specific icon
/vision-click "the gear icon in the top-right corner"
# Right-click on a file in Finder
/vision-click --right "the README.md file"
# Describe what is currently visible
/vision-click --describe
自然语言触发:
"이 버튼 클릭해줘" -- 使用视觉识别点击所描述的按钮
"화면에서 저장 버튼 찾아서 눌러줘" -- 在屏幕上找到并点击保存按钮
"지금 화면에 뭐가 보여?" -- 描述当前屏幕上的内容
"오른쪽 위에 있는 설정 아이콘 클릭해줘" -- 点击右上角的设置图标
"이 버튼 클릭해줘" -- 使用视觉识别点击所描述的按钮
"화면에서 저장 버튼 찾아서 눌러줘" -- 在屏幕上找到并点击保存按钮
"지금 화면에 뭐가 보여?" -- 描述当前屏幕上的内容
"오른쪽 위에 있는 설정 아이콘 클릭해줘" -- 点击右上角的设置图标
何时使用 vision-click 与 browser
| 场景 | 推荐技能 | 原因 |
|---|---|---|
| 点击已知的 DOM 元素 | browser | 使用 CSS 选择器更快且更可靠 |
| 点击 canvas 或 iframe 内的元素 | vision-click | DOM 选择器无法触及 canvas 渲染的内容 |
| 桌面应用交互 | vision-click | 唯一选择——浏览器之外没有 DOM 可用 |
| 选择器不稳定的动态 UI | vision-click | 视觉识别比脆弱的选择器更健壮 |
| 高速重复操作 | browser | CDP 命令比截图往返更快 |
注意:vision-click 需要具备视觉能力的模型,并且由于截图捕获和模型推理,每次操作会产生额外的延迟。当速度很重要时,对于可通过 DOM 访问的元素,请使用
browser 技能。
web-routing
编程式 HTTP 请求路由和拦截。配置请求处理程序,可以重定向、重写、阻止或转换 Web 流量。适用于本地开发代理、API 模拟和流量整形。
| 属性 | 值 |
|---|---|
| Skill ID | web-routing |
| 类别 | Automation |
| 层级 | HTTP 请求/响应拦截 |
| 适用范围 | URL 模式匹配、请求头操作、请求体转换 |
路由规则
| 规则类型 | 说明 | 示例 |
|---|---|---|
| Redirect | 将匹配的请求发送到不同的 URL | /api/* -> http://localhost:8080/api/* |
| Rewrite | 修改请求路径而不进行重定向 | /v2/* -> /v1/* |
| Block | 对匹配的请求返回错误 | 阻止所有 *.tracking.com 请求 |
| Mock | 返回静态或动态响应 | 对 GET /api/users 返回 JSON 固定数据 |
| Transform | 修改请求或响应的头部/主体 | 为所有 API 调用添加 Authorization 头 |
使用示例
# Redirect API calls to local dev server
/web-routing add /api/* -> http://localhost:8080/api/*
# Mock a specific endpoint with a JSON response
/web-routing mock GET /api/users '[{"id":1,"name":"Test"}]'
# Block tracking requests
/web-routing block *.analytics.com
# Add auth header to all outgoing API requests
/web-routing transform /api/* --header "Authorization: Bearer $TOKEN"
# List active routing rules
/web-routing list
# Remove a routing rule
/web-routing remove /api/*
自然语言触发:
"API 요청을 로컬 서버로 돌려줘" -- 将 API 请求重定向到 localhost
"이 엔드포인트 목업 데이터로 응답해줘" -- 使用固定数据模拟端点响应
"트래킹 스크립트 차단해줘" -- 阻止跟踪域的请求
"모든 API 요청에 인증 헤더 추가해줘" -- 为 API 流量添加认证头
"API 요청을 로컬 서버로 돌려줘" -- 将 API 请求重定向到 localhost
"이 엔드포인트 목업 데이터로 응답해줘" -- 使用固定数据模拟端点响应
"트래킹 스크립트 차단해줘" -- 阻止跟踪域的请求
"모든 API 요청에 인증 헤더 추가해줘" -- 为 API 流量添加认证头
模式匹配
路由模式支持 glob 语法,可以基于路径、主机、方法和头部进行匹配。
# Glob patterns
/api/* # matches /api/users, /api/posts/1, etc.
/api/users/:id # named parameter capture
*.example.com # subdomain wildcard
# Method-specific routes
GET /api/users # only match GET requests
POST /api/users # only match POST requests
# Header-based matching
/api/* [Content-Type: application/json] # match by header
注意:路由规则按特异性顺序进行评估。更具体的模式优先于通配符。规则在会话期间持续有效,除非被明确移除。
技能对比
根据您的任务选择合适的自动化技能。
| 特性 | browser | vision-click | web-routing |
|---|---|---|---|
| 目标 | Chrome DOM | 任何屏幕上的 UI | HTTP 流量 |
| 协议 | CDP | 截图 + 视觉模型 | HTTP 拦截 |
| 速度 | 快 | 较慢(模型推理) | 快 |
| 选择器类型 | CSS / XPath | 视觉描述 | URL 模式 |
| 适用范围 | 仅限浏览器 | 浏览器 + 桌面应用 | 网络层 |
| 前置条件 | 浏览器服务器正在运行 | 可访问视觉模型 | 无 |
常见模式
抓取与提取
将 browser 技能与内容提取相结合,从网页中获取结构化数据。
# Open the target page
/browser open https://news.example.com
# Extract all article titles
/browser eval "Array.from(document.querySelectorAll('h2.title')).map(el => el.textContent)"
# Take a screenshot for reference
/browser screenshot
表单自动化
通过链式输入和点击命令来填写并提交表单。
# Navigate to login page
/browser open https://app.example.com/login
# Fill in credentials
/browser type "#email" "user@example.com"
/browser type "#password" "secretpassword"
# Submit the form
/browser click "#login-btn"
# Wait for navigation and verify
/browser wait "nav.dashboard"
/browser screenshot
桌面应用 + 浏览器组合
在混合工作流中,使用 vision-click 操作桌面应用元素,使用 browser 操作 Web 内容。
# Click "Open in Browser" in a desktop app
/vision-click "the Open in Browser button"
# Switch to browser skill for DOM-level control
/browser wait ".main-content"
/browser extract ".main-content" text