别再只让 AI 点网页了:macos-harness 给大模型发了一套操控整台 Mac 的「原始手势」
这个项目能干嘛
说白了,macOS Harness 就是给大模型发了一套能直接操作整台 Mac 电脑的「原始手势」。它不是又一个只会帮你点网页的浏览器自动化工具,而是把一个 Python 进程直接连到了 macOS、你真实登录的浏览器和本地文件上。你的 Agent 想做什么,它就直接调用系统的底层能力去完成——截屏看界面、按快捷键、打字、点击坐标、读写文件、跑脚本,全都不在话下。最有意思的是,当遇到没有任何现成工具能处理的任务时,Agent 会在任务进行到一半的时候,自己用普通的 Python 代码把缺失的逻辑补上。没有框架、没有预制配方、没有轨道护栏,模型拿到的就是最原始的系统能力,剩下的由它自己写。
为什么最近火了
这个项目火起来,我觉得主要靠两点。一是它来自 browser-use 团队——做网页 Agent 起家,有大批关注电脑自动化的人盯着他们的新动作,一开源就被快速围观。二是它把「computer-use」这个概念重新讲了一遍:现在大家熟悉的电脑操控 Agent 大多只盯着一个浏览器,而 macOS Harness 直接把整台 Mac 交给模型,还刻意不提供任何 App 专用工具(没有专属的 Spotify 工具、Slack 工具、Final Cut 工具)。这种「只给原始原语、让模型自己拼」的极简思路,戳中了不少人觉得现有 Agent 太「被框死」的痛点,所以两周就冲到了四百多星。
技术亮点
整个 Harness 的核心,是六个原始原语(primitive):see、key、type、click、ax、script。把它想像成你教 Agent 用 Mac 的六句基本口令。see 负责截图,靠 macOS 的窗口服务(CGWindow)抓取画面,而且能在不把后台 App 调到前台的情况下,悄悄截取它正在运行的窗口。key 和 type 通过系统事件(CGEvent)把键盘和文字直接送到某个 App 的进程 ID 上,不用真的去点那个窗口。click 则按坐标点击,还会画一个「能穿透点击」的动画指针,重点是它不会动你真实的鼠标光标。ax 在视觉不够用时,直接暴露苹果的无障碍(Accessibility)接口,能精准定位界面里的某个元素。script 则允许 Agent 直接发 AppleScript / Apple Events,比如让 Spotify 播放某首歌。
浏览器方面,它复用 browser-use 的 Browser Harness,通过 CDP 协议连上你真实登录的 Chrome,这意味着 Agent 能操作你已登录的账号、有状态的网页,而不是开个空白隐身窗口。同时 browser、Path、subprocess 这些 Python 标准能力就在同一个进程里随手可用。整个设计的关键词是「薄」:团队反复强调它不替模型做任何决策,只把最底层的系统能力摆出来,缺什么工具就由模型自己写 Python 补上。
隐私上也有讲究:harness 永远不会主动激活或抬升目标 App,也永远不会移动你物理的光标。它默认开着匿名遥测,但只记录命令行类别、成功与否、耗时、版本、系统架构和检测到的 Agent 客户端,绝不记录你的提示词、App 名称、截图、界面文字、脚本、路径或窗口标题。不想要可以一句 macos-harness telemetry disable 关掉。
适合什么人
这个项目最适合两类人。一类是想给自己的 Claude Code、Codex 之类编程 Agent「装上手脚」的开发者——你不需要再为每个 App 单独写集成,把 harness 注册成 skill,Agent 就能自己操控 Mac 完成真实任务。另一类是 macOS 自动化爱好者,以前要用一堆脚本和快捷键拼接的工作流,现在可以用自然语言让 Agent 直接编排。前提是你得用 Mac,而且愿意给终端一些辅助功能权限。
快速试用
官方推荐用 uv 安装(需要 Python 3.12):uv tool install --python 3.12 macos-harness,然后运行 macos-harness skill 打印出要注册给 Agent 的技能说明,再跑 macos-harness doctor 检查还缺哪些 macOS 权限。也可以把那段安装提示直接贴进 Codex 或 Claude Code,让 Agent 自己装好、自检并验证连接。
与竞品对比
和 OpenAI Operator、Claude 的电脑操控能力比,最大的差别在「层级」。Operator 们主要在浏览器里打转,盯着网页表单和点按;macOS Harness 是操作系统级别的,能同时碰 App、浏览器和文件系统。和那些给每个软件都预制专用工具包的 Agent 框架比,它反其道而行——只给六个原始原语,逼模型自己组合。好处是灵活、不会被某个工具的能力边界卡住;代价是你得信任模型自己写代码补全逻辑。对想要「整台电脑自由」而不是「只会点点网页」的玩家来说,这个薄薄的 harness 反而更对胃口。