youpaishidifu
|
0405e42a90
|
修复OCR回复牛头不对马嘴+残留消息+EasyOCR崩溃捕获+360误报
1. knowledge_base.py: 检索排序惩罚标题-only/短正文段,降低heading bonus,奖励正文命中,避免纯标题/免责声明段排第一
2. auto_reply.py: 动作类查询要求正文命中才放行;拒绝纯标题/免责声明答案
3. monitor.py: 调试截图改存%LOCALAPPDATA%/windowmsgbot/ocr_debug避开源码目录(360); 收紧残留消息fresh gate(600s硬门); 启动即崩溃/请求崩溃时读取easyocr_crash.log写入主日志
4. easyocr_worker.py: 加faulthandler+sys.excepthook全局捕获,崩溃traceback落盘%LOCALAPPDATA%/windowmsgbot/easyocr_crash.log
|
2026-08-01 21:21:05 +08:00 |
|
youpaishidifu
|
a076353ee4
|
修复三个问题:病句过滤、KB回复内容、截图保存日志
1. 病句过滤改进(monitor.py):
- ≤5字短句:必须包含疑问词(什么/怎么/如何/为什么/吗/呢等)才放行
- 无疑问词的短句直接过滤(如'自行修?')
- 5-50字病句:增加'过'字匹配(如'修正过后')
2. KB回复内容改进(auto_reply.py + knowledge_base.py):
- _get_answer 改为返回 body(纯正文),不含 heading
- KB搜索增加heading包含查询关键词的bonus
- 文档头部(# 文档名)增加penalty,避免返回错误section
3. 截图保存日志改进(monitor.py):
- QQ/微信截图保存失败日志从 debug 升级为 warning
- 增加保存路径提示,便于定位问题
|
2026-07-29 22:43:32 +08:00 |
|
youpaishidifu
|
503de361c5
|
修复KB搜索质量差+增加OCR病句过滤
1. 改进内容相关性检查:高匹配度(≥10.0)但无共同词时拒绝匹配
- 用户问PVP击杀播报,KB返回json格式说明(匹配度9.53)→ 拒绝
- 增加body内容检查,防止TF-IDF误匹配
2. 增加OCR病句过滤:
- 病句1:句子以动词结尾但缺少宾语(如'将其修正后重三')
- 病句2:句子以'三'结尾(OCR误读'试'为'三')
- 病句3:句子缺少主语且无标点
- 病句直接过滤,不触发查库
|
2026-07-29 22:11:08 +08:00 |
|
youpaishidifu
|
db64918761
|
改进内容相关性检查:增加body内容匹配,增强日志诊断
- _has_content_relevance 增加 content/body 检查,防止TF-IDF匹配到heading无关但body相关的section
- 增加 score 参数传递,用于日志记录
- 日志增加 doc_body 预览,便于诊断匹配失败原因
|
2026-07-29 21:56:14 +08:00 |
|
youpaishidifu
|
659f667d74
|
OCR过滤:加多/cmd指令列表碎片检测 + 内容相关性检查防偶然匹配
|
2026-07-29 15:29:42 +08:00 |
|
youpaishidifu
|
8894124b0a
|
fix(kb): section级搜索+意图排序+分词级匹配修复短查询与跨section排序
1. knowledge_base.py:
- 文档按 ## 标题切分为独立 section 后索引,每个 section 独立 TF-IDF
- 分词级匹配(避免"定义"子串匹配"自定义"的假阳性)
- 文档级优先排序:先按文档聚合,取最高 section 分决定最佳文档
- 定义类查询(版号/版本号/定义):自动降权无定义类 section 的文档
- 动作类查询(怎么/如何/用法):按优先级找"参数/指令/使用"→"方法"→"安装" heading
- 预计算 heading/body 分词集合,避免每次搜索重复 jieba
- 修复 SYNONYMS 重复 key
2. auto_reply.py:
- 精简答案提取:section 级搜索后 doc['content'] 即最相关片段
- 移除冗余的 _extract_relevant_snippet(重复 jieba 分词+section 切分)
3. monitor.py:
- 增加微信/QQ UI 噪声过滤(通讯录、发现、朋友圈等)
|
2026-07-27 14:17:51 +08:00 |
|
youpaishidifu
|
1441278082
|
fix(kb): 混合评分策略修复短查询匹配失败
TF-IDF 余弦相似度单独使用对短中文查询过于严格(3-5 个词 vs 数百个词的长文档)。
改为混合评分:0.4×TF-IDF + 0.6×关键词命中率,让短查询只要命中关键词就能返回结果。
同时降低 auto_reply_min_score 从 0.35→0.30,适配混合评分的数值范围。
|
2026-07-27 12:30:31 +08:00 |
|
youpaishidifu
|
8963a34b6a
|
修复OCR乱码+KB全文返回: 裁剪48%+&提前清理+全角:转换+纯时间戳过滤+KB回复限200字
1. cap_left 38%→48%(完全避开会话列表~30-55%)
38%仍捕获到左侧KB预览文字(问题1/2…)混入OCR
48%只捕获消息面板正文,KB预览不再出现
2. &清理移到时间戳分割前+全角:→半角:
原来&在分割后才清理,"13:5&07"无法被时间戳正则捕获
分割前清理→"13:5 07"可匹配时间戳→分割出独立段
全角:统一半角,后续正则只匹配半角
3. 时间戳段用\d{1,2}(允许单数字分钟)
分割后"07""15"等纯数字段被^[\d:\s]+$过滤
之前"13:5 07 14:2 15"整段因含空格,^\d{1,2}[::]\d{2}不匹配
4. auto_reply非Q&A文档回复限200字(之前500仍过多)
子串匹配触发的全文返回只回复前200字符
5. KB行级预览过滤移除(与用户消息混行时误杀)
段级别^问题\d+过滤器已足够,配合新裁剪基本不会触发
|
2026-07-26 16:37:41 +08:00 |
|
youpaishidifu
|
7bdc7ad637
|
修复2问题: KB误匹配+返回全文 / Ctrl+C无法停止
1. KB匹配与返回全文
- _poll中过滤纯时间/日期格式文本(OCR时间戳分割残留)->不入KB搜索
- knowledge_base.py子串fallback要求query>=4字符,避免"19:15"等短时间戳误匹配
- auto_reply._get_answer: 非Q&A文档只返回content前500字符,不返回整篇文件
- 时间戳文本不进入KB + 短query不子串匹配 + 非Q&A截取 = 三层兜底
2. Ctrl+C无法停止
- ThreadPoolExecutor创建非daemon线程->进程无法退出->必须杀CMD
改用daemon thread + Event.wait(timeout): daemon线程不阻塞进程退出
- main.py注册signal.signal(SIGINT) handler: 收到Ctrl+C后stop监控+quit窗口
- 移除from concurrent.futures导入,替换为import signal
|
2026-07-26 15:30:55 +08:00 |
|
youpaishidifu
|
e9d9551e3d
|
修复2个问题:退回裁剪+知识库只回复匹配句\n\n1. 裁剪退回c9acd7e版(cap_left=0.25)\n 0.35只截到时间戳,用户消息被切;0.25覆盖消息文字区域\n\n2. 知识库返回全文→只返回匹配问答段\n 原问题:名字.txt含2个Q&A,TF-IDF整文件匹配后返回全文\n 该方案:knowledge_base._parse_qa_segments解析文件为独立问答段\n 每段作为独立doc,auto_reply._get_answer优先返回doc.answer\n 用户问一句话,只回复对应答句,不塞全部内容
|
2026-07-26 13:38:04 +08:00 |
|
youpaishidifu
|
a0e54805fd
|
修复QQ读不出/读旧数据/auto-reply错发平台
问题1: QQ读不出消息 — daemon线程SetForegroundWindow频繁失败
-> _run_loop添加PeekMessage创建Windows消息队列
-> _attach_set_foreground内部异常全部捕获,不抛给调用者
问题2: QQ读旧剪贴板数据 — PostMessage键盘 Electron不响应
-> 移除前台跳过检查(降频已足够,20s一次不频繁)
-> _click_message_area PostMessage->SendMessage(Electron响应同步消息)
-> 移除_force_scroll_bottom(PostMessage对Electron无效)
问题3: WeChat消息错发给QQ — auto-reply daemon线程SetForegroundWindow失败
-> auto_reply.on_kb_match不再直接调用_paste_and_send
-> 改为get_reply_data返回{platform,answer,sender}给主线程
-> gui.py添加_reply_queue + _flush_reply_queue(主线程after轮询)
-> _execute_reply在主线程执行_search_contact和_paste_and_send
(SetForegroundWindow从主线程调用永远可靠)
|
2026-07-25 13:06:36 +08:00 |
|
youpaishidifu
|
7111f84a6d
|
添加自动回复功能: KB匹配命中后发答案回对应消息窗口
- monitor.py: 添加原始剪贴板存储 + _parse_last_sender提取发送者
+ _search_contact搜索框定位联系人 + _paste_and_send粘贴发送
- auto_reply.py(新): AutoReply编排类,含防重复/阈值过滤/线程锁
- gui.py: UI添加自动回复开关+阈值滑块,搜索命中回调触发回复
- config.py: 添加auto_reply_enabled/auto_reply_min_score配置项
|
2026-07-25 11:01:02 +08:00 |
|