BetterGI 原神自动化全解计算机视觉驱动的 UI 自动化工具深度解析【免费下载链接】better-genshin-impactBetterGI · 更好的原神 - 自动拾取 | 自动剧情 | 全自动钓鱼(AI) | 全自动七圣召唤 | 自动伐木 | 自动刷本 | 自动采集/挖矿/锄地 | 一条龙 | 全连音游 | 自动烹饪 | 桌面分身 - UI Automation Testing Tools For Genshin Impact项目地址: https://gitcode.com/gh_mirrors/be/better-genshin-impactBetterGIBetterGenshinImpact简称 BGI是一个基于计算机视觉的原神 UI 自动化工具。它不改游戏文件、不读写内存只靠实时截图 → 图像/文字识别 → 模拟键鼠这条链路把自动拾取、自动剧情、自动钓鱼、自动刷秘境、一条龙日常等重活接管下来。全文按原理 → 跑通 → 细用 → 深入展开先看它的识别-决策-操作闭环怎么运转再给出环境要求与启动步骤然后按使用场景拆解功能与源码级参数最后整理避坑要点和开发者入口读完你能对每个功能的默认值、文件路径逐项核对。一、先看闭环一帧画面如何变成一次按键整个程序围绕一个约 20fps 的循环运转任何功能最终都落在这条流水线上捕获。Fischless.GameCapture持续抓取游戏窗口共 5 种模式CaptureModes枚举BitBlt默认、WindowsGraphicsCapture、WindowsGraphicsCaptureHdr、WindowsGraphicsCaptureV2、DwmGetDxSharedSurface由 AllConfig.cs 的CaptureMode字段决定。识别。Core/Recognition 下按能力分三个子层OpenCv/模板匹配、颜色范围、OCR/Paddle、Yap 两套引擎、ONNX/模型推理用于图标匹配等任务侧统一通过 RecognitionAssets.cs 的Get(...)按名字取识别对象具体区域和模板写在各任务的Assets/Recognition.json里。调度。TaskTriggerDispatcher.cs 用一个System.Timers.Timer按TriggerInterval默认50ms见 AllConfig.cs驱动Tick。每帧的规则很明确上一帧没处理完 → 跳过本帧并计入跳过次数指标不排队等待游戏窗口最小化 / 已退出 → 不截图退出时自动停止截图器窗口不在前台 → 只有声明IsBackgroundRunning的触发器继续跑存在独占触发器IsExclusive如剧情播放中→ 本帧只执行它每帧先用Bv.WhichGameUiForTriggers判定当前游戏 UI 类别如BigMapUI 类别切换后的 30 秒内所有触发器都会执行一遍之后只执行SupportedGameUiCategory匹配当前 UI 的触发器。操作。各触发器/任务通过 TaskControl.cs 与运行环境扩展执行点击、按键TaskControl.TaskSemaphore容量 1 的SemaphoreSlim保证同一时刻只有一个独立任务在跑。截图失败时CaptureGameImage会以 30ms 间隔重试 3 次仍失败才抛异常。触发器本身的生命周期由 ITaskTrigger.cs 定义实例在启动截图器时由 GameTaskManager.cs 统一创建并按Priority降序排列停止截图器时销毁不在任务中时看IsEnabledByConfig直接读用户配置独立任务执行期间只看任务/脚本通过AddTrigger注入的启用名单目前支持AutoPick、AutoSkip、AutoEat三种。所有回调都在Tick里串行执行触发器内部无需自己加锁。识别素材按分辨率目录加载优先GameTask/任务/Assets/宽x高/缺失时回退1920x1080/再按缩放比ResizeGameTaskManager.LoadAssetImage这也是分辨率变了要重启的根源。二、环境与启动三步跑起来硬性要求项目要求来源操作系统Windows 10 或更高版本的 64 位系统根 README.md运行时.NET 10发布包已自带无需另装根 README.md分辨率仅支持 16:9推荐 1920x1080 窗口化根 README.md硬件基线至少能中画质 60 帧流畅游玩原神根 README.md下载渠道稳定版 / 测试版项目 Release 页面最新自动构建产物publish.yml工作流产物为完整发布包国内可用 CNB Releases 渠道速度更快。三步启动打开软件进入启动页选择截图方式对应CaptureMode默认BitBltWindows 11 下若 BitBlt 不可用AutoFixWin11BitBlt默认开启会自动修复确认游戏以 16:9 窗口化运行且分辨率未变过点击启动TaskTriggerDispatcher随即以 50ms 周期开始派发画面遮罩窗口会同步显示日志和识别结果。窗口大小变化、切换游戏分辨率、切换显示器时请重启本软件否则识别区域错位。模拟操作可能被部分安全软件拦截已知 360、自定义规则 Windows Defender 会拦截部分模拟点击请加入白名单。三、功能地图按使用场景归类仓库里功能模块集中在 GameTask 目录一个功能一个子目录配置类与识别素材Assets/并存。下表按你想用它干什么重新归类路径均可直接打开核对。3.1 挂在旁边的陪玩边玩边开功能作用源码位置自动拾取遇到可交互内容自动按F支持黑白名单GameTask/AutoPick自动剧情 / 自动邀约跳过对话、按策略选选项、领每日委托、重新派遣GameTask/AutoSkip快速传送地图界面识别传送点并代点GameTask/QuickTeleport自动吃药战斗中识别血量自动嗑药GameTask/AutoEat半自动钓鱼AI 识别抛竿、上钩收杆、拉满进度条GameTask/AutoFishing技能 CD 提示遮罩上叠加技能冷却GameTask/SkillCd地图遮罩游戏画面上叠加地图/标记层GameTask/MapMask3.2 体力消耗挂机等奖励功能作用源码位置自动秘境循环进秘境、开钥匙、战斗、走古树领奖励GameTask/AutoDomain自动幽境危战自动传送并前往主打难度三刷圣遗物GameTask/AutoStygianOnslaught自动首领讨伐按策略自动挑战世界首领GameTask/AutoBoss自动地脉花连续刷地脉花支持绝大部分点位GameTask/AutoLeyLineOutcrop一条龙一键日常编排历练点、副本、地脉花、首领等按序执行Core/Config/OneDragonFlowConfig.cs、GameTask/OneDragon一条龙本质是任务编排器OneDragonFlowConfig里TaskOrder保存任务顺序、TaskEnabledList保存每个任务的开关、TaskDefinitions支持同名任务重复添加用户可在界面上按需增删和排序树脂相关的刷取预算、周本开关WeeklyDomainEnabled、自动首领选择默认根据队伍自动选择都挂在同一份配置上。3.3 材料搬运采集、挖矿、锄地、伐木功能作用源码位置自动采集/挖矿/锄地识别左上角小地图定位沿路径点行走GameTask/AutoPathing自动伐木自动按Z释放「王树瑞佑」利用上下线刷新木材刷满背包GameTask/AutoWood自动地脉花同 3.2也可归入材料类GameTask/AutoLeyLineOutcrop路径导航的核心在 Navigation.csWarmUp预热地图特征匹配MapManager.GetMap(...).WarmUp()GetPosition/GetPositionStable分别用于高效定位与高精度定位再用GetTargetOrientation/GetDistance结合路径点Waypoint算出朝向与距离驱动行走。执行链路见 PathExecutor.cs 与 NavigationInstance.cs。自动伐木的参数很简单AutoWoodConfig.csAfterZSleepDelay默认 0用道具后额外延迟、WoodCountOcrEnabled默认 falseOCR 读取木材数量、UseWonderlandRefresh默认 true通过进出千星奇域刷新 CD。3.4 手速外挂单点提效功能作用源码位置那维莱特转圈长按快捷键持续水平转视角也可转草神GameTask/Macro/TurnAroundMacro.cs快速圣遗物强化快切详情/强化页跳过结算快速 20GameTask/Macro/QuickEnhanceArtifactMacro.cs商店一键购买满数量快速购买适合活动兑换/尘歌壶商店GameTask/QuickBuy键鼠录制回放录制回放当前键鼠操作建议配合调度器Core/Recorder自动音游一键通关千音雅集专辑GameTask/AutoMusicGame自动烹饪在完美区域完成烹饪GameTask/AutoCook自动分解圣遗物快速分解 / 按规则匹配分解GameTask/AutoArtifactSalvage全自动七圣召唤七圣召唤 PVE 角色邀请、来客挑战GameTask/AutoGeniusInvokation全自动钓鱼面向鱼塘启动后自动完成钓鱼并切换昼夜GameTask/AutoFishing自动使用兑换码自动领取/兑换GameTask/UseRedeemCode原琴演奏自动演奏乐曲GameTask/Music七圣召唤与音游的定位参数见下文参数详解。音游配置AutoMusicGameConfig.cs里有MustCanorusLevel默认 false是否强制大音天籁、MusicLevel乐曲级别、UseCapturePipeline默认 false改用截图管线检测音符替代 GDIGetPixel兼容 WGC V2 等全部捕获模式。四、源码级参数详解以下四个功能是日常使用频率最高的参数按参数名默认值作用列出全部可在对应文件中逐项核对。4.1 自动拾取三个偏移量划出的 OCR 窗口文件AutoPickConfig.cs。ModeWhitelist名单模式Whitelist/Blacklist二选一WhitelistModeDoNotPickEnabledtrue白名单模式下不拾取规则默认开启即命中不拾取词条的物品跳过BlacklistModePickEnabledfalse黑名单模式下的拾取规则开关OcrEnginePaddle文字识别引擎可选Paddle或YapFastModeEnabledfalse急速模式无视文字识别结果直接按拾取键响应更快但对场景有要求PickKeyF自定义拾取按键ItemIconLeftOffset60/ItemTextLeftOffset115/ItemTextRightOffset4001080p 下拾取文字左侧图标、文字起始、文字终止的像素偏移三者共同圈定 OCR 区域LegacyWhiteListEnabled旧版白名单开关读取后由MigrateLegacyConfig()迁移为黑名单模式的拾取规则。文件顶部注释明确提示非 16:9 分辨率下可能无法正常工作——因为上述偏移量全部按 1080p 设计。4.2 自动剧情选项策略 人声等待 后台画中画文件AutoSkipConfig.cs。Enabledtrue总开关启用后覆盖快速跳过对话、自动点击选项、黑屏过长自动跳过三类行为QuicklySkipConversationsEnabledtrue快速点击跳过剧情对话ClickChatOption优先选择第一个选项选项策略另支持随机选择选项不选择选项CustomPriorityOptionsEnabledfalseCustomPriorityOptions空按文本自定义优先选项每行一个或用分号分隔AutoWaitDialogueOptionVoiceEnabledfalseDialogueOptionVoiceMaxWaitSeconds30通过游戏进程音频的人声检测等待语音结束后再点选项最长 30 秒AutoGetDailyRewardsEnabledtrue/AutoReExploreEnabledtrue凯瑟琳对话出现橙色选项时自动领取每日委托、自动重新派遣AutoHangoutEventEnabledfalse自动邀约依赖自动剧情开启AutoHangoutPressSkipEnabledtrue控制邀约中自动点击跳过SubmitGoodsEnabledtrue/ClosePopupPagedEnabledtrue自动提交物品、关闭弹出书页RunBackgroundEnabledfalse剧情后台运行PictureInPictureEnabledfalse开启画中画PictureInPictureSourceType默认CaptureLoop主动获取 60 帧可切TriggerDispatcher跟随截图器 50ms 一帧。4.3 钓鱼超时兜底 昼夜策略文件AutoFishingConfig.cs、FishingTimePolicy.cs。Enabledfalse半自动钓鱼触发器总开关启用后自动判断进入钓鱼状态、自动提杆、自动拉条AutoThrowRodEnabledfalse自动抛竿开关AutoThrowRodTimeOut15 秒自动抛竿后未上钩的超时WholeProcessTimeoutSeconds300 秒整个钓鱼任务的超时FishingTimePolicyAll昼夜策略取值All全天/Daytime白天/Nighttime夜晚/DontChange不调昼夜。4.4 自动秘境树脂统一配置与双路奖励识别文件AutoDomainConfig.cs。ResinUsage迁移自旧字段统一树脂设置取代旧版优先级列表 分树脂计数一组字段ResinPriorityList旧默认[浓缩树脂, 原粹树脂]、OriginalResin20UseCount等均已标记为迁移专用FightEndDelay5 秒战斗结束后延迟几秒再寻找石化古树ShortMovementfalse寻找古树时改为短距离移动给识别速度较慢的机器用LeftRightMoveTimes3 次寻找古树时左右移动的次数ReviveRetryCount3战斗死亡后的重试次数PartyName/DomainName空指定刷本队伍与副本名称SundaySelectedValue指定周日奖励序号AutoEatfalse/AutoArtifactSalvagefalse战斗自动吃药、结束自动分解圣遗物RewardRecognitionEnabledfalse开启后每轮领取奖励用 ONNX 图标匹配 OCR 材料名双路识别秘境结束打印汇总TargetItems空列表按物品名 数量达到目标提前停止TrainingGuideCalculateRunsEnabledtrue按提升指南培养计划自动计算今日刷取次数的总开关TrainingGuideRewardRecognitionEnabledtrue——注意即使常规奖励识别关闭培养计划刷取仍会识别奖励TrainingGuideFallbackDomainName为当天无可刷目标时使用的备选秘境。4.5 附快速传送的判定链QuickTeleportTrigger.cs 是模板匹配 OCR组合技的典型值得单独看一遍判定顺序距上次执行 ≤300ms 直接返回限制动作频率判定是否在大地图CurrentGameUiCategory BigMap或Bv.IsInBigMapUi找到传送按钮模板 → 直接点击结束找不到传送按钮但存在地图关闭 / 地图选择按钮 → 说明尚未选中传送点返回否则对传送点列表图标做多模板匹配阈值 0.8HDR 捕获降为 0.7按Y坐标升序取最高一项对其右侧 200px 宽、上下各扩 8px 的区域做颜色范围 OCRHLS 色域 L:245~255, S:0~15识别文字非空且 1 个字符即点击该选项TeleportListClickDelay默认 200ms 的间隔控制连点节奏选项点击后等WaitTeleportPanelDelay默认 50ms0.24 版本后识别耗时变长可设 0再回步骤 3 点掉传送按钮。另支持HotkeyTpEnabled按住指定快捷键时才触发整套流程QuickTeleportConfig.cs。五、避坑指南高频问题一次说清为什么必须管理员权限运行游戏本身以管理员权限启动软件权限不够时无法向游戏窗口注入模拟点击表现为识别正常但点不动。会不会封号BetterGI 不做任何修改游戏文件、读写内存的行为纯视觉 模拟输入官方口径是理论上不会。但用户条款明确把第三方软件/模拟操作列为封号理由之一存在被检测的可能。建议低调使用。改过窗口 / 分辨率 / 显示器之后识别全部错位重启本软件。所有识别区域和素材缩放都按启动时的窗口尺寸计算见素材按分辨率目录加载一节。开了功能却没反应先查三件事触发器Enabled是否为 true游戏窗口是否在前台多数触发器不在前台不跑只有声明后台运行的例外是否正处于独立任务执行中任务期间只看启用名单用户开的其他触发器会被暂停。配置改了不生效大部分开关每帧直接读配置、即时生效少数项如CaptureMode、DisableInputMonitor、WGC V2 相关转换选项需要重启截图器或软件后生效以源码注释标注为准。低配置机器能跑吗图像识别吃性能官方基线是中画质 60 帧流畅。达不到时优先调小TriggerInterval之外的开销关闭不用的触发器、把 OCR 区域类功能如自动拾取切到急速模式。安全软件拦截模拟点击已知 360 和自定义规则 Windows Defender 会拦截部分类型的模拟点击把 BetterGI 加入白名单。六、开发者入口编译、识别资源与配置体系编译工程前置.NET 10 SDK Windows SDK10.0.22621.0及以上运行闪退多半是 SDK 版本不够装新版或调整TargetFramework降版见 BetterGenshinImpact/README.md推荐 Rider速度快且免费或支持 .NET 10 的 Visual Studio 打开 BetterGenshinImpact.sln需要完整发布包时可 fork 后在publish.yml工作流手动触发约 10 分钟产出BetterGI_7z代码风格由 CodeMaid.config 与 Settings.XamlStyler 统一约束源码获取git clone https://gitcode.com/gh_mirrors/be/better-genshin-impact。识别资源怎么写每个任务的识别配置放在BetterGenshinImpact\GameTask\任务名\Assets\Recognition.json完整规范见 Docs/technical/recognition-json.md。要点顶层结构version固定 1、vars、regions公共区域表达式、templates公共模板别名、objects识别对象集合roi/reference.bbox/vars支持表达式由 NCalc 解析可用别名引用公共区域与模板type必须与RecognitionTypes枚举文本完全一致如TemplateMatch模板匹配场景下省略name时运行时默认取模板名运行时通过RecognitionAssets.Get(任务名, 对象名, region)加载加载器为 RecognitionObjectJsonLoader.cs模板资产由 RecognitionTemplateAssetService.cs 管理。配置体系全部用户配置聚合在 AllConfig.cs一个根对象挂 30 余个子配置块自动拾取、剧情、钓鱼、打牌、秘境、宏、快捷键、通知、地图追踪、桌面分身、外部访问服务……子配置各自独立成文件目录 Core/ConfigInitEvent()里的ConfigChangeTracker对整个对象图做变更追踪任意嵌套项变更都会回调OnAnyChangedAction由ConfigService设为防抖保存实时触发器每帧直接读配置因此大部分开关无需重启即时生效旧字段迁移模式值得注意多个任务用MigrateLegacy...()Ensure...()一对方法把旧配置一次性迁移到统一结构如树脂设置统一为ResinUsage新字段非空时旧字段不再覆盖。七、结语BetterGI 把截图—识别—决策—模拟输入这条纯视觉闭环工程化到了相当完整的程度调度器一帧一帧地管住并发与优先级触发器接口把实时响应与流程化任务切成两种生命周期识别逻辑则全部外置成Recognition.json与分辨率素材目录识别规则可以脱离 C# 代码独立维护。想继续深入建议从 ITaskTrigger.cs 的接口契约、Docs/technical/recognition-json.md 的表达式系统、Docs/design 下的架构设计文档任务契约、触发器调度 DI、实时触发等三个入口读起再对照 GameTask 里任一任务目录的配置类 触发器 Assets三件套基本就能上手扩展新功能了。【免费下载链接】better-genshin-impactBetterGI · 更好的原神 - 自动拾取 | 自动剧情 | 全自动钓鱼(AI) | 全自动七圣召唤 | 自动伐木 | 自动刷本 | 自动采集/挖矿/锄地 | 一条龙 | 全连音游 | 自动烹饪 | 桌面分身 - UI Automation Testing Tools For Genshin Impact项目地址: https://gitcode.com/gh_mirrors/be/better-genshin-impact创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考