fix: 增强同轮择优机制,降低URL/链接格式消息的优先级

问题:
- 用户发送新消息后,OCR连续多次只捕获到旧截图
- 等到截到新图时,内容已是bot旧回复+用户消息的混合
- 同轮择优选中了这条污染消息(13.0分),导致bot抢跑回复旧内容

根因:
_score_message_quality()对URL/链接格式消息的评分不够低
- 真实用户消息通常是自然语言(含疑问词、较短)
- bot回复常包含URL、链接格式、英文平台名等

修复:
- 新增URL/链接格式惩罚:
  * https:// → -20分
  * 域名片段(.cn .net)→ -8分
  * Markdown链接 [text](url) → -10分
  * 特定平台名(github/gitee/gitcode等)→ -5分
- 新增中英混合惩罚:英文占比过高时 -5分
- 预期效果:URL碎片类消息分数降至负分,不再被选为候选

测试预期:
- 'git.ypshidifu.cn官方下载...' → 大幅降分
- '俺想下载那个登录插件' → 保持高分(含疑问词)
This commit is contained in:
youpaishidifu
2026-08-16 23:01:45 +08:00
parent 8b116ff824
commit 4acbea8440
+26
View File
@@ -5522,11 +5522,13 @@ class MessageMonitor:
- 含疑问词或问号(用户提问)
- 无前缀噪声(如"必选,"、"运营方"等UI标签)
- 含有效关键词(插件、下载、地址等)
- 自然语言格式(非URL/链接碎片)
污染历史消息通常:
- 较长(混合了多条消息或UI元素)
- 无前缀噪声
- 不含疑问词
- 含URL/链接碎片(bot回复的典型特征)
返回质量分(越高越可能是真实用户消息)。
"""
@@ -5567,6 +5569,30 @@ class MessageMonitor:
if text.count(',') > 3 or text.count(',') > 3:
score -= 5.0
# ⭐ 新增:URL/链接格式惩罚(2026-08-16 抢跑问题修复)
# 历史bot回复常包含URL或链接格式,用户新消息通常是自然语言
# 检测模式:
# 1. 包含http://或https:// → 直接丢弃(纯URL消息)
# 2. 包含多个.分隔的域名片段(如"git.ypshidifu.cn")→ 降低分数
# 3. 包含Markdown链接格式(如"[官方下载](url)")→ 降低分数
# 4. 包含多个空格分隔的英文单词(如"GitHub gitee gitcode")→ 降低分数
_URL_PATTERNS = [
(r'https?://', -20.0), # 完整URL
(r'\.[a-z]{2,4}(?:\.[a-z]{2,4}){1,2}', -8.0), # 域名片段(如.cn .net)
(r'\[[^\]]+\]\([^)]+\)', -10.0), # Markdown链接
(r'\b(?:github|gitee|gitcode|ypshidifu|bbsmc|pan\.)[a-z.]*\b', -5.0), # 特定平台名
]
for pattern, penalty in _URL_PATTERNS:
matches = re.findall(pattern, text, re.I)
if matches:
score += penalty * min(len(matches), 2) # 最多扣2倍
# ⭐ 新增:中文+大量英文混合惩罚
# 真实用户消息通常是纯中文或中英混写,但不会包含多个英文平台名
if cjk_count > 0 and ascii_count > cjk_count * 1.5:
# 英文占比过高,可能是bot回复的链接列表
score -= 5.0
return score
@staticmethod