Screen Capture
macOS 屏幕截图、摄像头和屏幕录制 — 支持全屏、区域、窗口、剪贴板、多显示器、视频和摄像头捕获,使用 macOS 原生工具。
默认启用 实用工具
screen-capture 在每个 CLI-JAW 会话中默认启用,无需安装。它使用 macOS 原生的 screencapture 进行屏幕截图和视频录制,以及可选的 imagesnap 进行摄像头捕获。如果需要浏览器专用截图,建议使用通过 CDP 捕获的 cli-jaw browser screenshot。
快速参考
| 技能名称 | screen-capture |
| 分类 | 实用工具 |
| 默认启用 | 是 — 内置,始终可用 |
| SKILL.md 路径 | ~/.cli-jaw/skills/screen-capture/SKILL.md |
| 主要工具 | screencapture(macOS 内置) |
| 摄像头工具 | imagesnap(可选,通过 Homebrew 安装) |
| 平台 | 仅限 macOS |
| 输出格式 | PNG(默认)、JPEG、PDF、TIFF、MOV(视频) |
| 所需权限 | 系统设置 > 隐私 > 屏幕录制 |
| 相关技能 | vision-click、browser、desktop-control |
快速开始
三条命令即可立即上手:
# 全屏捕获(静音,无快门声)
screencapture -x ~/screenshot.png
# 交互式区域选择
screencapture -i ~/selection.png
# 直接捕获到剪贴板
screencapture -c
命令
全屏
捕获整个显示器画面。使用 -x 进入静音模式(抑制快门声),使用 -T 设置倒计时延迟。
# 静音全屏
screencapture -x ~/screenshot.png
# 全屏(带快门声)
screencapture ~/screenshot.png
# 3 秒延迟后捕获
screencapture -T 3 ~/screenshot.png
区域和窗口
通过交互方式或精确坐标选择特定区域。
# 交互:拖动选择区域
screencapture -i ~/region.png
# 交互:点击选择窗口
screencapture -iW ~/window.png
# 指定坐标(x, y, 宽, 高)
screencapture -R 0,0,1280,720 ~/region.png
指定应用窗口
通过 AppleScript 解析窗口 ID 来捕获指定应用的窗口。这在自动化流水线中非常有用,可以在无需用户交互的情况下捕获特定应用。
# 捕获 Google Chrome 窗口
screencapture -l$(osascript -e 'tell app "Google Chrome" to id of window 1') ~/chrome.png
# 捕获 Safari 窗口
screencapture -l$(osascript -e 'tell app "Safari" to id of window 1') ~/safari.png
# 捕获当前活跃应用的最前窗口
screencapture -l$(osascript -e 'tell app "System Events" to id of first window of (first process whose frontmost is true)') ~/front.png
-l 标志接受一个 CGWindowID。AppleScript 表达式 tell app "AppName" to id of window 1 会返回正确的 ID。如果应用有多个窗口,将 window 1 改为 window 2 等。
剪贴板
捕获到系统剪贴板而非文件。适用于快速粘贴到聊天窗口或其他应用的工作流。
# 全屏捕获到剪贴板
screencapture -c
# 区域选择捕获到剪贴板
screencapture -ic
多显示器
通过指定显示器编号或一次性捕获所有显示器来处理多显示器设置。
# 每个显示器一个文件(自动创建 screen1.png、screen2.png 等)
screencapture ~/screen1.png ~/screen2.png
# 仅主显示器
screencapture -D 1 ~/main.png
# 副显示器
screencapture -D 2 ~/secondary.png
视频录制
将屏幕录制为 MOV 视频。使用 -V 加时长(秒)进行定时录制,或使用 -v 进行手动停止录制。
# 录制屏幕视频(按 Ctrl+C 停止)
screencapture -v ~/recording.mov
# 录制恰好 10 秒
screencapture -V 10 ~/recording.mov
摄像头捕获
摄像头捕获需要 imagesnap,这是一个可选的 Homebrew 依赖。它可以从 FaceTime 摄像头或任何已连接的 USB 摄像头捕获静态图像。
# 安装 imagesnap
brew install imagesnap
# 从默认摄像头拍摄照片
imagesnap ~/camera.png
# 2 秒预热以获得更好的图像质量(推荐)
imagesnap -w 2 ~/camera.png
# 通过名称指定摄像头
imagesnap -d "FaceTime HD Camera" ~/camera.png
# 列出所有可用摄像头
imagesnap -l
-w 2(或更高值)。不经过预热,第一帧通常会偏暗或色偏。
输出格式
使用 -t 标志指定图像格式。默认为 PNG。
# PNG(默认,无损)
screencapture -t png ~/screenshot.png
# JPEG(文件更小,有损)
screencapture -t jpg ~/screenshot.jpg
# PDF(矢量友好,适用于文档)
screencapture -t pdf ~/screenshot.pdf
# TIFF(高质量,文件较大)
screencapture -t tiff ~/screenshot.tiff
标志参考
本技能所使用的所有 screencapture 标志的完整参考。
| 标志 | 描述 | 示例 |
|---|---|---|
-x | 静音模式(无快门声) | screencapture -x out.png |
-i | 交互选择模式(拖动选区或按空格键选择窗口) | screencapture -i out.png |
-c | 将截图复制到剪贴板而非文件 | screencapture -c |
-R x,y,w,h | 通过坐标捕获指定矩形区域 | screencapture -R 0,0,1280,720 out.png |
-T seconds | 捕获前延迟 N 秒 | screencapture -T 3 out.png |
-t format | 输出格式:png、jpg、pdf 或 tiff | screencapture -t jpg out.jpg |
-l windowID | 通过 CGWindowID 捕获指定窗口 | screencapture -l12345 out.png |
-D displayNum | 捕获指定显示器(1 = 主显示器) | screencapture -D 2 out.png |
-v | 录制屏幕视频(MOV) | screencapture -v out.mov |
-V seconds | 录制恰好 N 秒的视频 | screencapture -V 10 out.mov |
-W | 以窗口选择模式启动(与 -i 组合使用) | screencapture -iW out.png |
常见工作流
捕获特定应用状态
通过 AppleScript 将应用切换到前台,等待其渲染完成,然后进行捕获。
# 激活 Finder,等待,然后捕获
osascript -e 'tell app "Finder" to activate'
sleep 0.5
screencapture -x ~/finder.png
捕获并分析
截取屏幕截图并立即传递给代理的视觉模型进行分析。这是 vision-click 和 desktop-control 所使用的模式。
# 在 CLI-JAW 会话中,只需说:
"화면 캡처해서 뭐가 보이는지 설명해줘"
# 代理运行:
screencapture -x /tmp/screen.png
# 然后读取图像并描述其内容
定时捕获 UI 状态
使用延迟标志为设置特定 UI 状态(例如打开下拉菜单、悬停在工具提示上)留出时间,然后再触发捕获。
# 5 秒延迟:足够打开一个菜单
screencapture -T 5 -x ~/menu-state.png
多显示器文档
一次性捕获所有显示器,用于工作区文档记录或 Bug 报告。
# 每个已连接的显示器捕获一个 PNG
screencapture ~/display-main.png ~/display-secondary.png
依赖
核心的 screencapture 命令是 macOS 内置的 — 无需安装。摄像头捕获需要一个可选的 Homebrew 包。
内置(macOS)
brew install imagesnap
安装命令
# 摄像头捕获(可选)
brew install imagesnap
# 验证安装
imagesnap -l # 列出可用摄像头
which screencapture # 应输出 /usr/sbin/screencapture
规则和行为
当 screen-capture 技能处于活跃状态时,代理遵循以下规则:
| 规则 | 详情 |
|---|---|
| 默认捕获方式 | 当工具专用捕获(Figma、Playwright、CDP)不可用时,使用 screencapture 作为默认方式。 |
| 浏览器截图 | 对于网页,建议使用 cli-jaw browser screenshot(通过 Chrome DevTools Protocol 捕获,像素级精确)。 |
| 静音模式 | 在编程式捕获中始终使用 -x 标志以抑制快门声。 |
| 摄像头预热 | 使用 imagesnap 时始终使用 -w 2 或更高值以获得更好的图像质量。 |
| 隐私权限 | 需要屏幕录制权限(系统设置 > 隐私 > 屏幕录制)。如果权限缺失,代理会发出警告。 |
| 临时文件清理 | 用于分析(非显式保存)的截图应在使用后清理。 |
"~해줌" 使用示例
自然语言触发屏幕捕获任务的实际示例。韩语和英语均可使用。
screencapture -x 静音捕获全屏并保存。代理会读取生成的图像以确认捕获成功。这是最简单也最常见的用法。screencapture -l 捕获该窗口,然后利用视觉模型分析图像以验证登录页面是否正确渲染。结合了捕获与视觉 QA。imagesnap -w 2 拍摄带有适当预热时间的摄像头照片。生成的图像可以传递给其他技能(如视觉分析)用于人脸检测或身份验证工作流。screencapture -V 10 ~/recording.mov 录制 10 秒屏幕视频。适用于记录 Bug 复现步骤、UI 动画审查或创建快速演示片段。screencapture -D 2 -c 捕获副显示器,将截图直接发送到剪贴板,以便立即粘贴到聊天窗口、文档或图像编辑器中。与相关技能的比较
CLI-JAW 有多个涉及视觉捕获的技能。请根据需求选择合适的工具:
screen-capture | browser | desktop-control | vision-click | |
|---|---|---|---|---|
| 侧重点 | macOS 原生截图和录屏 | 基于 CDP 的浏览器自动化 | 完整的桌面 + 浏览器自动化 | 视觉引导的点击定位 |
| 最适合 | 快速截图、多显示器、视频、摄像头 | 网页截图、DOM 交互 | 跨应用工作流、混合目标 | 通过视觉识别点击 UI 元素 |
| 捕获方式 | screencapture CLI | Chrome DevTools Protocol | CDP + Computer Use | 截图 + 坐标映射 |
| 需要浏览器 | 否 | 是(cli-jaw 服务器) | 取决于目标 | 否 |
| 何时优先使用 | 无需浏览器、系统级捕获、视频、摄像头 | 网页(像素级精确) | 复杂的多应用自动化 | 点击屏幕上的元素 |
screen-capture。对于网页,使用 browser screenshot。当需要同时捕获和操控桌面应用时,使用 desktop-control。
故障排除
屏幕录制权限被拒绝
如果 screencapture 生成了空白或全黑的图像,则终端应用(Terminal.app、iTerm2 或 CLI-JAW Electron 应用)可能缺少屏幕录制权限。
# 修复:在系统设置中授予权限
# 系统设置 > 隐私与安全性 > 屏幕录制
# 启用您的终端应用
# 授予权限后重启终端
找不到 imagesnap
如果未安装 imagesnap,摄像头捕获命令将会失败。它是一个可选依赖。
# 通过 Homebrew 安装
brew install imagesnap
# 验证
imagesnap -l
# 预期输出:列出可用摄像头(例如 "FaceTime HD Camera")
摄像头图像偏暗或模糊
摄像头传感器需要时间来调整。务必添加预热延迟:
# 不推荐:无预热,可能偏暗/模糊
imagesnap ~/photo.png
# 推荐:2 秒预热以获得正确曝光
imagesnap -w 2 ~/photo.png
# 更佳:低光环境下 3 秒预热
imagesnap -w 3 ~/photo.png
多显示器捕获只保存了一个文件
捕获多个显示器时,必须为每个显示器提供一个输出文件名:
# 错误:只捕获主显示器
screencapture ~/screenshot.png
# 正确:每个已连接的显示器一个文件名
screencapture ~/display1.png ~/display2.png
视频录制不停止
使用 screencapture -v(无时长限制)时,录制会一直持续直到被中断。使用 -V seconds 进行定时录制,或按 Ctrl+C 停止手动录制。
功能总结
| 功能 | 工具 | 备注 |
|---|---|---|
| 全屏捕获 | screencapture | 使用 -x 静音,使用 -T 延迟 |
| 区域选择 | screencapture -i | 交互拖选或使用 -R 指定坐标 |
| 窗口捕获 | screencapture -l | 通过 AppleScript 获取 CGWindowID |
| 剪贴板捕获 | screencapture -c | 与 -i 组合实现区域到剪贴板 |
| 多显示器 | screencapture -D | 指定特定显示器或捕获全部 |
| 视频录制 | screencapture -v/-V | MOV 格式,定时或手动停止 |
| 摄像头拍照 | imagesnap | 可选依赖,使用 -w 2 预热 |
| 格式控制 | screencapture -t | PNG(默认)、JPEG、PDF、TIFF |