2026-04-29 变更记录
摘要
1. HKO 预测鲁棒性增强: 新增记忆下限(Memory Floor)机制——当 HKO API 暂时失效时,从上次预测结果中继承 lower_bound,防止模型"失忆"导致预测回退。注意:仅限于同日内存记忆,隔日自动清零(prev_date == today 检查)。
2. 前端盘口深度优化: 盘口深度面板刷新改为保留 DOM 高度避免闪烁;CLOB API 调用加入 10 秒超时控制,防止慢请求阻塞 UI。
3. 前端渲染策略改进: 持仓获取从前端主渲染链路(Promise.all)移至"发射后不管"模式,不再阻塞卡片初始渲染,首屏速度提升。
4. 文档更新: POLYMARKET.md 更新最后维护日期为 2026-04-28,新增 docs/daily/ 变更日志目录引用。LLM 配置备注更新,标注 API 别名信息。
5. 昨日日志修订: 修正 2026-04-28.md 摘要格式,补充数据刷新链路表和验证方法;转义 pipe 符号避免 Markdown 表格渲染异常。
6. [09:00] Memory Floor 隔日 Bug 修复: 历史 lower_bound=29.4°C 跨日污染导致概率分布 97.8% 错误聚集在 29°C。修复:memory floor 增加同日检查(prev_date == today),隔日自动丢弃。
7. [09:12] 轨迹推算 cap: progress_prediction 在早晨小时放大噪声(1.7°C / 0.15 = 11.3°C 总升温 → 33°C 预测)。修复:多源上限裁剪 min(forecast_max+3, inland_max+1, current_max+5)。
8. [09:12] 相似日空匹配处理: close_matches 为空时不再 fallback 到 best_match,避免无关日期污染预测。
9. [09:19] 快速升温速率上限: 添加 MAX_REALISTIC_RATE=4.0°C/h(物理极限)和 MIN_WINDOW_HOURS=0.1h(6 分钟最小窗口),防止传感器噪声放大到 7.2°C/h。
10. [09:19] 快速升温预测 cap: 与轨迹推算相同的多源上限裁剪。
11. [09:31] 双进程打架: hko_live_predict.py 不再调用 hko_predict.py,仅 hko_data_fetcher.py(cron)为唯一预测写入者。
12. [09:36] cron 频率提升: hko_data_fetcher.py 从每 5 分钟改为 8:00-15:59 每分钟运行。
13. [09:50] 关键数据缺失 guard: hko_temp=None 时跳过预测(不覆盖文件),防止 HKO API 瞬时故障导致 2°C 骤降。
14. [09:52] 预测平滑: 两次连续预测间 settlement 变化超过 ±1°C 时钳制,防止单点数据故障造成剧烈跳变。
15. [09:57] 快速升温权重降低 + 滞回: override 权重从 60-90% 降至 30-50%,加滞回机制防止 ON/OFF 来回跳。
16. [10:10] 快速升温前置条件: 增加日照指数 ≥0.5 + 基础温度 ≥25°C + 10am 前禁能 + 阈值提升到 3.6°C/h,今天的多云天彻底抑制误触发。
17. [10:33] P0-1: 打破 forecast_max 信号垄断: 9 个信号(weather_text, rain_cooling, warning, humidity_potential, sunshine, wind, cloud_cover, forecast_radiation, rain_forecast, cape, forecast_humidity, warming_accel)的锚点从 forecast_max 改为 _clim_base(过去7天平均);所有负向信号增加 lower_bound 钳制。消除 ~35% 的虚假预报一致性。
18. [10:33] P0-2: bias_correction 默认归零: 原默认 +0.7°C 导致系统性高估,改为 0°C,仅在 ≥3 天历史误差数据可用时激活 ±1.5°C 范围内的自适应修正。
19. [10:33] P0-3: 快速升温从 override 改常规信号: 移除 skip_ensemble=True,快速升温不再绕过全部规则信号。改为 8-15% 权重的常规信号,通过加权集成与其他信号融合。消除二进制 ON/OFF 跳变。
变更文件
POLYMARKET.md | 6 +++++-
config/llm_config.json | 6 +++---
docs/daily/2026-04-28.md | 26 ++++++++++++++++-------
scripts/hko_predict.py | 14 +++++++++++++ (+ ~80 lines 后续修复)
scripts/hko_live_predict.py | 6 +++++- (禁用 run_prediction)
src/web/templates/mm_weather.html | 43 ++++++++++++++++++++-------------------
详细修复
Memory Floor 隔日 Bug (09:00)
症状: lower_bound=29.4°C 从昨天遗留,导致 predicted_max 被钳制到 29.4°C,概率分布 97.8% 集中在 29°C——即使实际观测仅 26.8°C。
根因: hko_predict.py memory floor 无条件 max(current, prev),不检查日期。
修复: 增加 prev_date == today 检查;仅同日内使用记忆下限,隔日丢弃。
双进程写入冲突 (09:31)
症状: 每 5 分钟预测在 26-31°C 间剧烈跳跃。
根因: hko_data_fetcher.py(cron 每 5 分钟)和 hko_live_predict.py(launchd 每 60 秒)同时调用 hko_predict.py,互相覆盖文件。
修复: 禁用 hko_live_predict.py 的 run_prediction() 调用,仅 cron 为唯一写入者。
快速升温信号失控 (09:19-09:57)
症状: rapid_warming 权重 90% 压倒所有其他信号,ON/OFF 来回跳导致 3-4°C 震荡。
根因: (1) 速率检测无上限(7.2°C/h 物理不可能)(2) 权重 60-90% 过高 (3) 无滞回机制。
修复: (1) 速率 cap 4.0°C/h + 最小窗口 6min (2) 权重降为 30-50% (3) 前次激活且速率≥1.0°C/h 时保持 25% 最低权重。
数据缺失鲁棒性 (09:50)
症状: hko_temp=None 时预测从 settle=29 骤降到 settle=27,1 分钟后恢复。
修复: hko_temp is None → 直接 return(不写文件);连续预测 settlement 变化 > 1°C → 钳制到 ±1°C。