📋 为什么需要智能通知系统?
凌晨3点,你的 Agent 任务失败了——但你正在睡觉,早上8点才发现。
一个完善的智能通知系统就像24小时值班的管家——任务完成、出现异常、需要决策时,都能第一时间通知到你。无论是在飞书群、企业微信,还是通过邮件、短信,确保关键信息不遗漏。
💡 核心价值:
- 多渠道统一管理——一个配置,多端同步
- 智能分级告警——重要事情电话通知,一般事项群消息
- 消息模板化——告别重复编辑,直接复用
- 可观测性集成——与监控系统无缝对接
🏢 支持的通知渠道
OpenClaw 支持多种通知渠道,满足不同场景需求:
📱 飞书
群消息、卡片消息、机器人消息
💬 企业微信
应用消息、群机器人、消息推送
🔔 钉钉
工作通知、机器人消息、卡片
📧 邮件
SMTP 发送、支持 HTML 格式
💙 Slack
频道消息、Webhook 集成
📲 Telegram
Bot 消息、群组通知
⚙️ 基础配置
1. 飞书配置
飞书是目前国内最常用的企业协作平台,OpenClaw 提供完整的飞书消息支持:
# 在 OpenClaw 配置文件中设置飞书机器人
export FEISHU_WEBHOOK_URL="https://open.feishu.cn/open-apis/bot/v2/hook/xxx"
export FEISHU_APP_ID="cli_xxx"
export FEISHU_APP_SECRET="xxx"
飞书通知支持多种消息类型:
- 文本消息 - 简单文字推送
- 富文本消息 - 支持 @人、图片、链接
- 卡片消息 - 交互式消息,可点击按钮
- 图片消息 - 发送截图、图表
2. 企业微信配置
# 企业微信配置
export WECOM_CORP_ID="wwxxx"
export WECOM_CORP_SECRET="xxx"
export WECOM_AGENT_ID="1000001"
3. 钉钉配置
# 钉钉机器人配置
export DINGTALK_WEBHOOK="https://oapi.dingtalk.com/robot/send?access_token=xxx"
export DINGTALK_SECRET="SECxxx"
🎯 消息模板系统
使用消息模板可以确保通知内容的一致性,同时减少重复工作:
# 任务完成通知模板
TASK_COMPLETE_TEMPLATE = """
## ✅ 任务完成通知
**任务名称**: {task_name}
**完成时间**: {completed_at}
**执行时长**: {duration}
**执行结果**:
{result_summary}
**详细信息**: {detail_url}
"""
# 告警通知模板
ALERT_TEMPLATE = """
## 🚨 告警通知
**告警级别**: {level}
**告警类型**: {alert_type}
**触发时间**: {triggered_at}
**告警内容**:
{alert_message}
**影响范围**: {affected_scope}
**处理建议**: {suggestion}
"""
模板变量
OpenClaw 支持丰富的模板变量:
| 变量 | 说明 | 示例 |
|---|---|---|
| {task_name} | 任务名称 | SEO巡检任务 |
| {status} | 任务状态 | success/failed |
| {duration} | 执行时长 | 5m 32s |
| {error_message} | 错误信息 | Connection timeout |
| {timestamp} | 时间戳 | 2026-07-21 10:00:00 |
| {agent_name} | Agent名称 | miaoquai |
🚨 告警规则配置
合理的告警规则是避免"狼来了"效应的关键:
1. 告警级别
| 级别 | 说明 | 通知方式 | 示例 |
|---|---|---|---|
| P0 - 紧急 | 服务不可用 | 电话 + 短信 + 群消息 | 服务器宕机 |
| P1 - 高 | 功能受损 | 短信 + 群消息 | API 错误率 > 5% |
| P2 - 中 | 性能下降 | 群消息 | 响应延迟 > 2s |
| P3 - 低 | 轻微问题 | 群消息 | 日志警告 |
2. 告警规则配置示例
# alert_rules.yaml
rules:
- name: "任务失败告警"
condition: "task.status == 'failed'"
level: "P1"
channels: ["feishu", "wecom"]
template: "ALERT_TEMPLATE"
repeat_interval: 300 # 5分钟内不重复告警
- name: "任务超时告警"
condition: "task.duration > 3600" # 超过1小时
level: "P2"
channels: ["feishu"]
- name: "成本超支告警"
condition: "cost.daily > 100"
level: "P1"
channels: ["feishu", "email"]
escalation:
- after: 1800 # 30分钟后升级
level: "P0"
channels: ["phone"]
🔔 通知触发场景
1. 任务状态变化
适用场景: 定时任务完成、失败、超时等情况通知
# 任务完成时发送通知
openclaw notify \
--channel=feishu \
--template=TASK_COMPLETE \
--vars='{"task_name": "SEO巡检", "status": "success"}'
2. 异常检测触发
适用场景: 监控系统检测到异常,自动触发告警
# 错误率超过阈值时告警
if error_rate > 0.05:
openclaw notify \
--channel=feishu \
--level=P1 \
--message=f"错误率已达 {error_rate*100}%,请检查!"
3. 定时报告推送
适用场景: 每日/每周报告自动生成并推送到群
# 每日报告定时推送
cronjob:
schedule: "0 9 * * *"
command: |
generate_report > /tmp/report.html
openclaw notify \
--channel=feishu \
--template=DAILY_REPORT \
--attachment=/tmp/report.html
4. 审批/决策请求
适用场景: 需要人工决策时发送带有交互按钮的通知
# 发送带按钮的卡片消息
openclaw notify \
--channel=feishu \
--interactive=true \
--template=APPROVAL_REQUEST \
--buttons='[{"text": "批准", "action": "approve"}, {"text": "拒绝", "action": "reject"}]'
🔧 高级特性
1. 消息聚合
避免短时间内发送大量通知造成骚扰:
# 启用消息聚合
notification:
aggregation:
enabled: true
window: 300 # 5分钟内的同类消息聚合
max_count: 3 # 最多显示3条
2. 静默时段
在特定时间段内暂停非紧急通知:
# 设置静默时段
notification:
quiet_hours:
enabled: true
timezone: "Asia/Shanghai"
# 夜间22:00到次日8:00静默
start: "22:00"
end: "08:00"
# 紧急告警不受静默影响
exclude_levels: ["P0"]
3. 消息回退机制
主渠道失败时自动切换到备用渠道:
# 配置消息回退
notification:
fallback:
primary: "feishu"
secondary: "email"
tertiary: "sms"
retry_count: 3
📊 通知统计
通过统计通知数据,可以优化通知策略:
# 查看通知统计
openclaw notify stats \
--period=7d \
--channels=feishu,wecom
# 输出示例:
# 📊 最近7天通知统计
# - 飞书: 156 条 (成功 154, 失败 2)
# - 企业微信: 89 条 (成功 89, 失败 0)
# - 邮件: 23 条 (成功 23, 失败 0)
#
# 按类型分布:
# - 任务完成: 98 条
# - 告警: 45 条
# - 报告: 28 条
# - 审批: 7 条
⚠️ 最佳实践
💡 建议:
- 合理设置告警阈值,避免过度告警
- 重要通知使用多渠道叠加
- 利用静默时段避免打扰休息时间
- 定期 review 通知统计,优化策略
- 关键任务配置失败回调通知
⚠️ 注意:
- Webhook URL 需要妥善保管,避免泄露
- 敏感信息不要通过明文消息发送
- 生产环境建议启用消息加密
- 定期检查渠道可用性
🚀 快速开始
# 1. 安装通知插件
openclaw plugin install notification
# 2. 配置飞书机器人
openclaw config set notify.feishu.webhook "https://xxx"
# 3. 发送第一条通知
openclaw notify --channel=feishu --message="Hello from OpenClaw!"
# 4. 使用模板发送
openclaw notify --channel=feishu --template=TASK_COMPLETE \
--vars='{"task_name": "测试任务", "status": "success"}'