2025年6月20日 作者 ljcduo 0

📑车友投稿:如何为 Claude Code 实现 Windows 通知系统:让 AI 助手主动提醒你任务完成

前言

在使用 Claude Code 进行开发时,我经常会让它执行一些耗时较长的任务,比如重构代码、实现新功能或修复复杂的 bug。问题是,我经常需要切换到其他工作(其实是刷剧/打游戏),导致忘记检查 Claude Code 是否已经完成任务,或者过了很久才发现它已经完成任务了,导致浪费了一些AI产出的时间。

今天,我想分享一个实用的解决方案:为 Claude Code 添加 Windows 通知功能。当任务完成时,你会在 Windows 右下角收到一个气泡通知,再也不用担心错过 AI 助手的完成提醒了。

开发环境

  • Windows 11/10
  • WSL2 (Ubuntu)
  • Cursor (VS Code) with Remote WSL
  • Claude Code CLI

实现原理

WSL 虽然是 Linux 环境,但它可以直接调用 Windows 的可执行文件。我们利用这个特性,通过 PowerShell 调用 Windows Forms API 来显示通知。

实现步骤

1. 创建全局通知脚本

作用:创建一个 Python 通知脚本并安装到系统路径,这样在任何项目中都可以用一个简短的命令发送通知。Python 脚本也更易于维护和扩展。

创建 claude-notify.py 脚本:

#!/usr/bin/env python3
"""
Claude Code 通知脚本
用于在 Claude Code 完成任务后发送 Windows 通知
"""

import sys
import subprocess
import os
from datetime import datetime

def send_windows_notification(title="✅ Claude Code 任务完成", message="任务已完成,请查看结果"):
    """
    通过 PowerShell 发送 Windows 通知
    """
    powershell_script = f'''
    Add-Type -AssemblyName System.Windows.Forms
    $notify = New-Object System.Windows.Forms.NotifyIcon
    $notify.Icon = [System.Drawing.SystemIcons]::Information
    $notify.Visible = $true
    $notify.ShowBalloonTip(10000, '{title}', '{message}', 'Info')
    Start-Sleep -Seconds 3
    $notify.Dispose()
    '''

    try:
        subprocess.run(
            ['powershell.exe', '-Command', powershell_script],
            capture_output=True,
            text=True,
            check=False
        )
    except Exception as e:
        print(f"[{title}] {message}")
        print(f"通知发送失败: {e}")

def main():
    """
    主函数:解析参数并发送通知
    """
    # 获取命令行参数
    if len(sys.argv) > 2:
        title = sys.argv[1]
        message = sys.argv[2]
    elif len(sys.argv) > 1:
        title = sys.argv[1]
        message = "任务已完成,请查看结果"
    else:
        # 默认参数,可以包含项目名称
        project_name = os.path.basename(os.getcwd())
        title = "✅ Claude Code 任务完成"
        message = f"项目: {project_name}\n时间: {datetime.now().strftime('%H:%M:%S')}"

    # 发送通知
    send_windows_notification(title, message)

if __name__ == "__main__":
    main()

使用方法

# 默认通知(自动包含项目名称和时间,显示5秒)
claude-notify

# 自定义标题
claude-notify "构建完成"

# 自定义标题和消息
claude-notify "❌ 测试失败" "单元测试未通过,请检查代码"

# 自定义标题、消息和显示时长(秒,最大7秒)
claude-notify "🚀 部署成功" "生产环境部署完成" 7

# 注意:由于 Windows 系统限制,通知最多显示7秒
# 通知会保留在通知中心(Win+A),可以随时查看历史

安装到全局路径:

# 创建本地 bin 目录(如果不存在)
mkdir -p ~/.local/bin

# 复制脚本并添加执行权限
cp claude-notify.py ~/.local/bin/claude-notify
chmod +x ~/.local/bin/claude-notify

# 确保 PATH 包含 ~/.local/bin(如果还没有)
echo 'export PATH="$HOME/.local/bin:$PATH"' >> ~/.bashrc
source ~/.bashrc

2. 配置 Claude Code 自动通知

作用:通过在项目中创建 CLAUDE.md 文件,让 Claude Code 在完成任务后自动调用我们的通知脚本。

在项目根目录创建 CLAUDE.md 文件,添加自动通知规则:

* 每次完成任务后,使用以下命令发送Windows通知给我,标题包含项目名称,消息中简要说明完成了什么任务:

bash
claude-notify “✅ [项目名] 项目任务完成” “完成内容:[简要描述本次完成的任务]”

所有工作已经做完了,现在自己让Claude Code正常执行AI任务,他就会自动概括本次的任务结果并推送到Windows桌面给你。

扩展思路

如果你需要在其他场景接收通知,可以考虑:

  • Webhook 通知:通过企业微信、飞书、Slack 等工具的机器人 Webhook
  • Telegram 通知:通过 Bot API 发送到手机
  • 邮件通知:通过 SMTP 发送邮件提醒

使用体验

实际使用中,这个通知系统带来了以下好处:

  1. 专注力提升:不用频繁检查任务状态,可以专心做其他事情
  2. 效率提高:任务完成立即知晓,减少等待时间
  3. 错误快速响应:任务失败时立即收到通知,可以快速处理
  4. 进度可视化:通过通知了解任务执行时间,优化工作流程

故障排除

通知不显示?

  1. 检查 Windows 通知设置是否开启
  2. 测试 PowerShell 命令是否正常:
   powershell.exe -Command "Write-Host 'Hello from PowerShell'"
  1. 确认 Windows Forms 可用:
   powershell.exe -Command "
     Add-Type -AssemblyName System.Windows.Forms
     [System.Windows.Forms.MessageBox]::Show('测试')
   "

WSL 相关问题

  • 确保使用 WSL2(性能更好)
  • 检查 WSL 是否能访问 Windows 程序:which powershell.exe

总结

通过这个简单的通知系统,我们成功地让 Claude Code 变得更加”主动”。它不仅提高了开发效率,还让 AI 辅助编程的体验更加流畅。

这个方案的优点:

  • ✅ 实现简单,无需安装额外软件
  • ✅ 跨项目通用,每个项目配置 CLAUDE.md 即可
  • ✅ 可扩展性强,支持多种通知方式
  • ✅ 与 Cursor (VS Code) 完美集成

希望这个分享能帮助到同样使用 Claude Code 的开发者们。如果你有更好的实现方式或建议,欢迎交流讨论!

相关链接


本文基于实际项目经验编写,代码已在 Windows 11 + WSL2 Ubuntu 环境下测试通过。