本篇是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。好处是零配置。
当然,也可以两个都开着,双重提醒,绝对不会漏掉。