fix(msgbot): 描述性碎片拦截——以"拥有/提供/支持"等动词开头+无主语+无问词→碎片
- 新增 _descriptive_verbs 检查(len<=10 短文本分支内,核心名词豁免之前) - 例:"拥有完善的领地系统"→描述性动词开头+无主语→碎片丢弃,不再触发错误 KB 回复 - "领地系统"、"登录配置"等无描述性动词前缀的合法短查询不受影响
This commit is contained in:
@@ -8067,6 +8067,13 @@ class MessageMonitor:
|
||||
_has_subject = any(s in text for s in ('我', '你', '他', '我们', '你们', '他们', '玩家', '用户', '管理员'))
|
||||
# 无疑问词 + 无动词 或 无疑问词 + 无主语 → 可能是残片
|
||||
if not _has_question_word and (not _has_verb or not _has_subject):
|
||||
# ⭐ 描述性碎片拦截(2026-08-29):
|
||||
# 以描述性动词开头(拥有/提供/支持/包含/具备等)+无主语+无问词→描述性碎片
|
||||
# 例:"拥有完善的领地系统"、"提供多种登录模式"——不是用户查询,是bot旧回复残片
|
||||
_descriptive_verbs = ('拥有', '提供', '支持', '包含', '具备', '包括', '具有', '采用', '实现', '支持', '内置', '配备')
|
||||
if text.startswith(_descriptive_verbs):
|
||||
logger.debug(f"[ocr] 过滤器2结果: 检测到描述性碎片(描述性动词开头+无主语+无问词),返回True: {text!r}")
|
||||
return True
|
||||
# ⭐ 核心名词放行:包含核心名词的短文本可能是用户查询词,不视为残片
|
||||
_core_nouns = {'公告', '更新', '通知', '说明', '规则', '版本', '下载', '安装', '登录', '配置', '设置', '操作', '模式', '列表', '详情', '信息', '内容', '介绍', '功能', '系统', '服务', '玩家', '用户', '管理员', '服务器', '客户端', '插件', '模块', '接口', 'API', 'BUG', '问题', '错误', '异常', '日志', '配置', '文件', '目录', '路径', '地址', '链接', '网址', '网站', '网页', '页面', '界面', '菜单', '按钮', '图标', '图片', '视频', '音频', '文档', '手册', '指南', '教程', '帮助', '支持', '反馈', '建议', '意见', '投诉', '举报', '奖励', '惩罚', '活动', '比赛', '排名', '积分', '等级', '权限', '角色', '职业', '技能', '装备', '道具', '货币', '交易', '市场', '商店', '背包', '仓库', '邮件', '聊天', '组队', '公会', '领地', '地图', '任务', '副本', 'BOSS', '怪物', '掉落', '经验', '属性', '状态', '效果', 'BUFF', 'DEBUFF', '冷却', '消耗', '需求', '条件', '限制'}
|
||||
if any(noun in text for noun in _core_nouns):
|
||||
|
||||
Reference in New Issue
Block a user