BetterGI 是什么?从屏幕识别到自动操作,拆解它的实现方式
BetterGI 是一个面向《原神》的开源自动化工具。它的核心思路很直观:截取游戏画面,识别屏幕上的信息,再模拟键盘和鼠标操作,随后重新观察结果。 它不是让大语言模型直接玩游戏,而是把计算机视觉、针对场景编写的规则、路径和脚本组合起来。

图:BetterGI 官网展示的遮罩功能,图片来自 BetterGI 官网。
它能做什么?
项目提供自动拾取、剧情交互、钓鱼、战斗、秘境、材料采集等功能,并能把多个任务编排为一条龙。它还提供地图追踪、键鼠录制和 JavaScript 脚本,让社区作者组合更复杂的流程。项目仓库 · 功能文档
这些能力并非全都使用同一个“AI”:有些依赖界面文字和图像匹配,有些使用目标检测模型,有些主要执行预先写好的流程。比如自动拾取需要判断交互提示,地图追踪则要持续估计角色位置和方向,二者面对的问题不同。
一次自动操作是怎样形成的?
可以把它理解为一个循环:
游戏画面 → 捕获截图 → 识别界面、文字或目标
↑ ↓
└────── 检查动作结果 ← 模拟键鼠 ← 选择下一步动作
第一步是获取画面。 官网介绍了 GDI、DXGI 等图像捕获方式,项目也提供覆盖在游戏界面上的遮罩,用来显示日志和识别结果。不同截图方式在兼容性和表现上可能不同,分辨率、缩放和画质也会影响后续识别。官网功能介绍
第二步是把像素变成可用信息。 比如 OCR 把区域中的文字识别出来;模板匹配寻找与参考图相似的 UI;目标检测则用于识别一些更复杂的画面对象。官网列出了 ONNX Runtime、YOLOv8 和多种 OCR 引擎;项目的 Paddle OCR 检测代码可以看到 ONNX 推理与图像预处理。具体功能选择哪种识别方式,需要看对应模块,不能认为每次点击都由同一个模型决定。
第三步是做决定并执行。 程序根据当前识别结果、任务配置和脚本决定要点击、按键、等待还是重新识别;随后向系统发送模拟输入。项目自述不修改游戏文件、不读写游戏内存,主要依靠视觉算法和模拟操作。这个描述是项目对技术路线的说明,也不代表游戏运营方认可或允许自动化。项目说明与 FAQ
地图追踪:从小地图到移动方向
地图追踪是比较能体现“观察—行动—再观察”的功能。官方文档说明它基于小地图识别,可结合锚点和路线执行采集、战斗等任务。地图追踪文档
在仓库一个路径追踪实现中,可以看到这样的处理过程:截取小地图,通过地图匹配得到当前位置,选择路径中的下一个点,再根据当前位置和目标计算距离与方向,调整视角并前进。之后循环读取画面,直到抵达或任务取消。这说明它并不是只录下一串固定按键:至少在该实现里,移动会结合画面重新计算。
识别仍有边界。项目的 Issue 讨论显示,SIFT 和模板匹配在不同地图区域可能表现不同;地形特征、地图素材和游戏更新都可能影响定位。仓库中存在不同实现和持续重构,上述代码是理解设计的具体例子,不代表每条路线都走完全相同的代码。
脚本和调度:把单个动作拼成工作流
BetterGI 将一部分基础能力暴露给 JavaScript,脚本通过 ClearScript 内置的 V8 引擎执行。调度器可以组织 JavaScript、地图追踪和键鼠录制任务,并将配置组保存在本地。JavaScript 文档 · 调度器文档
这套设计有两个层次:底层提供截图、识别、输入和寻路等能力;上层脚本决定先做什么、何时等待、失败后如何处理。社区脚本和路线让工具能够扩展,但质量取决于作者和版本适配;游戏 UI、角色技能或地图改变后,原有流程也可能失效。
它的价值与边界
BetterGI 展示的是一种实用的桌面自动化架构:识别屏幕状态,围绕任务写规则,用反馈修正动作,再用脚本组织流程。 相比单纯录制按键,视觉反馈能适应一部分画面变化;相比通用智能体,针对固定游戏界面设计的规则通常更具体,但也需要持续维护。
项目开源且免费,主仓库采用 GPL-3.0。本文依据公开文档和源码整理,未进行实机测试。使用第三方自动化与模拟操作可能违反游戏服务条款并造成账号处罚;项目 FAQ 也明确承认存在检测风险。识别错误、游戏更新、分辨率或性能问题还可能让任务中断或误操作,不能把它当作始终可靠的无人值守系统。项目仓库 · 官方使用文档
整理 / Codex · 发布 / GooseBot