Claude Code桌面消息通知配置全攻略

作者:

文章目录
  • Claude Code 在实际使用中经常出现这些“你离开就错过”的节点: 需要你确认权限(读写文件、执行命令、联网检索等) 需要你回答一个关键问题才能继续(AskUserQuestion / elicitation) 任务已经完成,但你不知道它何时跑完 解决思路很简单:利用 Claude Code 的 hooks 机制,在特定事件发生时自动执行一条命令,去调用一个 Python 脚本发送桌面通知。
  • 配置完成后,你会在以下时机收到系统通知(Windows 通知中心): 需要授权时:弹出“需要授权…” 任务结束时:弹出“任务完成…” 认证成功/空闲等待时:弹出相应提示
  • 下面是一个“够用且干净”的桌面通知脚本:从命令行接收消息内容,可选 –title 自定义标题。 import sys import argparse from plyer import notification def send_notify(title: str, message: str) -> None: notification.notify( title=title, message=message, timeout=3, # 通知停留时间(秒),可按需调整 ) def main() -> None: parser = argparse.ArgumentParser(description=”Send desktop notification.”) parser.add_argument(“message”, nargs=”+”, help=”Notification message”) parser.add_argument(“–title”, default=”Claude Code 通知”, help=”Notification title”) args = parser.parse_args() message = ” “.join(args.message) send_notify(args.title, message) if __name__ == “__main__”: main()
  • Claude Code 的 settings.json 里,我们主要用两部分: env:环境变量(我用的是GML4.7) hooks:事件触发器(本文核心)
  • 你现有配置的思路非常实用,基本分三类: PermissionRequest:需要授权时提醒(最重要) Notification:状态类提醒(认证成功、空闲等待、需要你补充信息) Stop:任务结束提醒 hooks 的执行方式是 type: "command",本质就是“跑一条命令”,我们把命令写成调用 Python 脚本即可。
  • 把下面模板按需替换路径即可(重点替换两处:你的 python.exe 路径与 send_notification.py 路径)。 注意:JSON 字符串中 Windows 路径需要写双反斜杠 \。 { “env”: { “ANTHROPIC_AUTH_TOKEN”: “***”, “ANTHROPIC_BASE_URL”: “https://open.bigmodel.cn/api/anthropic”, “API_TIMEOUT_MS”: “3000000”, “CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC”: “1” }, “hooks”: { “PermissionRequest”: { “0”: { “matcher”: “Task|TaskOutput|Bash|Glob|Grep|ExitPlanMode|Read|Edit|Write|NotebookEdit|WebFetch|TodoWrite|WebSearch|KillShell|AskUserQuestion|Skill|EnterPlanMode”, “hooks”: { “0”: { “type”: “command”, “command”: “D:\\MyCodes\\ClaudeScript\\.venv\\Scripts\\python.exe D:\\MyCodes\\ClaudeScript\\send_notification.py 需要授权…” } } } }, “Notification”: { “0”: { “matcher”: “permission_prompt|idle_prompt|auth_success|elicitation_dialog”, “hooks”: { “0”: { “type”: “command”, “command”: “D:\\MyCodes\\ClaudeScript\\.venv\\Scripts\\python.exe D:\\MyCodes\\ClaudeScript\\send_notification.py Claude Code 有新状态…” } } } }, “Stop”: { “0”: { “matcher”: “”, “hooks”: { “0”: { “type”: “command”, “command”: “D:\\MyCodes\\ClaudeScript\\.venv\\Scripts\\python.exe D:\\MyCodes\\ClaudeScript\\send_notification.py 任务完成…” } } } } } }
  • 配置好桌面通知后,你就不需要一直盯着 Claude Code 的输出: 该你授权时叫你回来 该你回答时提醒你 跑完了告诉你结果已就绪 对日常写代码、跑脚本、生成文档、长任务迭代非常省心。 以上就是Claude Code桌面消息通知配置全攻略的详细内容,更多关于Claude Code桌面消息通知配置的资料请关注风君子博客其它相关文章!
  • 目录
    • 1. 前言:为什么要给 Claude Code 加“消息提醒”?
    • 2. 效果展示
    • 3. 环境准备:Python + plyer
      • 3.1 准备 Python(建议虚拟环境)
      • 3.2 安装桌面通知库 plyer
    • 4. 通知脚本详解:send_notification.py(完整代码 + 说明)
      • 4.1 先手动验证脚本是否能弹通知
    • 5. Claude Code 配置详解:settings.json(结构 + 关键点)
      • 6. hooks 触发点怎么选?(三类足够覆盖大多数场景)
        • 7. 可直接复用的配置模板
          • 7.1 我建议你这样改得更“可读”
        • 8. 常见问题 FAQ(踩坑集中区)
          • Q1:不弹通知,但脚本手动运行是好的?
          • Q2:弹了通知,但内容不对/中文乱码?
          • Q3:PermissionRequest 为什么匹配这么多?
          • Q4:通知太快消失?
        • 9. 结语:这套配置带来的真实价值

          适用场景:Claude Code 在后台跑任务时,你不想盯着终端;当它需要授权需要你回答问题、或任务结束时,让系统直接弹出桌面通知提醒你回来处理即可。
          本文仅包含桌面通知,不含钉钉/企业微信等第三方通知。

          Claude Code桌面消息通知配置全攻略

          Claude Code 在实际使用中经常出现这些“你离开就错过”的节点:

          • 需要你确认权限(读写文件、执行命令、联网检索等)
          • 需要你回答一个关键问题才能继续(AskUserQuestion / elicitation)
          • 任务已经完成,但你不知道它何时跑完

          解决思路很简单:利用 Claude Code 的 hooks 机制,在特定事件发生时自动执行一条命令,去调用一个 Python 脚本发送桌面通知

          配置完成后,你会在以下时机收到系统通知(Windows 通知中心):

          • 需要授权时:弹出“需要授权…”
          • 任务结束时:弹出“任务完成…”
          • 认证成功/空闲等待时:弹出相应提示

          确保你能在本机正常运行 Python。建议为脚本建一个独立目录并创建 venv:

          python -m venv .venv 

          pip install plyer 

          下面是一个“够用且干净”的桌面通知脚本:从命令行接收消息内容,可选 --title 自定义标题。

          import sys
          import argparse
          from plyer import notification
          def send_notify(title: str, message: str) -> None:
              notification.notify(
                  title=title,
                  message=message,
                  timeout=3,  # 通知停留时间(秒),可按需调整
              )
          def main() -> None:
              parser = argparse.ArgumentParser(description="Send desktop notification.")
              parser.add_argument("message", nargs="+", help="Notification message")
              parser.add_argument("--title", default="Claude Code 通知", help="Notification title")
              args = parser.parse_args()
              message = " ".join(args.message)
              send_notify(args.title, message)
          if __name__ == "__main__":
              main()

          在命令行执行:

          python send_notification.py 任务完成啦 --title Claude 

          能正常弹出桌面通知后,再进入下一步(hooks 配置)。

          Claude Code 的 settings.json 里,我们主要用两部分:

          • env:环境变量(我用的是GML4.7)
          • hooks:事件触发器(本文核心)

          你现有配置的思路非常实用,基本分三类:

          1. PermissionRequest:需要授权时提醒(最重要)
          2. Notification:状态类提醒(认证成功、空闲等待、需要你补充信息)
          3. Stop:任务结束提醒

          hooks 的执行方式是 type: "command",本质就是“跑一条命令”,我们把命令写成调用 Python 脚本即可。

          把下面模板按需替换路径即可(重点替换两处:你的 python.exe 路径与 send_notification.py 路径)。

          注意:JSON 字符串中 Windows 路径需要写双反斜杠 \

          {
            "env": {
              "ANTHROPIC_AUTH_TOKEN": "***",
              "ANTHROPIC_BASE_URL": "https://open.bigmodel.cn/api/anthropic",
              "API_TIMEOUT_MS": "3000000",
              "CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC": "1"
            },
            "hooks": {
              "PermissionRequest": {
                "0": {
                  "matcher": "Task|TaskOutput|Bash|Glob|Grep|ExitPlanMode|Read|Edit|Write|NotebookEdit|WebFetch|TodoWrite|WebSearch|KillShell|AskUserQuestion|Skill|EnterPlanMode",
                  "hooks": {
                    "0": {
                      "type": "command",
                      "command": "D:\\MyCodes\\ClaudeScript\\.venv\\Scripts\\python.exe D:\\MyCodes\\ClaudeScript\\send_notification.py 需要授权..."
                    }
                  }
                }
              },
              "Notification": {
                "0": {
                  "matcher": "permission_prompt|idle_prompt|auth_success|elicitation_dialog",
                  "hooks": {
                    "0": {
                      "type": "command",
                      "command": "D:\\MyCodes\\ClaudeScript\\.venv\\Scripts\\python.exe D:\\MyCodes\\ClaudeScript\\send_notification.py Claude Code 有新状态..."
                    }
                  }
                }
              },
              "Stop": {
                "0": {
                  "matcher": "",
                  "hooks": {
                    "0": {
                      "type": "command",
                      "command": "D:\\MyCodes\\ClaudeScript\\.venv\\Scripts\\python.exe D:\\MyCodes\\ClaudeScript\\send_notification.py 任务完成..."
                    }
                  }
                }
              }
            }
          }

          你可以把三条命令的文案改得更直观,例如:

          • PermissionRequest:需要授权:请回到 Claude Code 确认
          • Notification:Claude Code 等待你的输入/选择
          • Stop:Claude Code 已完成本次任务

          • 检查 settings.json 中命令路径是否正确(尤其是 python.exe 与脚本路径)
          • 确保 JSON 中反斜杠写成 \
          • 先把 command 简化成最短可运行版本排查路径问题

          • Windows 通知一般不会乱码;如果异常,检查终端编码与脚本文件编码(建议 UTF-8)
          • 尽量避免把特殊符号塞进命令行参数(必要时用简短文本)

          • matcher 是你希望提醒的“高频需要确认”的操作集合(读写文件、执行命令、联网检索等)
          • 不想太吵:从 matcher 里删掉不关心的项即可(例如删掉 Glob|Grep 等)

          • timeout3 改成 5 或更长

          配置好桌面通知后,你就不需要一直盯着 Claude Code 的输出:

          • 该你授权时叫你回来
          • 该你回答时提醒你
          • 跑完了告诉你结果已就绪

          对日常写代码、跑脚本、生成文档、长任务迭代非常省心。

          以上就是Claude Code桌面消息通知配置全攻略的详细内容,更多关于Claude Code桌面消息通知配置的资料请关注风君子博客其它相关文章!

          站内搜索