修复单核心词查询正文覆盖死锁:max(2,...)对1词永远失败

根因:'端0(基岩版)'→q_mean={'基岩'}, body_hits=1, 阈值=max(2,min(1,...))=2
1<2 → 必然返回False → 回复被拒,入库残片后后续轮询不回复

修复:max(2,...)→max(1,...),单核心词时阈值=1即可通过
多核心词查询(q_count≥2):max(1,...)≥2不变,防御强度不下降
This commit is contained in:
youpaishidifu
2026-08-19 15:56:58 +08:00
parent fd147862c7
commit dd21327806
+4 -1
View File
@@ -447,7 +447,10 @@ class AutoReply:
q_count = len(q_mean)
body_hits = len(q_mean & body_tokens)
min_body_hits = min(q_count, (q_count * 3 + 4) // 5)
min_body_hits = max(2, min_body_hits)
# ⭐ 修复:单核心词查询(q_count=1)时阈值应为1,max(2,...)对单词是死锁
# 例:"端0(基岩版)"→ q_mean={'基岩'},body_hits=1 → 原阈值=max(2,1)=2 → 1<2 → False(误拒)
# "端0(Java)" → q_mean={'Java'} ,body_hits=1 → 原阈值=max(2,1)=2 → 1<2 → False(误拒)
min_body_hits = max(1, min_body_hits)
if body_hits < min_body_hits:
logger.debug(
f"正文覆盖不足跳过(防牛头不对马嘴): query={query[:40]!r} "