【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。好处是零配置。

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

相关推荐
雨声不在1 天前
macos 12使用docker
macos·docker·容器
一叶龙洲1 天前
ubuntu26.04 xfce美化成mac
服务器·ubuntu·macos
李小白杂货铺1 天前
Oh My Zsh 简记
macos·macbook·zsh·主题·插件·oh my zsh·omz
fukai77222 天前
macOS防止休眠的菜单栏小工具
macos
web守墓人2 天前
【go语言】gotar:使用go语言复刻tar命令,并加入7z支持,可独立运行在windows、linux、macos上
linux·macos·golang
之歆3 天前
从 Mac 回到 Windows:用 PowerToys + AutoHotkey 找回熟悉手感
windows·macos
星辰即远方3 天前
字符串合法性检验
macos·ios·cocoa
2501_916008894 天前
苹果上架工具怎么选 不用 Mac 上架 App Store 的几种方案
android·macos·ios·小程序·uni-app·iphone·webview
秋雨梧桐叶落莳4 天前
iOS——3GShare项目总结
学习·macos·ios·objective-c·cocoa
酉鬼女又兒4 天前
零基础入门 DeepSeek V4 Pro API 开发:从环境搭建、消息格式规范到翻译函数实战、少样本提示、多轮对话聊天机器人与常见报错全流程详解指南
大数据·网络·数据库·人工智能·macos·机器人·github