不碰内存,用图像识别代打日常:MAA 的明日方舟自动化思路拆解 不碰内存用图像识别代打日常MAA 的明日方舟自动化思路拆解【免费下载链接】MaaAssistantArknights《明日方舟》小助手全日常一键长草| A one-click tool for the daily tasks of Arknights, supporting all clients.项目地址: https://gitcode.com/GitHub_Trending/ma/MaaAssistantArknightsMAAMaaAssistantArknights是一款基于图像识别的《明日方舟》自动化工具一键跑完理智刷图、基建换班、公开招募等全部日常。它不往游戏里注入脚本、也不读内存只认屏幕上的像素然后模拟点击。核心引擎用 C20 编写支持 Windows、Linux、macOS并提供 CLI 以及 Python、Rust、Golang 等多语言接口可以接进你自己的自动化流程。MAA 替你解决的日常麻烦先看活本身。明日方舟的日常高度重复刷战斗关卡烧理智、给基建换班、做公开招募、收委托、访友。单个动作都不难但每天手动来一遍是纯体力活而且刷完还得自己数刷了几次、掉了什么材料、基建下一班该换谁效率最高。再看手段的麻烦。按键宏只认固定按键游戏换个布局就失效读内存或注入脚本能直接操作游戏数据但会不会触发反作弊要自己赌。MAA 走的是第三条路把游戏画面当作唯一的信息来源先判断我现在在哪个界面再决定下一步点什么全程不碰游戏进程。跑完还能识别屏幕上的掉落数字把统计上传到企鹅物流这类数据站。MAA 的图像识别是怎么实现的为什么任务流程写成 JSON 配置MAA 的调度核心是一台配置驱动的状态机。仓库里 resource/tasks 下的任务就是一堆 JSON每个节点声明用什么算法识别algorithm、识别到后做什么动作action、成功后去哪个节点next、失败时去哪里兜底onErrorNext、最多跑几次maxTimes。以公招为例识别开始招募按钮、点击、识别公招结果界面的干员信息、记录、跳回按钮节点继续循环直到次数用尽。调度代码在 src/MaaCore/Task/ProcessTask 的循环本质就两步find_first 在候选列表里找出当前屏幕上第一个能识别到的节点run_action 执行该节点对应的点击、滑动或输入。这个拆分的意义在于游戏更新导致按钮换皮或挪位置时需要改的是资源里的模板图和 JSON 参数而不是重新编译 C 代码。维护者和社区在版本更新后修工具的成本被压到最低仓库里还专门有一份 task-schema 协议文档逐个字段解释规则。配置里也有几处为性能留的后门roi 可以缩小识别区域cache 表示这个目标位置永远不会变首次识别后只查同一个位置。代价是位置可能变化的目标必须显式关掉缓存配置者得自己判断。图像识别如何定位游戏界面元素游戏不暴露任何 API屏幕上的像素才是唯一可信的信息源。src/MaaCore/Vision/ 模块把识别拆成四种可按任务选择的算法在 JSON 里直接声明用哪种MatchTemplate 模板匹配把按钮截图存成模板图在屏幕上找最相似的区域匹配阈值由 templThreshold 控制OcrDetect 文字识别用 ONNX Runtime一个跨平台的机器学习模型推理引擎跑轻量模型认出屏幕上的数字和文本掉落数、理智值靠它FeatureMatch 特征点匹配应对光照、角度有变化的复杂场景JustReturn 不识别直接执行动作相当于流程里的纯干步骤。拆成四种而不是统一用一个模型是因为不同元素适合不同手段固定 UI 按钮用模板匹配最快会变的数字必须走 OCR而写死坐标只对一种分辨率有效所以 MAA 把所有 roi 和点击坐标统一到 1280x720 坐标系运行时自动缩放换分辨率不用改配置。跨平台控制层为什么有这么多 Controller看见是一半点到是另一半。识别出位置后总得有个东西执行点击而这个东西取决于你在哪跑游戏安卓模拟器MuMu、夜神之类走 ADB 接口——ADB 即 Android Debug Bridge控制安卓设备的命令行通道Windows 上游戏窗口走 Win32 APImacOS 用截屏加输入模拟真机触屏则交给 minitouch。打开 src/MaaCore/Controller/ 目录能看到这些平台实现并列存放但上层任务调用的始终是同一个抽象接口 Controller不关心背后是 ADB 还是 Win32。这层抽象解决的是一个很现实的问题同一套 JSON 任务流要能在不同模拟器、不同操作系统上零改动地跑起来。MAA 的安装与首次运行步骤只想用的话不用碰代码。从官网或 Releases 下载对应系统的安装包Windows x64 / macOS 通用版完整解压到一个不需要管理员权限的路径。在解压目录里以管理员身份运行 DependencySetup_依赖库安装.bat装 VC 运行库依赖。双击 MAA.exe 启动按界面引导连接你的游戏客户端即可。Linux 用户没有图形界面文档明确 GUI 暂不支持 Linux走 maa-cli 命令行。安装核心、初始化配置后开游戏、用 3 个理智药刷 BB-7、关游戏这个日常就是maa startup Official maa fight BB-7 -m 3 maa closedown更多预定义任务肉鸽、保全派驻、抄作业和自定义任务配置maa-cli 使用文档 里有完整说明。想自己编译的话比如改点识别逻辑Linux 下先克隆仓库注意要带上子模块git clone --recurse-submodules https://gitcode.com/GitHub_Trending/ma/MaaAssistantArknights然后运行 python tools/maadeps-download.py 拉取预构建的 OpenCV、ONNX Runtime 等第三方库再用 CMake 配置构建cmake -B build -DINSTALL_RESOURCEON -DCMAKE_TOOLCHAIN_FILEsrc/MaaUtils/MaaDeps/cmake/maa-x64-linux-toolchain.cmake cmake --build buildWindows 更简单cmake --preset windows-x64 之后用 Visual Studio 打开解决方案就能编译。MAA 的设计取舍与局限选图像识别就是选它的代价。模板匹配是像素级的看游戏把按钮图标换一版、你换了 UI 主题它就不认识了必须同步更新资源而读内存的方案没有这个问题但触发反作弊的风险是 MAA 不愿意押注的。图像识别也比读数据慢所以才有 roi 缩小搜索区域、cache 只查固定位置这类优化——本质是用假设位置不变换速度。核心用 C20 写图的是实时处理的性能和一套代码交叉编译到三个平台的能力代价是上手门槛高第三方依赖要么下载预构建库、要么自己编文档也坦言构建方式仍在讨论中建议以 CI 脚本为准。插件机制继承 AbstractTaskPlugin 注册新逻辑降低了加一种识别的成本但前提还是你会写 C。局限要如实说外服美、日、韩、繁中按文档说法大部分功能已支持但没有进行全面测试JSON 不支持注释任务流 schema 字段多、学习曲线陡官方建议装 VS Code 的 Maa Pipeline Support 插件辅助编写GUI 目前只有 Windows 和 macOS 两份。写在最后MAA 把没有 API、只有屏幕的游戏自动化做成了一套可维护的工程配置与代码分离、识别算法按场景拆分、控制层抽象统一多平台。想深入的话从 task-schema 协议文档读起再翻 src/MaaCore/Task/ 里 ProcessTask 的调度循环是最快的路径改配置则从 docs/zh-cn/protocol/task-schema.md 的字段对照表下手。【免费下载链接】MaaAssistantArknights《明日方舟》小助手全日常一键长草| A one-click tool for the daily tasks of Arknights, supporting all clients.项目地址: https://gitcode.com/GitHub_Trending/ma/MaaAssistantArknights创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考