Commit Graph
524 Commits
Author SHA1 Message Date
youpaishidifu 256935d70c fix(kb): 添加语义意图验证,防止OCR错字导致错误匹配
问题:查询'那录插件的pHp后端那管理员默认密码是多少?'(OCR将'登'识别为'录'),
beibao.md的'使用方法-管理员'(score=79)压过phpadmin.md的'php管理员后端'(score=64)。

修复:增加语义意图验证规则:
1. 查询含'php'+'后端/管理'时,heading必须含'php'或'管理'
2. 查询含'管理员密码'时,heading必须含'密码/管理/php'

效果:php管理密码查询现在正确返回phpadmin.md的'## php管理员后端'
2026-08-13 16:03:01 +08:00
youpaishidifu 8d648f37fb fix(kb): 搜索阶段过滤查询停用词,防止通用名词导致TF-IDF虚高
问题:查询"服务器的公告"时,"服务器"的IDF=3.2虚高,
player.md的"运营方权利"段落含"服务器"多次→keyword_score=12.8,
压过index.md的"近期公告"(keyword_score=3.2)。

修复:在search()中使用AutoReply._STOPWORDS过滤查询token,
只保留"公告"等核心查询词参与评分。

效果:"服务器的公告"现在正确匹配到index.md的"## 🔈近期公告"。
2026-08-13 15:24:46 +08:00
youpaishidifu 93c50ecef3 fix(ocr): 预分割阶段先剥离bot旧回复再检测噪声
问题:OCR混合文本(用户提问+bot旧回复)被 _is_noise_text 误判为噪声丢弃。
例:'运营方有权...@游戏专用服务器近期有哪些公告...' → 含'运营方有权'触发协议噪声检测→整段丢弃。

修复:在 _pre_split_noise_filter 中先调用 _strip_bot_reply_fragments 剥离bot旧回复,
再对剥离后的文本做 _is_noise_text 检测。
剥离后为空→丢弃;剥离后仍有噪声→丢弃;否则保留。
2026-08-13 14:26:33 +08:00
youpaishidifu d0e3950d6c fix(kb): 子串回退要求至少一个meaningful_token命中,防止通用词泛匹配
问题:添加'服务器'停用词后,player.md的heading/body仍含'服务器'三字,
子串回退检查到'服务器的'(4字子串)命中文档→错误通过相关性检查。

修复:子串回退增加前置条件——必须至少有一个meaningful_token命中文档。
'服务器的'命中但'近期'/'公告'均未命中→拒绝。
'近期公告'命中且含meaningful_token'近期'/'公告'→通过。

效果:查询'服务器的近期公告有哪些?'现在正确匹配到index.md的'## 🔈近期公告'。
2026-08-13 13:56:52 +08:00
youpaishidifu 3e7ecf79a0 fix(kb): 将通用名词加入停用词列表,防止牛头不对马嘴误匹配
问题:查询'服务器的近期公告有哪些?'被匹配到player.md的'运营方权利'段落。
原因:'服务器'出现在太多文档中,导致TF-IDF分数虚高,且相关性检查认为有heading命中。

修复:将'服务器','玩家','游戏','世界','地图'等通用名词加入_STOPWORDS,
使相关性检查忽略这些词,只关注'公告','近期'等核心查询词。

结果:查询现在会正确匹配到index.md的'## 🔈近期公告'section。
2026-08-13 13:53:37 +08:00
youpaishidifu 5cdfef5daa fix(duplicate): 修复竞态条件导致的同一条消息被处理两次
问题:两条自动回复在同一时刻(11:59:22)触发,匹配度不同(118.71和14.19),
说明是竞态条件导致同一用户消息被两个线程同时处理。

根因:DB查重在无锁情况下运行,两个线程可同时通过DB查重检查,
然后都加入_processing_messages集合,导致同一条消息被处理两次。

修复:将DB查重和hash锁定合并到同一个锁内:
1. 先计算msg_hash
2. 获取锁后,先检查是否已在_processing_messages中
3. 再执行DB查重
4. 最后加入_processing_messages

这样确保同一消息的多次调用只有一个能通过所有检查。
2026-08-13 12:06:50 +08:00
youpaishidifu 43fcb87238 fix(ocr): 修复过滤器1中未定义变量stripped导致新鲜时间戳消息被误丢
问题:_ocr_text_has_fresh_timestamp在发现新鲜时间戳后调用record_user_message
时使用了未定义的stripped变量,触发NameError,被except捕获后继续执行
最终返回False,导致消息被丢弃。

修复:在函数开头提前定义stripped = text.strip()
2026-08-12 21:38:15 +08:00
youpaishidifu d286a7cab0 删除 easyocr_log.txt 2026-08-12 21:22:51 +08:00
youpaishidifu d661b7c208 fix(repeat): 修复重启后已处理消息被重复处理
问题:有新鲜时间戳(≤300s)的用户消息在过滤器1放行时,未调用
record_user_message()记录到DB。重启后:
- _seen_messages被清空
- DB只有bot回复记录,无用户消息记录
- is_user_message_replied()返回False(骨架匹配也失败)
→ 同一用户消息被当作新消息重新处理

修复:在"发现新鲜时间戳{ts}(≤300s),放行"时同步记录用户消息到DB

注意:无时间戳消息已在原代码中记录(record_user_message)
本次仅补充有时间戳消息的记录
2026-08-12 18:20:16 +08:00
youpaishidifu 7720172167 fix(kb): 修复牛头不对马嘴——动作查询正文无共同词时直接拒绝
问题:领地系统有哪些权限级别? 误匹配 sdf1_login(feature list 含领地系统)
而正确答案 protect(权限级别表格)因 TF-IDF 分数较低被跳过。

修复:
1. 动作/配置类查询(怎么/如何/使用/操作/安装…)扩展为:
   - 正文不含非动作关键词 → 直接拒绝(无论 heading 是否命中)
   - 排除 action_kw 参与 body 覆盖统计,避免 verb '使用' 误命中
2. 新增正文覆盖不足防御:
   - has_ht=False + has_body=True 时,要求 body 覆盖 ≥60% 查询词(最低2词)
   - 防止散点命中(如仅命中'领地''系统'两个词)通过

覆盖测试:10/10 通过
- BUG_FIX: 权限级别 vs sdf1_login → False ✅
- BUG_FIX: 权限级别 vs protect → True ✅
- Action: 操作模式 vs sdf1_login → False ✅
- Action: 操作模式 vs protect → True ✅
- Normal queries still work ✅
2026-08-12 17:50:08 +08:00
youpaishidifu d043da57e3 fix(ocr): 修复多时间戳场景下用户提问被误丢 (#1531 #1532)
1. stage splitting 时间戳规整:第二段分隔符由 \2(同分隔符) 放宽为 [.;:],
   使 15;27.05 这类 EasyOCR 混合分隔读法被正确识别为 15:27:05,
   修复 _inherited_ts 不更新导致下方消息继承陈旧时间戳被'尾部较老'误杀。
2. 过滤器层调整顺序:先剥 bot 旧回复片段,再剥 md 尾巴。OCR 把
   '用户新消息+bot旧回复'拼行时,md 尾巴剥离会在 bot 回复的 '::|::'
   残片处切断、误删用户提问,导致 filter4 整体丢弃。
3. _is_qq_ui_element 规则6:日志措辞修正(跳过->豁免/放行),并新增
   含@+疑问词直接放行的纵深防御,避免用户提问被 UI 规则误杀。
2026-08-12 16:48:26 +08:00
youpaishidifu 9d44b8b1d1 修复过滤器4误判用户名@提及为回复残片:公共子串为用户名时豁免 2026-08-12 14:57:22 +08:00
youpaishidifu b74fd5deb0 修复OCR拉丁混淆(php↔4p)导致去重失效引发的重复回复:新增中文骨架匹配兜底 2026-08-12 14:42:01 +08:00
youpaishidifu c0025a6f12 修复OCR重复回复+KB后台密码匹配+QQ UI过滤'有人@我' 2026-08-12 12:39:44 +08:00
youpaishidifu 091cac6781 修复KB搜索牛头不对马嘴:动作查询要求标题和正文都含核心词 2026-08-12 12:00:21 +08:00
youpaishidifu 1738daffec 修复短句碎片和模糊重复跳过的误报:允许包含括号的短消息,问句不视为模糊重复 2026-08-12 11:45:50 +08:00
youpaishidifu 7e3b3141b4 修复 Task #1516:移除 stage 级 bot 菜单过滤器,避免误杀用户消息 2026-08-12 09:45:10 +08:00
youpaishidifu 9080a4db0c fix: OCR捕获bot自身回复菜单触发重复查库(Task #1515)
_is_noise_text(stage级)+逐行过滤新增bot回复菜单模式检测:
- 版本标签:(稳定版)(最新开发版)(官方版)等
- checkbox标记:[√][⚠][✗]
- md链接格式:[text](url)
防止OCR把屏幕上的bot回复菜单重新识别为新消息触发KB搜索。
2026-08-11 22:07:15 +08:00
youpaishidifu 92568c249f fix: OCR病句乱码检测——数字混杂中文间(如游0由)触发_is_noise_text拦截
Task #1514: 在_is_noise_text中新增规则,检测CJK+单个数字+CJK模式
(如'游0由去哪下载登陆插件啊'),排除合法组合(序号/数量/版本号等)。
2026-08-11 17:02:46 +08:00
youpaishidifu 0a7b330532 fix: 自动回复清理Markdown格式,防止返回MD格式内容
新增_clean_markdown函数,清理答案中的Markdown格式(标题、链接、列表、加粗等),
返回纯文本。修复KB搜索返回Markdown格式内容(如下载地址链接)的问题。
同步dist副本。
2026-08-11 16:27:52 +08:00
youpaishidifu 95d1514324 fix: 增强过滤器拦截纯@username消息触发查库回复
新增规则6:匹配中文前缀+@+用户名+空格+用户名的纯@提及消息,
排除含疑问词的消息(如请问、怎么等)。长度限制放宽至50字符。
修复单独@username消息(如'有人@拜 youpaishidifu')无实质内容
触发知识库搜索回复的问题。同步dist副本。
2026-08-11 15:23:35 +08:00
youpaishidifu 41e5ee83c8 恢复_is_markdown_document的@staticmethod装饰器,修复OCR处理链崩溃 2026-08-11 14:52:56 +08:00
youpaishidifu 80ebe8e642 新增 _strip_markdown_tail: md 尾巴切掉保留用户提问, md 大头整段丢弃; stage/逐行/入库前 4 处接入 2026-08-11 14:20:51 +08:00
youpaishidifu 1752c055e0 修复 _is_markdown_document 中 #\s*# 规则误用 re.search 导致 QQ 标签触发 md 文档丢弃 2026-08-11 13:17:14 +08:00
youpaishidifu 290daf2d9e 修复回复片段过滤器双阈值误杀:用户消息带昵称时被当bot旧回复跳过
- 11:14:39日志:'youpaishidifu关于我们,[潜水] BXZYAE'(用户youpaishidifu消息'关于我们'+群状态侧栏UI拼成一行)被'回复内容片段'丢弃,1 raw 0 filtered
- 根因:_process_ocr_output逐行过滤处的回复片段检测用size>=6无条件匹配,而stage级filter4已用'大部分才算'(lm>=15或lm>=8且>=60%)——历史回复含'youpaishidifu'(@提及旧回复)时与用户消息共享13字符公共子串(占比仅45%),filter4正确放行后被宽松阈值抓回
- 修复1:3648行逐行检测阈值对齐filter4标准(大部分才算)
- 修复2:问句豁免——短问句与bot旧回复共享长短语时(如'登录插件下载地址是啥啊'vs下载地址回复共享8字占80%)60%标准仍会误杀;line含疑问词且非任何replied的完全子串→视为用户提问放行。真回声(line整段≈bot回复)仍拦
- filter4同步加问句豁免,两处标准统一
- 验证7/7:本次bug放行、短问句变体放行、真回声整段/带@/回复前缀整段读出均拦
2026-08-11 11:33:27 +08:00
youpaishidifu 19da7e5fa5 放宽OCR时间戳提取:混合分隔符+独立6位裸数字,带合法性鉴权
- 混合分隔符(10;20.48):OCR把冒号读成不同符号,原正则要求同分隔符漏提最新时间戳,导致整批消息被'无新鲜时间戳'丢弃(10:21:54日志中10;14;21被提取但10;20.48丢失→454s超窗→连队列日志都没有)
- 独立6位裸数字(102048)也当HHMMSS时间戳:OCR无法保证格式但能保证读出数字,前后顾挡数字/字母/中文/下划线/分隔符/%,防版本号、日期、URL、小数串取段
- 鉴权:只收合法HH/MM/SS(hh<=23, mm<=59, ss<=59),235959上限;016060/240000/520131等非法直接扔——_is_timestamp_old对非法返回False会被误判'新鲜'整批放行
- filter1(_ocr_text_has_fresh_timestamp)与_line_has_fresh_ts两处同步放宽
- 防回归:abc0.50;57(URL残片带前缀)/版本3.2.1/3.141592/0.50;57带URL上下文仍正确拒绝
2026-08-11 11:04:08 +08:00
youpaishidifu 4173f28009 修复QQ UI过滤器误杀用户消息:')昵称 内容'带空格格式被当UI跳过
- _is_qq_ui_element规则4原正则^\)[\w\u4e00-\u9fff]{2,}\S有回溯bug:\S回溯吃掉username末尾字符,导致')youpaishidifu 关于我们'(用户youpaishidifu发的真实消息'关于我们',OCR把@/冒号误读为))整行被误判UI丢弃
- 规则4改为分步判断:)username后剩余为空或首字符非空白(粘连UI)→跳过;剩余首字符是空白→疑似用户消息放行
- 放行后剥离')昵称 '前缀(OCR误读的)会挡在_strip_qq_nickname裸昵称剥离前)
- 剥离的短文本('关于我们'4字)记入_ui_prefix_stripped,在短句碎片(≤8字无问词)检查处豁免——规则4放行贯穿到底,避免白修
- 验证:')C418minecraft'仍跳过(真UI),')youpaishidifu 关于我们'→'关于我们'到达消息流,'有人@拜'(UI提示)仍正确丢弃
2026-08-11 10:07:05 +08:00
youpaishidifu b4b3da2633 修复OCR过滤器误杀:进程名检测撞上'服务器'子串
- 服务器近期公告有哪些?被误判为Windows进程名丢弃('服务'子串命中词表)
- 加负向前瞻(?!中文):命中词后紧跟中文字符视为普通文本,不丢弃
- 窗口标题带ASCII后缀(记事本.txt/文件资源管理器 - 此电脑)仍正常命中
- 命中日志升级为WARNING并爆出具体命中词和全文,不再装哑巴
2026-08-10 23:48:49 +08:00
youpaishidifu dc40196ce9 修复知识库搜索垃圾回复:登录插件下载查询返回指令碎片
- 列表项切分保护从'全部短'放宽为'≥70%短',防止sdf1_login指令列表被切成单行碎片
- 新增match_heading字段:合并的短列表项文本参与heading匹配,恢复'注册账号'等查询的命中强度
- 下载意图查询(下载/下到/哪下/怎么下)跳过has_action重排与guide合并,修复'登录插件怎么下载'返回安装说明
- guide合并步骤统计只认###级子标题,防止##章节编号误判为教程步骤
- 下载加权/优先逻辑排除皮肤类heading,防止skin.md'下载皮肤文件'误放大
- gui.py新增DB查重,防止同一消息重复回复
2026-08-10 22:26:13 +08:00
youpaishidifu 9ab2da404f 修复bot多段回复与表格全文回调:强化相关性+表格只取上下文
- Fix A: auto_reply._get_answer 含表格正文不再返回整段section,改为
  提取表格+紧邻上文(最多2行),丢弃表格后无关图文,截断到800字符
- Fix A: 清理答案中的HTML <br> 标签,避免原形显示
- Fix B: 强化 _has_content_relevance,要求查询与文档共享有区分度核心词
  (去停用词),动作类查询额外要求正文命中,防牛头不对马嘴
- Fix B: gui._search_and_log 从 top_k 结果中选取首个通过相关性校验的文档
  发送,不再永远取 results[0],保证一条消息只回复一段精准内容
2026-08-10 17:59:18 +08:00
youpaishidifu 18347a9f7d 修复OCR新旧消息同屏时新鲜消息被旧继承时间戳误杀(Task #1510)
三层修复:
1. 表情包碎片过滤器不再误杀纯时间戳行(15;35;38等双分号时间戳)
   - 修复前:EasyOCR时间戳含两个分号被当碎片丢弃,新鲜时间戳丢失
   - 修复后:纯时间戳行(\d{1,2}[:;.]\d{1,2}...)直接放行
2. _SENT_END补ASCII问号(?),问句行不再与下一行合并
   - 修复前:'游戏专用PHP有哪两种登录模式?'以半角?结尾被合并
   - 修复后:问句行独立,多条用户消息不会被,黏成一行
3. stage splitting新增_stage_fresh_hint前向peek
   - QQ时间戳渲染在消息下方,消息行继承的是上一行(可能陈旧)时间戳
   - 本行或下一行含新鲜时间戳(≤300s)时,继承时间戳较老不丢弃,交过滤器+DB查重
   - 新增_line_has_fresh_ts辅助方法
2026-08-10 16:13:56 +08:00
youpaishidifu efdbec381b fix: QQ昵称剥离将正常消息吞空——污染昵称+@贪婪匹配+前导垃圾吞问号
Task #1508: 消息'@游戏专用PHP有哪两种登录模式?'被_strip_qq_nickname剥离成空串,
空消息被当作消息进expanded查库。

三层根因:
1. 自动入库逻辑把'@游戏专用PHP有哪两种登录模式'整段(昵称+正文贪婪匹配)写进
   config.json qq_nicknames, 污染昵称后续先命中, 正确正文被当昵称剥掉
2. _leading_junk前导垃圾字符类含!!??, 剥离残留的'?'被吞掉→消息变空
3. 调用点无空消息守卫, 空串照样expanded.append

修复:
1. 自动入库前校验: 匹配后紧贴正文(rest非分隔符开头)或长度>12的不入库
2. _leading_junk不再吞句末标点!!??, 只清空格/逗号/句号/冒号/分号
3. _strip_qq_nickname剥离后为空回退原文(防御兜底)
4. 两处调用点加if msg守卫, 空串不进查库/回复
2026-08-10 14:40:29 +08:00
youpaishidifu f298944cf6 修复URL残片(0.50;57)被误转时间戳0:50:57导致真实消息被过滤
QQ群聊转发消息的链接残片被EasyOCR读成0.50;57,旧宽松正则
(\d{1,2})[.;](\d{2})(?:[.;](\d{2}))? 将其转为假时间戳0:50:57,
被过滤1与stage继承判为凌晨旧消息(>300s),连带丢弃相邻的真实新
消息(如'登录插件。在哪儿可以下载? @游戏专用',实际时间12:13:54)。

修复: 时间戳转换正则增加双重保护:
1. 同分隔符要求 (?:\2(\d{2})) 反向引用,混合分隔符不转换
2. 前后URL字符边界 (?<![;.0-9A-Za-z%]) 与 (?![;.0-9A-Za-z%]),
   防止嵌在URL/文件名中的数字段被转换
两处应用: stage splitting(3164)与过滤器1(4669)
2026-08-10 13:09:06 +08:00
youpaishidifu daa575931c fix: _log_queue在OCR管理器之前初始化
线程Thread-1启动时_log_queue尚未创建导致AttributeError
2026-08-10 11:20:10 +08:00
youpaishidifu df42eb361b 修复OCR引擎GPU/CPU选择逻辑:复用monitor.py内存检查
- 新增_check_memory_for_gpu():检查CUDA可用性+物理内存+页面文件+提交量
- 可用<2GB/page>95%/commit>95% → CPU兜底
- GPU初始化失败自动降级CPU重试
- get_status()新增gpu_mode字段
2026-08-10 11:10:53 +08:00
youpaishidifu 90d6fb6ed4 重构OCR引擎管理器:双引擎并发+1分钟超时释放
1. 新增OCREngineManager类:
   - 预初始化EasyOCR(GPU=False) + Windows OCR两套引擎
   - 双引擎并发识别,取得分最高者结果
   - 1分钟超时自动释放内存(消息监控运行中不释放)
   - 支持监控激活时重置计时器

2. 修复截屏API:
   - GetSystemMetrics改用ctypes.windll.user32,兼容性更好

3. GUI集成:
   - 启动时后台预初始化OCR引擎
   - 监控开关时通知OCR管理器激活/停止状态
   - 移除旧_win_ocr方法(已由管理器统一处理)
2026-08-10 10:59:40 +08:00
youpaishidifu 16c6986bca 新增截图OCR识别昵称功能
- GUI新增「从截图识别」按钮
- 截屏后用EasyOCR识别文字(GPU=False)
- 提取QQ昵称模式:[头衔]用户名、@用户名、行首用户名
- 自动去重并入库config.json的qq_nicknames
- Windows OCR作为后备方案
2026-08-10 10:34:12 +08:00
youpaishidifu d8734021bb 强化QQ昵称剥离+群聊消息拆分+KB搜索去噪+GUI昵称管理
1. 群聊多消息拆分:_strip_qq_nickname新增中间段分割逻辑
   - 找到最后一个[头衔]用户名或裸昵称分隔符,截取最新消息
   - 解决群聊多条消息打包导致关键词被压住的问题

2. KB搜索去噪:gui.py新增_clean_query_for_kb
   - 移除用户名/头衔/@提及/时间戳等噪音
   - _search_and_log调用前自动清理查询文本

3. GUI昵称管理:
   - 昵称列表展示+手动输入添加
   - 删除选中昵称功能
   - @提及新用户自动入库(monitor.py)
2026-08-10 10:21:03 +08:00
youpaishidifu a11741fa69 fix: 忽略OCR末尾不完整括号噪声,避免误判为括号不匹配 2026-08-10 00:56:18 +08:00
youpaishidifu 88d0db1aec 修复重复回复查重逻辑:添加5分钟时间窗口过滤;修复表情包误判markdown内容(调整检测顺序) 2026-08-10 00:39:02 +08:00
youpaishidifu 8de03180ee fix: 表格内容动态截断长度,多退少补
表格内容不再固定截断到1000字符,而是动态计算实际长度:
- 表格长度≤4000字符:不截断,保留完整表格
- 表格长度>4000字符:截断到4000字符(QQ单条约4500字符限制)
- 普通文本保持300字符截断

解决长表格回复截断问题,同时避免base64等长字符超出限制
2026-08-09 22:26:02 +08:00
youpaishidifu 438ba08365 fix: 修复历史消息二次处理和回复截断问题
1. 历史消息二次处理 (Task #1490):
   - 启动时从消息历史数据库加载最近50条bot回复到_replied_texts
   - 降低查库过滤器重合率阈值0.9→0.7
   - 防止重启后旧回复被OCR重新识别处理

2. 回复截断 (Task #1491):
   - 表格内容截断长度300→1000字符
   - 普通文本保持300字符
   - 避免长表格回复被截断
2026-08-09 22:20:27 +08:00
youpaishidifu 59d0bb8a87 fix: knowledge_base.py 核心名词匹配使用未定义变量 full_text → full_text_check
- NameError: name 'full_text' is not defined at line 581
- 修复: 改为 full_text_check (heading_clean + body)
2026-08-09 21:16:00 +08:00
youpaishidifu a3cc61bd7d feat: 添加调试日志追踪KB匹配和OCR连续性问题
- gui.py: _search_and_log() 添加KB搜索输入/结果/相关性检查详细日志
- monitor.py: _has_user_colors() 添加像素检测初始化/统计/绿色检测日志
- monitor.py: QQ OCR路径添加截图信息日志
- 目的: 诊断牛头不对马嘴和连续消息OCR中断问题
2026-08-09 21:11:52 +08:00
youpaishidifu 417568f6fa 优化QQ像素检测:降低白色像素阈值(245→230)、增加采样密度(15→30)、放宽邻域要求;添加昵称剥离调试日志 2026-08-09 18:38:45 +08:00
youpaishidifu 1ea458dd51 fix: 放宽QQ像素检测阈值,修复群聊纯文本消息无法被捕捉的问题 2026-08-09 17:53:02 +08:00
youpaishidifu 3473913299 修复[监控]:昵称剥离主循环重构,彻底解决@提及残留
- 问题:草原探险服务器备用号被剥后,@游戏专用残留在消息开头,导致查库关键词被压住
- 根因:原设计@检测只在昵称循环前执行一次,昵称循环剥离前缀后暴露的@无法被二次检测
- 修复:重构为主循环结构,每轮按优先级检查(箭头→头衔→排名标记→@提及→裸昵称),
  每轮开头清理前导标点,确保@检查在任何昵称剥离后仍能触发
- 新增:_rank_pattern剥离QQ排名标记(旅馆老板);未知@user按格式剥离
- 测试:13个用例全部通过,覆盖嵌套昵称+@+头衔+排名标记组合
2026-08-09 17:41:12 +08:00
youpaishidifu cdfa44ae07 修复[监控]:增强QQ昵称剥离和UI元素识别
- 问题:用户消息被回复不相关内容,昵称剥离未处理@提及格式
- 根因:_strip_qq_nickname函数未处理@前缀,_is_qq_ui_element仅匹配格式
- 修复:1. _strip_qq_nickname新增@提及处理逻辑,剥离@昵称部分;2. _is_qq_ui_element新增独立@username行识别
- 测试:验证@游戏专用在哪儿能下载登录插件?正确剥离为在哪儿能下载登录插件?
2026-08-09 16:58:30 +08:00
youpaishidifu 3cd760699d feat: QQ昵称剥离功能增强,支持【头衔】用户名格式
- 新增QQ群头衔+用户名格式剥离:【头衔】用户名 或 [头衔] 用户名
- 处理OCR将【识别为[、】识别为]的情况
- 保持原有纯文本昵称剥离功能
- 测试用例全部通过
2026-08-09 16:34:54 +08:00
youpaishidifu eef12a2694 修复QQ系统消息时间戳污染问题
1. 添加QQ系统消息过滤规则:邀请加入、退出、撤回等
2. 时间戳分割时跳过系统消息,防止旧时间戳继承到后续真实消息
3. QQ系统消息不更新继承时间戳,防止旧时间戳污染
2026-08-09 16:05:45 +08:00