截图技能Skill "screenshot"

这是一个跨平台的截图工具,用于捕获桌面、应用程序、窗口或像素区域的屏幕图像。支持多种操作系统(macOS、Linux、Windows),适用于开发、测试、视觉检查和错误报告等场景。关键词:截图、屏幕捕获、桌面工具、跨平台、开发辅助、操作系统工具。

操作系统 0 次安装 0 次浏览 更新于 3/20/2026

name: “screenshot” description: “当用户明确要求桌面或系统截图(全屏、特定应用程序或窗口,或像素区域)时使用,或当工具特定的捕获能力不可用且需要操作系统级别捕获时使用。” author: openai

截图捕获

每次遵循这些保存位置规则:

  1. 如果用户指定路径,保存到那里。
  2. 如果用户要求截图但未指定路径,保存到操作系统默认截图位置。
  3. 如果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先决条件和选择逻辑

助手自动选择第一个可用工具:

  1. scrot
  2. gnome-screenshot
  3. 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 scrotcommand -v gnome-screenshotcommand -v import检查工具可用性。
  • 如果保存到操作系统默认位置在沙盒中因权限错误失败,使用提升的权限重新运行命令。
  • 始终在响应中报告保存的文件路径。