MaaAssistantArknights 专用 VS Code 扩展(Maa Support)完全指南:tasks.json 语义编辑、截图裁剪与调试实战
【免费下载链接】MaaAssistantArknights《明日方舟》小助手,全日常一键长草!| A one-click tool for the daily tasks of Arknights, supporting all clients.项目地址: https://gitcode.com/GitHub_Trending/ma/MaaAssistantArknights
导读
本文面向《明日方舟》自动化框架 MaaAssistantArknights 及其底层 MaaFramework 的开发者与资源维护者,系统讲解专用 VS Code 扩展「Maa Support」(Maa Pipeline Support)的安装、配置与全部核心功能。读完本文,你将掌握如何借助该扩展高效编辑tasks.json任务流程文件——包括模板任务预览、next跳转、任务引用查询、自动补全、多路径资源覆盖与表达式展开计算,以及如何用内置截图裁剪工具配合 OCR/模板识别快速调试任务。文中所有功能说明均以当前仓库的 interface.json、resource/tasks/tasks.json、.vscode/settings.json 等真实文件为佐证,确保可直接落地使用。
一、扩展是什么:面向 MAA 生态的专用开发工具
Maa Support(扩展商店 ID:nekosu.maa-support)是专门针对 MaaAssistantArknights / MaaFramework 开发的 VS Code 扩展,其核心价值在于把「纯文本 JSON 编辑」升级为「语义化资源编辑」。它提供的主要能力包括:
tasks.json深度支持:模板(Template)预览、next跳转、任务引用解析、自动补全与合法性校验;- 图片截取与裁剪:内置截图工具,直接连控制器截图、框选裁剪 ROI、一键保存回资源目录;
- 资源诊断:对任务定义与图片引用进行定时扫描,提前发现命名冲突、悬空引用等错误。
扩展的绝大部分功能都基于**interface.json配置**驱动,这一点与 MaaFramework 的接口约定完全一致(本仓库根目录即存在一份 interface.json),因此理解该文件的字段结构是使用扩展的前提。
二、安装与初始化
2.1 安装方式
推荐直接在 VS Code 的扩展列表中搜索Maa并安装(扩展全名 Maa Support / Maa Pipeline Support)。安装完成后,左侧活动栏会出现专用控制面板图标。
2.2 首次使用的资源下载
首次使用时,扩展会自动下载默认版本的依赖资源(模型、解析器等)。若下载源不可用或速度不理想,可通过命令面板执行:
Maa: 選擇下載源(选择下载源)
在npm / cnpm两个来源之间切换后重试下载。
::: tip 调用命令面板的快捷键为Ctrl + Shift + P(macOS 为Command + Shift + P),本文后续所有Maa: xxx命令均在该面板中执行。 :::
三、控制面板:一切功能的入口
控制面板位于左侧活动列,扩展绝大部分功能均集中于此。
3.1 选择当前生效的 interface.json
控制面板最上方是interface.json选择器,用于切换当前生效的接口配置。以本仓库根目录的 interface.json 为例,其结构如下:
{ "name": "MaaAssistantArknights", "controller": [ { "name": "Adb", "type": "Adb" }, { "name": "Win32", "type": "Win32" } ], "resource": [ { "name": "官服 | Official", "path": ["{PROJECT_DIR}/resource"] }, { "name": "日服 | YoStarJP", "path": ["{PROJECT_DIR}/resource", "{PROJECT_DIR}/resource/global/YoStarJP/resource"] }, { "name": "韩服 | YoStarKR", "path": ["{PROJECT_DIR}/resource", "{PROJECT_DIR}/resource/global/YoStarKR/resource"] }, { "name": "美服 | YoStarEN", "path": ["{PROJECT_DIR}/resource", "{PROJECT_DIR}/resource/global/YoStarEN/resource"] }, { "name": "台服 | txwy", "path": ["{PROJECT_DIR}/resource", "{PROJECT_DIR}/resource/global/txwy/resource"] } ] }从中可以看到两个关键信息:
controller数组声明了可用的控制器(如Adb、Win32),与 MaaPiCli 功能中的控制器扫描范围对应;resource数组中的每个条目是一个资源方案,path为数组而非单个路径——这正是扩展「多路径资源支持」的配置载体(详见下文),例如日服方案由resource与resource/global/YoStarJP/resource两级叠加而成。
3.2 Maa 兼容模式(Maa 相容模式)
当扩展检测到当前打开的文件夹下存在src/MaaCore目录时,会自动启用Maa 兼容模式。该模式会解锁一系列 MAA 专属能力:
- 解析模板任务(衍生任务、
@型任务),支持联动父类查询任务定义与引用; - 悬停任务定义时查看同名的模板图片;
- 输入
@触发任务自动补全; - 图片路径的递归搜索;
- 计算任务/任务列表表达式的实际展开结果。
也就是说:直接在 VS Code 中打开本仓库根目录(存在 src/MaaCore),即可自动获得上述全部增强能力。
四、语义化资源分析:任务定义与引用的编辑体验
4.1 选择资源与诊断范围
通过切换控制面板中的**「資源」下拉菜单**选择预期资源,扩展会根据对应路径进行索引与诊断。若某个 JSON 文件没有出现提示,请检查当前启动的资源是否包含该文件——这是排查「为什么没有补全/跳转」的第一顺位原因。
需要先厘清两个核心术语:
- 任务的定义:任务对象中的键(Key),即任务名称;
- 任务的引用:其他任务中可以填入任务名称的值(Value),典型场景是
next字段。
4.2 查询任务定义与引用
扩展支持三类导航操作:
- 跳转至定义(Go to Definition):从引用位置直接跳到任务的声明处;
- 跳转至引用(Go to References):查看某任务被哪些任务引用;
- 查看任务定义(Peek Definition):不离开当前文件即可预览任务内容。
开启 Maa 兼容模式后,模板任务会被正确解析,可以联动父类查询任务定义与引用——例如某个B@A型任务引用了A的字段时,跳转会定位到父任务A的声明。悬停任务定义时,还能查看同名模板图片的预览。
使用Ctrl + T快捷键,可以快速搜索并跳转至任意任务定义,适合在大型tasks.json中导航。
4.3 查询与打开图片
扩展支持直接打开任务引用的图片文件;开启 Maa 兼容模式后,支持图片路径的递归搜索——这对应了 MAA 的模板加载约定:模板图片可放在template目录及其子目录下,加载时递归查找(参见 docs/zh-tw/protocol/task-schema.md 中template字段的说明)。
4.4 任务自动补全
扩展会根据所有已知任务提供自动补全。开启 Maa 兼容模式后,在 JSON 值位置输入@符号即可触发补全菜单,快速生成任务名@父任务形式的模板任务,避免手写出错。
4.5 补全图片路径
类似地,扩展会根据所有已知图片路径进行自动补全,开启 Maa 兼容模式后支持递归搜索,确保template字段引用的图片真实存在。
五、任务与图片路径的自动验证
扩展会定时扫描并分析所有任务,自动检查以下四类问题:
| 检查项 | 说明 | 示例 |
|---|---|---|
| 重复命名的任务定义 | 同一任务名被多次定义 | 两个文件都定义了"Return" |
| 未知的任务引用 | next/sub等字段引用了不存在的任务 | "next": ["NoSuchTask"] |
| 未知的图片引用 | template指向不存在的图片文件 | "template": "missing.png" |
| 单任务中的重复任务引用 | 同一任务在列表中被重复列出 | "next": ["A", "B", "A"] |
其中「重复引用」的检查与 MAA 的运行期语义一致——任务流程协议明确规定:对于相同任务,第一次识别后第二次不再识别,即"next": [ "A", "B", "A", "A" ]等价于"next": [ "A", "B" ](见 docs/zh-tw/protocol/task-schema.md)。扩展在编辑期就帮你把这类冗余暴露出来。
六、多路径资源支持:逻辑覆盖规则
interface.json中resource[*].path可以是多个路径,扩展会按照数组内指定的顺序进行逻辑覆盖:
- 后加载(排在后面)的路径内容可以引用到先加载(排在前面)路径的内容;
- 同名任务/图片在后加载路径中覆盖先加载路径的定义。
这与 MAA 的多文件任务机制一脉相承:如果后加载的任务文件中定义了与先加载文件同名的任务,且没有baseTask字段,则直接继承先加载同名任务的字段;若定义了baseTask字段,则直接覆盖(参见 docs/zh-tw/protocol/task-schema.md 中「多檔案任務」一节)。以 interface.json 中的台服方案为例:
{ "name": "台服 | txwy", "path": ["{PROJECT_DIR}/resource", "{PROJECT_DIR}/resource/global/txwy/resource"] }即先加载通用 resource,再加载台服专属覆盖目录resource/global/txwy/resource(该目录下的tasks/可覆盖通用任务定义)。
七、计算任务 / 任务列表表达式(仅限 MAA)
在 Maa 兼容模式下,通过控制面板可以:
- 计算任务实际展开的内容及其每一项的来源——即模板任务继承父类字段后、最终生效的完整任务定义;
- 计算任务列表表达式展开后的结果——对
sub、next、onErrorNext、exceededNext、reduceOtherTimes等任务列表类型字段中出现的表达式进行求值。
MAA 的任务列表表达式包含以下运算符(完整说明见 docs/zh-tw/protocol/task-schema.md 的「運算式計算」一节):
| 符号 | 含义 | 实例 |
|---|---|---|
@ | @型任务 | Fight@ReturnTo |
#(一元) | 虚任务 | #self |
#(二元) | 虚任务 | StartUpThemes#next |
* | 重复多个任务 | (ClickCornerAfterPRTS+ClickCorner)*10 |
+ | 任务列表合并(同名任务只保留最靠前者) | A+B |
^ | 任务列表差(顺序不变) | (A+A+B+C)^(A+B+D)(结果为C) |
运算符优先级为:#(一元)>@=#(二元)>*>+=^。手工推算这类展开很容易出错,而扩展可以直接给出展开结果与每一项的来源,是调试复杂模板任务链路的利器。
在本仓库 resource/tasks/tasks.json 中可以找到大量真实表达式示例,例如:
"Block": { "Doc": "base_task", "algorithm": "JustReturn", "action": "DoNothing", "next": ["#self"] }, "SlowlySwipeToTheLeft": { "algorithm": "JustReturn", "action": "Swipe", "postDelay": 200, "specificRect": [300, 310, 100, 100], "specificRect_Doc": "滑动起点", "rectMove": [880, 310, 100, 100], "rectMove_Doc": "滑动终点", "specialParams": [200, 1, 37, 1], "next": ["#next"], "maxTimes": 50 }其中next: ["#self"]表示执行完毕后跳回自身(配合maxTimes构成循环),next: ["#next"]表示继承父任务(若为@型任务)的next字段——这些正是虚任务(#型任务)的典型应用,编辑期通过扩展可以直观看到它们展开后的最终形态。
八、MaaPiCli 功能(仅限 MaaFramework 项目)
对于 MaaFramework 项目(而非 MAA 本体),控制面板还集成了 MaaPiCli 的常用操作,无需切换到终端即可:
- 扫描并选择控制器:对应
interface.json中controller数组内声明的控制器; - 选择资源:切换
resource数组中的资源方案; - 新增并管理任务:向当前界面任务队列增删任务;
- 执行任务:直接驱动当前选中的控制器运行任务,实现「改完即测」。
注意:该功能依赖 MaaFramework 的 CLI 产物,仅适用于 MaaFramework 项目场景;在本仓库(MAA 本体)中主要使用的是上文所述的语义分析、表达式计算等功能。
九、截图裁剪与快速识别:调试 ROI 的完整闭环
在命令面板中执行Maa: 開啟截圖工具,即可打开「截图 / 裁剪」面板。这是任务调试中使用频率最高的功能,操作流程如下:
- 连接控制器:选择并连接控制器后,点击「截图」按钮可直接获取屏幕截图;
- 手动上传:也可使用「上传」按钮手动上传已有图片(例如从测试机导出的截图);
- 框选裁剪:按住
Ctrl键,拖动框选需要裁剪的区域; - 缩放:使用鼠标滚轮对图片进行缩放,便于精确定位小控件;
- 保存:裁剪完成后点击「下载」按钮,裁剪结果会自动保存到当前启动资源中最顶层的图片目录(即
interface.json所选资源方案的第一个path下的template目录),命名后即可直接被template字段引用; - 复制 ROI:使用「复制」按钮,可将裁剪区域的 ROI 以数组形式(
[x, y, width, height])复制到剪贴板,直接粘贴进roi字段使用; - 快速识别:点击「工具」按钮打开识别工具面板,可对当前图片直接进行识别测试(模板匹配 / OCR),无需跑完整流程即可验证任务参数。
::: warning 若 OCR 识别结果为空,请检查OCR 模型是否配置正确。针对 MAA,扩展会自动维护所使用的模型,你只需在控制面板中选择正确的资源即可;若自建 MaaFramework 项目,则需按 MaaFramework 文档自行配置文字识别模型文件。 :::
十、日志查看功能
调试期间产出的日志可通过两条命令直达:
| 命令 | 查看内容 | 对应日志文件 |
|---|---|---|
Maa: 開啟 maa 日誌 | MaaFramework 运行日志 | maa.log |
Maa: 開啟插件日誌 | 扩展自身的运行日志 | mse.log |
当扩展行为异常(如补全不生效、资源未加载)时,优先查看mse.log定位扩展侧问题;当任务识别不符合预期(如模板得分偏低)时,结合maa.log中的实际匹配得分来调整templThreshold等参数(得分查看方法参见 docs/zh-tw/protocol/task-schema.md 中templThreshold字段说明)。
十一、底部状态栏:版本与面板入口
VS Code 底部状态栏会常驻两个与扩展相关的条目:
MaaSupport <扩展版本>:点击可聚焦到左侧控制面板;MaaFramework <MaaFw版本>:点击可切换扩展使用的 MaaFramework 版本。
需要留意的是:可选择的版本受限于当前扩展所支持的版本范围,若所需版本不在列表中,需要更换扩展本身的版本(升级或降级扩展以获取对应支持)。
十二、与仓库既有配置的协同:Schema 校验与 JSONC
扩展的语义分析能力与仓库自带的 JSON Schema 校验是互补关系,二者共同构成完整的编辑体验:
- 仓库在 .vscode/settings.json 中已配置好
json.schemas,将resource/tasks/**/*.json与resource/global/**/resource/tasks/**/*.json关联到 docs/maa_tasks_schema.json; - 同时通过
files.associations将resource/tasks/**/*.json识别为JSONC,允许带注释的_Doc字段(如 resource/tasks/tasks.json 中的specificRect_Doc、specialParams_Doc)得到正确的语法高亮。
因此,在 VS Code 中直接打开本仓库文件夹即可同时获得:Schema 的字段级校验与提示(来自maa_tasks_schema.json,其中定义了JustReturnTask、MatchTemplateTask、OcrDetectTask、FeatureMatchTask四类任务结构)+ 扩展的语义级跳转、补全、诊断与表达式计算。前者保证字段「写对了」,后者保证任务「连得上、引得到、图找得到」。
十三、实操建议:从安装到调试的推荐工作流
综合以上全部能力,推荐的任务开发工作流如下:
- 打开仓库:VS Code 打开 MaaAssistantArknights 仓库根目录,确认状态栏出现
MaaSupport条目、活动栏出现控制面板图标(即扩展已生效),并因存在 src/MaaCore 目录自动启用 Maa 兼容模式; - 选择资源:在控制面板顶部选择当前生效的 interface.json 与目标资源方案(如「官服 | Official」);
- 编写任务:在 resource/tasks/tasks.json 中编辑任务,利用
@触发补全、Ctrl + T跳转定义、表达式计算验证next链路的展开结果; - 准备图片:执行
Maa: 開啟截圖工具,连接控制器截取目标界面,框选裁剪 ROI,一键保存至资源顶层template目录,并将 ROI 数组粘贴到roi字段; - 识别验证:在截图工具面板中对裁剪结果直接进行模板/OCR 识别测试,确认参数有效;
- 查看日志:任务执行后通过
Maa: 開啟 maa 日誌检查maa.log,若扩展本身异常则查看插件日志mse.log。
结语
Maa Support 扩展把 MaaAssistantArknights / MaaFramework 的tasks.json开发从「盲写 JSON」提升为「语义化编辑」:模板任务与@/#表达式的展开计算、定义/引用双向导航、图片路径递归补全与校验,配合截图裁剪工具形成的「截图 → 裁剪 ROI → 识别测试 → 保存模板」闭环,能够显著降低任务流程的开发与排错成本。对于本仓库的开发者而言,只需以 VS Code 打开仓库根目录,即可让扩展与仓库自带的 docs/maa_tasks_schema.json Schema、interface.json 多路径资源方案协同工作,将主要精力集中在任务逻辑本身。
【免费下载链接】MaaAssistantArknights《明日方舟》小助手,全日常一键长草!| A one-click tool for the daily tasks of Arknights, supporting all clients.项目地址: https://gitcode.com/GitHub_Trending/ma/MaaAssistantArknights
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考