fix(kb): 多关键词全覆盖防御 + 语义意图验证增强

1. auto_reply.py 多关键词覆盖防御:
   - 区分核心词与非核心词(排除疑问词、OCR碎片等)
   - 要求文档覆盖≥50%核心词(最低2个),防止单一关键词误选
   - 例:查询含核心词={'草原','近期','公告'},sdf1.md只含'草原'(1/3)→拒绝

2. auto_reply.py 语义意图验证增强:
   - php查询:heading需含'php'或'管理'或'后端'(放宽规则支持'php用户管理')
   - php密码查询:heading必须含'管理员'或'后端'(区分玩家端vs管理端)
   - 新增php后端查询规则:query含'后端'但heading不含时拒绝

3. gui.py 搜索范围扩展:
   - top_k从3增至5,确保正确结果不被截断

修复问题:
- '服务器近期的一些公告有哪些' → 返回index.md的'近期公告'
- 'PHP默认的那管理后台管理密码是多少' → 返回phpadmin.md的'ypshidifu2026'
- '那pHP后端的那管理员默认密码是多少' → 返回phpadmin.md(拒绝beibao.md)
This commit is contained in:
youpaishidifu
2026-08-13 21:24:32 +08:00
parent 2a5f16ae1f
commit a0ace5ec13
2 changed files with 70 additions and 31 deletions
+1 -1
View File
@@ -951,7 +951,7 @@ class MsgBotApp(ctk.CTk):
if cleaned_msg != msg:
logger.debug(f"[{platform}] KB清理后: cleaned={cleaned_msg!r}")
results = self.kb.search(cleaned_msg, top_k=3)
results = self.kb.search(cleaned_msg, top_k=5)
lines = [f"[{platform.upper()}] {msg}"]
if results: