Claude Code 和 Codex 任务完成通知

2 阅读4分钟

🔔 完整配置教程

让 Claude Code 和 Codex CLI 任务完成时自动发送撩人通知!

支持 macOS 15+ (Sequoia),完美解决系统通知权限限制问题。


📋 目录

  1. 前置要求
  2. Step 1: 创建快捷指令
  3. Step 2: 配置 Claude Code
  4. Step 3: 配置 Codex CLI
  5. 测试验证
  6. 常见问题

前置要求

  • ✅ macOS 15+ (Sequoia)
  • ✅ Python 3
  • ✅ Claude Code 或 Codex CLI 已安装
  • ✅ 下载文件到本地

代码文件: notify_on_finish.py


Step 1: 创建快捷指令

⚠️ 为什么需要这步?

macOS 15 限制了命令行工具发送系统通知的权限,必须通过「快捷指令」来发送通知。这是苹果的安全策略,我们只能乖乖配合~

操作步骤

  1. 打开快捷指令 App

    • 使用 Spotlight(⌘ + 空格)搜索「快捷指令」
    • 或在「启动台」中找到「快捷指令」
  2. 创建新快捷指令

    • 点击左上角 + 按钮
  3. 搜索并添加「显示通知」动作

    • 在右侧搜索框输入「通知」
    • 选择「显示通知
  4. 配置动作参数(关键步骤!)

    • 点击通知正文的输入框
    • 选择「快捷指令输入」变量(带蓝色标签的那个)
    • ⚠️ 不要手动输入文字!必须选择变量!
  5. 重命名快捷指令

    • 点击顶部标题,修改为:AI打工仔凌凌七向您报道!
    • 这个名字必须完全一致,否则脚本找不到
  6. 保存并退出

配置截图参考

image.png

你的快捷指令应该看起来像这样:

┌─────────────────────────────────────────────────────┐
│  AI打工仔凌凌七向您报道!                             │
├─────────────────────────────────────────────────────┤
│  📥 从「无处」接收「任一」输入                        │
│     如果没有输入:继续                               │
├─────────────────────────────────────────────────────┤
│  🔔 显示 [快捷指令输入的信息] 通知                   │
└─────────────────────────────────────────────────────┘

Step 2: 配置 Claude Code

Claude Code 使用 settings.json 配置文件,通过 Stop Hook 在任务完成时触发通知。

配置文件位置

~/.claude/settings.json

配置内容

编辑 ~/.claude/settings.json,添加以下内容:

{
  "hooks": {
    "Stop": [
      {
        "hooks": [
          {
            "command": "python3 /你的路径/notify_on_finish.py",
            "type": "command"
          }
        ],
        "matcher": ""
      }
    ]
  }
}

配置说明

字段说明
hooks.Stop定义任务停止时执行的钩子
command通知脚本的完整路径(必须用绝对路径
type固定为 "command"
matcher匹配规则,留空表示匹配所有

配置截图参考

image.png

快速配置命令

# 1. 创建配置目录
mkdir -p ~/.claude

# 2. 获取脚本绝对路径
SCRIPT_PATH="$(pwd)/notify_on_finish.py"
echo "脚本路径: $SCRIPT_PATH"

# 3. 创建配置文件(如果不存在)
if [ ! -f ~/.claude/settings.json ]; then
  cat > ~/.claude/settings.json << EOF
{
  "hooks": {
    "Stop": [
      {
        "hooks": [
          {
            "command": "python3 $SCRIPT_PATH",
            "type": "command"
          }
        ],
        "matcher": ""
      }
    ]
  }
}
EOF
  echo "✅ 配置文件已创建: ~/.claude/settings.json"
else
  echo "⚠️ 配置文件已存在,请手动编辑添加 hooks 配置"
fi

Step 3: 配置 Codex CLI

Codex CLI 使用 config.toml 配置文件,通过 notify 字段配置通知命令。

配置文件位置

~/.codex/config.toml

配置内容

编辑 ~/.codex/config.toml,添加以下行:

notify = ["python3", "/你的路径/notify_on_finish.py"]

完整配置示例

notify = ["python3", "/你的路径/notify_on_finish.py"]

配置说明

字段说明
notify任务完成时执行的命令数组
第一个元素Python 解释器路径
第二个元素通知脚本的完整路径(必须用绝对路径

配置截图参考

image.png

快速配置命令

# 1. 创建配置目录
mkdir -p ~/.codex

# 2. 获取脚本绝对路径
SCRIPT_PATH="$(pwd)/notify_on_finish.py"

# 3. 追加 notify 配置(如果不存在)
if ! grep -q "^notify" ~/.codex/config.toml 2>/dev/null; then
  echo "" >> ~/.codex/config.toml
  echo "notify = [\"python3\", \"$SCRIPT_PATH\"]" >> ~/.codex/config.toml
  echo "✅ notify 配置已添加到: ~/.codex/config.toml"
else
  echo "⚠️ notify 配置已存在,请手动检查"
fi

测试验证

测试快捷指令

shortcuts run "AI打工仔凌凌七向您报道!" -i "测试通知:你好主人!"

如果看到通知弹出,说明快捷指令配置成功!

测试 Claude 格式通知

echo '{"hook_event_name":"Stop","cwd":"'$(pwd)'"}' | python3 notify_on_finish.py

测试 Codex 格式通知

echo '{"type":"agent-turn-complete","success":true}' | python3 notify_on_finish.py

测试失败状态通知

echo '{"hook_event_name":"Stop","cwd":"'$(pwd)'","success":false}' | python3 notify_on_finish.py

通知样式预览

通知会根据来源和状态显示不同样式:

来源状态样式示例
Claude完成🟣 Claude [项目名]
Claude失败🔴 Claude [项目名]
Codex完成⚡ Codex [项目名]
Codex失败❌ Codex [项目名]

通知内容会随机选择一条撩人的文案,比如:

  • 「主人!活干完啦,求表扬求摸头求抱抱~」
  • 「叮咚!您的代码已出炉,比主人还香~」
  • 「搞定!给主人比个心 ❤️ mua~」

常见问题

Q: 通知没有弹出?

  1. 检查快捷指令名称是否正确

    shortcuts list | grep "AI打工仔凌凌七向您报道"
    
  2. 检查脚本路径是否正确

    ls -la /你的路径/iterm-notify/notify_on_finish.py
    
  3. 启用调试日志

    NOTIFY_DEBUG_LOG=/tmp/notify.log python3 notify_on_finish.py
    cat /tmp/notify.log
    

Q: 终端在前台时不想收到通知?

在配置中添加环境变量:

Claude Code (~/.claude/settings.json):

{
  "env": {
    "NOTIFY_SUPPRESS_WHEN_TERMINAL_ACTIVE": "1"
  }
}

Q: 重启电脑后需要重新配置吗?

不需要! 所有配置都是持久化的:

  • ✅ 快捷指令保存在系统中
  • ✅ Claude/Codex 配置保存在配置文件中
  • ✅ 脚本文件不会消失

Q: 支持哪些终端?

目前支持以下终端的前台检测:

  • iTerm2
  • macOS Terminal
  • Alacritty
  • kitty
  • Hyper
  • Warp
  • WezTerm

🎉 配置完成!

现在,每当 Claude Code 或 Codex CLI 完成任务时,你都会收到一条撩人的通知啦!

如果遇到问题,欢迎提 Issue 或者直接骂代码(老王最喜欢骂代码了)。


作者:AI打工仔凌凌七 License:MIT