SuperAPI AI 工具集

screen-recorder

通用与其它

查看项目

更新于 10-16 01:18

技能介绍

用途:在 macOS 上从命令行录制单个窗口(而非整个屏幕),输出 .mov 文件。仅使用系统内置 screencapture,无需第三方应用,除一次性屏幕录制授权外不需要辅助功能权限。设计上便于智能体驱动:一条命令开始、一条命令停止,并用命名会话支持多个录制同时进行。

前置条件(每台机器一次性):运行脚本的终端应用(Terminal.app、iTerm2、VS Code 集成终端等)需获得屏幕录制权限:系统设置 → 隐私与安全性 → 屏幕录制 → 启用该终端应用 → 重启该终端应用一次。否则 record.sh start 会报告进程立即退出。

命令: scripts/record.sh list scripts/record.sh start <session> [--window <id|substring>] [--out <path>] [--audio] scripts/record.sh stop <session> scripts/record.sh status [session]

list 以 JSON 打印屏幕上的窗口(id、app、title、x、y、width、height),用于查找窗口 id 或匹配子串。start <session> 开始录制,session 为自定义名称,之后用于停止或查询该录制;不带 --window 时录制最前台应用的最大窗口,避免误选同应用的小通知/辅助窗口;带 --window 时可传数字窗口 id 或对应用名/标题做不区分大小写的子串匹配(取首个匹配,有歧义时用 list 的数字 id);不带 --out 时保存到 ~/Movies/ScreenRecordings/<session>-<timestamp>.mov。stop <session> 向录制进程发送 SIGINT,这是 screencapture -v 正常收尾并关闭视频文件的方式,并打印文件路径。status [session] 显示某会话运行状态或所有已知会话列表。

典型流程:start bug-repro --window "MyApp",操作应用复现问题,再 stop bug-repro,得到 .mov 路径作为证据。多个会话可同时运行,使用不同会话名;每个会话的 PID 与输出路径记录在 $MOINSEN_RECORDER_STATE_DIR(默认 ~/.local/state/moinsen-screen-recorder)。

实现说明:窗口枚举与最前台应用查找通过 osascript -l JavaScript(JXA)桥接 CoreGraphics/AppKit,无 Python 依赖、无编译辅助程序;录制本身为 screencapture -v -l<windowid> <file>,经测试会裁剪到窗口边界而非整个多显示器桌面。另有 -V<seconds> 用于固定时长录制,但未在 record.sh 中暴露。限制:仅支持 macOS;需一次性屏幕录制权限;窗口匹配可能歧义,建议用数字 id。