logo
0
0
WeChat Login
feat(notify): 支持通过 CLAUDE_NOTIFY_DISABLED 环境变量关闭通知

Claude Code 通知插件 (claude-notify)

Claude Code 通知插件,支持在以下事件发生时发送通知到 Bark 等服务:

  • Notification: Claude Code 发送通知时
  • PermissionRequest: 需要用户确认权限时
  • Stop: Claude 完成响应时

功能特点

  • ✅ 支持三种 Hook 事件通知
  • ✅ 通知标题包含项目名称
  • ✅ 支持 Plan 模式标识(标题显示 [项目名 · Plan]
  • 仅通过环境变量配置,安全可靠
  • 可扩展架构,未来可添加钉钉、企业微信等通知渠道

安装

方式一:本地安装

/plugin install <path-to-plugin>/claude-notify

方式二:通过 Marketplace 安装

/plugin marketplace add https://cnb.cool/nowfun/claude-code-flourish.git

/plugin install claude-notify

配置

环境变量

在启动 Claude Code 前设置以下环境变量:

环境变量必填说明默认值
CLAUDE_NOTIFY_DISABLED设为 true 可完全关闭通知false
CLAUDE_NOTIFY_TYPE通知类型:barkbark
BARK_BASE_URLBark 服务基础 URLhttps://api.day.app
BARK_DEVICE_KEYBark 设备密钥-
BARK_AUTH_HEADERAuthorization 头-

日志配置

环境变量必填说明默认值
CLAUDE_NOTIFY_LOG_ENABLED是否启用日志功能。设为 false 可关闭日志true

日志文件位置: /tmp/claude-notify.log(macOS)/ 系统临时目录(其他系统)

日志轮转策略:

  • 单文件最大 10MB
  • 保留 3 个历史文件(claude-notify.log.0, .1, .2
  • 自动轮转,无需手动干预

日志级别:

  • ERROR: 通知发送失败、配置错误、脚本异常
  • WARN: 网络超时、部分失败、配置警告
  • INFO: 脚本启动、配置加载成功

示例:

# 关闭日志
export CLAUDE_NOTIFY_LOG_ENABLED=false

# 启用日志(默认)
export CLAUDE_NOTIFY_LOG_ENABLED=true

示例配置

# 在 ~/.zshrc 或 ~/.bashrc 中添加
export CLAUDE_NOTIFY_TYPE=bark
export BARK_DEVICE_KEY=your_device_key_here
export BARK_AUTH_HEADER="Basic your_base64_encoded_credentials"  # 可选

获取 Bark 设备密钥

  1. 在 iOS 设备上安装 Bark App
  2. 打开 Bark,获取推送链接中的设备密钥部分
  3. 将设备密钥设置到 BARK_DEVICE_KEY 环境变量

通知内容

1. Notification 事件

标题: [项目名] 通知 [Plan]  (如果在 Plan 模式)
内容: {message}
类型: {notification_type}

2. PermissionRequest 事件

标题: [项目名] 请确认 [Plan]
内容: 工具: Bash
      命令: npm test

3. Stop 事件

标题: [项目名] Finished [Plan]
内容: {last_assistant_message 的前 200 字符}

目录结构

plugins/claude-notify/
├── .claude-plugin/
│   └── plugin.json           # 插件元数据
├── hooks/
│   └── hooks.json            # Hook 事件配置
├── scripts/
│   ├── handler.js            # 主处理脚本
│   └── lib/
│       ├── config.js         # 配置管理
│       ├── utils.js          # 工具函数
│       └── notifiers/        # 通知器模块
│           ├── base.js       # 基础通知器类
│           ├── bark.js       # Bark 通知器
│           └── index.js      # 通知器工厂
└── README.md

扩展开发

添加新的通知服务

如需添加新的通知服务(如钉钉、企业微信),请按以下步骤:

  1. scripts/lib/notifiers/ 目录创建新的通知器类(如 dingtalk.js
  2. 继承 BaseNotifier 类并实现 send()validateConfig() 方法
  3. scripts/lib/notifiers/index.js 中添加新的 case 分支
  4. scripts/lib/config.js 中添加对应的配置读取逻辑
  5. 更新环境变量文档

示例:添加钉钉通知器

// dingtalk.js
const { BaseNotifier } = require('./base.js');

class DingTalkNotifier extends BaseNotifier {
    async send(title, body) {
        // 实现钉钉机器人通知逻辑
    }

    validateConfig() {
        return !!this.config.webhook;
    }
}

module.exports = { DingTalkNotifier };

许可证

MIT License

作者

iGang