autowsgr_2026-04-16.debug.log
name: 🐛 问题反馈
type: Bug
相关环境信息
- 操作系统: Windows 11
- 模拟器: MuMu 模拟器 (1920×1080)
- AutoWSGR 版本: main 分支 (commit 7a26b4e 附近)
- 相关文件: �utowsgr/ui/map/panels/sortie.py, �utowsgr/ui/map/data.py
问题描述
当任务需要从第 10 章导航到第 2 章(或类似远距离)时,
avigate_to_chapter 会在走到第 4 章时就因超过 CHAPTER_NAV_MAX_ATTEMPTS = 12 而判定超时失败,导致整轮常规战被跳过。
根本原因是当前实现采用单步点击 + 逐轮 OCR 验证的策略。每次点击后,游戏页面动画过渡期间 OCR 会出现抖动(例如连续采样得到 [10, 10, 9] 或 [4, 4, 3]),程序检测到抖动后会本轮不点击,等下一轮重新验证。这导致每一章实际要消耗约 2 次尝试机会。从 10 → 2 需要跨越 8 章,理论上约需 8 × 2 = 16 次尝试,但上限只有 12,因此必然失败。
复现方法
- 当前地图页面处于出征面板,且 OCR 识别为第 10 章(如 10-1)。
- 启动一个目标为第 2 章的常规战任务(如 2-5)。
- 观察日志:章节导航从 10 → 9 → 8 → 7 → 6 → 5 → 4,随后触发 超过最大尝试次数 (12)。
Log输出
shell 14:30:08.232 | INFO | ui/map/panels/sortie.py:248 | [UI] 章节导航: 当前第 10 章 -> 目标第 2 章 14:30:08.233 | INFO | ui/map/panels/sortie.py:164 | [UI] 地图页面 -> 上一章 (y=0.358) 14:30:10.244 | WARNING | ui/map/panels/sortie.py:223 | [UI] 章节导航: OCR 抖动 [10, 10, 9],本轮不点击 14:30:12.402 | INFO | ui/map/panels/sortie.py:248 | [UI] 章节导航: 当前第 8 章 -> 目标第 2 章 14:30:14.449 | WARNING | ui/map/panels/sortie.py:223 | [UI] 章节导航: OCR 抖动 [8, 8, 7],本轮不点击 14:30:18.416 | WARNING | ui/map/panels/sortie.py:223 | [UI] 章节导航: OCR 抖动 [7, 7, 6],本轮不点击 14:30:22.635 | WARNING | ui/map/panels/sortie.py:223 | [UI] 章节导航: OCR 抖动 [6, 6, 5],本轮不点击 14:30:26.943 | WARNING | ui/map/panels/sortie.py:223 | [UI] 章节导航: OCR 抖动 [5, 5, 4],本轮不点击 14:30:31.284 | WARNING | ui/map/panels/sortie.py:223 | [UI] 章节导航: OCR 抖动 [4, 4, 3],本轮不点击 14:30:31.787 | WARNING | ui/map/panels/sortie.py:269 | [UI] 章节导航: 超过最大尝试次数 (12), 目标第 2 章 14:30:31.916 | ERROR | ops/normal_fight.py:301 | [OPS] 地图章节导航失败: 无法导航到第 2 章 14:30:31.918 | WARNING | ops/normal_fight.py:302 | [OPS] 已放弃本轮常规战,尝试返回主页面以继续后续队列
建议的优化方向
- 提高 CHAPTER_NAV_MAX_ATTEMPTS:从 12 提升到 20,确保能覆盖 10 → 1 的最远距离。
- 远距离批量点击策略:当目标距离当前章节 > 2 章时,改为一次性连续点击若干章(如最多 4 章),然后统一等待动画完全结束后再 OCR 验证,减少过渡态抖动导致的轮空等待。
- 近距离保持单步:当距离 ≤ 2 章时继续单步点击,避免过冲,保证精度。
autowsgr_2026-04-16.debug.log
name: 🐛 问题反馈
type: Bug
相关环境信息
问题描述
当任务需要从第 10 章导航到第 2 章(或类似远距离)时,
avigate_to_chapter 会在走到第 4 章时就因超过 CHAPTER_NAV_MAX_ATTEMPTS = 12 而判定超时失败,导致整轮常规战被跳过。
根本原因是当前实现采用单步点击 + 逐轮 OCR 验证的策略。每次点击后,游戏页面动画过渡期间 OCR 会出现抖动(例如连续采样得到 [10, 10, 9] 或 [4, 4, 3]),程序检测到抖动后会本轮不点击,等下一轮重新验证。这导致每一章实际要消耗约 2 次尝试机会。从 10 → 2 需要跨越 8 章,理论上约需 8 × 2 = 16 次尝试,但上限只有 12,因此必然失败。
复现方法
Log输出
shell 14:30:08.232 | INFO | ui/map/panels/sortie.py:248 | [UI] 章节导航: 当前第 10 章 -> 目标第 2 章 14:30:08.233 | INFO | ui/map/panels/sortie.py:164 | [UI] 地图页面 -> 上一章 (y=0.358) 14:30:10.244 | WARNING | ui/map/panels/sortie.py:223 | [UI] 章节导航: OCR 抖动 [10, 10, 9],本轮不点击 14:30:12.402 | INFO | ui/map/panels/sortie.py:248 | [UI] 章节导航: 当前第 8 章 -> 目标第 2 章 14:30:14.449 | WARNING | ui/map/panels/sortie.py:223 | [UI] 章节导航: OCR 抖动 [8, 8, 7],本轮不点击 14:30:18.416 | WARNING | ui/map/panels/sortie.py:223 | [UI] 章节导航: OCR 抖动 [7, 7, 6],本轮不点击 14:30:22.635 | WARNING | ui/map/panels/sortie.py:223 | [UI] 章节导航: OCR 抖动 [6, 6, 5],本轮不点击 14:30:26.943 | WARNING | ui/map/panels/sortie.py:223 | [UI] 章节导航: OCR 抖动 [5, 5, 4],本轮不点击 14:30:31.284 | WARNING | ui/map/panels/sortie.py:223 | [UI] 章节导航: OCR 抖动 [4, 4, 3],本轮不点击 14:30:31.787 | WARNING | ui/map/panels/sortie.py:269 | [UI] 章节导航: 超过最大尝试次数 (12), 目标第 2 章 14:30:31.916 | ERROR | ops/normal_fight.py:301 | [OPS] 地图章节导航失败: 无法导航到第 2 章 14:30:31.918 | WARNING | ops/normal_fight.py:302 | [OPS] 已放弃本轮常规战,尝试返回主页面以继续后续队列建议的优化方向