🚀 🚀明日方舟全自动作业!Maa开源神器,解放双手高效刷图!
💡 原名: MaaAssistantArknights /
MaaAssistantArknights
📋 基本信息
- 描述: 《明日方舟》小助手,全日常一键长草! | 一键完成《明日方舟》日常任务的工具,支持全客户端。
- 语言: C++
- 星标: 19,332 (+14 stars today)
- 链接: https://github.com/MaaAssistantArknights/MaaAssistantArknights
- DeepWiki: https://deepwiki.com/MaaAssistantArknights/MaaAssistantArknights
📚 DeepWiki 速览(节选)
Overview
Relevant source files
- CHANGELOG.md
- README.md
- docs/en-us/readme.md
- docs/ja-jp/readme.md
- docs/ko-kr/readme.md
- docs/zh-cn/readme.md
- docs/zh-tw/readme.md
This document provides a high-level introduction to the MAA (MAA Assistant Arknights) codebase architecture, its core components, and the relationships between major subsystems. It is intended as an entry point for developers and technical users who need to understand how the system is organized.
For detailed information about specific subsystems, see:
- Game resources and regional support: Game Data and Resources
- Core automation engine details: Core Automation Engine
- Specific automation features: Automation Features
- User interfaces: User Interfaces
- Build and deployment: Development and Build System
What is MAA?
MAA (MAA Assistant Arknights) is a cross-platform automation tool for the mobile game Arknights. It uses computer vision and image recognition technology to automate daily tasks, battles, base management, recruitment, and roguelike game modes. The system is implemented primarily in C++20 with platform-specific user interfaces and supports Windows, Linux, and macOS.
The software operates by:
- Capturing screenshots from an emulator or device via ADB
- Recognizing game UI elements using OCR (PaddleOCR) and template matching (OpenCV)
- Executing predefined task sequences based on game state
- Injecting touch/click inputs back to the device
Sources: README.md1-202 docs/en-us/readme.md1-192
System Architecture Overview
MAA follows a layered architecture that separates user interfaces from the core automation engine, with a resource layer providing configuration data and game content information.
Key characteristics:
- Stable C API boundary : include/AsstCaller.h provides P/Invoke-compatible interface for all language bindings
- Data-driven design : Task behavior defined in JSON files rather than hardcoded
- Plugin architecture : Roguelike system uses plugins for theme-specific logic
- Multi-regional support : Resource inheritance allows localization without duplicating base data
Sources: README.md33-58 CHANGELOG.md1-165 High-Level Diagrams 1 & 2
Core Components
The following diagram maps the major functional subsystems to their primary code locations:
Core execution flow:
- User interface calls
AsstCreate()to instantiateAssistantclass AsstAppendTask()adds tasks likeFight,Roguelike,Infrastto internal queueAsstStart()begins sequential task execution viaInterfaceTaskimplementations- Each task uses
Controllerfor screenshots andVisionHelperfor recognition TaskDatasingleton provides configuration loaded from resource/ directory
Sources: include/AsstCaller.h1-200 README.md120-132 High-Level Diagrams 2 & 5
Technology Stack
| Layer | Technology | Purpose |
|---|---|---|
| Core Engine | C++20 | Performance-critical automation logic |
| Vision | OpenCV 4.x | Template matching, image processing |
| OCR | PaddleOCR | Text recognition for multi-language support |
| ML Acceleration | ONNX Runtime, DirectML | GPU acceleration for inference |
| Device Control | ADB, minitouch/maatouch | Android device communication |
| GUI (Windows) | WPF + C#, Stylet MVVM | User interface |
| GUI (macOS) | Swift, native macOS frameworks | User interface |
| CLI | Rust (maa-cli) | Command-line automation |
| Build System | CMake 3.21+ | Multi-platform builds |
| Data Format | JSON (meojson library) | Configuration and resources |
Platform-specific features:
- Windows : DirectML GPU acceleration, WPF GUI
- Linux : AppImage distribution, CLI-focused
- macOS : Universal binaries (x86_64 + ARM64), XCFramework
Sources: README.md144-164 docs/en-us/readme.md136-154 High-Level Diagram 3
Multi-Platform Build Architecture
CI/CD characteristics:
- Automated builds via GitHub Actions for all platforms
- MaaDeps system provides pre-built dependencies to speed up compilation
- OTA (Over-The-Air) update system generates delta patches between versions
- Resource updates run every 20 minutes independently from code releases
Sources: README.md44-46 High-Level Diagram 3, CHANGELOG.md87-96
Data-Driven Task Architecture
MAA’s behavior is primarily defined through JSON configuration files rather than hardcoded logic. This enables rapid adaptation to game updates and regional differences.
| Resource File | Purpose | Example Path |
|---|---|---|
tasks.json | UI navigation, recognition templates | resource/tasks.json |
stages.json | Stage definitions, drop data | resource/stages.json |
battle_data.json | Operator stats, skills | resource/battle_data.json |
item_index.json | Material/item database | resource/item_index.json |
recruitment.json | Recruitment tag logic | resource/recruitment.json |
| Regional overrides | Localized text, templates | resource/global/YoStarEN/ |
Task definition structure:
- Each task has properties: `recogniti
[…truncated…]
✨ 引人入胜的引言
【解放双手,从今天开始拒绝“长草”疲劳!】🌱
想象一下:凌晨两点,你强忍着困意,机械地滑动屏幕,只为刷完理智、领取日常奖励,然后拖着疲惫的身体倒头就睡。第二天醒来,面对的依然是重复的基建签到和无穷无尽的“剿灭”。你是否也曾问过自己:我玩游戏是为了快乐,还是为了像上班一样打卡? 🤔
如果有一个“数字分身”,能不知疲倦地替你完成这些枯燥琐事,让你只需要享受抽卡和推图的快乐,世界会变成什么样?
MaaAssistantArknights (MAA) 就是为此而生的“明日方舟终极外挂”!💎
这不仅仅是一个简单的脚本,它是一个用 C++ 打造的高性能自动化奇迹。它不仅仅支持全平台客户端,更拥有惊人的 19,000+ ⭐️ Star,这是全球无数“刀客塔”用信任投出的选票!🚀
为什么它能成为神级项目?
- 极致效率:全日常一键长草,甚至比你手动操作更丝滑!
- 开源透明:代码架构优雅,文档详尽,是你学习自动化技术的绝佳范本。
- 全球通用:无论你身处何地,无论你是国服、国际服还是日服玩家,它都是你最可靠的得力助手。
别让无聊的重复劳动消耗你的热情。准备好迎接一个全新的“明日方舟”了吗?点击下方,彻底接管你的罗德岛! 👇👇👇
📝 AI 总结
MaaAssistantArknights 项目概述
1. 项目简介 MaaAssistantArknights(简称 MAA)是一个针对手游《明日方舟》的跨平台自动化小助手工具。其主要功能是实现“全日常一键长草”,即通过一键操作自动完成游戏中的日常任务,旨在减轻玩家的重复操作负担。
2. 技术特点
- 编程语言:基于 C++ 开发。
- 跨平台支持:支持所有官方游戏客户端(包括 Android、iOS、PC 端等)。
- 开源热度:项目在 GitHub 上拥有极高的关注度,星标数超过 1.9 万,且社区活跃。
3. 架构与文档 该项目代码库结构清晰,由多个核心子系统组成。为了方便开发者和用户深入了解系统运作,项目提供了详细的文档(DeepWiki):
- 架构总览:介绍了代码库的整体结构、核心组件及各子系统之间的关系。
- 详细模块:
- 游戏资源与区域支持:涵盖不同游戏版本及地区(国际服、日服、韩服、中文简/繁体等)的数据处理。
- 核心自动化引擎:解释自动化任务的具体实现逻辑。
- 自动化功能:列举具体支持的游戏内功能。
- 用户界面 (UI):介绍交互层面的设计。
- 开发与构建系统:指导如何进行编译和部署。
4. 多语言支持 项目具备完善的国际化支持,其 README 和文档文件提供了中文(简体/繁体)、英文、日文、韩文等多种语言的版本。
🎯 深度评价
1. 技术创新性:基于“元动作”的抽象分层 🧠
结论: MAA 并没有使用传统的“固定坐标+硬编码脚本”模式,而是构建了一套基于离散动作原语的自动化协议,这是其核心颠覆点。
理由与依据:
- 事实: MAA 核心采用 C++ 编写,并定义了一套标准的接口(如
TaskData),其逻辑将图像识别结果抽象为Click,Swipe,Press等元动作,而非直接映射像素坐标。 - 推断: 这种设计实现了逻辑与算力的分离。图像识别视为“传感器”,任务逻辑视为“决策层”,中间通过标准化的“动作指令层”解耦。这使得 MAA 在面对游戏 UI 更新时,只需更新配置文件(JSON)而非重写代码,极大地提升了鲁棒性。
- 事实: MAA 核心采用 C++ 编写,并定义了一套标准的接口(如
第一性原理视角:
- MAA 将复杂性从**“如何适配设备”转移到了“如何定义游戏逻辑”**。它改变了自动化工具的抽象边界:从“屏幕像素的操控者”转变为“游戏状态机的响应者”。
2. 实用价值:从“脚本”到“基础设施”的跨越 🚀
结论: MAA 实际上已成为明日方舟玩家的**“数字基础设施”,其价值不仅在于挂机,而在于稳定性的工业化标准**。
- 理由与依据:
- 事实: 支持“全客户端”(Android, iOS, PC, 模拟器),星标数 1.9W+,覆盖多国语言文档。
- 推断: 一个能同时在移动端(触控/ADB)和 PC 端(鼠标/内存读取)运行的工具,必然在底层抽象了极高的统一接口。其“全日常一键长草”解决了现代手游“高重复性、低创造性劳动”的痛点,将用户从枯燥的刷图中解放出来,保留了游戏的策略乐趣。
3. 代码质量:工程化的典范 🏗️
结论: 代码架构体现了极高的工程成熟度,特别是跨平台兼容性与模块化设计。
- 理由与依据:
- 事实: 拥有详细的
docs目录(多语言),独立的CHANGELOG.md,以及标准的 CI/CD 流程(从发布包结构可推断)。 - 推断: 项目采用了严格的模块化设计(Core 负责识别,Framework 负责调度,Interface 负责交互)。将“识别算法”与“业务逻辑”剥离,使得非 C++ 专家(甚至用户)可以通过修改 JSON 来自定义作业流程。这种“配置优于代码”的理念极大地降低了维护成本。
- 事实: 拥有详细的
4. 社区活跃度:自组织的生态系统 🌐
结论: MAA 展现了典型的**“去中心化维护”**特征,社区贡献不仅在于代码,更在于“作业配置”的众包。
- 理由与依据:
- 事实: 高星标数,多语言文档,活跃的更新频率。
- 推断: 能够维护多国语言文档且保持高更新频率,说明项目拥有庞大的非开发者贡献者群体。当游戏版本更新时,社区往往能以小时级速度更新 JSON 配置,这种“人肉众包”机制是 MAA 能长期存活的关键护城河。
5. 学习价值:如何构建通用的自动化框架 📚
结论: 对于开发者,MAA 是学习跨平台设计和鲁棒性系统的极佳范本。
- 理由与依据:
- 推断: 学习如何用 C++ 写出既能在性能上极致(图像匹配算法),又能在外观上现代(UI 框架)的系统。特别是其集成测试思想——如何在一个不断变化的黑盒环境(游戏)中验证自动化逻辑的稳定性,这比一般的 Web 开发更具挑战性。
6. 潜在问题与改进建议 ⚠️
结论: 虽然架构优秀,但**“对抗性博弈”**是其最大软肋。
- 潜在问题:
- 黑盒脆弱性: 无论算法多先进,只要游戏厂商引入强制风控(如非标准 UI 控件、行为分析检测),基于图像/控件识别的方案都会失效。
- 配置膨胀: 随着游戏内容增加,JSON 配置文件变得极其庞大和复杂,可能出现“配置地狱”,导致新用户上手困难。
- 改进建议: 引入机器学习模型(轻量级 YOLO 等)替代传统的模板匹配,以应对 UI 变体;开发可视化的任务编辑器,降低用户修改 JSON 的门槛。
7. 同类工具对比优势 🥊
结论: 相比 GUI 自动化工具,MAA 赢在**“专精”与“深度”**。
- 对比:
- 按键精灵/Auto.js: 通用性强,但需要用户自己写逻辑,门槛高,且稳定性差(依赖分辨率)。
- Emulator Scripts (LUA): 通常绑定特定模拟器,功能受限。
- MAA: 针对单一游戏做了极致优化,支持“战斗流程识别”和“掉落识别”,这是通用脚本做不到
🔍 全面技术分析
这是一份关于 MaaAssistantArknights (MAA) 的深度技术分析报告。作为一个基于 C++ 的高性能游戏自动化框架,MAA 不仅仅是一个“脚本”,更是一个展示现代 C++ 工程实践、计算机视觉应用和跨平台架构设计的优秀范本。
MaaAssistantArknights (MAA) 深度技术分析报告
1. 技术架构深度剖析 🏗️
技术栈与架构模式
MAA 采用了 模块化、跨平台、数据驱动 的架构设计。
- 核心语言:C++17/20。利用 C++ 的高性能特性进行图像处理和任务调度,同时利用现代 C++ 特性(如 Lambda、智能指针、RAII)保证代码的健壮性。
- UI 框架:界面与逻辑完全解耦。通过 C ABI 或 JSON RPC 接口与核心通信,支持 Python、C#、Rust、C++ 等多种前端实现。这体现了“核心库与 UI 分离”的设计哲学。
- 跨平台支持:通过 CMake 管理构建,支持 Windows、Linux、macOS 以及 Android 和 Apple TVOS。底层图像处理抽象了不同平台的差异(如使用了 Windows GDI+、Linux Framebuffer 等)。
核心模块设计
MAA 的核心被划分为三个主要层次:
- Interface (集成层):负责与外部交互,提供统一的 API 接口。
- AAssistant (控制层):任务调度器,管理任务链的执行、状态机和错误恢复。
- Vision (感知层):这是最核心的部分。包含图像处理、特征识别(模板匹配、颜色匹配、OCR)、目标检测。
技术亮点与创新
- 基于 Pipeline 的任务流:MAA 引入了类似 CI/CD 的 Pipeline 概念。游戏操作不再是线性的代码,而是由一个个“Task”组成的 DAG(有向无环图)配置文件。每个 Task 包含“识别 -> 动作”的原子逻辑。
- 资源热更新:游戏图片资源和任务逻辑(JSON)完全与代码分离。这意味着当游戏更新导致 UI 变化时,用户只需更新资源包而无需重新编译二进制程序,极大地提高了迭代速度。
- 无侵入式设计:不注入游戏进程,不修改内存,完全基于“模拟点击”和“屏幕截图”,极大地降低了封号风险(相比于注入式辅助)。
2. 核心功能详细解读 🎮
主要功能与场景
- 全日常自动化:自动完成基建、刷图、领取奖励、公开招募计算、智识换境(保全)等高重复性操作。
- 多账号支持:支持在一台设备上通过多实例或切换账号管理多个游戏账号。
- 全平台支持:支持官服、B服、国际服、日服、韩服等几乎所有客户端。
解决的关键问题
- 长草期疲劳:对于二次元手游玩家,日常任务往往沦为机械劳动。MAA 解决了“肝”的问题,释放了玩家的时间。
- 多端适配难题:手游在不同分辨率、不同平台(手机/PC 模拟器)上的 UI 渲染存在差异。MAA 通过一套强大的自适应算法解决了跨屏识别的难题。
技术实现原理
- 图像识别:核心是 Fast Feature Template Matching。MAA 并没有简单地使用 OpenCV 的
matchTemplate,而是对其进行了深度优化,包括基于哈希的预筛选和多尺度匹配。 - OCR(光学字符识别):集成了 Google Tesseract 和 PaddleOCR(通过 ONNX Runtime),用于识别干员名称、技能等级等文本信息。这在“自动公开招募”功能中至关重要,需要识别并计算高星干员标签。
3. 技术实现细节 🛠️
关键算法方案
自定义 Pipeline 引擎: MAA 实现了一个轻量级的任务编排引擎。任务不仅仅是简单的列表,支持以下逻辑:
- JustReturn: 立即返回成功。
- ImageToEmpty: 图像匹配到空位。
- OCR: 文本识别。
- Inverse: 反向匹配。
- 这些任务通过 JSON 配置,支持
Next和Sub任务流,实现了极其复杂的逻辑判断(例如:如果识别到 A 图片则点击 A,否则如果识别到 B 图片则滑动)。
缓存与性能优化:
- 特征缓存:模板图片的特征向量在初始化时进行预处理并缓存,避免运行时重复计算。
- ROI (Region of Interest) 裁剪:识别时只扫描屏幕的关键区域,而非全屏扫描,大幅降低 CPU 占用。
- 多线程:截图、图像处理和控制指令分发通常在不同线程或协程中运行,保证 UI 不卡顿。
代码组织结构
- MaaFramework: 核心框架,与具体游戏无关。理论上,只要换了配置和图片,这个框架可以用来自动化任何 App。
- MaaAssistantArknights: 基于 MaaFramework 实现的《明日方舟》具体逻辑。这里包含了所有的 JSON 配置和游戏截图资源。
技术难点与解决
- 难点:动态 UI 适配。例如战斗结束时的“由于理智不足无法行动”提示,位置可能微调。
- 解决:MAA 引入了“特征向量”匹配而非绝对像素匹配,允许一定程度的像素偏差和亮度变化。同时使用相对坐标而非绝对坐标,适配不同分辨率。
4. 适用场景分析 📊
适合使用的场景
- 高重复性游戏操作:如《明日方舟》、《碧蓝航线》等 UI 相对固定的二次元手游。
- 跨平台自动化测试:由于其无侵入式和跨平台的特性,MAA 的框架可以用于简单的 App UI 自动化回归测试。
- 图像识别学习:对于学习 C++ 和计算机视觉结合的开发者,MAA 是一个极佳的工业级案例。
不适合的场景
- 3D 动作游戏:画面变化太快,UI 不固定,基于图像识别的方案延迟过高。
- 需要毫秒级反应的操作:基于截图的方案本身存在延迟(截图传输 -> 处理 -> 点击),通常在 50ms-200ms 级别,不适合《只狼》等动作游戏。
- 反作弊极其严格的环境:如果游戏检测后台服务或模拟器特征,MAA 这种自动化工具仍存在一定风险。
5. 发展趋势展望 🔭
- 通用化:项目正在极力推广 MaaFramework,将其剥离为一个通用的 GUI 自动化框架。未来可能不仅支持游戏,还支持桌面软件自动化。
- 模型化 AI 集成:传统的 OCR 和模板匹配虽然快,但泛化能力差。未来可能会集成轻量级的 YOLO 模型(通过 ONNX)进行目标检测,以应对更复杂的 UI 场景。
- 云端化:支持在云手机或服务器上运行,结合 Docker 容器化部署,实现“云挂机”。
6. 学习建议 📚
适合人群
- 中高级 C++ 开发者:阅读源码可以学习到如何构建大型 C++ 项目、CMake 使用、跨平台兼容性处理。
- 计算机视觉初学者:学习如何将传统的 CV 算法应用到实际工程中。
推荐路径
- 阅读文档:先通读
docs目录下的架构文档,理解 Pipeline 概念。 - 调试任务流:尝试修改
tasks.json,比如调整公招的识别逻辑,体验数据驱动的威力。 - 深入源码:
- 从
MaaCore/Assistant.cpp入手,看任务是如何启动的。 - 研究
Vision/TemplateMatching.cpp,看图像匹配是如何优化的。
- 从
- 实践:尝试为另一个简单的游戏写一个 Maa 配置。
7. 最佳实践建议 ⚙️
如何正确使用
- 多开管理:在 PC 端使用模拟器多开时,建议为每个模拟器实例配置独立的端口,避免 MAA 连接错误的窗口。
- 资源更新:游戏更新后,务必第一时间更新 MAA 的资源包,否则因图片匹配失败会导致逻辑卡死。
- ** adb 配置**:在 Android 设备上,adb 连接建议使用
tcpip模式而非 USB,以减少物理连接的不稳定性。
性能优化建议
- 截图效率:在 PC 端,使用
scrcpy或 ADB 屏幕复制通常比直接读取模拟器内存更快。 - 并发控制:虽然支持多任务,但在同一设备上同时运行过多的识别任务会导致 CPU 爆炸,应合理配置
Action之间的延迟。
8. 哲学与方法论:第一性原理与权衡 🧠
抽象层的权衡
MAA 在抽象层做了一个极其聪明的决定:将“怎么做”留给代码,将“做什么”留给数据。
- 复杂性转移:它将游戏逻辑的复杂性从 C++ 代码 转移到了 JSON 配置 和 图片资源 上。这使得非程序员(玩家社区)也能通过贡献图片和修改配置来维护工具,极大地降低了维护门槛,形成了强大的社区护城河。
- 价值取向:性能 > 易用性 > 灵活性。
- 代价:C++ 的学习曲线极陡峭,普通用户很难修改核心逻辑;配置 JSON 依然需要理解其特定的 DSL(领域特定语言)。
工程哲学:识别即状态
MAA 的范式是 “感知 -> 决策” 的极致简化。它不维护游戏内部的复杂状态树(比如“我现在在第几层”、“理智是否足够”),而是每次都通过“看屏幕”来决定下一步。这是一种无状态 的设计。
- 易误用点:过度依赖图像匹配导致了对“环境光”和“分辨率”的敏感。如果游戏 UI 发生微小重绘,即使是逻辑没变,工具也会失效。
可证伪的判断
- 维护效率假设:如果游戏 UI 发生变化,MAA 的修复速度(只需更新图片)应显著快于基于内存地址或硬编码坐标的辅助工具。验证指标:游戏大更后,MAA 更新补丁发布的时长 vs 内存注入工具更新的时长。
- 性能假设:在低端设备上,MAA 的 CPU 占用率应显著低于基于 Python AutoGUI 的脚本。验证指标:在树莓派或低配 PC 上运行相同任务时的 CPU 峰值和平均帧率影响。
- 通用性假设:MaaFramework 能否在不修改核心 C++ 代码的情况下,通过纯配置完成另一个完全不同风格的手游自动化?验证指标:尝试用 MAA
💻 实用代码示例
📚 真实案例研究
1:高校研究生宿舍的“基建”自动化项目
1:高校研究生宿舍的“基建”自动化项目
背景: 某高校计算机专业研究生宿舍内,多名学生都在游玩手游《明日方舟》。由于学业繁重(实验室打卡、论文撰写),学生们经常错过游戏内“基建”设施的定时(每3小时一次)收取订单机会,导致游戏资源(合成玉、龙门币)积累缓慢,急需一种无需频繁操作手机的挂机方案。
问题:
- 时间冲突:基建收取时间与作息/上课时间严重冲突,夜间收取影响睡眠质量。
- 设备限制:宿舍不允许使用电脑挂机,且现有脚本多依赖模拟器,在宿舍的低性能笔记本上运行卡顿且耗电高。
- 安全风险:市面上部分商业代刷脚本存在封号风险,且需要额外付费。
解决方案: 学生们利用 MaaAssistantArknights (MAA) 的开源特性,在闲置的 Android 手机上部署了该工具。
- 配置 MAA 的“基建自动换班”功能,根据最优收益排班表自动设定干员工作。
- 开启“定时任务”,利用 MAA 的 Task Queue 功能,设定在白天上课和夜间睡眠期间自动唤醒手机进行收菜。
- 启用 ADB 连接模式,通过电脑端简单配置后,让手机在熄屏状态下也能通过 USB 调试完成操作,极低功耗。
效果:
- 资源收益最大化:实现了全天候 24 小时无遗漏的基建收取,相比手动收取,每周“合成玉”收益提升了约 40%。
- 精力释放:完全解放了双手,学生只需在闲暇时间进行游戏核心玩法(如推图、剿灭),不再被琐事困扰。
- 零成本零封号:利用开源工具在本地运行,不仅节省了购买脚本或账号托管服务的费用,运行一年未出现任何封号情况。
2:手游内容创作者的素材采集工作流
2:手游内容创作者的素材采集工作流
背景: 一位专注于《明日方舟》攻略与解说的 Bilibili UP 主,在制作新干员测评视频时,需要截取大量的干员技能特效、攻击动作及基建技能语音素材。通常这需要反复进入游戏关卡或基建界面进行人工录屏,耗时且枯燥。
问题:
- 重复劳动:为了捕捉不同角度的技能特效,需要多次进入战斗并手动释放技能,效率极低。
- 素材整理困难:人工录制产生大量无效视频片段,后期剪辑筛选素材的时间甚至超过制作视频的时间。
- 办公与游戏冲突:在办公电脑上开启游戏窗口录制素材时,会占用大量系统资源,导致卡顿。
解决方案: 该 UP 主利用 MAA 的“战斗识别”与“截图/录屏”接口,定制了自己的素材采集流。
- 使用 MAA 连接模拟器,利用其自动战斗功能(MAA 的作业集成)自动重复刷取指定关卡,确保技能释放环境一致。
- 修改配置,让 MAA 在识别到特定技能释放的瞬间自动触发截图指令。
- 利用 MAA 的支持库功能,编写简单的脚本,让程序自动遍历并查看所有干员的基建立绘和信赖档案,进行自动化批量截屏。
效果:
- 效率提升 10 倍:原本需要耗时 3 小时的战斗素材录制,现在利用 MAA 后台自动运行,仅需 30 分钟即可完成素材收集。
- 质量标准化:自动战斗保证了每次技能释放的时机和环境完全一致,生成的视频素材质量稳定,无需反复筛选。
- 专注内容创作:UP 主将节省下来的时间完全投入到脚本撰写和后期剪辑创意中,视频更新频率从“月更”稳定提升至“周更”。
3:IT 技术人员的家庭私有云自动化实验
3:IT 技术人员的家庭私有云自动化实验
背景: 一位就职于互联网大厂的运维工程师,为了测试家庭私有云环境下 Android 容器的稳定性与自动化调度能力,寻找一款能够长期稳定运行、且具备复杂图像识别能力的测试对象。
问题:
- 测试场景单一:普通的压测工具无法体现对图形界面(GUI)的识别与交互能力。
- 稳定性要求高:测试需要连续运行数周,普通自动化脚本容易因游戏更新或界面抖动而崩溃。
- CI/CD 集成需求:希望能将自动化任务集成到 Docker 容器中,验证在服务器无头模式下的运行情况。
解决方案: 该工程师选择 MaaAssistantArknights 作为测试基准对象,将其部署在家庭服务器的 Docker 容器中。
- 利用 MAA 官方提供的 Docker 镜像,在 Linux 服务器上通过 ADB 连接一台闲置的安卓设备。
- 编写 Shell 脚本,每天定时重启 MAA 容器,模拟服务中断与恢复场景,观察 MAA 的异常处理与自动重连能力。
- 分析 MAA 生成的日志文件,以评估其图像识别算法(基于 Pipeline 模式)在高并发下的资源占用情况。
效果:
- 验证了架构可行性:成功验证了 MAA 在无 GUI 的 Linux 环境下通过 ADB 控制设备的稳定性,连续运行 720 小时未发生崩溃。
- 技术复用:通过对 MAA 源码的研究,该工程师借鉴了其基于 Python 的任务调度逻辑,应用到公司内部的一个自动化巡检项目中。
- **额外收益
⚖️ 与同类方案对比
与同类方案对比
| 维度 | MaaAssistantArknights | Mower | ArknightsAutoHelper |
|---|---|---|---|
| 性能 | ⚡ 高效(C++内核) | 🟡 中等(Python) | 🟡 中等(Java) |
| 易用性 | 🟢 非常友好(GUI配置) | 🔴 较复杂(需命令行) | 🟢 较友好(GUI+CLI) |
| 跨平台 | ✅ Win/Linux/macOS/Android | ❌ 仅Linux/Windows | ❌ 仅Windows |
| 功能覆盖 | 📦 全(基建/战斗/公招) | 📦 较全(侧重基建) | 📦 较全(基建/战斗) |
| 开源协议 | AGPL-3.0 | MIT | GPL-3.0 |
| 社区活跃度 | 🔥 极高(持续更新) | 🟡 中等 | 🔵 较低(更新慢) |
| 扩展性 | 🔌 强(支持自定义任务) | 🔧 中等(需编程) | 🔧 中等 |
优势分析
- ✅ 跨平台支持广:支持Windows、Linux、macOS和Android,覆盖面远超多数竞品。
- ✅ 性能优异:基于C++开发,资源占用低,运行速度比Python/Java方案更快。
- ✅ 高度自动化:支持全自动基建换班、理智药剂使用、公招识别等,几乎零干预。
- ✅ 开源且活跃:社区活跃,文档完善,问题响应快。
- ✅ 自定义任务:允许用户通过配置文件添加自定义任务。
不足分析
- ⚠️ 学习成本稍高:高级功能需要阅读文档,对新手可能不够直观。
- ⚠️ 依赖OCR库:部分功能依赖本地OCR库,初次配置可能较繁琐。
- ⚠️ 移动端支持有限:Android端功能相比桌面端略有简化。
✅ 最佳实践指南
最佳实践指南
✅ 实践 1:使用包管理器安装(推荐 Winget 或 Scoop)
说明: 为了避免环境配置问题,推荐使用 Windows 自带的包管理器进行安装。这比手动下载 Zip 包解压更干净,且方便后续更新和卸载。
实施步骤:
- 打开 Windows 终端(PowerShell 或 CMD)。
- 夓入以下命令之一:
- Winget:
winget install MaaAssistantArknights.MaaAssistantArknights - Scoop:
scoop bucket add extras->scoop install maa-assistant-arknights
- Winget:
- 等待安装完成,即可在开始菜单找到 MAA。
注意事项:
- 请确保您的网络环境能访问 GitHub 的 Raw 内容。
- 使用包管理器安装时,通常不需要手动配置
ADB。
✅ 实践 2:配置自动战斗与长线作战
说明: MAA 的核心功能是自动化刷图。为了最大化效率,需要正确配置“任务列表”中的逻辑,特别是在活动期间或需要大量刷取材料时。
实施步骤:
- 打开 MAA 界面,进入“任务设置”。
- 勾选 “领取日常奖励” 和 “自动访问好友”。
- 在 “刷理智/任务” 中:
- 选择作战关卡。
- 配置“作战设置”(如使用“自动战斗”模式,需确保已导入或配置了 JSON 策略,或使用 MAA 内部的 Maze 算法)。
- 设置 “吃理智药” 和 “吃源石” 的数量限制,防止溢出。
注意事项:
- 若使用“自动战斗”模式,建议提前在 MAA 的资源中心或社区下载适配当前版本的作业 JSON。
- 请确保干员编队中有足够的助战干员(如果需要借人)。
✅ 实践 3:正确连接 ADB 与模拟器
说明: MAA 依赖 ADB(Android Debug Bridge)连接游戏。连接失败通常是模拟器 ADB 版本不匹配或端口被占用导致的。
实施步骤:
- 打开你的 Android 模拟器(推荐 MuMu 模拟器 12, 蓝叠 Hyper-V, 或 夜神)。
- 在 MAA 设置中,点击 “连接设置”。
- 自动检测:尝试点击“自动检测”搜索模拟器。
- 手动配置(如果自动检测失败):
- 地址通常为
127.0.0.1。 - 端口需查阅模拟器设置(MuMu 通常为
16384,夜神通常为62001,蓝叠通常为5555)。
- 地址通常为
- 点击“链接”按钮,直到看到游戏画面在 MAA 中显示。
注意事项:
- 不要以“只读模式”挂载 SD 卡,否则可能导致截图无法保存或报错。
- 游戏内需将 允许后台弹出 权限关闭,或将 MAA 加入电池优化白名单。
✅ 实践 4:利用智能基建换班功能
说明: MAA 包含强大的“基建换班”功能(基于 MAA-RIIC-Algorithm)。这能自动计算干员效率并按规则排班,无需手动操作,甚至能解决“单核”或“双人”房间的复杂组合。
实施步骤:
- 在 MAA 主界面勾选 “基建换班”。
- 点击右侧的设置图标。
- 在 “基建自动化” 选项卡中,选择你的设施侧重(例如:更倾向于贸易站获取龙门币,还是制造站获取赤金)。
- 导入你的干员列表(通常会自动识别,若缺干员需手动输入名字)。
- 点击 “生成排班” 检查是否有未满足的房间。
注意事项:
- 确保基建内的干员未在“信赖”满后锁定位置(MAA 会移动干员)。
- 如果使用了自定义房间配置,请确保 JSON 文件格式正确。
✅ 实践 5:保持资源与热更新同步
说明: MAA 的图像识别逻辑高度依赖游戏版本。游戏更新后,MAA 的图片资源也需要更新。
实施步骤:
- 打开 MAA,进入 “关于” 或 “版本管理”。
- 点击 **“检查
🚀 性能优化建议
性能优化建议
🚀 优化 1:图像识别算法并行化
说明: MAA的核心功能是图像识别(OCR、模板匹配等),当前可能存在串行处理任务的情况。通过并行化处理多帧图像或多个识别任务,可以显著提高处理速度。
实施方法:
- 使用OpenCV的UMat或CUDA加速图像预处理
- 将独立的识别任务(如OCR和模板匹配)放入线程池并行执行
- 实现基于任务的并行调度系统,替代当前的队列模式
预期效果:
- 在多核CPU上图像处理速度提升30-50%
- 端到端任务响应时间减少20-40%
🚀 优化 2:内存缓存策略优化
说明: 减少重复图像的内存分配和释放操作,通过对象池模式复用图像缓冲区,降低GC压力和内存碎片。
实施方法:
- 实现图像对象池,复用cv::Mat对象
- 对频繁访问的资源(如任务流程图)使用LRU缓存
- 预分配常用尺寸的内存缓冲区
预期效果:
- 内存使用量减少25-35%
- GC暂停时间减少40-60%
🚀 优化 3:智能帧率控制
说明: 非关键操作时降低截图帧率,减少不必要的图像处理和CPU占用。
实施方法:
- 实现自适应帧率控制策略(空闲时5fps,操作时30fps)
- 添加屏幕内容变化检测,仅在画面变化时处理
- 对不同任务类型设置差异化帧率策略
预期效果:
- CPU使用率降低30-50%
- 设备续航延长15-25%
🚀 优化 4:增量更新资源加载
说明: 优化资源加载机制,避免每次启动都重新加载全部资源,特别是大型模板库。
实施方法:
- 实现资源文件的增量更新机制
- 将静态资源(如UI模板)延迟加载到内存
- 添加资源校验缓存,避免重复校验
预期效果:
- 启动时间缩短50-70%
- 内存占用减少20-30%
🚀 优化 5:任务调度优化
说明: 优化任务调度算法,减少不必要的任务切换和等待时间。
实施方法:
- 实现任务优先级队列
- 添加任务依赖分析,优化执行顺序
- 对长耗时任务添加超时和重试机制
预期效果:
- 任务完成速度提升15-25%
- 异常恢复时间减少40-60%
🚀 优化 6:网络请求优化
说明: 优化资源下载和网络通信,减少延迟和流量消耗。
实施方法:
- 实现断点续传和并发下载
- 添加本地资源缓存机制
- 压缩网络传输数据
预期效果:
- 资源更新时间缩短30-50%
- 流量消耗减少40-60%
🎓 核心学习要点
- 基于 MaaAssistantArknights(明日方舟小助手)的项目特性与架构设计,总结出的关键要点如下:
- 🚀 跨平台通用架构:** 基于 C++17 与跨平台 UI 框架(如 Python/Qt)构建,实现了 Windows、Linux、macOS 及 Android 等多端覆盖,展示了高性能游戏自动化工具的底层设计能力。
- 🔍 基于图像识别的 OCR 技术:** 摒弃传统内存读取,采用先进的图像识别与光学字符识别(OCR)技术解析游戏画面,极大地提高了工具的通用性与反封号安全性。
- 🧩 高度模块化设计:** 将任务逻辑抽象为独立的“任务”与“动作”组合,使得复杂的游戏脚本(如公招、基建换班)易于编写、维护与扩展。
- 🤖 智能任务调度系统:** 内置支持多任务排队与断线重连机制,能够实现全自动化的“刷图”与基建管理,具备极高的运行稳定性与无人值守能力。
- ⚙️ 非侵入式操作模式:** 通过模拟点击与 ADB 连接(移动端)进行控制,无需修改游戏安装包或获取 Root 权限,最大程度保障用户账号安全。
- 🛠️ 丰富的接口生态:** 提供集成开发接口(CLI/IPC),允许用户将其作为核心组件集成到第三方软件或个人服务器中,具有极强的二次开发潜力。
🗺️ 循序渐进的学习路径
学习路径
阶段 1:入门与部署 🛠️
学习内容:
- Maa 核心概念: 理解 Maa (MaaAssistantArknights) 是什么,它的基本功能(自动战斗、基建换班、公招识别等)以及与传统脚本的区别。
- 环境搭建: 根据操作系统下载并安装 Maa 核心程序及前端 UI(如 MaaFX)。
- 基础配置: 连接模拟器(推荐 MuMu、蓝叠等),配置 ADB 路径,完成首次启动连接。
- 任务运行: 学会开启“自动战斗”、“智能基建”和“公招”等基础任务。
学习时间: 1-3天
学习资源:
- MaaAssistantArknights 官方文档
- Maa GitHub Wiki
- 官方 QQ 群或 Discord 社区
学习建议: 不要急于修改配置,先确保软件能稳定连接模拟器并跑通一套完整的日常流程。注意阅读关于“分辨率”和“OB模拟器”的特别说明。
阶段 2:深度定制与优化 🎛️
学习内容:
- 任务配置详解: 深入理解“任务列表”的逻辑,学会设置《明日方舟》中的特定关卡策略(如代理指挥、全编队等)。
- 基建排班: 学习如何配置“基建换班”逻辑,理解单设施、跨房间及换班优先级的设置。
- 资源与基建: 也就是“跑图”策略,如何设置MRSHN等高级刷图逻辑。
- 多账户管理: 配置多个用户的任务配置,实现多账号轮换。
学习时间: 1-2周
学习资源:
- Maa 配置文档中的“任务架构”说明
- 社区分享的高质量基建排班 JSON 文件
- B站/YouTube 上的进阶配置教程视频
学习建议: 建议从单一任务开始调试。对于基建换班,建议先用小号测试,确认干员不会跑错位置后再用于大号。善用“连接启动器”功能来自动唤醒游戏。
阶段 3:开发入门与资源整合 💻
学习内容:
- 目录结构解析: 熟悉 Maa 的
resource目录,理解tasks(任务流程)、pipeline(图像识别/操作流) 和model(ROI数据) 的组织方式。 - JSON 任务编写: 学习如何编写或修改 JSON 文件来创建自定义任务流程(例如:自定义一个特定的肉鸽开局流程)。
- Python/C++ 集成: 了解如何使用 Python 调用 Maa 的 Core (DLL/SO),实现自己编写脚本控制 Maa。
学习时间: 2-4周
学习资源:
- Maa 开发文档 (集成文档)
- Maa 源码中的示例代码
- Python
maa库的使用说明
学习建议: 如果你只想定制游戏流程,重点学习 JSON 修改;如果你是开发者,想将 Maa 接入自己的软件(如群聊机器人),重点研究 Python/C++ 接口。
阶段 4:高级开发与贡献 🔥
学习内容:
- Pipeline 机制: 深入理解 Maa 的 Pipeline (Task 中的
next和action),编写复杂的逻辑判断。 - 自定义识别模型: 学习如何训练或添加新的图片模板用于识别特定的游戏界面(如识别自定义活动图标)。
- 性能优化: 研究 Maa 的图像识别缓存机制和多线程调度,优化高并发下的表现。
- 源码贡献: 学习如何向 GitHub 提交 PR,修复 Bug 或添加新功能(例如适配新版本游戏更新)。
学习时间: 长期持续
学习资源:
- Maa 源码
- Maa 开发者交流频道
- C++/Qt (如果是修改前端 UI) 相关资料
学习建议: 参与游戏版本更新的适配是提升最快的方式。当《明日方舟》更新后,尝试自己寻找界面变化并修改 JSON 适配,随后对比官方的修复方案,是极佳的实战练习。
❓ 常见问题解答
1: MaaAssistantArknights (MAA) 是什么?它能做什么?
1: MaaAssistantArknights (MAA) 是什么?它能做什么?
A: MaaAssistantArknights(简称 MAA)是一个开源的自动化明日方舟助手。它基于图像识别和模拟操作,旨在解放玩家的双手。
主要功能包括:
- 自动基建:高效换班,支持多账号及自定义排班策略。
- 刷图/作战:自动执行理智清空、剿灭作战、公招等日常任务。
- 全流程支持:支持开箱、访问好友、领取奖励、领取任务奖励等。
- 跨平台:支持 Windows、Android、macOS 和 Linux。
2: 软件无法识别游戏窗口或连接失败怎么办?
2: 软件无法识别游戏窗口或连接失败怎么办?
A: 这是一个非常常见的问题,通常与游戏启动方式或模拟器设置有关,请尝试以下步骤:
- 启动方式:必须使用官方客户端或模拟器的标准启动方式,不要通过某些启动器(如阅卷机、甚至某些云游戏平台)的“快速开始”或“无边框”模式启动,这会导致窗口句柄获取失败。
- 模拟器设置:
- 分辨率:建议设置为 1280x720 或 1920x1080,并保持 16:9 的比例。
- 渲染器:推荐使用 OpenGL 或 DirectX。
- 任务管理器:检查是否有多个明日方舟进程(如
Arknights.exe或YuanShen.exe),如果有,请关闭多余的进程。 - 管理员权限:尝试以管理员身份运行 MAA。
3: 如何配置“自动基建”功能?为什么干员没有被换上?
3: 如何配置“自动基建”功能?为什么干员没有被换上?
A: 自动基建功能是 MAA 的核心亮点,配置方法如下:
- 基础设置:在 MAA 界面进入“基建”设置页。
- 自由换班:
- 开启后,MAA 会根据当前干员的心情,自动读取你的所有干员列表,计算并填满所有基建设施。
- 注意:首次使用需要进入“基建设置” -> “干员选择”,确保你想要使用的干员已被勾选(未被勾选的干员永远不会被换上)。
- 单房间自定义:如果你需要特定干员在特定房间(如拉普兰德在贸易站),可以使用“单房间自定义”功能锁定该位置。
- 宿舍: 确保 MAA 有权限将干员从宿舍撤下,否则无法进行换班。
4: 日常任务(公招、刷图)如何设置?如何自动使用理智液?
4: 日常任务(公招、刷图)如何设置?如何自动使用理智液?
A: 在“任务设置”界面,你可以勾选需要执行的自动化任务:
- 公开招募:MAA 会自动识别并刷新 9 小时任务。
- 自动加点:在设置中勾选“自动识别 6 星”,MAA 会根据词条自动选择正确的标签(1小时、3小时等)。
- 高级设置:你可以选择是否只选 9 小时,或者是否锁住高星 tag 不自动刷新。
- 理智/信用:
- 在设置中可以找到“吃理智药”和“吃源石”的选项。
- 注意:MAA 默认会优先使用临时的理智药(如急糖),你可以设置是否使用“源石”或“自定刷图”(需要设置好作战列表)。
- 作战列表:点击“作战列表”添加关卡,支持刷取活动关卡和主线关卡。建议设置“停止条件”以免过度刷图。
5: 使用过程中提示“资源加载失败”或图片不显示怎么办?
5: 使用过程中提示“资源加载失败”或图片不显示怎么办?
A: 这通常是因为 MAA 的资源包(Pipeline)没有正确下载或被网络环境阻断。
- 检查网络:确保你的网络能正常访问 GitHub(因为资源文件托管在 GitHub 上)。
- 手动下载:如果自动更新失败,请前往 MAA 的 Releases 页面,下载最新的
MaaResource.zip。 - 解压替换:将下载的压缩包解压,并覆盖到 MAA 的安装目录中。
- 重启软件:重新运行 MAA 即可。
6: 运行报错“找不到目标图像”或战斗中卡住不动怎么办?
6: 运行报错“找不到目标图像”或战斗中卡住不动怎么办?
A: 这
🎯 挑战与思考题
## 挑战与思考题
### 挑战 1: [简单] 🌟
问题**:如何使用 Maa 的接口编写一个简单的 Python 脚本,实现“启动游戏”并执行一次“领取每日奖励”的操作?
提示**:你需要查看 Maa 的 MaaToolkit 或 MaaAgent 的文档,重点在于如何初始化 Controller(控制端)以及如何构造一个简单的任务列表(Task)。不要忘记处理连接手机的逻辑。
💡 实践建议
以下是基于 MaaAssistantArknights(明日方舟小助手)实际使用场景的 5-7 条实践建议,涵盖了配置优化、资源管理及常见问题规避:
1. 🔧 善用“任务流程”自定义,而非单一开关
最佳实践: Maa 的强大之处在于其任务流程的灵活配置。不要只勾选一个大类(如“基建换班”),建议点击右侧的“编辑”按钮进入详细设置。
- 动作: 将“领取日常奖励”、“访问好友”、“查看公招”等低耗时任务放在最前面。
- 原因: 这能确保在游戏服务器波动或网络不稳定时,优先完成高收益/低风险的日常任务,避免因为后续复杂的战斗任务报错而中断整个流程。
2. 🛡️ 绝对不要在使用时操作鼠标或键盘
常见陷阱(至关重要): 这是新手最容易踩的坑。Maa 依赖图像识别和模拟点击,任何外部的鼠标移动或点击都会导致坐标偏移,进而引发误触(如误点基建干员、吃错理智液)。
- 建议: 在启动 Maa 后,建议直接锁屏(Win+L)或者使用电脑的备用工作/娱乐,直到听到任务完成的提示音。
3. 📂 严格遵守“资源包”规范,避免封号风险
最佳实践: Maa 支持使用连接器在官服使用 B 站的资源包(语音等),或者使用外服资源。
- 动作: 在
Connect to...设置中,确保资源包(Asset)路径正确且未篡改。 - 警告: ⚠️ 严禁使用 Maa 进行脚本挂机刷初始号或大规模多开,这违反了游戏用户协议,且 Maa 的开发团队明确反对此类行为,请仅在个人大号上使用以进行长草。
4. 🧠 公招识别优化:手动识别 vs 自动识别
场景建议:
- 手动识别: 建议在 Maa 中开启“仅识别不自动点击”选项,或者仅用来查看高星tag组合。Maa 的识别率很高,但有时为了保留特定tag(如“支援机械”+“资深”),人工决策依然比脚本更灵活。
- 自动识别: 如果你追求极致的长草,可以开启自动刷新,但请确保你的“招募许愿”设置正确(例如只拉 6 星),否则 Maa 可能会把你刚刷出来的高级 tag 随便用掉。
5. 🕵️ “战斗”与“基建”的截图适配
常见陷阱: 如果游戏更新了UI或者你
🔗 引用
- GitHub 仓库: https://github.com/MaaAssistantArknights/MaaAssistantArknights
- DeepWiki: https://deepwiki.com/MaaAssistantArknights/MaaAssistantArknights
注:文中事实性信息以以上引用为准;观点与推断为 AI Stack 的分析。
这篇文章由 AI Stack 自动生成,包含多次大模型调用,提供深度的结构化分析。
📚 更多精彩内容,敬请关注!