步骤4阶段1:配置前确认报告
时间: 2026-09-13 10:05
状态: ✅ 确认完成,等待用户确认配置
任务1:wrapper脚本行为确认 ✅
wrapper_alert_channel_health.py 代码
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
import sys
from pathlib import Path
sys.path.insert(0, str(Path(r"D:/Hermes/scripts").resolve()))
import alert_channel_health
if __name__ == "__main__":
alert_count = alert_channel_health.run_monitoring()
sys.exit(0 if alert_count == 0 else 1)
行为分析
| 项目 |
结果 |
| 是否有额外逻辑 |
NO — 仅导入并调用run_monitoring() |
| stdout输出内容 |
包含完整监控状态(任务列表、状态、告警数) |
| exit_code传递 |
正确 — alert_count=0→0, >0→1 |
| TG推送来源 |
脚本内部send_tg()(带[OBSERVE]前缀) |
典型stdout输出:
======================================================================
alert_channel_health.py 轮询监控
时间: 2026-09-13T10:01:17.181415
======================================================================
【jobs.json配置】
路径: C:\Users\Admin\AppData\Local\hermes\cron\jobs.json
任务数: 103
注册任务: eval_pias_daily, ops_backup_daily, ...
【position_688306】(P0)
状态: waiting
连续失败: 0
ℹ️ 不告警(waiting状态)
======================================================================
轮询完成: 发现0个告警
======================================================================
任务2:--deliver参数必要性判定 ✅
判定逻辑
| 条件 |
结果 |
| wrapper stdout是否为空? |
NO — 包含完整状态 |
| wrapper stdout是否包含告警内容? |
YES — "发现X个告警" |
| 脚本是否已有TG推送? |
YES — send_tg()已实现 |
结论
┌──────────────────────────────────────────────────────────────────┐
│ 若配置 --deliver telegram:8673372605 → stdout会被发送两次: │
│ 1. 脚本内部send_tg()发送(带[OBSERVE]前缀) │
│ 2. cron delivery发送stdout原始内容 │
│ │
│ ⚠️ 重复通知风险:用户会收到两条相同告警 │
└──────────────────────────────────────────────────────────────────┘
推荐配置
| 参数 |
推荐值 |
理由 |
--no-agent |
✅ |
纯脚本模式,无需LLM |
--deliver |
❌ 不配置 |
避免与send_tg()重复 |
--failure-deliver |
✅ telegram:8673372605 |
仅失败时通过cron兜底 |
任务3:阶段1配置计划
| 项目 |
配置值 |
| 脚本路径 |
C:/Users/Admin/AppData/Local/hermes/scripts/wrapper_alert_channel_health.py |
| 调度表达式 |
*/15 * * * * |
| 模式 |
--no-agent |
| 交付 |
不配置(依赖脚本内部send_tg) |
| 失败交付 |
--failure-deliver telegram:8673372605 |
| 名称 |
[OBSERVE] 通道健康监控 |
预计行为:
- 每15分钟执行一次
- 成功时无stdout输出(静默)
- 失败时输出状态+触发TG告警
- Hermes cron记录exit_code和last_status
任务4:配置后验证计划
| 验证项 |
预期结果 |
| 心跳文件写入 |
channel_health.json 每15分钟更新 |
| TG通知 |
仅在发现告警时发送 |
| 重复通知 |
无(--deliver未配置) |
| 日志记录 |
D:/Hermes/logs/alert_channel_health.log |
回滚方案
# 禁用cron
hermes cron disable alert_channel_health_v1
# 恢复jobs.json
cp jobs.json.bak_20260913 jobs.json
# 删除wrapper脚本
rm "C:/Users/Admin/AppData/Local/hermes/scripts/wrapper_alert_channel_health.py"
请确认后再执行 hermes cron create 命令。