跳到正文
Vibe Console

Claude Code 完成通知:Mac 上任务跑完自动提醒

Claude Code 或 Codex 跑完、等你确认时,怎么在 macOS 上收到通知:hooks、Codex notify 或 Vibe Console 提示音。

Nes

Nes

@nesdesignco

· 阅读约 5 分钟

MacBook 刘海显示终端 2 的“Claude Code 已完成”,下方终端标签页带有运行、空闲和等待状态圆点

Claude Code 的价值就在于长时间运行:把任务交出去,你去干别的。问题是什么时候该回来看。看得太勤,省下的时间又搭进去了;看得太晚,Agent 可能从第二分钟起就一直在等你批准权限。

在 Mac 上有三种解决办法,从自己动手配 hook 到开箱即用的内置功能。

值得关注的两个时刻

不管用哪种方法,你都需要知道两个不同的时刻:

  1. 已完成。 Agent 结束了这一轮,正在等你的下一条消息。
  2. 需要输入。 Agent 在任务中途停了下来,通常是要请求运行命令或修改文件的权限。

第二种更重要。卡在权限确认上的 Agent,进度是零。

方法一:Claude Code hooks

Claude Code 可以在特定事件发生时运行一条 shell 命令。有两个 hook 事件正好对应上面两个时刻:

  • Stop:Claude 回复结束时触发。
  • Notification:Claude 需要你关注时触发,比如请求权限,或者等待输入太久。

把它们加到 ~/.claude/settings.json(对所有项目生效)或某个项目的 .claude/settings.json 里。下面的例子用的是 macOS 自带的 osascript:

{
  "hooks": {
    "Stop": [
      {
        "hooks": [
          {
            "type": "command",
            "command": "osascript -e 'display notification \"Task finished\" with title \"Claude Code\" sound name \"Glass\"'"
          }
        ]
      }
    ],
    "Notification": [
      {
        "hooks": [
          {
            "type": "command",
            "command": "osascript -e 'display notification \"Waiting for your input\" with title \"Claude Code\" sound name \"Funk\"'"
          }
        ]
      }
    ]
  }
}

重启 Claude Code,跑个小任务测试一下。第一次运行时,macOS 可能会询问是否允许“脚本编辑器”显示通知。

这种方法的局限: 通知不会告诉你来自哪个项目或哪个终端,点通知也不会跳过去,而且其他每个 Agent 都得再配一遍。最新的事件列表请查看 Claude Code hooks 文档。

方法二:Codex notify

Codex CLI 可以在每轮 Agent 结束后运行一个程序。在 ~/.codex/config.toml 里把 notify 设成一条命令,Codex 会把事件的 JSON 描述传给它:

notify = ["osascript", "-e", "display notification \"Codex finished\" with title \"Codex\""]

新版 Codex 也支持 hooks,包括 Stop 事件,可以在 hooks.json 或 config.toml 的 [hooks] 表里配置。不同版本的选项会变,请查看对应版本的 Codex hooks 文档。

方法三:Vibe Console 内置

Vibe Console 替你盯着每一个 Agent 终端,支持全部 8 款 Agent,无需任何配置:

  • 每个标签页都有状态圆点,显示它的 Agent 在运行还是空闲,一屏 Agent 网格扫一眼就清楚。
  • Agent 完成时,应用会播放提示音(默认 Glass),并在 MacBook 刘海处短暂弹出那个会话,告诉你是哪个 Agent、哪个终端。
  • Agent 停下来等你时,会播放另一种提示音(默认 Funk),不用看屏幕也能分清“跑完了”还是“卡住了”。
  • 两种提示音都可以自定义,也可以关掉。

当 Claude Code 或 Codex 的用量在某个窗口内超过 80% 和 100% 时,它还会发 macOS 通知。详见 Claude Code 用量额度。

同时跑好几个 Agent 时,这个功能最有用。参见 如何并行运行多个 Claude Code Agent。

该用哪一种?

Hooks / notify Vibe Console
费用 免费 包含在应用中
配置 每个 Agent 单独配,JSON 或 TOML 无需配置
区分“完成”和“卡住” 可以,需要两个 hook 可以,两种提示音
显示是哪个终端 否 是,在刘海中显示
8 款 Agent 全支持 仅限支持 hooks 的 是

如果你一次只跑一个 Claude Code 会话,hooks 就够用了。如果你在多个项目里同时跑好几个 Agent,一个分得清哪个终端是哪个的工作区最省时间。

常见问题

为什么我的 Claude Code hook 没触发?

检查 JSON 是否合法、文件位置是否正确、是否重启了 Claude Code。再在终端里单独运行那条 osascript 命令,确认系统允许显示通知。

能在手机上收到通知吗?

Hook 可以调用任何命令,包括推送服务。Claude Code 也支持通过它的手机 App 远程控制,离开工位也能查看会话。

内置提示音免费试用 14 天:下载 Vibe Console。

给你的 Agent 一个窗口。

免费试用 14 天,之后 $4.99/月 或 $39.99/年。