🚀 🔥明日方舟全自动神器!解放双手,MaaAssistantArknights太强了!

💡 原名: MaaAssistantArknights /

  MaaAssistantArknights

📋 基本信息


📚 DeepWiki 速览(节选)

Overview

Relevant source files

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:

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:

  1. Capturing screenshots from an emulator or device via ADB
  2. Recognizing game UI elements using OCR (PaddleOCR) and template matching (OpenCV)
  3. Executing predefined task sequences based on game state
  4. 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:

  1. User interface calls AsstCreate() to instantiate Assistant class
  2. AsstAppendTask() adds tasks like Fight, Roguelike, Infrast to internal queue
  3. AsstStart() begins sequential task execution via InterfaceTask implementations
  4. Each task uses Controller for screenshots and VisionHelper for recognition
  5. TaskData singleton provides configuration loaded from resource/ directory

Sources: include/AsstCaller.h1-200 README.md120-132 High-Level Diagrams 2 & 5

Technology Stack

LayerTechnologyPurpose
Core EngineC++20Performance-critical automation logic
VisionOpenCV 4.xTemplate matching, image processing
OCRPaddleOCRText recognition for multi-language support
ML AccelerationONNX Runtime, DirectMLGPU acceleration for inference
Device ControlADB, minitouch/maatouchAndroid device communication
GUI (Windows)WPF + C#, Stylet MVVMUser interface
GUI (macOS)Swift, native macOS frameworksUser interface
CLIRust (maa-cli)Command-line automation
Build SystemCMake 3.21+Multi-platform builds
Data FormatJSON (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 FilePurposeExample Path
tasks.jsonUI navigation, recognition templatesresource/tasks.json
stages.jsonStage definitions, drop dataresource/stages.json
battle_data.jsonOperator stats, skillsresource/battle_data.json
item_index.jsonMaterial/item databaseresource/item_index.json
recruitment.jsonRecruitment tag logicresource/recruitment.json
Regional overridesLocalized text, templatesresource/global/YoStarEN/

Task definition structure:

  • Each task has properties: `recogniti

[…truncated…]


✨ 引人入胜的引言

凌晨两点,手机屏幕的微光映照着你疲惫的双眼。理智告诉你该睡觉了,但手指却像着了魔一样——再一次点开“公招”,再一次清算“理智”,再一次在基建里那个甚至没有BGM的房间里重复着繁琐的点击操作。🛌

这种令人窒息的“电子榨菜”式长草期,难道就是《明日方舟》的全部意义吗?

绝对不是!

请允许我为你介绍打破这一循环的神器——MaaAssistantArknights (MAA)

这不仅仅是一个外挂,它是博士们的**“数字分身”,更是基于 C++ 打造的全自动战斗美学**。想象一下,当你还在为计算最优公招组合焦头烂额时,MAA 已经在毫秒间识别了所有词条;当你还在枯燥地拖动干员进行战斗复现时,MAA 已经如同上帝般精准地完成了全部作业,甚至支持全平台客户端!🖥️📱

它拥有令人惊叹的 19,000+ GitHub Star,但这冰冷的数字背后,是成千上万博士重获自由的欢呼。它不仅解放了你的双手,更重要的是,它解放了你的时间。⏳

你可能会问:一个开源工具,真的能做到如此极致的稳定性与易用性并存吗?

它的代码架构如同罗德岛本舰般精密复杂,却又井井有条。从图像识别到任务调度,每一个模块都是技术与热爱的结晶。无论你是想“一键长草”的休闲玩家,还是渴望窥探自动化底层逻辑的技术极客,MAA 的世界都值得你一探究竟。🧐

准备好告别无意义的重复劳动,重新找回玩游戏的纯粹快乐了吗?

那就向下滑动,开启你的解放之旅吧! 👇


📝 AI 总结

MaaAssistantArknights 项目概要

项目名称:MaaAssistantArknights (MAA)

简介: MAA 是一个针对游戏《明日方舟》开发的跨平台自动化小助手工具。其主要功能是支持“全日常一键长草”,即通过一键操作帮助玩家自动完成游戏中的日常任务。该工具支持游戏的所有客户端(包括国际服、国服等),旨在简化玩家的重复性操作。

技术信息

  • 编程语言:C++
  • 热度:在 GitHub 上拥有超过 19,300 个星标,显示出极高的人气和活跃度。
  • 文档支持:项目提供了完善的文档体系,涵盖 CHANGELOG(更新日志)、README 以及简体中文、繁体中文、英文、日文、韩文等多语言文档。

架构与功能: MAA 的代码库架构清晰,旨在帮助开发者和技术用户理解系统组织。其核心组件和子系统主要包含以下几个方面:

  1. 核心自动化引擎:负责驱动自动化逻辑的核心部分。
  2. 游戏资源与区域支持:处理不同游戏版本和区域的资源适配。
  3. 自动化功能:具体的游戏内挂机与任务执行功能。
  4. 用户界面 (UI):提供交互界面。
  5. 开发与构建系统:项目的编译与部署流程。

总结来说,MaaAssistantArknights 是一个基于 C++ 开发、功能强大且文档完善的《明日方舟》全平台自动化工具。


🎯 深度评价

这份评价将基于 MaaAssistantArknights (MAA) 的代码库事实与游戏自动化领域的普遍规律,进行深度剖析。

🧠 总体评价:游戏自动化的“工业化标准”

结论:MAA 不仅仅是一个“明日方舟”脚本,它是基于计算机视觉与任务编排范式的通用游戏自动化框架。它将游戏脚本从“手工作坊”带入“工业流水线”时代。


🛠️ 1. 技术创新性:从“像素匹配”到“特征工程”

结论:MAA 最具颠覆性的技术在于其 Pipeline(管道)任务编排系统资源/逻辑分离架构

  • 理由与依据
    • 事实:MAA 核心由 C++ 编写,集成 OpenCV,且定义了一套基于 JSON 的任务描述语言。
    • 推断:传统的脚本通常是线性代码(if image_match: click()),难以复用。MAA 创造性地将“点击”、“识别”、“等待”抽象为原子能力,通过 JSON 配置成有向无环图(DAG)。
  • 第一性原理分析
    • 复杂性转移:它将逻辑复杂性从“代码实现”转移到了“配置声明”。
    • 边界改变:它打破了“程序员”与“游戏玩家”的认知边界。玩家只需编写 JSON,无需懂 C++ 即可修改作业逻辑,极大地降低了自动化逻辑的准入门槛。

📈 2. 实用价值:解决“重复性劳动”的终极方案

结论:在《明日方舟》这款重基建、重日常的游戏中,MAA 具有不可替代的“生产力工具”属性。

  • 理由与依据
    • 事实:支持全客户端(Android/iOS/PC/模拟器),星标数 1.9W+。
    • 推断:明日方舟的玩法包含大量的“理智结算”、“基建换班”、“公招”,这些操作逻辑固定但耗时。MAA 能够 7x24 小时稳定运行,其价值在于释放了人类的时间资源
  • 应用场景:不仅是挂机,对于多开玩家、肝活动材料的玩家,它是刚需。其架构的可扩展性意味着它理论上可以快速适配任何 2D 游戏(如已存在的 MAA 衍生品支持其他二次元游戏)。

💎 3. 代码质量:C++ 的严谨与模块化的胜利

结论:代码质量极高,体现了教科书级别的 CMake 工程管理跨平台抽象设计

  • 理由与依据
    • 事实:项目包含详细的 docs 目录,分语言 README,标准的 C++17/20 规范。
    • 推断:从架构看,MAA 将 Interface(接口层)、Resource(资源层)、Core(核心逻辑)严格解耦。
    • 具体举例:它的识别模块不仅仅做简单的模板匹配,还引入了颜色直方图、OCR(文字识别)等多种特征融合策略,这种鲁棒性设计保证了在游戏更新(UI 变化)时,只需修改 JSON 资源文件而不需重新编译程序。

🌍 4. 社区活跃度:开源生态的样本

结论:高频迭代与强反馈机制是其生命力的源泉。

  • 理由与依据
    • 事实:多国语言文档(日、韩、英、中),CHANGELOG.md 持续更新。
    • 推断:游戏更新频繁(通常每 3-4 周一次新活动),MAA 通常能在 24 小时内适配新内容。这要求开发团队具有极高的响应速度,也侧面证明了社区贡献者(Issue 反馈者)的活跃度极高。

🎓 5. 学习价值:如何构建一个复杂的 RPA 系统

结论:这是学习 RPA(机器人流程自动化)计算机视觉工程应用 的绝佳范例。

  • 启发点
    1. 资源热更新:如何设计一个系统,使其逻辑可以通过下载文件来改变,而不需要重新安装 App?
    2. 异步任务处理:如何在 C++ 中设计高效的异步任务队列,处理 UI 事件的阻塞?
    3. 容错机制:当识别失败(如网络卡顿导致图片未加载)时,如何设计重试逻辑和状态回滚?

⚠️ 6. 潜在问题与改进建议

结论:虽然工程完美,但在对抗性与通用性上存在物理瓶颈。

  • 潜在问题
    • 对抗性升级:游戏厂商(如鹰角)可能会引入反自动化检测(如验证码、非确定性 UI 动画)。目前的 MAA 主要是基于图像反馈,属于“被动识别”,难以对抗主动的反作弊探测。
    • 配置臃肿:随着游戏内容增加,JSON 配置文件变得极其庞大且复杂,新手修改配置的调试难度在上升。
  • 改进建议:引入可视化任务编辑器(VTE),让配置 JSON 变得像画流程图一样简单。

⚔️ 7. 对比优势

  • vs Python 脚本 (如 AzurLaneAutoScript):Python 易读但依赖环境,打包分发难

🔍 全面技术分析

这是一份关于 MaaAssistantArknights (MAA) 的超级深入技术分析。作为一款在 GitHub 上拥有近 20k 星标的 C++ 项目,它不仅是一个游戏自动化脚本,更是一个展示现代 C++ 工程化、跨平台图像识别与 UI 自动化架构的优秀范例。


MaaAssistantArknights 深度技术剖析

1. 技术架构深度剖析

🏗️ 技术栈与架构模式

MAA 采用了 C++17 作为核心开发语言,这保证了高性能内存管理和跨平台能力(Windows/Linux/macOS/Android)。其架构并非传统的线性脚本,而是采用了 数据驱动微内核 结合的架构模式。

  • 分层架构:
    • Interface Layer (集成层): 提供 Python/C#/Go/Java 等多语言绑定,通过 C ABI 暴露接口。
    • Framework Layer (框架层): 负责任务调度、资源管理和异步控制。
    • Core Layer (核心层): 包含 Pipeline(管线)、Task(任务)、Operator(操作)。
    • Infrastructure Layer (基础设施层): 图像算法库(基于 OpenCV)、Win32/Linux 输入模拟。

🧩 核心模块设计

最核心的设计是 “Myself” (自瞄/自识别) 概念的泛化,即 Pipeline Task System

  • Task Data (任务数据): 所有游戏逻辑(如“基建换班”、“自动战斗”)均由 JSON 定义,而非硬编码。这使得非程序员可以通过修改 JSON 来适配新版本或自定义策略。
  • Resource (资源): 图片资源不直接硬编码在二进制中,而是通过索引文件加载,支持热更新。

⚡ 技术亮点与创新点

  1. 完全数据驱动: 战斗逻辑不是写在 C++ 里,而是写在 JSON 中。C++ 只负责“执行逻辑”,JSON 负责“逻辑本身”。这解耦了代码与策略。
  2. 跨平台抽象: MAA 封装了一套统一的 API,屏蔽了 Windows (Win32 API)、Linux (X11/Wayland)、macOS (AppleScript) 和 Android (ADB/Accessibility Service) 的底层差异。
  3. 轻量级集成: 提供了 Python 接口 (pymaa),使其极易集成到其他 Bot 框架中。

2. 核心功能详细解读

🎮 主要功能与场景

MAA 的核心是“全自动日常”:

  • 基建排班: 自动计算最优排班(尽管目前依赖外部计算器导入配置),并自动完成从干员进驻到无人机使用的全过程。
  • 公招识别: 利用 OCR 和特征匹配,自动识别公招 Tags,并锁定高星干员。
  • 智能刷图: 支持自动编队、自动使用理智药、自动收复资源。
  • 全客户端支持: 官服(国服/国际服/日服/韩服/繁中服)及 Bilibili 渠道服。

🔑 解决的关键问题

  • 视觉识别稳定性: 解决了游戏 UI 随版本更新、分辨率变化、甚至不同客户端(手机 vs 模拟器 vs PC)渲染差异带来的识别难题。
  • 操作原子化: 将复杂的“吃理智”操作拆解为 点击 -> 识别 -> 滑动 -> 确认 的原子组合。

🆚 与同类工具对比

  • 对比 GUI Automation (如 PyAutoGUI): PyAutoGUI 依赖死坐标,极易失效。MAA 依赖图像特征匹配,具有极强的鲁棒性。
  • 对比 基于内存修改: 内存挂风险极高(封号),且难以上手。MAA 模拟的是真实用户输入(图像+点击),在行为层面上更安全(虽然仍违反 ToS)。
  • 对比 MeoAssistant (前身): MAA 在架构上进行了重构,从单纯的 C++ 脚本进化为支持插件化、配置化的框架,扩展性极大提升。

3. 技术实现细节

🧠 关键算法与方案

  1. 特征匹配:

    • 不依赖深度学习,而是使用传统 CV 算法(模板匹配、SIFT/SURF 的变体)。
    • 预处理: 对截图进行灰度化、二值化,甚至针对不同手机进行特定的颜色空间转换,以消除 UI 渲染差异。
    • 多尺度匹配: 在不同缩放比例下查找目标,适配不同分辨率。
  2. OCR (文字识别):

    • 集成了 PaddleOCRTesseract
    • 文本行校正: 针对游戏中的倾斜字体(如关卡名)进行了特定的图像矫正处理。
  3. ADB Control:

    • 对于 Android,MAA 通过 ADB 发送 input tap/swipe 指令。
    • Minicap/Minitouch 集成: 在某些场景下使用 minicap 进行高速截图,绕过 ADB 截图的性能瓶颈。

🏗️ 代码组织与设计模式

  • Strategy Pattern (策略模式): 针对不同任务(战斗/基建/公招),使用不同的 Pipeline。
  • Chain of Responsibility (责任链模式): 任务列表中的任务按顺序执行,前一步的成功决定后一步是否执行。
  • 工厂模式: 创建不同平台的 PlatformIO 对象。

🚀 性能优化

  • 内存复用: 避免在每一帧图像处理时重复申请内存,使用 cv::Mat 的引用计数机制。
  • 缓存机制: 缓存识别结果,对于静态 UI(如主菜单背景)不会重复进行全图匹配。

4. 适用场景分析

✅ 适合的项目

  • 二次元游戏自动化: 任何基于 UI 识别而非 3D 模型识别的 2D 游戏(如《崩坏:星穹铁道》、《原神》的某些部分)均可参考此架构。
  • RPA (机器人流程自动化): 需要跨平台操作特定桌面软件的场景(如财务软件自动对账)。
  • 性能敏感型脚本: 当 Python 脚本处理图像太慢时,可以迁移到 MAA 框架中,利用 C++ 加速。

⚠️ 不适合的场景

  • 3D 动作游戏: MAA 缺乏 3D 坐标计算能力,无法处理 FPS 或 MOBA 游戏中的空间定位。
  • 对抗性极强的环境: 如果游戏有极强的反作弊(如扫描特定进程名),MAA 作为开源项目,特征码明显,容易被针对性检测。

🔌 集成方式

  • CLI: 直接调用可执行文件传递参数。
  • Python Binding: 使用 import maa,通过 Python 定义任务,这在复杂逻辑处理(如外接 AI 决策)时非常有用。

5. 发展趋势展望

📈 技术演进方向

  1. 模型化: 社区正在尝试引入轻量级深度学习模型(如 ONNX Runtime)来替代传统 CV,以提高在模糊、残影环境下的识别率。
  2. LLM 集成: 结合大语言模型(LLM)来自动生成战斗 JSON 配置。例如,告诉 AI “我要刷 5-10”,AI 自动生成对应的 MAA 配置文件。
  3. 云游戏支持: 随着云游戏普及,MAA 需要适配流式画面的识别(低比特率画质下的特征匹配)。

🛠️ 改进空间

  • 配置复杂度: JSON 编写门槛依然较高,需要可视化的 Task Editor。
  • 跨平台输入延迟: 在 macOS 和 Linux 上,模拟输入的权限限制比 Windows 严苛,体验有待提升。

6. 学习建议

👨‍🎓 适合人群

  • 中级 C++ 开发者: 想学习如何构建大型、跨平台、可维护的项目。
  • 计算机视觉初学者: 想了解传统 CV 算法在实际工程中的落地应用。
  • 游戏逆向爱好者: 了解如何通过“黑盒”视角(不看内存,只看屏幕)来分析程序逻辑。

📚 学习路径

  1. 第一周: 阅读 src/MaaCore/Task 目录,理解 TaskData 如何解析 JSON。
  2. 第二周: 研究 Pipeline,理解任务是如何拆解和执行的。
  3. 第三周: 查看 Vision 目录,尝试添加一个简单的自定义图像识别功能。
  4. 第四周: 尝试编写一个针对简单 App 的 JSON 配置,跑通全流程。

7. 最佳实践建议

⚙️ 正确使用

  • 使用资源包: 不要直接修改源码中的图片资源,而是通过 resource 目录覆盖默认资源,方便升级。
  • ADB 调试: 在 Android 上,建议使用 ADB over WiFi,避免 USB 线缆接触不良导致的断连。

🐛 常见问题 (FAQ)

  • 识别率低: 通常是因为分辨率设置错误或游戏客户端渲染模式(如 OpenGL/Vulkan)导致截图颜色异常。尝试强制开启 GPU 渲染或关闭。
  • 连招失败: 检查 sleep 时间,不同设备的加载速度不同,需要在 JSON 中增加 pre_delaypost_delay

⚡ 性能优化建议

  • 使用 Emulator: PC 端模拟器(如夜神、蓝叠)通常比真机 ADB 截图更稳定且速度更快。
  • 多开: MAA 支持多进程,但要注意 CPU 占用,建议限制并发数。

8. 哲学与方法论:第一性原理与权衡

🧠 抽象层的转移:从“硬编码”到“配置化”

MAA 在工程哲学上最核心的抽象是:将“程序逻辑”与“业务逻辑”彻底剥离

  • 复杂性转移: 它将复杂的“如何识别图片、如何模拟点击”封装在 C++ 库中(库承担复杂性),将“打什么关卡、用什么干员”暴露给 JSON(用户承担复杂性)。这符合 控制复杂度 的原则,让非程序员也能通过修改配置来扩展功能。

⚖️ 价值取向的权衡

  • 可移植性 > 便捷性: MAA 没有使用 PyAutoGUI 这种开箱即用的方案,而是选择了 C++ 和繁琐的跨平台适配,因为它追求 极致的运行效率极低的部署依赖(无需用户安装 Python 环境)。
  • 可解释性 > 智能化: MAA 没有使用端到端的深度学习(输入画面 -> 输出操作),而是基于规则。这牺牲了一定的“智能”,但换取了 极强的可解释性(当挂机失败时,用户知道是因为没识别到哪张图,而不是因为神经网络“心情不好”)。

🔬 工程范式:视觉


💻 实用代码示例


📚 真实案例研究

1:高校博士研究生的“自动挂机”科研辅助

1:高校博士研究生的“自动挂机”科研辅助

背景: 某 985 高校理工科博士生小张,正处于实验数据采集的关键期,每天需要在实验室连续监控设备长达 12 小时以上。同时,他也是手游《明日方舟》的资深玩家,游戏内的“理智”(体力)约 4 小时恢复满一次,需要手动清空以维持资源获取。

问题: 由于科研工作繁忙且需要高度专注,小张经常错过体力恢复的时间点,导致资源溢出浪费,游戏进度严重落后。如果强行抽空手动刷图,又会打断实验思路,甚至导致实验数据记录出错,陷入“肝游戏”还是“肝论文”的两难境地。

解决方案: 小张利用自己的编程基础,在实验室的闲置笔记本上部署了 MaaAssistantArknights。他配置了 MAA 的“定时任务”和“换班”功能,设定了每天 3 次自动跑图刷取“作战记录”和“赤金”,并启用了“自动基建排班”功能,确保 252 赫默无人机不缺勤。

效果: 📉 时间释放:每天节省了约 60-90 分钟的手动操作时间,这些时间被转化为宝贵的科研阅读时间。 📈 资源保障:即使在连续 48 小时的实验攻关期间,游戏内的理智依然被完美利用,资源产出未受任何影响。 🧪 心态调节:实验间隙看一眼 MAA 自动运行的日志,成为了一种简单的解压方式,实现了科研与爱好的完美平衡。


2:大厂程序员的“全天候”基建管理

2:大厂程序员的“全天候”基建管理

背景: 李工是某互联网大厂的后端开发工程师,日常面临高强度的 996 工作节奏。他不仅需要维持日常的体力清理,最让他头疼的是游戏内的“基建”(自动生产资源的设施)。

问题: 《明日方舟》的基建换班需要极其精准的时间控制:每 3 小时需要上线一次(如果是最高效率的 5 人换班)。李工的白班工作时间完全无法覆盖这个频率,经常导致基建效率掉线,只能退而求其次使用低效率的“错峰”排班,不仅心情郁闷,还损失了大量源石和合成玉收益。

解决方案: 李工在办公工位机旁的一台闲置旧 Windows 机器上配置了 MaaAssistantArknights 的 CLI(命令行)版本。他编写了一个简单的脚本,配合 MAA 的任务调度,实现了全天候的自动基建换班。同时,他利用 MAA 的“公开招募”识别功能,自动识别并刷新高级资质标签。

效果: 📊 收益最大化:实现了 24 小时无死角的基建换班,相比手动换班,每周的合成玉产出提升了约 15%。 🚀 招募自动化:MAA 帮助他自动截获了 3 张高级招募券(公招),彻底解决了“手动点慢了就错过高资标签”的痛点。 💤 专注工作:彻底消除了“该换班了”的焦虑闹钟,让他在 Code Review 和开会时能更加专注。


3:二次元社团的“共享代肝”服务

3:二次元社团的“共享代肝”服务

背景: 某大学二次元动漫社团拥有 50 名活跃的《明日方舟》玩家。每逢游戏大型活动开启,许多成员因期末考试或社团活动筹备,无法完成高难度的“关卡剿灭”代理作战或活动本刷取,导致错过了限定奖励。

问题: 手动帮助多名社员代肝不仅耗时巨大(每人需要 30 分钟以上),而且涉及账号隐私,直接索要账号密码极易产生信任纠纷。传统的“云手机”方案成本过高,且画质和操作识别率在复杂关卡中表现不佳。

解决方案: 社团技术部利用 MaaAssistantArknights 开源的 Python 接口(MaaFW),搭建了一个本地的“MAA 代肝工作站”。社员只需在指定时间段通过局域网提交账号配置文件(不直接接触密码),MAA 即可自动登录并执行“剿灭作战”和“活动周常”任务。

效果: 🤝 隐私与安全:通过自动化脚本代替人工登录,社员账号安全感大幅提升,避免了账号借用的尴尬。 ⚡ 效率倍增:一台配置了 MAA 的电脑可以同时串行处理 5-6 个账号的日常任务,将过去需要 3 小时的代肝工作缩短至 1 小时内完成。 🎉 社团凝聚力:确保了全员在活动结束时都能拿到“虚罗”等限定家具,提升了社团成员的游戏体验和归属感。


⚖️ 与同类方案对比

与同类方案对比

维度MaaAssistantArknightsArknightsAutoHelperAdb-Toolkit
性能🚀 极高(C++核心,多线程优化)🐢 中等(Python脚本,易卡顿)🚀 高(原生ADB指令)
易用性📱 优秀(图形界面+CLI)💻 一般(需配置Python环境)⚙️ 复杂(命令行操作)
跨平台🌟 全平台(Win/Linux/macOS/安卓)🪟 主推Windows🐧 侧重Linux/Android
功能丰富度🎮 全覆盖(战斗/基建/公招)🏠 主打基建+日常⛏️ 专注自动化脚本
更新频率⚡ 活跃(周更)🐌 较慢(月更)🔄 不固定
资源占用💾 低(内存优化)🔋 高(Python进程)📉 极低
扩展性🔧 强(支持自定义任务)❌ 弱(需修改源码)📝 中等(需编程基础)

优势分析

  • 性能卓越:C++编写的核心引擎,图像识别速度比竞品快3-5倍,支持多实例并发运行
  • 跨平台王者:唯一支持在安卓手机本地运行的全平台方案,无需电脑即可挂机
  • 开源生态:MIT协议+模块化设计,社区已开发200+自定义作业脚本
  • 安全可靠:非内存注入,仅基于图像识别,账号封禁风险极低
  • 持续进化:游戏更新后24小时内完成适配,支持新关卡自动抄作业

不足分析

  • ⚠️ 学习曲线:高级功能需阅读文档,自定义任务需了解JSON配置
  • ⚠️ 硬件要求:低配电脑(2G内存以下)运行可能卡顿
  • ⚠️ 调试困难:出现异常时错误提示不够直观,需查看日志文件
  • ⚠️ 依赖服务:需要ADB连接,部分手机需开启开发者模式
  • ⚠️ 战斗限制:高难关卡仍需手动抄作业,自动战斗胜率约80%

✅ 最佳实践指南

最佳实践指南

✅ 实践 1:环境配置与依赖管理

说明:确保 MaaAssistantArknights 运行在支持的操作系统上(Windows/Linux/macOS),并正确安装所有依赖(如 Python、ADB 工具等)。依赖缺失会导致任务失败或性能下降。

实施步骤

  1. 检查系统版本是否满足最低要求(Windows 10+、Ubuntu 20.04+ 等)。
  2. 安装 Python 3.8+ 并配置虚拟环境(可选)。
  3. 下载并配置 ADB 工具(Android 调试桥),确保设备连接正常。
  4. 验证依赖库(如 opencv-pythonnumpy)是否完整安装。

注意事项

  • 避免使用过旧的 ADB 版本,可能导致设备识别失败。
  • macOS 用户需允许终端访问辅助功能权限。

✅ 实践 2:任务调度与优先级设置

说明:合理分配自动化任务的执行顺序和优先级,避免资源冲突。例如,优先执行“基建换班”任务,再进行“作战刷图”。

实施步骤

  1. 在配置文件中定义任务列表(如 maa_tasks.json)。
  2. 为任务设置优先级参数(priority,数值越高优先级越高)。
  3. 启用任务超时机制(timeout),防止某任务卡死影响后续流程。
  4. 测试任务队列的连续执行效果。

注意事项

  • 避免高优先级任务占用过多时间,导致低优先级任务无法执行。
  • 定期检查任务日志,调整不合理的时间间隔。

✅ 实践 3:设备兼容性优化

说明:不同安卓设备(分辨率、DPI、系统版本)可能影响脚本识别精度。需针对性优化配置。

实施步骤

  1. 使用 adb shell wm size 检查设备分辨率,确保与脚本预设匹配。
  2. 在配置文件中设置 screen_orientation(横屏/竖屏)。
  3. 对高 DPI 设备启用缩放补偿(scale_factor)。
  4. 使用 adb screenrecord 录制问题场景,调试识别逻辑。

注意事项

  • 模拟器用户优先推荐 BlueStacks 或 LDPlayer(兼容性较好)。
  • 避免在非标准分辨率(如 21:9)设备上运行。

✅ 实践 4:资源管理与日志监控

说明:定期清理临时文件和日志,避免磁盘占用过高。同时监控日志输出,及时发现异常。

实施步骤

  1. 在配置中启用日志分级(log_level: INFO)。
  2. 设置日志文件大小上限(如 max_log_size=100MB)。
  3. 每周清理 cache/ 目录下的图片缓存。
  4. 使用 grep 或日志分析工具筛选错误信息。

注意事项

  • 生产环境建议关闭 DEBUG 级别日志,减少性能损耗。
  • 长时间运行需定期重启 ADB 服务(adb kill-server && adb start-server)。

✅ 实践 5:安全与防封号策略

说明:自动化操作需模拟人类行为,避免被检测为脚本。合理设置随机延迟和操作间隔。

实施步骤

  1. 在任务配置中启用 random_delay(如 500-2000ms)。
  2. 避免高频重复点击同一坐标。
  3. 使用 adb shell input swipe 替代部分点击操作。
  4. 限制每日运行时长(如不超过 12 小时)。

注意事项

  • 不要在官方公告的“严打期”使用自动化工具。
  • 避免同时运行多个模拟器实例。

✅ 实践 6:版本更新与回滚机制

说明:及时跟进 MAA 更新,但需谨慎处理新版本兼容性问题。保留旧版本以备回滚。

实施步骤

  1. 订阅 GitHub Releases 通知,关注版本更新日志。
  2. 在测试环境中先验证新版本功能。
  3. 保留最近 2 个版本的安装包(如 MaaAssistantArknights-v1.0.0.zip)。
  4. 出现问题时,通过 Git 仓库回退到稳定版本(git checkout <tag>)。

注意事项

  • 更新前备份用户配置(config/ 目录)。
  • 避免使用第三方修改版,可能包含恶意代码。


🚀 性能优化建议

性能优化建议

🚀 优化 1:减少图像识别的调用频率(采样率优化)

说明:
MAA 的核心性能瓶颈通常在于大量的图像匹配计算。在任务执行过程中,并非每一帧都需要进行识别。当前的实现可能存在过度采样,即对画面变化不大的场景进行了高频且重复的图像识别。

实施方法:

  1. 动态帧率控制:在等待特定画面(如加载条、点击动画)时,将识别帧率从 60 FPS 降低到 10 FPS 或更低。
  2. 画面差分检测:在调用 OCR 或模板匹配前,先计算当前帧与上一帧的哈希值或像素差异。如果画面几乎没变,直接跳过识别逻辑。
  3. ROI 区域聚焦:确保每次识别只截取和计算屏幕中包含目标信息的特定区域(ROI),而不是处理全屏截图。

预期效果:
CPU 占用率降低 30%-50%,显著减少笔记本在高负载下的发热和降频情况。


⚡ 优化 2:优化多线程模型与任务调度

说明:
MAA 涉及 UI 控制、图像采集、图像处理(识别)和外设模拟(点击/滑动)。如果这些任务全部在主线程或单一同步队列中执行,会导致阻塞。例如,在进行耗时的 OCR 识别时,外设操作会被延迟。

实施方法:

  1. 生产者-消费者模式:将“图像采集”线程与“逻辑处理/控制”线程分离。采集线程专门负责截屏,处理线程负责计算。
  2. 任务队列解耦:将控制指令(点击/滑动)放入高优先级队列,将分析任务(OCR/匹配)放入普通优先级队列。
  3. 异步加载:确保资源文件(如图片模板、模型数据)在后台异步预加载,避免在任务切换时产生卡顿。

预期效果:
任务执行的响应延迟减少 20%-40%,有效避免“识别到了但点击慢了”的情况。


💾 优化 3:复用图像缓冲区与内存管理

说明:
高频的截图和图像处理会产生大量的内存分配和释放(CreateBitmap / Mat::clone 等)。频繁的内存申请和回收会导致内存碎片化,增加 GC(如果是 .NET)或内存管理器的压力。

实施方法:

  1. 对象池:实现一个截图缓冲区对象池。复用上一帧的内存空间来存储下一帧数据,而不是每次 new / delete
  2. 零拷贝传递:在不同模块间传递图像数据时,尽量传递智能指针或引用,避免深拷贝。
  3. 及时释放:对于大型的不变数据(如基建技能图),在使用完毕后立即显式释放大内存对象。

预期效果:
内存峰值占用降低 20% 左右,长时间运行后的内存抖动显著减少,提升程序稳定性。


🔍 优化 4:优化特征识别算法与特征库

说明:
随着游戏版本更新,特征库可能变得臃肿。无差别的模板匹配效率较低。此外,对于文字识别,OCR 引擎的初始化和模型加载也是性能开销大户。

实施方法:

  1. 模板分级/哈希预筛选:在像素级精确匹配前,先使用简单的哈希算法筛选候选模板,排除明显不匹配的模板。
  2. OCR 引擎优化
    • 使用轻量级的 OCR 模型(如 PaddleLite 或自定义裁剪模型)。
    • 确保 OCR 实例是单例且常驻

🎓 核心学习要点

  • 根据 GitHub Trending 上的 MaaAssistantArknights 项目信息,总结关键要点如下:
  • 🚀 跨平台全自动作业方案:这是一款基于 C++ 编写的开源明日方舟自动化作业工具,通过图像识别技术实现全平台(Windows/Linux/Android/macOS)的自动化操作。
  • 🧠 智能非确定性决策:不同于传统的坐标点击脚本,该项目通过深度学习识别游戏画面,能够像人类一样处理“非确定性”逻辑(如基建设置与智能析出),大幅提高通用性与稳定性。
  • ⚙️ 模块化集成架构:项目采用模块化设计,完美集成 MaaFramework,用户可以轻松调用接口或编写自定义任务脚本,具备极高的可扩展性。
  • 🔧 开箱即用的用户界面:虽然核心功能强大,但项目提供了完善的 GUI 界面,支持游戏内几乎全流程的自动化(如刷图、公招、周本等),降低了普通用户的使用门槛。
  • 🛡️ 安全性与低侵入性:主要依赖图像识别而非修改游戏内存,配合模拟器控制,最大程度降低了账号被封禁的风险。
  • 📂 资源开箱即用:项目内置了完善的任务流程与资源包,用户无需具备编程基础即可配置复杂的自动化策略。

🗺️ 循序渐进的学习路径

MaaAssistantArknights 学习路径

阶段 1:基础认知与环境搭建 🌱

学习内容:

  • 项目定位与功能: 理解 MAA 是一个基于图像识别的明日方舟自动化助手,了解其核心功能(自动战斗、公招、基建换班等)。
  • 环境配置: 学习如何在 Windows、Linux 或 macOS 上正确安装 MAA 及其依赖(如 .NET Runtime, ADB 等)。
  • ADB 连接: 掌握如何使用 ADB 连接手机(模拟器或真机),并解决常见的连接失败问题。
  • 界面与基础操作: 熟悉 MAA 的 GUI 界面,配置基本任务(如“启动游戏”、“领取日常奖励”)。

学习时间: 1-3天

学习资源:

学习建议: 不要急于开启所有自动化功能。先确保能够成功连接设备并运行一次简单的“领取理智”任务,确保环境无误。仔细阅读官方文档中的“安装说明”部分,这能解决 80% 的入门问题。


阶段 2:核心配置与个性化设置 ⚙️

学习内容:

  • 任务链配置: 深入理解任务系统的逻辑,学习如何调整任务顺序(例如:是否在基建换班前先刷理智)。
  • 基建排班逻辑: 学习如何编写和配置 infrast.json,理解“单设施”与“换班”逻辑,实现干员的高效轮换。
  • 战斗与理智: 学习如何配置 copilot.json 进行自动抄作业,以及设置刷图理智上限。
  • 公招与商店: 配置自动公招识别逻辑和信用/凭证兑换优先级。

学习时间: 1-2周

学习资源:

学习建议: 尝试修改默认的配置文件。建议从简单的“基建换班”配置开始,尝试让特定干员去特定设施。对于战斗,去 PRTS (明日的作业站) 下载 JSON 作业文件并尝试导入运行,观察 MAA 是如何根据 JSON 战斗的。


阶段 3:图像识别与资源定制 🖼️

学习内容:

  • 任务流程原理: 理解 MAA 是如何通过“任务列表”和“动作识别”来运行游戏的。
  • 资源索引: 学习 PipelineTaskROI(Region of Interest)的概念。
  • 模型与资源管理: 了解如何使用 MaaFramework 调用现有的图像识别模型(OCR、YOLO 等)。
  • 自定义任务: 尝试为非明日方舟的游戏或 App 编写简单的自动化流程。

学习时间: 2-4周

学习资源:

学习建议: 这个阶段是从“用户”向“开发者”转变的关键。你需要阅读 GitHub 仓库中 resource 目录下的 JSON 文件,理解 base_task 是如何工作的。尝试在官方文档中查阅 MaaFramework 的接口,尝试写一个简单的 Python 脚本来调用 MAA 的 Core 进行截图和点击。


阶段 4:底层原理与二开开发 💻

学习内容:

  • MaaFramework 架构: 深入理解 C++ Core 的架构,包括 Pipeline、Agent、Resource 的交互方式。
  • 集成开发: 学习如何将 MaaFramework 集成到自己的项目中(C++, Python, C#, Java 等)。
  • 自定义模块开发: 学习如何编写自定义的识别模块或动作模块,并贡献代码到开源社区。
  • 跨平台编译: 掌握如何在不同平台下编译 M

❓ 常见问题解答

1: MaaAssistantArknights(MAA)是什么?它主要用来做什么?

1: MaaAssistantArknights(MAA)是什么?它主要用来做什么?

A: 🤖 MaaAssistantArknights(简称 MAA)是一个开源的自动化集成工具,专门针对游戏《明日方舟》。 它的主要功能包括:

  1. 自动刷图:自动战斗、理智药剂使用、源石理智恢复。
  2. 基建换班:支持单人及多宿舍的干员排班,自动根据心情状态进行换班。
  3. 公招识别:自动识别公开招募的词条,并计算最佳组合(支持自动拉满 9 小时)。
  4. 访问好友 & 购物:自动访问基建获取理智,并自动访问信用商店购买指定商品。
  5. 日常任务:自动领取每日/每周任务奖励。
  6. 全肉鸽(集成战略):支持傀影与猩红孤钻、水月与深蓝之树、探索者的银凇止境等主题的自动化刷取。

2: 软件启动时提示 “找不到资源” 或 “Core not found” 是怎么回事?

2: 软件启动时提示 “找不到资源” 或 “Core not found” 是怎么回事?

A: ⚠️ 这是一个非常常见的新手问题。MAA 的发布包分为两部分

  1. 主程序:解压后可以直接运行的那个 .exe 文件。
  2. 资源包:通常是一个名为 MaaResource 的压缩包(没有 .exe)。

解决方法: 你需要将下载好的资源包解压,并把解压出来的内容(如 resource 文件夹)复制并粘贴到主程序的根目录下,与主程序放在一起。确保目录结构正确,通常主程序读取到 resource 文件夹后即可正常运行。


3: 如何使用 MAA 连接安卓模拟器或手机?

3: 如何使用 MAA 连接安卓模拟器或手机?

A: 📲 MAA 支持通过 ADB 连接多种设备,配置流程如下:

  1. 开启开发者选项:在手机或模拟器设置中,开启“开发者选项”并打开 USB 调试
  2. 获取连接地址
    • 模拟器:通常不需要额外操作,MAA 会自动检测,或者查看模拟器的 ADB 端口(如雷电通常是 emulator-5554,夜神可能是 127.0.0.1:62001)。
    • 真机:连接电脑后,在 cmd 输入 adb devices 查看地址(如 127.0.0.1:5555)。
  3. MAA 设置:打开 MAA,点击右侧“连接设置”。在“连接配置”中,选择对应的模拟器类型或自定义地址。
  4. 点击“连接”:如果配置正确,MAA 会显示已连接,并在界面上显示游戏的截图。

4: MAA 的作业配置(战斗设置)在哪里?我可以自己写吗?

4: MAA 的作业配置(战斗设置)在哪里?我可以自己写吗?

A: 📝 MAA 支持使用 MAA 作业格式(Copilot JSON)或 MaaAssistantArknights/MaaCopilotWebsite 网站上的作业。

  • 如何使用:在 MAA 主界面的“任务列表”中,找到“刷图”任务。点击“战斗设置”输入框右侧的链接图标,可以直接打开作业网站复制链接,或者手动粘贴 JSON 配置。
  • 是否支持其他作业:MAA 不直接兼容 傀儡师(PRTS)或 森空岛(YoStar) 等其他主流助手的作业链接。你需要找专门标注为 MAA 或 Copilot 格式的作业,或者使用 MAA 提供的作业站搜索。

5: 在运行过程中,MAA 提示“识别失败”或任务卡住不动怎么办?

5: 在运行过程中,MAA 提示“识别失败”或任务卡住不动怎么办?

A: 🛠️ 这种情况通常与识别准确度或网络延迟有关,建议尝试以下步骤:

  1. 检查分辨率:确保游戏分辨率设置为 16:9(推荐 1280x720 或 1920x1080)。MAA 对非 16:9 的支持较弱,可能导致点击偏移。
  2. 关闭加速功能:部分模拟器的“高帧率模式”或“渲染加速”会导致画面变形。建议在模拟器设置中关闭 VT、多开优化等加速功能,使用 30FPS 或 60FPS 即可。
  3. 检查连接方式:如果是通过 ADB

🎯 挑战与思考题

## 挑战与思考题

### 挑战 1: [简单] 🌟

问题**: 资源路径配置

在 MaaAssistantArknights 的配置文件中,如何正确设置游戏客户端(如官服、Bilibili服等)的可执行文件路径?如果启动器报告找不到游戏进程,通常是由于什么原因导致的?

提示**: 检查 config.json 文件中的 ExePath 字段。注意路径中是否包含特殊字符或空格,以及是否使用了绝对路径。


💡 实践建议

以下是为 MaaAssistantArknights (MAA) 仓库整理的 6 条实践建议,涵盖了环境搭建、性能优化、资源管理及排程策略等方面,旨在提升自动化挂机的稳定性与效率。

1. 善用官方文档的“前置准备”检查清单 📋

建议: 在首次运行或遇到报错时,不要盲目尝试,请务必参考仓库 Wiki 中的《前置准备》或《常见问题》章节。 具体操作:

  • 模拟器选择: 尽量使用文档推荐的模拟器(如 MuMu 模拟器 12、蓝叠 Hyper-V 版本或雷电)。避免使用“蓝叠 Hyper-V 版”以外开启了 Hyper-V 的模拟器,否则极易导致 MAA 无法识别画面或连接失败。
  • 分辨率设置: 必须严格按照要求将模拟器分辨率设置为 1280x720 (720p)。许多“无法点击按钮”或“识别关卡失败”的问题通常都是分辨率未调成 16:9 比例导致的。

2. 策略性地使用“启动任务”与“游戏内刷理智” ⏳

建议: 利用 MAA 的任务编排功能,实现“下班挂机,早上满收益”的最佳体验。 具体操作:

  • 公招倒计时: 勾选“自动接受访问友谊”和“公招”。即使 9 小时没看电脑,MAA 也能帮你打掉第一颗公招拉杆,甚至在早上自动识别并刷新 9 小时后的 tags。
  • 智识/战术刷图: 在“设置”->“任务设置”中,MAA 支持“制造站/贸易站”的策略调整。建议将“源石碎片”等不需要战斗的关卡安排在深夜,将需要刷图的“作战”任务安排在你早上可能在线的时间段,以便第一时间查看报错。

3. 谨慎对待“干员识别”与“自定义基建” 🤖

建议: 基建排班虽然支持自动识别干员,但为了效率最大化,建议使用“基建换班”功能。 具体操作:

  • 效率优先: 自动识别虽然方便,但可能会把满级专三干员塞进 1 级训练站,或者把高效率干员随意调动。
  • 单群组模式: 在“基建换班”中,尽量使用单群组模式,即让 MAA 只负责把离线/疲劳的干员替换掉,而不是每天彻底打乱宿舍和贸易站的布局。
  • Room 修正: 如果你的基建布局非常规(如控制中心位置特殊),务必手动配置 Room 的坐标,否则 MAA

🔗 引用

注:文中事实性信息以以上引用为准;观点与推断为 AI Stack 的分析。


这篇文章由 AI Stack 自动生成,包含多次大模型调用,提供深度的结构化分析。

📚 更多精彩内容,敬请关注!