D2执行前最后修正(最终确认版)
日期: 2026-09-14
状态: 等待用户最终确认
关键发现:Dead-Man测试机制 ✅
alert_channel_health.py的行为
# 从代码分析:
# 1. 每15分钟运行一次(cron: */15 * * * *)
# 2. 检查5个任务的心跳状态(position_688306等)
# 3. 写入自己的心跳到channel_health表
# 4. 检查channel_health表的last_check_time
# 5. 如果超过30分钟无心跳 → 触发Dead-Man告警
关键代码:
- _write_heartbeat("alert_channel_health", "ok") # 写心跳
- check_dead_man() # 检测自己是否"死机"
- 写入alerts表
Dead-Man测试正确流程
17:25 准备测试(打印时间戳)
17:26 暂停alert_channel_health cron
hermes cron pause 7e8ae2aeca81
17:27 验证暂停
hermes cron list | grep 7e8ae2aeca81
17:28 等待30分钟...
...
17:58 手动触发alert_channel_health运行
hermes cron run 7e8ae2aeca81
18:00 验证Dead-Man告警
SELECT * FROM alerts WHERE alert_type='dead_man'
18:02 恢复cron
hermes cron resume 7e8ae2aeca81 --run-now
18:05 清理测试数据
DELETE FROM alerts WHERE alert_type='dead_man' AND created_at >= '...'
18:10 打印总结
任务1:修正Dead-Man测试步骤 ✅
修正后的步骤
| 时间 | 步骤 | 命令/操作 |
|---|---|---|
| 17:25 | 准备 | 打印时间戳 [TEST] Dead-Man测试开始: 2026-09-15T17:25:00 |
| 17:26 | 备份 | hermes cron list > D:/Hermes/reports/D2_deadman_backup.txt |
| 17:27 | 暂停cron | hermes cron pause 7e8ae2aeca81 |
| 17:28 | 验证 | hermes cron list | grep 7e8ae2aeca81 → paused |
| 17:29-17:57 | 等待30分钟 | - |
| 17:58 | 手动触发 | hermes cron run 7e8ae2aeca81 |
| 18:00 | 验证告警 | SELECT * FROM alerts WHERE alert_type='dead_man' |
| 18:02 | 恢复cron | hermes cron resume 7e8ae2aeca81 --run-now |
| 18:05 | 清理 | DELETE测试数据 |
| 18:10 | 完成 | 打印总结 |
任务2:修正触发时间 ✅
时间线
17:27 暂停cron
17:27-17:57 等待30分钟(心跳超时阈值)
17:58 手动触发运行(强制检测)
18:00 验证告警已写入
18:02 恢复cron
关键: 手动触发是为了加速测试,不需要等18:00整点。
任务3:21:00任务冲突确认 ✅
21:00运行的任务
| 任务 | cron_id | 脚本 | 冲突风险 |
|---|---|---|---|
| 共振桥接器每日流水线 | 725902f0 | resonance_pipeline.py | ⚠️ 需确认是否读写alert_state.db |
| 选股台账静默检查 | 6b235078 | hb_alpha_ledger_watch.py | ⚠️ 需确认是否读写alert_state.db |
| 📊 每周周报 | weekly_s | hb_weekly_summary.py | ✅ 无冲突 |
| 月线主进月度回测 | 9dce3919 | monthly_mainin_backtest.py | ✅ 无冲突 |
建议
方案A: 推迟到21:45后测试(避开21:00任务)
方案B: 先确认共振桥接器和选股台账的行为
推荐方案A(安全优先)
任务4:D2最终时间表 ✅
| 时段 | 任务 | 内容 |
|---|---|---|
| 17:25-18:10 | Dead-Man测试 | 暂停→等待→触发→验证→恢复 |
| 21:45-22:30 | 受控测试前3项 | 告警路径、超时路径、通道健康 |
| 22:30-23:00 | 影子cron集成 | B3临时替换 |
| 23:00-23:30 | 回归验证 | 清理+确认 |
最终确认清单
□ D1总结已确认(90次运行,100%成功)
□ Dead-Man测试步骤已修正(暂停alert_channel_health而非ops_system_health)
□ Dead-Man触发时间已修正(手动触发,不等整点)
□ 21:00任务冲突已分析(建议推迟到21:45后)
□ 备份文件已确认(jobs.json.bak_20260913)
⏳ 等待用户确认"进入D2"...
请确认以上方案,回复"进入D2"启动明天执行。