步骤4阶段1 D2最后确认 最终版

源文件:D:\Hermes\reports\步骤4阶段1_D2最后确认_最终版.md · 日期 2026-09-14 · 6KB

D2启动前最后确认(最终版)

日期: 2026-09-14
状态: 等待用户最终确认


任务1:测试告警分辨方式 ✅

方案A:时间戳记录法(推荐)

# 测试前记录当前时间
test_start_time = datetime.now().isoformat()
print(f"[TEST] 测试开始时间: {test_start_time}")

# 测试后核对告警时间戳
# SELECT * FROM alerts WHERE created_at > '{test_start_time}'

优点:
- 不修改任何代码
- 测试前后数据可对比
- 清理简单(按时间范围DELETE)

缺点:
- 需要手动核对
- 如果测试失败可能错过告警


方案B:临时修改TG目标(需改代码)

# alert_utils.py L52-56:
TG_CHAT_ID = (
    os.environ.get("TELEGRAM_HOME_CHANNEL")
    or _hermes_env.get("TELEGRAM_HOME_CHANNEL", "")
    or os.environ.get("TG_CHAT_ID", "8673372605")  # ← 默认值
)

# 临时测试chat_id(需改代码或设环境变量)
os.environ["TG_CHAT_ID"] = "测试chat_id"

优点:
- 告警发送到测试chat,不影响主chat
- 清晰区分测试/生产告警

缺点:
- 需修改代码或设环境变量
- 可能遗漏清理


推荐方案:时间戳记录法

执行步骤:
  1. 测试前打印时间戳: [TEST] 开始时间: 2026-09-15T15:30:00
  2. 执行测试操作
  3. 检查alerts表: SELECT * FROM alerts WHERE created_at > '2026-09-15T15:30:00'
  4. 核对告警内容、时间戳
  5. 截图保存测试告警
  6. 清理测试数据

任务2:影子cron集成方式最终确认 ✅

B3方式确认

流程:
  1. 备份原cron状态 → jobs.json.bak_test_20260915
  2. 临时禁用原cron → hermes cron pause <任务id>
  3. 注册影子cron → hermes cron create ...
  4. 手动触发影子cron → hermes cron run <影子id>
  5. 验证告警功能 → 检查alerts表
  6. 恢复原cron → hermes cron resume <任务id>
  7. 删除影子cron → hermes cron remove <影子id>
  8. 清理测试数据 → DELETE FROM ...

测试对象选择

推荐: ops_system_health (P1任务)
  - cron_id: 1f99cf7364a9
  - 调度: 30 2 * * *(凌晨2:30,非高峰)
  - 当前状态: 无task_runs记录(安全)
  - 风险: 低(P1级别,连续2次才告警)

备选: risk_sentiment_radar (P1任务)
  - cron_id: b770750250c8
  - 调度: 40 8 * * 1-5(08:40,与盘前任务冲突)
  - 不推荐

任务3:15:30-16:30盘后任务确认 ⚠️

该时段运行任务(15个)

时间 任务 频率 风险
15:30 月线主进盘后快照 周一 ⚠️
15:36 盘后快照填充 工作日 ⚠️
15:40 月线主进盘后追踪 工作日 ⚠️
15:45 β组双轨积累 工作日 ⚠️
15:45 两融缓存盘后刷新 工作日 ⚠️
16:00 重点监控池每日PIAS评估 每日 ⚠️ agent-mode
16:00 均普智能持仓跟踪 工作日 ⚠️ P0任务
16:05 盘后收盘简报 工作日 ⚠️
16:15 F2日线分层扫描 工作日 ⚠️
16:30 FactorMiner因子挖掘 工作日 ⚠️

冲突分析

⚠️ 15:30-16:30也是繁忙时段!
  - 15个任务在此时段运行
  - 16:00有2个agent-mode任务(PIAS评估+持仓跟踪)
  - 资源竞争较严重

✅ 安全测试窗口:
  - 15:30前:准备阶段
  - 16:30后:测试后验证
  - 建议:16:30-17:00进行受控测试

调整后时间表

时段 任务 内容
16:30-17:00 受控测试 4项测试
20:00-20:30 影子cron集成 B3临时替换
21:00-21:30 回归验证 清理+确认

任务4:回滚方案轻量化 ⚠️

hermes cron reload 检查

❌ reload命令不存在
  hermes cron子命令: list,create,add,edit,pause,resume,run,remove,rm,delete,status,runs,history,incidents,notepad,doctor,tick

✅ 替代方案:
  方案1: hermes cron pause + hermes cron resume(推荐)
  方案2: cp jobs.json.bak jobs.json + hermes gateway restart

回滚命令(轻量化)

# 方案1: 暂停/恢复(推荐,无需重启)
hermes cron pause <影子cron_id>      # 暂停影子
hermes cron resume <原cron_id>        # 恢复原任务

# 方案2: 备份恢复(如需)
cp C:/Users/Admin/AppData/Local/hermes/cron/jobs.json.bak_20260913 \
   C:/Users/Admin/AppData/Local/hermes/cron/jobs.json
hermes gateway restart                # 重新加载配置

# 方案3: DB清理
python -c "
import sqlite3
conn = sqlite3.connect('D:/Hermes/data/state/alert_state.db')
conn.execute(\"DELETE FROM task_runs WHERE start_time >= '2026-09-15T16:00:00'\")
conn.execute(\"DELETE FROM alerts WHERE created_at >= '2026-09-15T16:00:00'\")
conn.execute(\"DELETE FROM silence_state WHERE task_id = 'ops_system_health'\")
conn.commit()
conn.close()
print('DB清理完成')
"

D2最终时间表(调整后)

明天(9月15日)

时间 任务 内容 状态
16:30-17:00 受控测试 4项测试(告警路径+超时路径+Dead-Man+通道健康) ⏳ 待执行
20:00-20:30 影子cron集成 B3临时替换(ops_system_health) ⏳ 待执行
21:00-21:30 回归验证 恢复原cron+清理数据+确认无异常 ⏳ 待执行

最终确认清单

□ D1总结已输出并确认(90次运行,100%成功)
□ D2方案已输出并确认
□ 测试告警分辨方式已确认(时间戳记录法)
□ 清理清单已确认
□ 盘后任务冲突已分析(15个任务)
□ 回滚方案已准备(pause/resume替代gateway restart)
□ 备份文件已确认存在(jobs.json.bak_20260913)
□ D2时间表已调整(16:30-17:00/20:00-20:30/21:00-21:30)

⚠️ 关键调整:
  - 受控测试从08:30改到16:30(避开盘前高峰)
  - 回滚用pause/resume替代gateway restart(轻量级)
  - 测试告警用时间戳分辨(不改代码)

⏳ 等待用户确认...

请确认调整后方案,回复"进入D2"启动明天执行。