Hammerspoon:用 Lua 把 macOS 系统变成可编程自动化引擎
阅读时间: 大约 7 分钟
Hammerspoon:用 Lua 把 macOS 系统变成可编程自动化引擎

macOS 上不缺自动化工具:系统自带的”快捷指令(Shortcuts)“、收费的 BetterTouchTool、窗口管理的 Rectangle……但它们都是图形化、有边界的。Hammerspoon 走的是另一条路——它几乎不做产品功能,只在操作系统和一个 Lua 脚本引擎之间架一座桥,剩下的一切由你用代码定义。本文基于其官网分析它的定位与取舍。
一、它是什么:一座桥,不是一个应用
官网的自我定位非常克制:“At its core, Hammerspoon is just a bridge between the operating system and a Lua scripting engine.”(本质上,它只是操作系统与 Lua 脚本引擎之间的一座桥。)
真正给它能力的是一组扩展(extensions),把 macOS 的具体系统功能暴露给脚本。官网列出的可触达面包括:应用程序、窗口、鼠标指针、文件系统对象、音频设备、电池、屏幕、低级键鼠事件、剪贴板、定位服务、WiFi 等。
二、核心机制:事件 → 动作
Hammerspoon 的使用模型是”把事件绑到动作”:你在 ~/.hammerspoon/init.lua 里写 Lua 配置,把系统事件和你想要的动作连起来。官网给的几个例子很能说明它的想象力:
- 把一组窗口操作(甚至一段 AppleScript)绑到一个快捷键;
- 当 WiFi 连上家里网络时,自动跑一串命令;
- 电池电量低于某个百分比时弹提醒;
- 甚至”当 Mac 检测到你人在巴黎时,自动打开 iTunes 播放音乐”这种离谱组合。
关键在于:开箱即用时它什么都不做(“Out of the box, Hammerspoon does nothing”)。没有预设、没有 GUI 面板,一切行为由你在 init.lua 里定义。这既是它的哲学,也是它的门槛。
三、Spoons:现成插件生态
从零写 Lua 对很多人还是麻烦,于是社区有了 Spoons——预先写好的 Lua 插件(spoon 在英文里是”勺子”,呼应 Hammerspoon 之名)。你可以直接把现成 Spoon 放进配置目录用,而不必事事手写。这把 Hammerspoon 从”纯手搓”拉向了”可拼装”,但仍比图形化工具更贴近代码。
四、关键数据与口径
- 性质:老牌、成熟的 macOS 开源自动化工具(非本周新发布,周报是回顾推荐);
- 脚本语言:Lua——Koala 点评说它在性能与易用性之间取得平衡:Lua 轻量、嵌入快,比写 Python/Obj-C 做自动化更顺手;
- 安装:下载 release 后拖进
/Applications;旧系统需查 Release Notes 找兼容版本; - 扩展开发:既可以写纯 Lua 扩展,也可以写 Objective-C 扩展把新的系统能力暴露出来。
五、官方未明说的局限与适用边界
- 学习曲线陡:官网自己承认”开箱即什么都不做”,意味着你得会 Lua、得懂它的 API、得自己维护一份配置——这对普通用户极不友好;
- macOS 独占:Windows/Linux 用户无缘;
- 依赖辅助功能权限:控制窗口、模拟键鼠都要在系统设置里开”辅助功能”等权限,初次配置有点绕;
- 图形化方案更省心:与 Shortcuts、BetterTouchTool 比,Hammerspoon 上限更高但没有拖拽式 UI;Koala 的判断很准——它适合”喜欢用代码掌控一切的 Power User”,不适合追求开箱即用的人;
- 配置即代码:换机器要同步
init.lua与 Spoons,好处是可版本管理,坏处是初始搭建费时。
六、适用 / 不适用场景
适合:
- 喜欢用代码定制工作流的 macOS Power User;
- 想要超越图形化工具边界、把任意系统事件串成自动化的人;
- 愿意把自己的 dotfiles(含
init.lua)纳入 git 管理、追求一致体验的开发者。
不适合:
- 想要装好就用、拖拖拽拽的普通用户;
- Windows/Linux 用户;
- 只需要一两个简单快捷键、不想学 Lua 的人(用 Rectangle/BetterTouchTool 更划算)。
七、客观分析:优势与局限
优势:
- 系统触达面极广:窗口、键鼠、WiFi、电池、剪贴板、定位,几乎无所不能;
- Lua 轻量、脚本即配置,可版本管理、可分享;
- Spoons 生态降低了部分上手成本;
- 老牌成熟、稳定,社区与文档完善。
局限:
- 门槛高:要写代码,开箱即空;
- macOS 独占;
- 无图形化编辑,配置全靠手写;
- 权限配置与维护成本不低。
八、它意味着什么
Hammerspoon 代表了 macOS 自动化的”极客派”——不试图用一个 GUI 框住所有场景,而是把整个系统暴露给脚本。在 AI Agent 时代,这种”系统能力可编程”的思路反而有了新价值:当你想让 Agent 驱动本地桌面,Hammerspoon 这样的桥层就是现成的能力底座。但对绝大多数人,它依然是那个”爱者极爱、嫌者嫌其麻烦”的工具。它不适合所有人,可一旦你吃了它那套”事件绑动作”的范式,就再也回不去那种被 GUI 框死的自动化了。