# v6.3.15 AI实时回复状态机彻底修复

## 本次现场证据
界面显示：

安全基线 2/3；
待处理新互动 2；
通知类型4识别新互动；
通知类型6识别新互动。

这说明：
- 腾讯通知读取正常；
- 新互动识别正常；
- 去重正常；
- 但AI发送流程没有开始。

## 根因1：安全基线提前return
旧run_ai_reply_rule逻辑：

if initialized == 0:
    建立4/5/6基线
    if warmup != 3/3:
        return

因此：
- type4评论已识别；
- type6 @已识别；
- 只要type5还没首次轮询；
- 本轮就直接结束；
- DeepSeek与do-reply完全不会执行。

这正是截图中的“安全基线2/3；待处理新互动2”。

## 修复：基线不再阻塞实时消息
现在：
- 明确早于规则创建时间的消息 → baseline；
- 新互动 → 立即继续进入回复循环；
- warmup 1/3、2/3、3/3均不会阻止实时回复；
- 3/3只负责把规则initialized正式置为1。

界面会显示：
安全基线2/3（仅过滤历史，不阻塞新互动）

而不是：
待处理新互动2，然后直接结束。

## 根因2：冷却/上限跳过被永久标记
旧代码遇到：
- cooldown
- max_per_poll

会写：
- skipped_cooldown
- skipped_limit

下一轮读取时，只要status != failed就直接continue。

所以一条消息如果第一次恰好处于冷却时间，
它以后永远不会回复。

## 修复：pending状态
现在改为：
- pending_cooldown
- pending_limit

这些状态始终属于可重试状态。

而且：
- pending不会增加attempt_count；
- pending不会消耗5次失败重试额度；
- 冷却结束后自动发送；
- 下一轮有名额后自动发送。

旧的：
- skipped_cooldown
- skipped_limit

本版首次启动会自动迁移成pending状态。

## 失败重试
真正的：
- DeepSeek失败
- QQ do-reply失败

仍使用status=failed并累计attempt_count。

本版首次启动会把历史failed的attempt_count清零，
让最新的“通知原生comment_id/reply_id → do-reply”路径重新尝试。

## 安全
上一版通知原生楼层回复全部保留：
- 首选通知#ref
- 然后通知自身comment_id/reply_id
- 再do-reply
- get-feed-comments只是最后兜底
- AI自动发送器没有do-comment

不会再次新增一级评论。

## 热更新
VERSION继续v6.3.15。
v6.3.12热更新核心文件保持字节级不变。
