name: “screenshot” description: “当用户明确要求桌面或系统截图(全屏、特定应用程序或窗口,或像素区域)时使用,或当工具特定的捕获能力不可用且需要操作系统级别捕获时使用。” author: openai
截图捕获
每次遵循这些保存位置规则:
- 如果用户指定路径,保存到那里。
- 如果用户要求截图但未指定路径,保存到操作系统默认截图位置。
- 如果Codex需要截图进行自查,保存到临时目录。
工具优先级
- 优先使用工具特定的截图功能(例如:用于Figma文件的Figma MCP/技能,或用于浏览器和Electron应用的Playwright/代理浏览器工具)。
- 当明确要求时、用于全系统桌面捕获时,或当工具特定的捕获无法获取所需内容时,使用此技能。
- 否则,将此技能视为没有更好集成捕获工具的桌面应用程序的默认选择。
macOS权限预检(减少重复提示)
在macOS上,在窗口/应用程序捕获前运行一次预检助手。它检查屏幕录制权限,解释为什么需要,并在一个地方请求。
助手将Swift的模块缓存路由到$TMPDIR/codex-swift-module-cache以避免额外的沙盒模块缓存提示。
bash <路径到技能>/scripts/ensure_macos_permissions.sh
为避免多个沙盒批准提示,尽可能在一个命令中组合预检和捕获:
bash <路径到技能>/scripts/ensure_macos_permissions.sh && \
python3 <路径到技能>/scripts/take_screenshot.py --app "Codex"
对于Codex检查运行,将输出保存在临时目录:
bash <路径到技能>/scripts/ensure_macos_permissions.sh && \
python3 <路径到技能>/scripts/take_screenshot.py --app "<App>" --mode temp
使用捆绑的脚本以避免重新推导操作系统特定命令。
macOS和Linux(Python助手)
从仓库根目录运行助手:
python3 <路径到技能>/scripts/take_screenshot.py
常见模式:
- 默认位置(用户要求“一张截图”):
python3 <路径到技能>/scripts/take_screenshot.py
- 临时位置(Codex视觉检查):
python3 <路径到技能>/scripts/take_screenshot.py --mode temp
- 明确位置(用户提供路径或文件名):
python3 <路径到技能>/scripts/take_screenshot.py --path output/screen.png
- 按应用程序名称捕获应用程序/窗口(仅macOS;子字符串匹配即可;捕获所有匹配窗口):
python3 <路径到技能>/scripts/take_screenshot.py --app "Codex"
- 应用程序内特定窗口标题(仅macOS):
python3 <路径到技能>/scripts/take_screenshot.py --app "Codex" --window-name "Settings"
- 捕获前列出匹配窗口ID(仅macOS):
python3 <路径到技能>/scripts/take_screenshot.py --list-windows --app "Codex"
- 像素区域(x,y,w,h):
python3 <路径到技能>/scripts/take_screenshot.py --mode temp --region 100,200,800,600
- 焦点/活动窗口(仅捕获最前面的窗口;使用
--app捕获所有窗口):
python3 <路径到技能>/scripts/take_screenshot.py --mode temp --active-window
- 特定窗口ID(在macOS上使用–list-windows发现ID):
python3 <路径到技能>/scripts/take_screenshot.py --window-id 12345
脚本打印每个捕获的一个路径。当多个窗口或显示器匹配时,它打印多个路径(每行一个)并添加后缀如-w<windowId>或-d<display>。按顺序用图像查看器工具查看每个路径,仅在需要或要求时操作图像。
工作流示例
- “查看<App>并告诉我你看到了什么”:捕获到临时目录,然后按顺序查看每个打印的路径。
bash <路径到技能>/scripts/ensure_macos_permissions.sh && \
python3 <路径到技能>/scripts/take_screenshot.py --app "<App>" --mode temp
- “Figma的设计与实现不匹配”:首先使用Figma MCP/技能捕获设计,然后用此技能捕获运行中的应用(通常到临时目录)并比较原始截图,在任何操作之前。
多显示器行为
- 在macOS上,全屏捕获在连接多个监视器时保存每个显示器一个文件。
- 在Linux和Windows上,全屏捕获使用虚拟桌面(所有监视器在一个图像中);需要时使用
--region隔离单个显示器。
Linux先决条件和选择逻辑
助手自动选择第一个可用工具:
scrotgnome-screenshot- ImageMagick
import
如果都没有,请用户安装其中之一并重试。
坐标区域需要scrot或ImageMagick import。
--app、--window-name和--list-windows仅限macOS。在Linux上,使用--active-window或在可用时提供--window-id。
Windows(PowerShell助手)
运行PowerShell助手:
powershell -ExecutionPolicy Bypass -File <路径到技能>/scripts/take_screenshot.ps1
常见模式:
- 默认位置:
powershell -ExecutionPolicy Bypass -File <路径到技能>/scripts/take_screenshot.ps1
- 临时位置(Codex视觉检查):
powershell -ExecutionPolicy Bypass -File <路径到技能>/scripts/take_screenshot.ps1 -Mode temp
- 明确路径:
powershell -ExecutionPolicy Bypass -File <路径到技能>/scripts/take_screenshot.ps1 -Path "C:\Temp\screen.png"
- 像素区域(x,y,w,h):
powershell -ExecutionPolicy Bypass -File <路径到技能>/scripts/take_screenshot.ps1 -Mode temp -Region 100,200,800,600
- 活动窗口(先请用户聚焦它):
powershell -ExecutionPolicy Bypass -File <路径到技能>/scripts/take_screenshot.ps1 -Mode temp -ActiveWindow
- 特定窗口句柄(仅在提供时):
powershell -ExecutionPolicy Bypass -File <路径到技能>/scripts/take_screenshot.ps1 -WindowHandle 123456
直接操作系统命令(后备方案)
当无法运行助手时使用这些。
macOS
- 全屏到特定路径:
screencapture -x output/screen.png
- 像素区域:
screencapture -x -R100,200,800,600 output/region.png
- 特定窗口ID:
screencapture -x -l12345 output/window.png
- 交互式选择或窗口选取:
screencapture -x -i output/interactive.png
Linux
- 全屏:
scrot output/screen.png
gnome-screenshot -f output/screen.png
import -window root output/screen.png
- 像素区域:
scrot -a 100,200,800,600 output/region.png
import -window root -crop 800x600+100+200 output/region.png
- 活动窗口:
scrot -u output/window.png
gnome-screenshot -w -f output/window.png
错误处理
- 在macOS上,先运行
bash <路径到技能>/scripts/ensure_macos_permissions.sh以在一个地方请求屏幕录制。 - 如果看到“沙盒中屏幕捕获检查被阻止”、“无法从显示器创建图像”,或沙盒运行中的Swift
ModuleCache权限错误,使用提升的权限重新运行命令。 - 如果macOS应用程序/窗口捕获返回无匹配,运行
--list-windows --app "AppName"并用--window-id重试,并确保应用程序在屏幕上可见。 - 如果Linux区域/窗口捕获失败,用
command -v scrot、command -v gnome-screenshot和command -v import检查工具可用性。 - 如果保存到操作系统默认位置在沙盒中因权限错误失败,使用提升的权限重新运行命令。
- 始终在响应中报告保存的文件路径。