【Warp+Claude】任务完成自动通知(macOS + Warp 版)

本篇是macOS 适配版,针对 Warp 终端用户优化。

配置通知和等待输入提示音可以参考这篇:【Warp+Claude配置】Claude Code Hooks 实践:让 AI 做完事自动喊你

​ 在 Warp 里让 Claude 跑任务,切到其他应用做自己的事。任务完成时 terminal-notifier 自动弹出 macOS 原生通知,你不需要盯着终端等。

一、环境说明

  • 系统:macOS
  • 终端Warp
  • 通知方式 :macOS 原生通知中心(通过 osascript 调用)

​ macOS 没有 notify-send,我们使用 terminal-notifier 来发送系统通知------它能直接调用 macOS 的通知中心,弹出系统级通知,和你收到 iMessage、微信消息时看到的弹窗一样。

二、先聊聊 Warp 的自带通知

​ 在动手写 Hook 之前,有件事值得了解:Warp 本身就有任务完成通知功能。

2.1 默认配置

​ 打开 Warp 的设置(Cmd + ,)→ Notifications,你会看到:

  • Send notification when a command takes longer than X seconds:命令执行超过指定秒数后发通知

  • Only when Warp is in the background:只在 Warp 不在前台时通知

    也就是说,对于"长时间任务跑完提醒我"这个需求,Warp 开箱即用就能搞定------你甚至不需要写 Hook。

2.2 为什么还要写 Hook?

​ 因为 Hook 能做到 Warp 自带通知做不到的事:

  • 自定义通知内容:Warp 只能告诉你"命令执行完了",Hook 能告诉你"重构完成,共修改 12 个文件"

  • 多渠道推送:同时发到桌面弹窗 + Slack + 日志文件

  • 按条件过滤:只对特定类型的通知做处理

    如果 Warp 自带通知够用,可以跳过这个场景。如果你想要更丰富的通知体验,继续往下。

三、实践过程

3.1 第一步:创建项目结构

​ 如果你还没在 Mac 上搭 demo 环境,先创建:

bash 复制代码
mkdir -p scripts
mkdir -p .claude
cd /demo

💡 前置依赖 :确保装了 jqterminal-notifier。Mac 上如果没装:

复制代码
brew install jq terminal-notifier

3.2 第二步:写脚本

​ 创建 scripts/notify.sh

bash 复制代码
#!/bin/bash

# ① 从 JSON 中提取通知内容
INPUT=$(cat)
MESSAGE=$(echo "$INPUT" | jq -r '.message // "Claude Code 任务完成"')

# ② 调用 terminal-notifier 发送 macOS 系统通知
terminal-notifier -title "Claude Code" -message "$MESSAGE" -sound Glass

几个细节:

  • terminal-notifier 是一个专门在命令行发送 macOS 通知的开源工具,需要通过 Homebrew 安装:brew install terminal-notifier
  • sound name "Glass" 会播放一个提示音。macOS 内置的提示音还有 "Ping""Pop""Purr" 等,你可以换成自己喜欢的。去掉 -sound 参数则静默通知。
  • 通知弹窗会在屏幕右上角显示几秒后自动消失,也会保留在 macOS 通知中心里(从右上角往下滑可以查看历史通知)。

3.3 第三步:手动测试

​ 在 Warp 里打开一个 tab(Cmd + T),运行:

bash 复制代码
cd demo
echo '{"message":"重构完成,共修改 12 个文件"}' | bash scripts/notify.sh

​ 你应该能在屏幕右上角看到一条 macOS 系统通知,标题是 "Claude Code",内容是 "重构完成,共修改 12 个文件",并且听到 "Glass" 提示音。

  • 如果没看到通知,检查一下:

    • 系统设置 → 通知 → Script Editor:确保通知样式不是"无",建议选"横幅"或"提醒"
    • 专注模式:如果开了"勿扰模式",通知会被静默
  • 再测一下默认值:

bash 复制代码
echo '{}' | bash scripts/notify.sh

​ 应该弹出 "Claude Code 任务完成"。

3.4 第四步:写配置

创建 .claude/settings.json(如果已有其他 hook 配置,把 Notification 字段加进去):

json 复制代码
{
  "hooks": {
    "Notification": [
      {
        "hooks": [
          {
            "type": "command",
            "command": "bash scripts/notify.sh"
          }
        ]
      }
    ]
  }
}

3.5 第五步:验证

​ 在 Warp 里新开一个 tab,启动 Claude Code:

bash 复制代码
cd ~/Play/Hooks/demo
claude

​ 给 Claude 一个稍复杂的任务

复制代码
帮我创建一个完整的 Node.js 计算器模块,包含 add、subtract、multiply、divide 四个函数,每个函数都要有参数校验和 JSDoc 注释,再写一个 index.js 统一导出

​ 发完后立刻 Cmd + Tab 切到其他应用。如果一切正常,任务完成时你会在屏幕右上角看到通知弹窗。

四、注意事项

​ ⚠️ 避免和 Warp 自带通知重复。 如果你同时开了 Warp 的通知和 Hook 通知,完成任务时会收到两条通知。建议二选一:

  • 只用 Hook 通知:Warp 设置 → Notifications → 关闭通知。好处是通知内容更丰富。

  • 只用 Warp 通知:不配置 Notification hook。好处是零配置。

    当然,也可以两个都开着,双重提醒,绝对不会漏掉。

相关推荐
X档案库3 小时前
【ROS2】Mac M4 虚拟机 Ubuntu 24.04 安装 ROS2 Jazzy 新手教程
macos·机器人·ros
江城月下4 小时前
从零开始:我在 Mac M1 上搭建离线 AI 知识库的实战记录
人工智能·macos
掘根1 天前
【即时通讯项目】环境搭建9——语言平台
ide·macos·xcode
帅得不敢出门1 天前
MacOS安装VSCode在QEMU上模拟跑FreeRtos
ide·vscode·macos·freertos·rtos
Sahadev_1 天前
macOS 解决 AirDrop 传输应用“已损坏“问题,以sublime为例
macos·策略模式·sublime text
pop_xiaoli1 天前
【iOS】alloc & init & new源码阅读
macos·ios·objective-c·cocoa·xcode
MonkeyKing_sunyuhua2 天前
Mac 上用 MTR 做链路测试很适合排查“ping 不通 / 偶发丢包 / 某一跳延迟高”的问题
macos
FreeBuf_2 天前
苹果紧急发布iOS 15.8.7更新以防御“Coruna“漏洞利用工具包
macos·ios·cocoa
BIBABULALA2 天前
语音算法面试复习系列1——语音信号处理基础(上)
macos·语音识别·xcode