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

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

相关推荐
zhensherlock1 天前
Protocol Launcher 系列:Agenda 优雅组织你的想法与日程
javascript·macos·ios·typescript·node.js·mac·ipad
ipy2Tf8WP1 天前
全程用 Claude Code 搓了一个 macOS 原生应用:SkillDeck
macos
eLIN TECE1 天前
Mac安装Redis步骤
redis·macos·bootstrap
独隅1 天前
在 MacOS 上部署 Keras 模型的全面指南
人工智能·macos·keras
飞翔的SA2 天前
MLX‑VLM :Mac本地跑通多模态大模型的开源项目!让图片、音频、视频理解一键上手
人工智能·python·macos·音视频
sunfdf3 天前
移动硬盘上的文件消失了?以下是Mac电脑解决方法
macos·电脑
wonderomg3 天前
Mac安装openclaw步骤
macos·openclaw
whatzhang0073 天前
在 macOS 上从零配置 Vim:开启语法高亮 + 安装 vim-polyglot + 设置 gruvbox 主题
macos·vim·excel
徐健峰4 天前
Claude Code 安装完全指南(Mac 版):Git、环境变量、PATH 与常见报错一次讲清(2026)
git·macos·arcgis
AppOS4 天前
手把手教你 Openclaw 在 Mac 上本地化部署,保姆级教程!接入飞书打造私人 AI 助手
人工智能·macos·飞书