修复过滤过宽+裁剪范围

1. _is_system_message 中系统模式匹配从 in 改为 startswith
   否则 OCR 捕获的多行合一文本只要包含答:就被整行丢弃
   用户消息你叫啥名字啊?混在文本里一起被杀
2. cap_left 从 25% → 35%
   25% 覆盖到联系人列表,OCR 读出多面板混合文本
   35% 从会话列表偏右到消息面板,减少噪声
3. 保留上轮加的前台切换和 debug 日志
This commit is contained in:
youpaishidifu
2026-07-26 13:25:21 +08:00
parent c9acd7e039
commit af3b730106
+7 -5
View File
@@ -570,8 +570,9 @@ class MessageMonitor:
# 先切 QQ 到前台再截屏,避免 CMD 窗口遮挡→OCR 读到终端文字
self._ensure_foreground(hwnd)
time.sleep(0.15)
# 左边界调到 33%,捕获更靠左的消息文字
cap_left = int(left + win_w * 0.25)
# 左边界 35%,从消息面板左侧开始(联系人/会话列表 / 消息面板分界约 55%)
# 但消息正文在面板左侧,因此稍左移 35% 覆盖消息文字左侧边缘
cap_left = int(left + win_w * 0.35)
cap_top = top + max(40, int(win_h * 0.04)) # 标题栏下方
cap_right = int(left + win_w * 0.95) # 跳过滚动条
cap_bottom = bottom - max(100, int(win_h * 0.10)) # 输入框上方
@@ -946,19 +947,20 @@ class MessageMonitor:
for n in qq_ui_noise:
if text == n:
return True
# 系统事件模板
# 系统事件模板 — 注意:用 startswith 而非 in,避免混合文本(OCR 多行合一)误杀
system_patterns = [
"已自动回复", "知识库中未找到", "找到相关结果",
"监控已启动", "监控已暂停", "设置已保存",
"🤖", "找不到联系人", "当前会话回复",
"自动回复触发", "匹配度",
# KB 文档内容格式(机器人回复内容特征)
# KB 文档内容格式(机器人回复格式),OCR 可能把用户消息+KB 回复混成一行
# 只有全行以"答:"开头才过滤,内含"答:"的混合文本不过滤
"答:",
# 纯系统命令反馈
"PS ", "❯ ", "$ ",
]
for p in system_patterns:
if p in text:
if text.startswith(p):
return True
# 纯时间格式(不含消息内容)
if re.match(r'^\d{1,2}:\d{2}', text):