1实现原理 · 为什么它能做到
三步工作流全部落在 macOS 原生工具上:Swift+CoreGraphics 列窗口拿 WID → AppleScript/osascript 控制视图 → screencapture -l <WID> 精确截图。
1. Find Window → Swift CGWindowListCopyWindowInfo → get numeric Window ID 2. Control View → AppleScript (osascript) → zoom, scroll, select 3. Capture → screencapture -l <WID> → PNG/JPEG output
找窗口用 Swift 脚本 get_window_id.swift 调 CoreGraphics CGWindowListCopyWindowInfo(.optionOnScreenOnly),按 app 名/标题关键词过滤输出 WID=… | App=… | Title=…。
CGWindowListCopyWindowInfo( .optionOnScreenOnly, kCGNullWindowID ) as? [[String: Any]] else {
控制视图层:Excel 有完整 AppleScript 字典支持(激活、缩放 zoom、滚动行/列、选 range、切 sheet、开文件),任意 app 走基础 activate / System Events AXRaise,受限 app 退回键盘模拟。
osascript -e 'tell application "Microsoft Excel" set scroll row of active window to 45 end tell'
截图层:screencapture -l <WID> 精确捕获指定窗口(-x 静音、-t jpg、-T 延迟、-R 区域),Retina 2x 输出用 sips 缩回 1x。
# Silent capture (no camera shutter sound) screencapture -x -l <WID> output.png
权限三连排查模板:Screen Recording 是必须授权;helper binary(swift/python/terminal)与打包 .app 的 TCC 授权身份不同,脚本提供 --permission-hint screen/microphone 打印排查指引。
`swift scripts/get_window_id.swift` reads on-screen windows via CoreGraphics, so it needs Screen Recording permission on macOS.
文档化失败路线(DO NOT USE):System Events id of window(-1728)、Python PyObjC Quartz(ModuleNotFoundError)、osascript window id(格式不对)——防止执行模型重复踩坑。
| `System Events` → `id of window` | Error -1728 | System Events cannot access window IDs in the format screencapture needs |
2核心能力
3外部依赖
| Kind | Dependency / Endpoint |
|---|---|
| cli | swift(运行 get_window_id.swift 或 -e 内联执行 CoreGraphics 枚举) |
| cli | screencapture(macOS 系统自带,窗口/区域截图) |
| cli | osascript / System Events(AppleScript 控制 app 窗口) |
| cli | sips / ls / file / timeout(可选缩放与校验、超时保护) |
4管控建议与判定依据
- scripts/: 执行本地脚本或命令: swift scripts/get_window_id.swift(或 swift -e 内联枚举窗口)
- 本地工作目录: 文件读写与工件输出: 截图输出文件(output.png/output.jpg 等,由调用者指定路径)
5第二遍独立确认
- [ok] Swift 脚本只做窗口枚举(无隐藏行为) — get_window_id.swift 逻辑 = 参数解析 + CGWindowListCopyWindowInfo(.optionOnScreenOnly) + 过滤打印 + 权限提示文本;无文件写/网络/进程执行调用。
- [ok] 三步工作流与 description 声明一致 — Find Window/Control View/Capture 三步概览代码块、Step1-3 正文、Quick Start 命令逐字对应;Excel 控制命令含 zoom/scroll/select/sheet。
- [ok] screencapture -l 兼容 CGWindowID 的说法有失败表佐证 — Failed Approaches 表记录 System Events id of window 报 -1728 等三个失败路径,反向支持『Swift 枚举 + screencapture -l』为主路径。
- [ok] 无网络/无凭证(安全结论基础) — 全目录 token 扫描零网络/凭证命中;依赖全部是 macOS 系统自带 CLI。
- [ok] TCC/Screen Recording 依赖表述准确 — SKILL.md Permission Troubleshooting 与脚本 --permission-hint 均明示 Screen Recording 为前置条件,并处理 helper binary 身份问题。
- [ok] 元数据(commit/license/stars) — 本地 HEAD == pin d5c4678cb5d4fd6acc9c922690df035dbd33d247;GitHub API:MIT、stars 1385(2026-09-09 实采)、pushed_at 2026-09-09T12:33:29Z。
6结论
fb587255b81bdc81…