MacOS Desktop Control

🖥️ 视觉驱动的 macOS 桌面自动化套件

macOS 桌面自动化工具,通过 AppleScript 控制应用状态,结合截图 OCR/OpenCV 实现视觉目标定位与鼠标键盘操作,支持 Retina 屏幕坐标映射

收藏
4.9k
安装
1k
版本
1.0.7
CLS 安全扫描中
预计需要 3 分钟...

使用说明

核心用法

macos-desktop-control 是一套面向 macOS 的桌面自动化技能,采用语义控制视觉控制分离的显式管道设计。核心工作流程为:先通过 AppleScript 激活应用、读取窗口状态,再基于截图进行 OCR 文本识别或 OpenCV 图像匹配定位目标,最后使用 pyautogui 执行鼠标点击、拖拽或键盘输入。

初始化时必须运行坐标映射脚本,解决 Retina 屏幕像素坐标(screencapture)与逻辑坐标(pyautogui)的 2:1 缩放差异,生成校准文件供后续复用。

主要功能模块

| 模块 | 技术 | 用途 |
|------|------|------|
| 应用控制 | AppleScript | 打开、激活应用,检查运行状态,读取前台应用 |
| 窗口检查 | AppleScript | 获取窗口标题、统计窗口数量、列举窗口列表 |
| 屏幕捕获 | `pyautogui` + 重采样 | 输出逻辑坐标系截图,作为视觉识别基准 |
| 目标定位 | Apple Vision OCR / OpenCV | 通过文本或图像模板匹配获取点击坐标 |
| 鼠标控制 | `pyautogui` | 移动、点击、双击、右键、拖拽,均使用逻辑坐标 |
| 键盘控制 | `pyautogui` | 输入文本、按键、组合快捷键、长按/释放 |

显著优点

  • 架构清晰:严格区分 AppleScript(语义层)与 pyautogui(视觉层),避免深层次的 AppleScript UI 脚本复杂性
  • 视觉鲁棒:对于自定义绘制界面、弱可访问性应用(如聊天列表、画布内容),截图+OCR/OpenCV 比 accessibility API 更可靠
  • Retina 适配:内置坐标校准机制,自动处理 2x 缩放,避免坐标偏移错误
  • 安全设计:保留 pyautogui.FAILSAFE = True,鼠标移至左上角可紧急中断自动化
  • 零额外依赖:OCR 通过 PyObjC 调用 Apple Vision,无需安装 Tesseract

潜在缺点与局限性

  • 单屏限制:V1 仅支持单主屏幕,多显示器、非 Retina 屏、缩放显示需后续版本支持
  • 权限门槛:必须授予终端"屏幕录制"和"辅助功能"权限,企业环境可能受 MDM 策略限制
  • 视觉脆弱性:界面主题变更、窗口缩放、遮挡弹窗可能导致 OCR/模板匹配失败
  • 无原生等待机制:脚本间需外部协调等待时间,缺少内置的元素等待/重试逻辑
  • OCR 精度边界:Apple Vision 对复杂字体、小字号、低对比度场景的识别存在误差

适合人群

  • 需自动化 macOS GUI 工作流的开发者与 QA 工程师
  • 使用 LLM/Agent 构建桌面自动化管道的 AI 应用开发者
  • 需要跨应用协调操作(如从网页提取信息填入桌面应用)的自动化场景

常规风险

  • 权限滥用:屏幕录制权限可捕获敏感信息,应在受控环境使用
  • 误点击风险:坐标校准错误或识别偏差可能导致非预期点击,建议在关键操作前加入人工确认节点
  • 状态同步延迟:截图与执行间界面状态变化(如加载动画)可能造成动作失效

MacOS Desktop Control 内容

scripts文件夹
手动下载zip · 14.5 kB
applescript_app.pytext/plain
请选择文件