Hammerspoon:用 Lua 把 macOS 系统变成可编程自动化引擎

macOS
自动化
Lua
效率工具
窗口管理
开源
2026/9/29
·

阅读时间: 大约 7 分钟

Hammerspoon:用 Lua 把 macOS 系统变成可编程自动化引擎

Hammerspoon 官方入门指南截图:安装与开启辅助功能的步骤,以及教程目录——从 Hello World 热键通知、窗口移动/布局/缩放、配置热重载,到响应 Wi-Fi/USB 事件、调 AppleScript、控制 iTunes/Spotify、发 iMessage,一览其可自动化的系统能力范围

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 扩展把新的系统能力暴露出来。

五、官方未明说的局限与适用边界

  1. 学习曲线陡:官网自己承认”开箱即什么都不做”,意味着你得会 Lua、得懂它的 API、得自己维护一份配置——这对普通用户极不友好;
  2. macOS 独占:Windows/Linux 用户无缘;
  3. 依赖辅助功能权限:控制窗口、模拟键鼠都要在系统设置里开”辅助功能”等权限,初次配置有点绕;
  4. 图形化方案更省心:与 Shortcuts、BetterTouchTool 比,Hammerspoon 上限更高但没有拖拽式 UI;Koala 的判断很准——它适合”喜欢用代码掌控一切的 Power User”,不适合追求开箱即用的人;
  5. 配置即代码:换机器要同步 init.lua 与 Spoons,好处是可版本管理,坏处是初始搭建费时。

六、适用 / 不适用场景

适合:

  • 喜欢用代码定制工作流的 macOS Power User;
  • 想要超越图形化工具边界、把任意系统事件串成自动化的人;
  • 愿意把自己的 dotfiles(含 init.lua)纳入 git 管理、追求一致体验的开发者。

不适合:

  • 想要装好就用、拖拖拽拽的普通用户;
  • Windows/Linux 用户;
  • 只需要一两个简单快捷键、不想学 Lua 的人(用 Rectangle/BetterTouchTool 更划算)。

七、客观分析:优势与局限

优势:

  1. 系统触达面极广:窗口、键鼠、WiFi、电池、剪贴板、定位,几乎无所不能;
  2. Lua 轻量、脚本即配置,可版本管理、可分享;
  3. Spoons 生态降低了部分上手成本;
  4. 老牌成熟、稳定,社区与文档完善。

局限:

  1. 门槛高:要写代码,开箱即空;
  2. macOS 独占;
  3. 无图形化编辑,配置全靠手写;
  4. 权限配置与维护成本不低。

八、它意味着什么

Hammerspoon 代表了 macOS 自动化的”极客派”——不试图用一个 GUI 框住所有场景,而是把整个系统暴露给脚本。在 AI Agent 时代,这种”系统能力可编程”的思路反而有了新价值:当你想让 Agent 驱动本地桌面,Hammerspoon 这样的桥层就是现成的能力底座。但对绝大多数人,它依然是那个”爱者极爱、嫌者嫌其麻烦”的工具。它不适合所有人,可一旦你吃了它那套”事件绑动作”的范式,就再也回不去那种被 GUI 框死的自动化了。

参考来源