{"record":{"id":"a898a55fd5fb572b","repo":"babalae/better-genshin-impact","slug":"error-a898a5","errorCode":null,"errorMessage":"未进入和合成台交互对话界面","messagePattern":"未进入和合成台交互对话界面","errorType":"exception","errorClass":"Exception","httpStatus":null,"severity":"error","filePath":"BetterGenshinImpact/GameTask/Common/Job/GoToCraftingBenchTask.cs","lineNumber":270,"sourceCode":"        // 多种尝试 责任链\n        if (!IsInCraftingTalkUi())\n        {\n            // 直接重试\n            await TryPressCrafting(ct);\n            \n            if (!IsInCraftingTalkUi())\n            {\n                // 往回走一步重试\n                Simulation.SendInput.SimulateAction(GIActions.MoveBackward, KeyType.KeyDown);\n                await Delay(200, ct);\n                Simulation.SendInput.SimulateAction(GIActions.MoveBackward, KeyType.KeyUp);\n                \n                await TryPressCrafting(ct);\n            \n                // 最后 check\n                if (!IsInCraftingTalkUi())\n                {\n                    throw new Exception(\"未进入和合成台交互对话界面\");\n                }\n            \n            }\n        }\n\n        // 等待进入合成界面\n        await _chooseTalkOptionTask.SelectLastOptionUntilEnd(ct,\n            region => region.Find(ElementRecognition.Get(\"BtnWhiteConfirm\", region)).IsExist()\n        );\n        await Delay(800, ct);\n    }\n\n\n    private bool IsInCraftingTalkUi()\n    {\n        using var ra = CaptureToRectArea();\n        return Bv.IsInTalkUi(ra);\n    }","sourceCodeStart":252,"sourceCodeEnd":288,"githubUrl":"https://github.com/babalae/better-genshin-impact/blob/a7cb36712dcb409be610257d877fcea3597e9d6b/BetterGenshinImpact/GameTask/Common/Job/GoToCraftingBenchTask.cs#L252-L288","documentation":"Thrown by GoToCraftingBenchTask.GoToCraftingBenchOnce after a three-stage attempt to enter the crafting-bench dialogue all fail Bv.IsInCraftingTalkUi: a direct retry (TryPressCrafting), then a step-backward + retry, then a final check. None put the UI into the talk state.","triggerScenarios":"IsInCraftingTalkUi() (which captures and calls Bv.IsInTalkUi) returns false through: initial check, after TryPressCrafting (FindFAndPress on '合成'), and after MoveBackward + TryPressCrafting. The bench's F-prompt was never engaged.","commonSituations":"Character is not actually at the bench (pathing undershot); camera/wall occludes the bench F-prompt; localized '合成' string does not match the prompt text; the bench requires a different approach vector (the 枫丹 auto-run exception left the character past the bench).","solutions":["Confirm craftLocalizedString matches the in-game bench prompt for the configured culture.","Re-approach: rerun the pathing EndAction or walk forward before retrying FindFAndPress.","Increase retries and vary approach direction rather than only stepping backward.","Verify the character landed close enough to the bench by checking a known landmark via OCR/template."],"exampleFix":"null","handlingStrategy":"retry","validationCode":"null","typeGuard":"null","tryCatchPattern":"try { await GoToCraftingBenchOnce(country, ct); }\ncatch (Exception e) when (e.Message == \"未进入和合成台交互对话界面\")\n{ /* re-path to the bench and vary approach direction, then retry */ }","preventionTips":["Confirm craftLocalizedString matches the in-game bench prompt for the configured culture.","Vary approach direction (forward as well as backward) across retries.","Re-run the pathing EndAction to close the distance to the bench."],"tags":["navigation","talk-ui","crafting","genshin-ui"],"backgroundTag":null,"analyzedSha":"a7cb36712dcb409be610257d877fcea3597e9d6b","analyzedAt":"2026-08-13T16:44:57.548Z","schemaVersion":2},"datasetVersion":"2026-08-13T19:17:28.613Z"}