huashu-mac-use 是花叔 Huashu 做的 macOS 桌面操作 Skill,面向那些没有 API、也没有稳定命令行入口的原生应用。它的目标不是让 Agent 盲目点击屏幕,而是先探测应用支持哪种控制通道,再按成本从低到高选择,并尽量在后台完成读写。项目基于 Agent Skills 协议,Claude Code、Codex、Kimi Code、Cursor 等运行时都能装。
先探测,再选控制层
probe.sh 是每次动手前的第 0 步。它会告诉你目标应用的 bundle、架构、有没有 URL scheme、有没有 AppleScript 字典、有没有本地端口、AX 树里有多少可编辑控件以及版本号。依据这些信息,内核按四层选择通道:
- L0 结构接口:应用自己的 CLI、AppleScript、URL scheme 或本地 CDP/JSON-RPC 端口,默认起点。
- L1 AX 语义树:用
mac ax读取控件,用mac axset设值,写后要看到应用状态真的变了才算通。 - L2 窗口坐标:用
mac see截图,再按坐标点击或输入,适合前两层都不可用的应用。 - L3 像素:
mac shot,主要用于取证和最后验证。
这套顺序的价值在于少看图、少抢焦点。一个内嵌 Chromium 的办公应用如果能走 CDP,就不必模拟鼠标;probe.sh 会从进程表判断它是不是 Chromium 系,避免被顶层目录结构骗过去。
读在后台,写尽量不抢焦点
截图、列窗口、读 AX 和 CDP 都属于读操作,不会 activate 应用、不会切桌面。写操作先尝试 postToPid,把键鼠事件直接投给目标进程,再截图差分判断有没有生效;判不出来才考虑借焦点。借焦点前要过四道闸:前台必须是目标进程、落点不能被别的窗口挡住、用户最近两秒没有动键鼠、全机同时只允许一个进程借焦点。等待超过十五秒就拒绝,而不是硬抢。
真的借到焦点的那半秒,屏幕四角会闪一圈取景框,告诉用户此刻是 Agent 在动。它鼠标穿透、不抢焦点、对屏幕捕获隐身,所以取证截图不会带着这层标记。用完立刻还焦点、还原鼠标位置。跨桌面的坐标写操作会被直接拒绝,内核不会自己切桌面。
工具返回成功不等于生效
mac op 和 CDP 的输入动作返回后,会报告 confirmed、partial、suspected_noop 或 unverifiable。判定依据从弱到强是:工具返回、读回控件值、截图看见文字、应用状态指示器、最终副作用。README 举过一个例子:AX 把文字写进输入框,截图也看得见,但发送键仍是灰的,因为 React 维护的状态不认这次输入;此时真点发送,发出去的是空消息。suspected_noop 不是失败,而是提醒回去重看。
安装与权限
npx skills add alchaincyf/huashu-mac-use |
前置条件是 macOS、Xcode Command Line Tools 和 Node.js;首次编译内核约二十秒。屏幕录制和辅助功能权限要授给运行 Agent 的终端应用,不是授给脚本,换终端后要重新授权。Codex 的安装目录是 ~/.codex/skills,其他运行时就放到各自约定的 skills 目录。
一个不抢焦点的桌面自动化场景
Agent 在某个桌面跑任务,你想让它打开 WPS 里的合同并截第二页,同时自己继续在另一个桌面打字。先 probe.sh 看 WPS 支持哪些通道,再决定用 AX 还是坐标;截图走后台,只有确实需要点击输入时才借焦点,完成后立刻归还。遇到发布、付款、删除、覆盖保存、系统授权弹窗、钥匙串和 Touch ID,Skill 的停手线要求交给用户,不绕过去。
和官方 computer use 的对比
OpenAI 和 Anthropic 都在把 computer use 做进模型与官方 harness,视觉能力会越来越强。huashu-mac-use 不跟它们比看图,而是补三件事:按应用内核选通道、尽量不打扰用户、每一步留下可复现的证据。它更像一层面向 macOS 原生应用的适配器和安全护栏。
限制与风险
只能在 macOS 上运行,强依赖辅助功能和屏幕录制权限;应用更新、窗口结构变化或系统版本差异都可能让某条路径失效。它不处理浏览器任务,README 明确把浏览器交给 huashu-chrome。屏幕上读到的文字一律视为数据而非指令,但提示词注入仍可能通过其他渠道进入。最稳妥的用法,是把不可逆动作留在人手里。
适合需要自动化 macOS 原生应用、又在意不打断当前工作的开发者和重度用户;不能接受系统权限、或需要跨平台批量执行的环境不适合。
入口
仓库:https://github.com/alchaincyf/huashu-mac-use 。README 提供能力分层、命令表、权限说明和三个案例,未提供在线 Demo。许可证为 MIT。本文按官方 README 和仓库元数据整理,未在本机完整实测。
