【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

💡 前置依赖 :确保装了 jq 和 terminal-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。好处是零配置。

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

相关推荐
DevLoom_10 小时前
macOS 27 升级后 Time Capsule 无法备份?AFP 协议废弃后的完整解决方案与备份迁移教程
macos·时间机器·macos27·macos 27备份·macos实用技巧
金海星科技11 小时前
船舶交通管理中心的人工智能值守:从“听、说、读、写“看人机协同
人工智能·macos·xcode
小相会自律14 小时前
全平台远程控制软件推荐2026:Win/Mac/Linux/手机/鸿蒙互通哪款好
linux·macos·智能手机·todesk·teamviewer·向日葵
IsITGirl14 小时前
VMware Fusion(Mac)Windows ARM 虚拟机 NAT (vmnet8) 报错解决记录
windows·macos·.net·桥接模式
全栈探索者1 天前
从素材到成片:ffmpeg 拼接、转码与字幕,一条流水线交付
macos·ffmpeg·aigc·comfyui·视频剪辑
向阳是我1 天前
Mac 命令行获取 APK 公钥和证书 MD5 指纹
macos
lpfasd1232 天前
Ollama 还是 LM Studio:在 24GB 的 M6 Mac 上,我把 Ollama 卸载了
macos·策略模式
情 九2 天前
MCP 开发环境搭建:Mac 与 Windows 跑通 Python 服务和 stdio 客户端
windows·python·macos·mcp
摘星编程2 天前
Mac玩游戏选什么模拟器?MuMu Mac版体验:金铲铲165帧、明日方舟时停键,操作录制也上线了
macos·玩游戏·远程软件
DARLING Zero two♡2 天前
Mac远程控制Windows电脑:MacBook远控软件选购指南2026
macos·电脑