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:
+26
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user