
🔔 Claude Code Task Notify
为 Windows 环境下的 Claude Code 打造的 ChatGPT 风格桌面通知浮层:
✅ 任务完成提醒 / ❓ 等待用户输入 / ⏳ 等待执行命令审批。提问与审批提醒卡片会在屏幕右下角持久常驻,绝不漏掉进度;一旦你在终端输入回答或按回车批准,弹窗会在瞬间毫秒级自动关闭! 纯系统原生 PowerShell 5.1 + WPF 编写,零第三方依赖,不抢占键盘焦点,不打断编码心流。
🔗 项目开源主页
- GitHub 仓库:yyyyolo7a79-sketch/claude-task-notify
- 最新 Release 下载:Releases (ZIP / 脚本)
- 许可证:MIT License
- 适用平台:Windows 10 / 11 · Claude Code v2.x · PowerShell 5.1 (系统内置)
💡 为什么做这个工具 (Why)
在使用 Claude Code 进行高强度编码时,我们经常让 Claude 编写测试、执行全工程重构或分析大批文件。在长达数十秒甚至数分钟的运行过程中,开发者往往会切到浏览器查文档、看网页或回复消息。
这时常常遇到两大痛点:
- 不知道什么时候跑完:需要频繁在终端与浏览器之间反复 Alt-Tab 确认,严重割裂注意力;
- 提问或审批卡死:Claude 突然调用
AskUserQuestion向你确认方案,或者申请运行一条 Bash 命令权限。终端进入无声等待,而你以为它还在思考,白白浪费大量等待时间。
Claude Code Task Notify 正是为解决这一痛点而生!
┌──────────────────────────────────────────────┐
│ ✅ Task complete my-blog │
│ All changes applied — 3 files touched, │
│ type check and tests pass cleanly. │
└──────────────────────────────────────────────┘
↑ 屏幕右下角 · 典雅圆角白卡 · DirectWrite 高清排版
普通完成 8 秒自动淡出 · 提问/等待授权持久常驻直至作答
🌟 核心特性一览
- 无感常驻触发:通过 Claude Code 官方底座级 Hooks 机制触发(配置于
~/.claude/settings.json),即便大模型不配合也 100% 稳定弹出; - 智能意图分类:
- 正常执行结束输出:弹出 ✅ Task complete(8 秒后柔和淡出);
- 检测到回答以问号结尾或请求信息:弹出 ❓ Needs your input;
- Claude 触发提问(
AskUserQuestion)或申请权限审批:弹出 ❓ Waiting for your answer / ⏳ Waiting for your approval,并提取问题摘要;
- 答复即时自动关闭 (Auto-Close):
- 当你在终端输入答案或按下回车批准工具后,通过轻量级
notify-close-check.cmd极速预检(未等待时仅 ≈30ms 提前退出开销,绝无 PowerShell 冷启动延迟); - 弹窗通过双通道握手文件毫秒级捕捉信号,并立即自动关闭退出,完全无需手动挪鼠标点叉!
- 当你在终端输入答案或按下回车批准工具后,通过轻量级
- 不抢占前台焦点:
- 采用 Windows 原生
ShowActivated=false与WS_EX_NOACTIVATE扩展样式,弹窗浮现瞬间绝不抢占当前打字窗口的键盘焦点;
- 采用 Windows 原生
- 内容精炼提炼:
- 自动剥离代码块、HTML 标签、网络实体和长 URL,仅截取核心首段 180 字符,一眼即知 Claude 的工作结论;
- 多项目并发展示:
- 卡片右上角显式显示当前工程名称(Project Name),多终端并行工作流清晰不混淆;
- 防抖与噪声抑制:
- 2 秒内同类重复事件自动聚类,剔除重复通知;严格过滤
AskUserQuestion本身产生的权限噪声。
- 2 秒内同类重复事件自动聚类,剔除重复通知;严格过滤
🔧 系统运作架构
Claude Code 事件流 (~/.claude/settings.json, 超时 5s)
│ stdin JSON 数据输入
├─ Stop (主回复生成完毕) ──────────────────┐
├─ PreToolUse(AskUserQuestion) (Claude 提问等待) ──┤
├─ PermissionRequest (请求用户批准命令) ───────────┤
└─ PostToolUse / PostToolUseFailure / PermissionDenied
→ notify-close-check.cmd 极速预检 (无弹窗时 30ms 闪电退出)
→ 写入 close 握手标志 → 退出 ───────────────────┘
▼
notify-complete.ps1 (主入口脚本,500ms 内非阻塞快速返回)
│ ① 过滤事件类型与内部白噪音
│ ② 本地文本清洗蒸馏 (过滤 code/HTML/URL,提取 180 字符)
│ ③ SHA-256 去重防抖 (2 秒窗口)
│ ④ 写入临时 payload 数据
│ → 后台独立进程拉起 show-popup.ps1
▼
show-popup.ps1 (独立后台进程,-STA 模式)
│ 读取 payload,登记 waiting 握手凭证
│ → 利用 WPF DirectWrite 高保真渲染浮窗卡片
▼
右下角卡片渲染:不抢焦点 · 圆角微阴影 · 点击或 ✕ 均可手动关闭
· Stop 完成事件:8 秒平滑渐隐
· 提问 / 审批等待事件:屏幕常驻,直至终端作答自动关闭 (或 30 分钟兜底超时)
🚀 极速安装指南
方式一:让 Claude Code 自动安装(推荐)
只需复制以下提示词,连同仓库链接发送给你的 Claude Code 终端,Claude 即可全自动完成安装并执行自检测试:
请将仓库
https://github.com/yyyyolo7a79-sketch/claude-task-notify安装到我的 Windows 全局 Claude Code 配置中:
- 将
scripts/notify-complete.ps1、scripts/show-popup.ps1和scripts/notify-close-check.cmd拷贝至~/.claude/scripts/目录;- 在
~/.claude/settings.json中配置对应的 hook 条目(包含 Stop、PreToolUse、PermissionRequest、PostToolUse 等);- 运行一次无阻塞测试,确认右下角能正常弹出测试卡片。
方式二:手动配置
- 从 Releases 下载 ZIP 并解压;
- 将
scripts目录下的 3 个文件复制到用户目录下的C:\Users\<你的用户名>\.claude\scripts\; - 打开
~/.claude/settings.json,在顶级配置项中加入对应的hooks声明; - 新开一个 Claude Code 会话,运行
/notify_AskUserQuestion_persistence true即可体验持久常驻与自动关闭!
