修复下载类查询牛头不对马嘴复发:文档无下载token时拒绝

问题:用户问在哪儿能下到那个登录插件,bot回复了protect文档的操作方式表格,
因为该文档heading含登录插件但body是操作方式,与下载无关。

修复:在_has_content_relevance方法中新增下载类查询额外防御——
当查询含下载意图词(下载/下到/哪下/在哪下/怎么下)时,
若文档全文(heading+title+body前800字)不含下载token,
直接拒绝该文档,防止牛头不对马嘴。

同时保留原有下载意图检查(heading含下载时放行),确保sdf1_login等下载文档正常匹配。

Task #1582
This commit is contained in:
youpaishidifu
2026-08-23 22:39:18 +08:00
parent e826fbe0f0
commit 434a9609bf
+6
View File
@@ -418,6 +418,12 @@ class AutoReply:
logger.debug(f"下载意图放行: query={query[:30]!r} heading={heading[:30]!r}") logger.debug(f"下载意图放行: query={query[:30]!r} heading={heading[:30]!r}")
return True return True
# 下载类查询额外防御:文档必须含"下载"相关token,否则牛头不对马嘴
if any(w in query for w in ('下载', '下到', '哪下', '在哪下', '怎么下')):
if '下载' not in doc_text:
logger.debug(f"下载查询文档无下载token拒绝: query={query[:40]!r} doc_heading={heading[:30]!r}")
return False
# ⭐ 核心词零命中拒绝:核心词存在但全部未命中文档 → 无条件拒绝 # ⭐ 核心词零命中拒绝:核心词存在但全部未命中文档 → 无条件拒绝
# 防止 has_ht=True(仅因通用词如"下载"命中heading)但真正核心词(如"登录")未命中时误放行 # 防止 has_ht=True(仅因通用词如"下载"命中heading)但真正核心词(如"登录")未命中时误放行
if core_kw and core_hits == 0: if core_kw and core_hits == 0: