[bug] 自动秘境:某一轮「走到钥匙处启动」实际未生效但流程继续,TXT 战斗策略没有超时限制 → 无限空转数小时

Author: msmyklCreated Sep 11, 2026Updated Sep 15, 2026
LabelsBUG秘境

提交确认 / Checklist

  • 我已经搜索过现有 issue,确认这不是重复问题 / I have searched existing issues and confirmed this is not a duplicate
  • 我已阅读过文档,确认文档的内容无法解决我的问题 / I have read the documentation and confirmed it does not solve my problem
  • 我愿意为了解决这个问题尽自己所能 / I am willing to do my part to help resolve this issue

系统环境

操作系统:Windows 10 家庭中文版 22H2(Build 19045.6466,x64,zh-CN) 运行时:Microsoft Windows Desktop Runtime 8.0.20 (x64)(另装有 6.0.36) 显卡:NVIDIA GeForce GTX 1650 Ti,驱动 610.47(4 GB) + Intel(R) UHD Graphics,驱动 26.20.100.7637 显示:游戏窗口 / BGI 采集区域 1920x1080 备注:机器上还装有 RayLink、GameViewer 的虚拟显示适配器

BetterGI 版本号

0.64.0

问题描述

以下为ai简单查询后总结。 实际行为与影响: 一条龙里的「自动秘境」任务在进入第 3 轮之后会无限空转、永不结束,一卡就是好几个小时,导致一条龙后续任务(配置组等)全部无法执行,BGI 与原神一直挂着,只能人工干预。 关键证据(来自 better-genshin-impact20260911.log;下面为了可读性略去了 logger 前缀,只保留时间戳与消息): 正常的前两轮: [05:04:58.192] 检测到秘境结束提示(挑战达成),结束秘境 ← 第 1 轮正常 [05:06:05.169] 检测到秘境结束提示(挑战达成),结束秘境 ← 第 2 轮正常 第 3 轮的启动过程 —— 交互键发出去了,但挑战没有真正开始: [05:06:36.528] 自动秘境:点击 "地脉异常" [05:06:37.708] 匹配到战斗脚本:"奶芙万爱" [05:06:37.956] 自动秘境:"1. 走到钥匙处启动" [05:06:38.264] 检测到交互键 ← 按键已发出 [05:06:39.372] 自动秘境:"2. 执行战斗策略" ← 1.1 秒后直接进入战斗,没有任何"挑战是否开始"的校验 此后 2 小时 17 分钟(05:06:39 → 07:23:28)日志里再没有出现过一次「检测到秘境结束提示(挑战达成)」,只剩战斗策略在按 cd 反复按键("茜特菈莉" 点按元素战技,cd:15.8 秒 这类,整份日志 844 条)。 同期的截图(BGI 自己导出的采集帧)显示:角色一个人站在秘境里、没有怪物、血量满 —— 也就是这一轮挑战根本没有开始,所以战斗策略在对着空气按技能。 另外,整个流程里 自动秘境:点击 "开始挑战" 只在第一轮出现过一次,之后每轮都是靠「1. 走到钥匙处启动」重新开挑战 —— 所以失败点在后者:日志记了「检测到交互键」,但没有任何一步去校验"挑战有没有真的开起来",直接进了「2. 执行战斗策略」。 被放大的部分(不是根因,但让问题更难被发现): 空转约 1 小时后,另一个游戏抢走了前台焦点,BGI 开始反复尝试恢复窗口,日志刷出「多次识别出战角色失败,尝试刷新角色编号位置」3498 次、「切换角色卡住,执行脱困」361 次、「当前获取焦点的窗口为…尝试恢复窗口」47 次。也就是说卡死后期的日志被抢焦点刷屏,真正的"挑战没开始"反而很难从日志里一眼看出来。 为什么不会自救:

  • 秘境战斗用的是 TXT 格式战斗策略(User/AutoFight/奶芙万爱.txt)。这条路径上策略就是一段按 cd 循环的按键序列,唯一退出条件是 OCR 到「挑战达成」;挑战没开始就永远等不到,于是死循环。
  • 对照:大世界的「自动战斗」有超时且确实生效(配置里 autoFightConfig.timeout = 240 秒,超时会被中止)。而秘境这条路径上没有等效的超时,autoDomainConfig 里也没有对应的超时字段(当前值为 fightEndDelay: 5、walkToF: true、leftRightMoveTimes: 3、partyName: "单人锄地")。 非必现: 同一个 05:00 定时任务、同一份一条龙配置,近两周只有 2 天出问题(09-10、09-11),其余日子都是 47 轮全部正常通关、0 条报错、05:07–05:31 就收工。另外,出问题之后我在同一台机器上手动启动跑同一个秘境,6 轮全部正常 —— 说明触发是随机的(看起来是按键与切场/启动动画的时序竞态),但一旦触发就不会自愈。 已排除: 不是"时间不够"(正常 1331 分钟就跑完);不是 BGI 版本更新引起(BetterGI.exe 时间戳仍是 2026-08-24,Cache/0.64.0 同为该日期);不是崩溃(Windows 应用程序日志里没有 BetterGI 的崩溃记录)。 临时绕过方式(仅供说明,不当作修复): 我给这个计划任务加了 ExecutionTimeLimit = PT1H 硬超时,卡死时由任务计划程序强杀兜底。但这样会跳过一条龙的收尾动作("关闭游戏和软件"),原神会留在被杀那一刻的画面,属于绕过而非修复。

期望结果

  1. 关键交互后校验结果:「走到钥匙处启动」/「开始挑战」这类决定"本轮能否开始"的交互,按下去之后应当校验挑战是否真的开始了(例如出现怪物 / 挑战计时 / 结果界面模板匹配变化)。若 N 秒内没校验到,应重试该交互(重新点「地脉异常」、重新走到钥匙处按 F)或直接把本轮判为失败,而不是继续进入「2. 执行战斗策略」。
  2. 给秘境战斗策略加超时或轮次上限:进入「2. 执行战斗策略」后,若超过 X 秒(或策略轮次超过 N 轮)仍未检测到「挑战达成」,应中止本轮并按配置处理(重试本轮 / 跳过该秘境 / 报错退出)。行为建议与大世界自动战斗的 timeout 保持一致,别让秘境成为唯一一条没有超时的路径。
  3. 把超时做成可配置项:建议在 autoDomainConfig 里加一个战斗超时(正常一轮 4060 秒,默认值 180300 秒应该够),或者让 autoFightConfig.timeout 在秘境路径下同样生效。
  4. 日志层面:卡死时至少给出"本轮挑战疑似未开始 / 战斗超时"的 WARN 日志,方便用户自查。

复现步骤

  1. 一条龙配置里包含「自动秘境」任务,秘境为「逆悬的冰河」(至冬 / 永凝冻土 - 祝圣秘境);
  2. 战斗策略使用 TXT 格式(User/AutoFight/奶芙万爱.txt);autoDomainConfig 为 walkToF: true、fightEndDelay: 5、leftRightMoveTimes: 3;
  3. 连续刷同一秘境多轮(第 1、2 轮正常通关);
  4. 到第 3 轮「1. 走到钥匙处启动」时,交互键实际未生效(挑战未开始、场上没有怪物),但日志仍然继续打印「自动秘境:"2. 执行战斗策略"」;
  5. 之后观察:日志不再出现「检测到秘境结束提示(挑战达成)」,策略按 cd 无限刷技能,数小时不自愈。 说明: 非 100% 复现。近两周只在 09-10、09-11 各出现 1 次,其余日子 4~7 轮全部正常;同一台机器手动启动跑同一秘境 6 轮也全部正常。所以更像是时序竞态,但缺少超时让它变成永久卡死。

日志与附件

Source: babalae/better-genshin-impact