macOS Harness
一个极简的 macOS 控制层,让大模型通过六个原语直接操控整台 Mac,无需为每个应用编写专属工具。
按维度查看评分与理由
加分点:输入事件定向投递到目标 PID、拒绝无 app 目标的输入(有测试证明)、doctor 报告所需权限、telemetry 可一键关闭并披露字段。扣分点:产品设计本身是'完全自由控制整台 Mac',无操作级确认机制;telemetry 默认开启;无任何回滚/撤销机制;telemetry 最小化声明只有 README 文字,缺 src 源码佐证;版权署名 'Browser Use 2026' 但发布者身份未经核实。
测试覆盖键序、修饰键转换、焦点变化中断、坐标空间换算等,内部逻辑自洽;MacOSError/FocusChangedError 带明确信息;CI 锁定 uv sync --locked。扣分点:依赖 browser-harness>=0.1.9 是 Alpha 外部包,可用性风险部分存在;异常覆盖只见到两类。
目标受众(开发者)与场景(macOS 自动化)清晰,six-primitives 设计有测试锚定(test_agent_surface_is_flat_and_explicit);环境限定明确(macOS、Python 3.11/3.12、sys_platform 条件依赖),可得 3 分。扣分点:'complete freedom' 意味着几乎没有能力边界防护,README 只以 'Experimental' 一词带过。
LICENSE 完整为 MIT,3 分;README/pyproject/CI/SECURITY.md 结构清晰,install.md 被引用但未提供;pyproject 元数据良好、入口稳定。扣分点:无 CHANGELOG,仅版本号 0.1.2 Alpha;维护责任只有 GitHub Security Advisories 一条路径,发布者未验证;install.md 内容缺失使安装说明仅部分可见。
输出为结构化 dict(doctor 结果、see 结果含 virtual_pointer/focus),可被 LLM 直接消费;'no app-specific tools' 的极薄设计相对重框架方案有明确边际价值;单进程低开销。扣分点:输出可用性依赖未展示的 src 实现,成本(真实 macOS 权限:屏幕录制、辅助功能、事件投递)对用户而言不低。
README 声明(不移动真实指针、不激活目标 app、拒绝无目标输入、隐私点击不走 AX)均可对应到具体测试断言;事实与推断区分良好。扣分点:核心 src/macos_harness 源码未在证据中提供,跨源印证仅限 README↔tests↔pyproject 三方,telemetry 字段声明无法独立核实。
- 该工具按设计授予对整台 Mac 的完全控制(键盘、点击、AppleScript、文件系统、已登录浏览器),不存在操作级确认或回滚机制,请仅在隔离或可接受的机器上使用。
- 匿名遥测默认开启,虽然声称不记录提示词/截图/路径,但相应实现代码未在评审证据中,建议安装后立即执行 macos-harness telemetry disable。
- 核心运行时依赖 browser-harness 为 Alpha 阶段外部包,供应链与可用性风险未经独立核实。
- README 提到的 install.md 和 SKILL.md 未包含在本次证据中,安装与 skill 注册流程无法静态验证。
- 将 agent 指令与第三方 UI 内容视为不可信输入(SECURITY.md 自己也如此提醒),谨慎授权最小 macOS 权限。
这个 Agent 能做什么,适合哪些场景?
macOS Harness(browser-use/macos-harness)是一个 MIT 许可的实验性 Python 工具,为 LLM 提供对 Mac 的原生控制能力。它运行单个持久 Python 进程,暴露六个原语:see(CGWindow 截图,可捕获后台窗口)、key 和 type(通过 CGEvent 直接向目标应用 PID 发送输入,不移动真实光标)、click(坐标点击)、ax(原生 Accessibility)和 script(Apple Events/AppleScript)。同一进程内还提供 browser.*(通过 CDP 连接真实 Chrome 的 Browser Harness)、Path 和 subprocess,用于文件与 shell 操作。它不预置任何应用专属工具,模型按需在任务中用普通 Python 补写缺失逻辑。该工具仅支持 macOS,需要通过 macos-harness doctor 检查并授予相应的系统权限。
以单个持久 Python 进程连接 macOS、真实浏览器和本地文件。具体操作包括:调用 mac.see("Spotify") 用 CGWindow 截取应用窗口(无需将其带到前台);用 mac.key("cmd+k", app="Spotify") 和 mac.type(...) 通过 CGEvent 向指定 PID 发送键盘与坐标输入;用 mac.click(640, 420, app="Spotify") 点击界面;当视觉信息不足时,用 mac.ax.at(...) 读取原生 Accessibility 树、用 mac.script('tell application "Spotify" to play') 发送 Apple Events;通过 browser.page_info() 与 Browser Harness(CDP)操作真实登录态的 Chrome;同一进程中可直接使用 Path 和 subprocess 操作文件与 shell。安装后运行 macos-harness skill 获取技能说明、macos-harness doctor 检查权限,并可通过捕获一个后台应用来验证连接。它还会绘制一个动画化、可穿透点击的指针而不移动物理光标。
- 使用 Codex 或 Claude Code 的开发者,希望代理能安装、自检权限并验证后直接操控本机 Mac 完成任务
- 需要自动化操作具体应用(如 Spotify、Slack、Final Cut)的用户,无需等待或编写应用专属集成工具
- 希望在代理操作时不受干扰的用户——代理可捕获后台窗口、不抢焦点、不移动真实光标
- 需要操控真实登录态浏览器(Chrome via CDP)执行网页任务的自动化场景
- 偏好视觉信息不足时降级到 Accessibility API 与 AppleScript 的技术用户
- 需要在同一 Python 进程中结合文件系统与 shell 操作完成混合任务的自动化工程师
这个 Agent 有哪些优点和局限?
- 无框架、无预设工具的极简设计:模型用 see/key/type/click/ax/script 六个原语即可覆盖任意应用,不必为 Spotify、Slack 或 Final Cut 分别构建工具
- 可捕获后台应用窗口而不抢占前台、向 PID 直接发送输入且不移动物理光标,适合在有人使用机器时运行
- 多层降级路径:视觉之外还暴露原生 Accessibility 和 Apple Events,并经 CDP 操控真实登录态 Chrome
- macos-harness doctor 明确列出所需权限,支持一条命令关闭匿名遥测,隐私边界有明确文档
- 仅支持 macOS,且被官方标注为实验性(Experimental),稳定性与长期维护无保证
- 需要授予多项 macOS 系统权限(doctor 检测),权限配置是采用前的必要成本
- 浏览器控制依赖真实 Chrome 与 CDP,非 Chrome 或无浏览器环境无法使用该能力
- 匿名遥测默认开启,隐私敏感用户需要主动运行 macos-harness telemetry disable
- 没有预置应用工具,复杂任务依赖模型即时编写 Python 逻辑,对模型能力有较高要求;README 未提供性能基准或失败率证据
如何安装或部署这个 Agent?
推荐方式(由代理自行执行):将以下提示粘贴到 Codex 或 Claude Code:"Install or upgrade macOS Harness from https://github.com/browser-use/macos-harness with uv using Python 3.12. Register the skill printed by macos-harness skill, then run macos-harness doctor. Explain any missing macOS permissions and ask before requesting them. Finally, verify the harness by capturing one already-running app without bringing it to the foreground." 也可按仓库的 install.md 进行手动安装。运行环境要求 macOS、Python 3.12 和 uv;如需浏览器控制还需真实 Chrome。
如何使用这个 Agent?
通过 CLI 进入 Python 会话:macos-harness <<'PY' ... PY,在进程内使用六个原语,例如:frame = mac.see("Spotify");mac.key("cmd+k", app="Spotify");mac.type("Alessia Cara", app="Spotify");mac.click(640, 420, app="Spotify");item = mac.ax.at(640, 420, app="Spotify");mac.script('tell application "Spotify" to play')。同一进程中可直接调用 browser.page_info()、list(Path.home().iterdir()) 等。首次使用先运行 macos-harness skill 注册技能说明,再运行 macos-harness doctor 检查并按需授予 macOS 权限。如需关闭遥测,运行 macos-harness telemetry disable。