给 Claude Code 加上 Windows 提醒——一个小功能,少操十份心

人和 AI 并行工作,最怕的就是"我让 AI 去做 A,然后自己去忙 B,结果 B 做完了 A 还没消息,不知道它卡在哪了也不知道要不要去管"。

加上 Windows Toast 提醒,就没这个问题了。

原理:Claude Code 的 Hooks 机制

Claude Code 提供了 Hooks------一种在特定事件发生时自动执行脚本的机制。你可以把 Hook 理解为"监听器":当某个事件(比如 AI 停下来、对话结束、需要你审批权限)发生时,Claude Code 自动帮你跑一段代码,这段代码可以弹出一个 Windows 通知,提醒你去关注。

核心流程:

复制代码
用户操作或AI行为 → 触发 Hook 事件 → 执行脚本 → 调用 win11toast → 桌面弹窗通知

你只需要做两件事:

  1. 安装 win11toast
  2. settings.json 里加几行配置

安装前提

1. 安装 Python 通知库

bash 复制代码
pip install win11toast

2. 验证安装成功

安装完成后,先跑一条命令确认 win11toast 能正常工作:

bash 复制代码
python -c "from win11toast import toast; toast('测试', '如果看到这个弹窗,说明安装成功')"

看到弹窗了,再继续往下配置。没看到弹窗,先重新安装:

bash 复制代码
pip install --force-reinstall win11toast

注意 :本文仅适用于 Windows 11 。Mac 用户需要用 osascriptterminal-notifier 等其他方案。

3. 确认配置文件位置

你的 settings.json 在:

makefile 复制代码
C:\Users\singsky\.claude\settings.json

所有 Hook 配置都写在这个文件里。

场景一:AI 停止时提醒我(Stop Hook)

最常用的场景:AI 停止了(可能遇到了问题,或者任务完成),弹个通知告诉你。

settings.jsonhooks 字段里添加:

json 复制代码
"Stop": [
  {
    "hooks": [
      {
        "command": "bash -c 'python -c \"from win11toast import toast; toast(\\\"Claude Code\\\", \\\"AI 已停止,请检查状态\\\")\"'",
        "type": "command"
      }
    ]
  }
]

场景二:会话结束时提醒我(SessionEnd Hook)

对话结束(主动关闭或超时),想确认一下有没有遗漏的任务。

json 复制代码
"SessionEnd": [
  {
    "hooks": [
      {
        "command": "bash -c 'python -c \"from win11toast import toast; toast(\\\"Claude Code\\\", \\\"会话已结束\\\")\"'",
        "type": "command"
      }
    ]
  }
]

场景三:权限请求时提醒我(PermissionRequest Hook)

需要你审批权限时(比如要执行危险命令),弹通知提醒你去看一下。

json 复制代码
"PermissionRequest": [
  {
    "hooks": [
      {
        "command": "bash -c 'python -c \"from win11toast import toast; toast(\\\"Claude Code 权限请求\\\", \\\"需要你批准某个操作\\\")\"'",
        "type": "command"
      }
    ]
  }
]

完整配置示例

下面是一个完整的 Hook 配置,把这几个场景都加进去。注意保留你已有的其他 Hook 配置。

json 复制代码
{
  "hooks": {
    "Stop": [
      {
        "hooks": [
          {
            "command": "bash -c 'python -c \"from win11toast import toast; toast(\\\"Claude Code\\\", \\\"AI 已停止,请检查状态\\\")\"'",
            "type": "command"
          }
        ]
      }
    ],
    "SessionEnd": [
      {
        "hooks": [
          {
            "command": "bash -c 'python -c \"from win11toast import toast; toast(\\\"Claude Code\\\", \\\"会话已结束\\\")\"'",
            "type": "command"
          }
        ]
      }
    ],
    "PermissionRequest": [
      {
        "hooks": [
          {
            "command": "bash -c 'python -c \"from win11toast import toast; toast(\\\"Claude Code 权限请求\\\", \\\"需要你批准某个操作\\\")\"'",
            "type": "command"
          }
        ]
      }
    ]
  }
}

如何合并到现有配置?StopSessionEndPermissionRequest 这三个块,复制到你现有的 settings.jsonhooks 字段里即可。如果某个事件已经存在,就合并数组,不要覆盖。

常用 Hook 类型一览

Hook 事件 触发时机 典型用途
SessionStart 开始新对话时 加载项目状态
SessionEnd 对话结束时 任务收尾提醒
Stop AI 停止工作时 检查是否卡住
PreToolUse 工具执行前 权限预检
PostToolUse 工具执行后 记录执行结果
PostToolUseFailure 工具执行失败 错误通知
UserPromptSubmit 提交提示词后 记录活动状态
PermissionRequest 请求权限时 提醒你审批

进阶:让提醒更聪明

自定义通知内容

可以把更多上下文信息放进通知里。例如,在 PostToolUseFailure 时显示错误类型:

json 复制代码
"PostToolUseFailure": [
  {
    "hooks": [
      {
        "command": "bash -c 'python -c \"from win11toast import toast; toast(\\\"Claude Code 出错了\\\", \\\"工具执行失败,请查看终端\\\")\"'",
        "type": "command"
      }
    ]
  }
]

多条提醒组合

同一个事件可以触发多条通知,或者同时执行其他操作(比如记录日志):

json 复制代码
"SessionEnd": [
  {
    "hooks": [
      {
        "command": "bash $HOME/.claude/hooks/on-end",
        "type": "command"
      }
    ]
  },
  {
    "hooks": [
      {
        "command": "bash -c 'python -c \"from win11toast import toast; toast(\\\"Claude Code\\\", \\\"会话结束\\\")\"'",
        "type": "command"
      }
    ]
  }
]

定期提醒检查(Bonus)

如果你在并行工作,可以给 AI 留一个任务清单文件,让它在每次 SessionEnd 时检查你有没有遗漏的待办:

python 复制代码
# ~/.claude/hooks/check-reminders.py
import os
from win11toast import toast

reminder_file = os.path.expanduser("~/.claude/reminders.txt")
if os.path.exists(reminder_file):
    with open(reminder_file) as f:
        lines = f.readlines()
    if lines:
        count = len(lines)
        toast("Claude Code 任务提醒", f"你有 {count} 个待办事项")

弹窗没出来?排查步骤

  1. 手动测试 win11toast 是否正常

    bash 复制代码
    python -c "from win11toast import toast; toast('测试', '检查是否能弹窗')"

    没弹 → 重新安装 pip install --force-reinstall win11toast

  2. 确认命令能执行

    bash 复制代码
    bash -c 'python -c "from win11toast import toast; toast(\"Test\", \"Test\")"'

    报错 → 检查 Python 路径,Windows 上可能需要用完整路径

  3. 检查 settings.json 格式是否正确

    • JSON 不能有多余逗号
    • 每个 Hook 数组内的对象结构要完整
    • 可以用在线 JSON 验证工具先过一遍
  4. 重启 Claude Code 配置修改后需要重启才能生效,关闭当前会话再开一个新对话


配好之后,你就再也不用担心"A 我让它去干什么了,现在什么情况"了。桌面通知弹一下,知道了,继续忙自己的。

让 Claude Code 帮你做(你只管验收)

不想自己改 JSON?把下面这条命令发给 Claude Code,它会帮你搞定所有配置,你只需要确认结果。

vbnet 复制代码
帮我把 win11toast 提醒加到 Claude Code 的 hooks 配置里。需要监听三个事件:
1. Stop:AI 停止时弹出"AI 已停止,请检查状态"
2. SessionEnd:会话结束时弹出"会话已结束"
3. PermissionRequest:权限请求时弹出"需要你批准某个操作"

配置文件在 C:\Users\singsky\.claude\settings.json,保留现有所有 hooks 不变,只新增这三个事件。

Claude Code 会:

  1. 读取你现有的 settings.json
  2. 追加 StopSessionEndPermissionRequest 三个 Hook 配置
  3. 保留你原有的所有 Hook 不动
  4. 把修改后的完整配置给你过目

你确认没问题,它再写入文件。整个过程你只需要发出一句话。

相关推荐
思绪无限2 小时前
YOLOv5至YOLOv12升级:行人车辆检测与计数识别系统的设计与实现(完整代码+界面+数据集项目)
人工智能·深度学习·yolo·目标检测·yolov12·yolo全家桶·行人车辆检测与计数
一江寒逸2 小时前
零基础从入门到精通 AI Agent 开发(全栈保姆级教程)附加篇:AI Agent 面试八股文全集
人工智能·面试·职场和发展
ai生成式引擎优化技术2 小时前
TS概率预测系统(TS-PFS)白皮书
人工智能
腾讯安全应急响应中心2 小时前
AI安全,由攻入防|腾讯广告AI专项众测正式启动
人工智能·安全
mys55183 小时前
杨建允:AI搜索时代文旅品牌的GEO优化营销策略
人工智能·ai搜索优化·geo优化·文旅geo·文旅品牌geo
hsg773 小时前
简述:torchgeo
人工智能·深度学习
ForDreamMusk3 小时前
PyTorch编程基础
人工智能·pytorch
喵喵侠w3 小时前
Rokid 智能眼镜开发实战:制作一款花草树木识别智能体
人工智能
小程故事多_803 小时前
从推理到智能体,大模型强化学习中信用分配机制的演进与突破
人工智能·prompt·aigc·ai编程