youpaishidifu
|
05d23b515a
|
fix(kb): 增大top_k从5到10,确保OCR噪声查询的正确结果不被截断
问题:查询'草原深险服务器备用号服务器近期的一些公告有哪些?'
正确结果index.md'近期公告'在top_k=5时被截断(排在第6位,score=5.85),
导致所有候选都被多关键词检查拒绝,无结果返回。
修复:将gui.py的top_k从5增至10,确保正确结果在搜索范围内。
阈值仍为0.45,后续相关性检查逻辑不变。
测试:7/7用例通过
|
2026-08-13 21:44:59 +08:00 |
|
youpaishidifu
|
a0ace5ec13
|
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)
|
2026-08-13 21:24:32 +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
|
1738daffec
|
修复短句碎片和模糊重复跳过的误报:允许包含括号的短消息,问句不视为模糊重复
|
2026-08-12 11:45:50 +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
|
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
|
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
|
ad091561fe
|
修复3个OCR过滤问题:
1. 时间戳过滤误判:昨天前缀剥离后裸时间戳被当未来时间拦截,添加skip_future_check传递
2. 纯时间戳触发查库:_on_new_message入口检查中文字符,无中文跳过查库
3. 偏旁库补全:添加U+4E28(丨),启用U+4E3F(丿)过滤
|
2026-08-07 12:43:36 +08:00 |
|
youpaishidifu
|
ef422ef776
|
修复急停冻结/消息hash跳过/正常调度冷却误触三处问题
1. 急停冻结: gui.py 将 monitor.stop() 移到后台线程执行,避免 terminate+wait 阻塞 GUI 主线程 6~8s 触发 Windows 冻结弹窗;窗口关闭同样后台 stop。
2. 消息丢失: 仅当上一帧 OCR 已成功入队才允许相同 hash 帧跳过;新增 _is_question_message 提问豁免,使继承极老时间戳的明确提问(如'资源包是强制的,还是可选的?')不再被误判为远古历史永久丢弃。
3. 正常调度冷却: 正常资源释放(每N次调用杀进程)清除残留 30s 冷却并重置失败计数器;正常重启握手阶段的初始化超时/崩溃/协议/握手错误不再施加 30s 冷静期,交由系统自行调度启停。
|
2026-08-06 20:32:50 +08:00 |
|
youpaishidifu
|
4d7017be6a
|
修复知识库搜索:表格内容不再被切分,表格section优先返回
- knowledge_base.py: _split_body_by_list_items检测表格区域,不切分表格行
- knowledge_base.py: 添加独立表格section,确保表格内容可被搜索匹配
- knowledge_base.py: 表格兜底策略:最佳文档含操作/支持表格时强制加入并置顶
- knowledge_base.py: reranking后无条件优先返回含操作/支持的表格section
- .gitignore: 添加msg_history.db和诊断脚本到忽略列表
|
2026-08-05 13:22:27 +08:00 |
|
youpaishidifu
|
795a245de7
|
修复两个bug:
1. 问题3:OCR逗号断行 - 在_process_ocr_output中添加连续行合并逻辑,防止EasyOCR将中文逗号视为行边界导致消息前半段丢失
2. 问题4:回复重试逻辑失效 - 为_paste_and_send添加force_retry参数,_execute_reply重试时跳过60秒冷却检查,实现真正的5秒间隔重试机制
|
2026-08-03 21:31:14 +08:00 |
|
youpaishidifu
|
f95a711c8c
|
搜索结果显示增强,展示更多匹配详情
|
2026-08-03 17:32:18 +08:00 |
|
youpaishidifu
|
c6c8cc0571
|
@
fix: 微信颜色检测放宽+KB精确匹配+自动回复重试
1. monitor.py - 微信白色气泡检测阈值放宽(>=245->>=240, >=3->>=2)
适配新版微信UI颜色变化,减少漏检
2. knowledge_base.py - 精确短语匹配(5x加分)+子串匹配(2.5x/1.5x)
防止查询被不相关文档抢走高分
3. gui.py - 自动回复发送失败重试(3次/5秒间隔)
连续失败退避本轮,避免反复抢焦点
4. .gitignore - 补充build目录下的证书/构建产物
@
|
2026-08-03 16:42:21 +08:00 |
|
youpaishidifu
|
fa67eb407e
|
@
修复3个问题:
1. EasyOCR OOM降级CPU+重启恢复重检内存:_init_easyocr和_ensure_easyocr_subprocess添加内存检测,<2GB强制CPU;start()添加full_restart参数,用户手动启用时重置OOM计数重新评估GPU/CPU
2. PyInstaller exe闪退:spec入口改main.py,main.py添加EASYOCR_WORKER环境变量检测跳转worker逻辑;build.bat只清理build/build和dist不删spec/hooks
3. QQ OCR _processed_path未定义:补充ts和_processed_path变量定义
@
|
2026-08-03 10:12:07 +08:00 |
|
youpaishidifu
|
30106571d7
|
修复4个问题:KB未回复诊断日志、微信唤醒bug、exe打包、截屏分目录
1. KB搜索命中但未回复:增加诊断日志记录每个检查步骤的失败原因
2. 微信窗口唤醒bug:增加Win32 API进程枚举兜底+可见窗口直接截图(不要求置前)
3. PyInstaller打包修复:自定义hook-torch.py避免isolated子进程access violation,
改用onedir模式+CUDA_VISIBLE_DEVICES=""环境变量
4. OCR截屏分平台存放:img/raw/qq/ img/raw/wechat/ img/processed/qq/ img/processed/wechat/
|
2026-08-02 23:44:43 +08:00 |
|
youpaishidifu
|
b2dc72e7b5
|
fix: 剪贴板hash去重 + 双击ESC急停 + 截图日志完善
1. 剪贴板hash去重: _read_via_clipboard_once计算md5(content),
同平台内容未变则跳过,防止QQ读到微信遗留的过时剪贴板数据
答非所问(跨平台stale数据)问题修复
2. 双击ESC急停: _esc_check_loop daemon线程每150ms轮询ESC键,
两次ESC间隔<500ms触发_emergency_stop: 设置_running=False、
杀死EasyOCR子进程、清空发送锁、回调GUI更新状态、
用户可点击开关重新启动。急停后不退出程序。
3. 截图日志完善:
- 日志打印完整路径(用户可直接定位)
- 统一keep=60(QQ+微信共享清理池,双平台不互删)
- 移除微信冗余二次保存(wechat_ocr_*重复save)
- 修复silent except→打出save失败日志
|
2026-07-29 13:11:00 +08:00 |
|
youpaishidifu
|
0927603fc3
|
修死循环:全局去重+取消QQ键盘导航切会话+过滤系统消息
|
2026-07-25 16:58:09 +08:00 |
|
youpaishidifu
|
0322e2af64
|
修复QQ抓联系人列表+微信自动回复错发给QQ+重复处理\n\n问题1: QQ/TIM抓会话列表而非消息\n 根因: _click_message_area单次点击(width*0.88)落在联系人/群列表\n 而非消息显示区,导致Ctrl+A复制联系人名而非消息内容\n 修复: _focus_message_area两次SendMessage点击\n 先点会话列表(左15%)选对话→再点消息区(中右60%)聚焦消息\n + Esc前导键退出搜索模式\n\n问题2: 微信自动回复发给QQ\n 根因: _attach_set_foreground静默失败不返回结果\n SendKeys输入到当前前台窗口(QQ)\n 修复: _ensure_foreground使用GetForegroundWindow验证\n 确认目标窗口真正在前台,失败则return False放弃发送\n + 处理托盘/最小化窗口(ShowWindow SW_SHOWNORMAL)\n\n问题3: 重复处理同1条消息\n 根因: QQ每次读到不同联系人名=不同新消息=反复触发\n 修复: ①聚焦消息区后读到稳定消息内容 ②_sending_event锁\n 自动回复发送期间阻止监控轮询,避免焦点被抢\n\n其他: _ensure_hwnd检测QQ NT vs TIM变体\n 用于选择UIA优先或剪贴板优先策略
|
2026-07-25 14:37:54 +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 |
|
youpaishidifu
|
bdfc24a4c7
|
init: 消息问答助手 — 微信/QQ监控 + 本地知识库搜索 + GUI
|
2026-07-24 19:36:14 +08:00 |
|