macOS-use:基于 Accessibility 的 Python 桌面 Agent 库

概述

macOS-use 是一个面向 macOS 的 Python Computer Use Agent 库。它读取 macOS Accessibility API 提供的界面结构,由接入的语言模型决定点击、输入、滚动或执行其他动作;项目明确强调它不依赖专用的计算机视觉模型。PyPI 当前将它标记为 Alpha,要求 macOS 12+ 与 Python 3.12+,并以 MIT 许可证发布。^[来源:macOS-use PyPI 项目页]

这条路线的重点不是“识别屏幕像素”,而是利用应用暴露的辅助功能树:按钮、文本框、窗口和菜单若正确提供了可访问性信息,Agent 便能在比纯坐标点击更结构化的层面工作。它与 open-computer-use 共享 macOS 权限边界,但更偏 Python 库与可编程工作流;与 UI-TARS Desktop 的视觉 GUI Agent 互为补充。

本文基于 2026-07-27 查阅的官方仓库与 PyPI 项目页。Alpha 表示接口、支持的 provider 和行为仍可能发生不兼容变化,不应未经版本锁定就嵌入关键生产流程。

可访问性驱动的工作模型

macOS Accessibility API 会将支持辅助功能的应用界面暴露为元素树。macOS-use 读取该树,将其作为 Agent 的环境状态;模型依据任务与状态选择动作,再由库执行相应操作。README 列举的能力包括应用窗口控制、点击/输入/滚动/拖拽、快捷键、Shell 与 AppleScript、浏览器可访问性树读取、文件读写、Spaces 管理和跨步骤记忆。^[来源:macOS-use PyPI 项目页]

自然语言任务 + LLM


Accessibility 元素树 ←→ macOS-use Agent ←→ 点击、输入、快捷键

        └── 应用语义(角色、名称、值、窗口层级)

这会带来一个关键取舍:如果目标应用的可访问性实现完善,按元素角色、名称与状态操作通常比视觉坐标更稳定;如果应用是自绘界面、远程桌面画面、游戏或没有正确暴露辅助功能节点,则可观察性会显著下降,此时视觉方案或特定应用 API 更合适。

Python 使用方式与模型边界

官方安装入口为:

pip install macos-use
# 或:uv add macos-use

项目示例显示,开发者在 Python 中选择一个 provider、创建 Agent,再通过 invoke(task=...) 提交任务。该形态便于把 GUI 步骤嵌入现有 Python 流程,例如先读取本地数据、再更新桌面应用,最后通过 API 验证结果。^[来源:macOS-use PyPI 项目页]

但“支持任意 LLM provider”不等于任务一定能离线执行,也不等于所有模型都具有相近的规划能力。模型是否本地运行、请求内容是否离开设备、调用费用、速率限制和保留政策取决于实际选用的 provider。对于包含隐私信息的屏幕、文件或网页,应先确认库会向模型传递哪些内容,并选择相应的数据边界。

适合与不适合的任务

类型适配度说明
Notes、Safari、系统设置等原生应用的可访问性操作较高常见原生控件通常具备结构化语义
Python 驱动的个人工作流原型较高可与文件、Shell、AppleScript 和 LLM provider 组合
需要像素级理解的陌生视觉界面中低取决于应用是否暴露可访问性树,可比较 UI-TARS Desktop
登录、财务、生产发布等高风险流程即便元素识别正确,仍不应省略业务校验与人工批准
长时间无人值守的跨应用任务谨慎会话过期、窗口变化和模型误判仍可能累积

它最好的使用姿势是“先让程序处理能结构化处理的部分,再把真正需要 GUI 的少量步骤交给 Agent”,而不是为了使用 Agent 放弃已有的 API、命令行和 AppleScript。

权限、安全与测试策略

辅助功能权限意味着进程可代表用户操控应用;文件与 Shell 能力又扩大了影响范围。应把最小权限、测试账号和可回滚操作作为默认,而非事后补救。尤其在调用云端模型时,输入给模型的 Accessibility 树、窗口标题和读取到的文本也可能含有敏感信息。

建议按以下顺序验证:先运行只读或无副作用任务;再在测试文档中验证单步点击与输入;随后加入操作后的断言,例如重新读取目标元素或检查文件内容;最后才考虑多步骤任务。该路径也适用于 open-computer-use,只是 macOS-use 的断言更容易直接写进 Python 测试。

结论

macOS-use 将 macOS 的辅助功能接口与 LLM Agent 封装为 Python 库。它更适合开发者构建可组合的桌面工作流,而不是追求无代码的通用视觉操控;当控件语义可用时,它往往比纯视觉点击更容易观察和验证。关于与 UI-TARS Desktop、open-computer-use 以及 Computer Use OOTB 的取舍,参见 四种 macOS Computer Use 方案对比