
MaaAssistantArknights SideStory 活动导航详解tasks 任务、StageActivityV2 配置与 MaaRelease 同步的联动实践【免费下载链接】MaaAssistantArknights《明日方舟》小助手全日常一键长草| A one-click tool for the daily tasks of Arknights, supporting all clients.项目地址: https://gitcode.com/GitHub_Trending/ma/MaaAssistantArknights本篇围绕明日方舟小助手 MaaAssistantArknights 中 SideStory别传活动关卡导航的新增与更新流程展开读者将完整掌握resource/tasks/Stages/XX.json导航任务文件的结构设计与字段含义、StageActivityV2.json活动配置条目的替换规则与MinimumRequired版本号策略以及 MaaRelease 远程资源仓库的镜像同步方法并理解 OCR 选章与模板图选章两种识别方案在底层任务系统中的实现依据。一、SideStory 导航为什么需要多文件联动SideStory 活动关卡如TO-9、ME-7与普通常驻关卡不同它们只存在于当期活动入口内需要小助手先识别活动横幅、进入活动界面、切换到目标章节、再在关卡列表中定位具体关卡。这条链路由三处内容共同支撑导航任务定义resource/tasks/Stages/XX.json描述如何打开活动、如何选章、如何找关的图式任务Task Graph活动元数据StageActivityV2.json描述活动叫什么、何时开放、有哪些关卡、每关掉落什么供 GUI 与调度层读取远程资源镜像MaaRelease 仓库的api/目录客户端运行时实际拉取资源与配置的来源。三者的内容必须保持一致任何一处遗漏都会导致活动导航失效或 GUI 中不显示当期活动。本文的写作骨架即来自仓库内的技能文档 SKILL.md下面在其基础上结合仓库中的真实配置文件与任务源码逐项展开。二、新增活动前必须收集的信息清单按 SKILL.md 的要求动手改文件之前必须先把以下 11 项信息收集完整若用户只提供了一部分需要列出仍缺少的项#信息项说明示例1活动前缀代号 XX两字母关卡前缀TO2活动全名填入 StageActivityV2 的 Tip/StageName直到大地变成一颗酸橙3OpenOcr 识别文字活动入口横幅文字会随活动进度变化第一期是活动名后续 EX/新章节开放后变为对应章节内容需要提前写好所有阶段直到大地变成一颗酸橙, 踏上归家长途, 眺望待行之路4关卡编号列表通常后三关 可选搓玉关7, 8, 9或4, 7, 8, 95各关卡掉落物名称非搓玉关用于查item_index.json取 ID糖组、凝胶、晶体元件6搓玉关掉落描述如有搓玉关直接填入 Drop 字段不查表搓玉效率0.987关卡开放时间起止时间8.1 12:00 — 8.22 03:598选章方式OCR 文字 / 模板图OCR「驶向大地尽头」或模板图9选章识别内容OCR 文字或模板图文件名驶向大地尽头10选章 roi 坐标截图中的位置用户可能用[x, y, w, h]或xw yh两种格式之一[1040, 420, 150, 50]或x1040150 y4205011进活动后等待时间postDelay 毫秒数5000等 5 秒若选章方式为模板图还需额外提醒用户提供模板图片并准备修改MinimumRequired版本号原因见本文第五节。三、术语与涉及文件3.1 术语约定简称含义XX活动前缀代号如TD、TO、AT取自关卡名XX-7的前半tasks 导航文件resource/tasks/Stages/XX.jsonStageActivityV2build/bin/Debug/cache/gui/StageActivityV2.json主仓库的缓存副本MaaRelease上级目录../MaaRelease/MaaAssistantArknights/api/下的镜像文件3.2 需要改动的四类文件#文件路径必需性作用1resource/tasks/Stages/XX.json✅ 必须关卡导航任务定义OCR 识别活动入口、选章、找关2build/bin/Debug/cache/gui/StageActivityV2.json✅ 本地测试本地构建缓存。客户端运行时从远程 APIgui/StageActivityV2.json拉取到本地该路径是构建/运行产物而非纳入版本控制的文件修改此文件仅用于本地测试3../MaaRelease/MaaAssistantArknights/api/gui/StageActivityV2.json✅ 必须MaaRelease 远程源文件StageActivityV2 的真正来源位于本仓库上级目录不在当前仓库内4../MaaRelease/MaaAssistantArknights/api/resource/tasks.json 可选MaaRelease 精简 tasks 覆盖层只放活动导航依赖项由客户端本地资源提供当前仓库resource/tasks/Stages/目录下已积累了大量历史活动的导航文件可作为直接参照TO.json——OCR 选章 ocrReplace纠错的完整样例AT.json——含搓玉关AT-4与preDelay的样例ME.json——三常规关 三低编号关的样例以及 TD.json、AveMujica.json、base.json 等。四、tasks 导航文件结构与字段深讲resource/tasks/Stages/XX.json4.1 关卡范围约定通常是活动的后三关如 7/8/9、6/7/8、8/9/10但具体关卡编号由用户提供可能有额外的低关卡用于搓玉如第 4 关、第 5 关搓玉关与后三关一并加入导航。以真实存在的 TO.json 为例它导入了常规关TO-7/8/9与低编号关TO-5文件内所有键按本文第 4.6 节的顺序规则排列。4.2 任务定义模板逐项字段解释SKILL.md 给出的标准模板如下每个字段的作用在注释中进一步说明{ // —— 关卡入口按编号从小到大—— XX-4: { algorithm: JustReturn, // 该节点本身不做识别仅用于组织子任务与后续节点 sub: [XX-4XX-OpenOpt], // 前置子任务先执行打开活动流程 next: [XX-4SideStoryStage, XX-4SwipeToStage] // 之后依次尝试识别关卡号与滑动找关 }, XX-7: { ... }, XX-8: { ... }, XX-9: { ... }, // —— 关卡识别按编号从小到大—— XX-4SideStoryStage: { text: [XX-4] }, // 继承 baseTask SideStoryStage 的 OCR 识别 XX-7SideStoryStage: { text: [XX-7] }, XX-8SideStoryStage: { text: [XX-8] }, XX-9SideStoryStage: { text: [XX-9] }, // —— 活动入口 —— XX-OpenOpt: { algorithm: JustReturn, next: [XX-OpenOcr, XX-Open] // 先试 OCR 识别横幅失败再退化为模板匹配 }, XX-Open: { baseTask: SS-Open, // 继承基础任务的动作与 roi postDelay: 5000, // 进活动后等待时间按需调整 template: [StageSideStory.png, StageActivity.png], // SideStory/活动入口图标 next: [XXChapterToXX] }, XX-OpenOcr: { baseTask: SS-OpenOcr, text: [...], // 见下方 OCR 文本规则 postDelay: 5000, next: [XXChapterToXX] }, // —— 选章进入活动后选择关卡列表—— XXChapterToXX: { // 方式 AOCR 识别章节名可被 OCR 时优先使用 algorithm: OcrDetect, action: ClickSelf, // 识别成功后点击识别到的文字自身位置 text: [章节名], roi: [x, y, w, h], postDelay: 2000, next: [#self, SideStoryStage, ChapterSwipeToTheRight] // #self 表示未识别到时重试自身失败兜底是滑动到最右再扫一遍章节 } }4.3 基础任务的继承来源SS-Open、SS-OpenOcr、SideStoryStage模板中出现的baseTask字段是 MaaAssistantArknights 任务系统的继承机制子任务只写差异基础字段roi、action、algorithm由基础任务提供。这些基础任务都定义在主任务文件 resource/tasks/Stages/base.json 与 resource/tasks/tasks.json 中SS-OpenOcrbase.jsonClickSelf OcrDetect默认roi: [0, 500, 500, 150]即左侧活动横幅区域SS-Openbase.json模板匹配点击roi: [505, 57, 462, 628]覆盖右侧活动/剧情入口列注释明确要求使用时需再次指定 template——这正解释了为什么每个XX-Open节点都要再写一次StageSideStory.png/StageActivity.pngSideStoryStagetasks.jsonOcrDetect ClickSelfisAscii: true关卡编号为 ASCII使用更快的识别路径并内置了一组ocrReplace纠错规则去除空格、o→O、c→C、s→S、-1O$→-10$等把 OCR 的易错输出归一化为XX-N形式SwipeToStagetasks.json基于ChapterSlowlySwipeToTheLeft的活动导航左滑找关滑动器ChapterSwipeToTheRighttasks.jsonmaxTimes: 10的向右扫到底兜底用于选章未命中时遍历章节列表。值得注意的是各活动文件可以覆写继承来的ocrReplace。例如 TO.json 中每个SideStoryStage都追加了[T0-, TO-]——因为 OCR 极易把字母 O 识别为数字 0这个局部纠错规则正是模板第 4.4 节规则的落地写法。4.4 真实案例TO.json与模板逐段对照TO.json 是模板的一个逐字实现可以对照验证各字段的实际取值// 入口节点先 sub 打开活动再识别/滑动找关TO-4 在真实文件中对应 TO-5 搓玉关 TO-5: { algorithm: JustReturn, sub: [TO-5TO-OpenOpt], next: [TO-5SideStoryStage, TO-5SwipeToStage] }, // OCR 入口text 中同时放长活动名全文与4 字短词兜底原文在前短词在后 TO-OpenOcr: { baseTask: SS-OpenOcr, text: [ 直到大地变成一颗酸橙, // 活动第一期横幅 踏上归家长途, // 后续章节开放后横幅会变化 眺望待行之路, 直到大地, 大地变成, 一颗酸橙, 踏上归家, 归家长途, 眺望待行, 待行之路 ], postDelay: 5000, next: [TOChapterToTO] }, // 选章OCR 方式识别章节名后点击自身 TOChapterToTO: { algorithm: OcrDetect, action: ClickSelf, text: [驶向大地尽头], roi: [1040, 420, 150, 50], postDelay: 2000, next: [#self, SideStoryStage, ChapterSwipeToTheRight] }对照 AT.json 可以看到选章任务还常带preDelayAT 的选章用了preDelay: 3000用于等待章节列表动画完成ME.json 则示范了postDelay: 3000的取值差异——这些毫秒数正是信息清单第 11 项进活动后等待时间要用户提供的参数。4.5XXChapterToXX选章任务的两种方式方式适用场景algorithmA. OCR章节名是可识别的文字OcrDetectB. 模板图章节名不可 OCR特殊字体/图标MatchTemplate方式 B 示例XXChapterToXX: { action: ClickSelf, template: XXChapterToXX.png, roi: [x, y, w, h], postDelay: 2000, next: [#self, SideStoryStage, ChapterSwipeToTheRight] }使用模板图时的联动操作需要新增XXChapterToXX.png模板图片到resource/template/StageNavigation/SideStory/XX/目录当前仓库中该目录下已有TD、WB等历史活动子目录以及公共的StageSideStory.png、StageActivity.png并且必须修改 StageActivityV2.json 中的MinimumRequired原因见第五节 5.3。4.6 OCR 文本规则与排列顺序规则OCR 文本规则长活动名切成多段 4 字短词同时保留原文混排在text数组中原文放前面短词兜底放后面示例text: [直到大地变成一颗酸橙, 踏上归家长途, 眺望待行之路, 直到大地, 一颗酸橙, 踏上归家, 归家长途, 眺望待行, 待行之路]原因全字匹配任一错字就失败短词提高容错但不可太短≥4 字避免误匹配。排列顺序规则tasks 导航文件中关卡按编号从小到大排列搓玉关放最后。先放所有入口任务XX-N再放所有XX-NSideStoryStage最后放XX-OpenOpt/XX-Open/XX-OpenOcr/XXChapterToXX。同一组内常规关卡按编号从小到大搓玉关低编号如XX-4/XX-5Drop 为搓玉描述放在常规关之后。TO.json 中TO-7/8/9在前、TO-5搓玉在后的写法即为范例。4.7 roi 坐标由用户提供截图坐标格式为[x, y, width, height]。XXChapterToXX的 roi 通常由用户以 x1040150 y42050 的形式给出即[1040, 420, 150, 50]——TO.json 中的roi: [1040, 420, 150, 50]与 SKILL.md 示例完全一致说明该示例即来源于 TO 活动的真实配置。五、StageActivityV2.json活动元数据配置5.1 两个存放位置本地测试缓存build/bin/Debug/cache/gui/StageActivityV2.json客户端运行时从远程 API 拉取到本地缓存该路径为构建/运行产物通常不随仓库提交修改此文件仅用于本地测试远程源文件../MaaRelease/MaaAssistantArknights/api/gui/StageActivityV2.json位于主仓库上级目录的 MaaRelease 中是 StageActivityV2 的真正来源。修改必须 commit 推送后才对用户生效提交/推送 MaaRelease 与主仓库一样须先获得用户明确指令两者内容必须一致。GUI 侧的读取逻辑可参见 StageManager.cs 与 StageActivityInfo.cs从源码结构看活动名称、开放/过期时间与关卡列表正是由这份 JSON 驱动界面上活动关卡的显示与可用性判断的。5.2 条目结构与替换规则将旧活动条目整体替换为新活动。键名为活动前缀如TO结构如下TO: { MinimumRequired: v6.11.0, // 见 §5.3 版本号规则 Activity: { Tip: SideStory「活动全名」, StageName: 活动全名, UtcStartTime: 2026/08/01 12:00:00, UtcExpireTime: 2026/08/22 03:59:59, TimeZone: 8 }, Stages: [ { Display: TO-9, Value: TO-9, Drop: 31033 }, { Display: TO-8, Value: TO-8, Drop: 31013 }, { Display: TO-7, Value: TO-7, Drop: 30023 }, { Display: TO-4, Value: TO-4, Drop: 搓玉用 } ] }字段说明Tip/StageName对应信息清单第 2 项活动全名Tip带SideStory「…」前缀UtcStartTime/UtcExpireTime/TimeZone对应第 7 项关卡开放时间格式为yyyy/MM/dd HH:mm:ssTimeZone一般为 8服务器时区Stages中Display与Value相同均为XX-N形式的关卡名Drop取值规则见 5.5。5.3 MinimumRequired 版本号规则XXChapterToXX方式版本号处理A. OCR已有任务可复用沿用旧活动的值通常无需改动B. 模板图需新增模板必须改为当前最新 tag 的下一个版本模板图方式的具体操作查看当前最新版本号如git describe --tags得到v6.15.1将MinimumRequired改为下一个 patch 版本如v6.15.2通知用户复查该版本号是否正确因为新模板图片需要随新版本客户端分发——旧版本客户端的资源包里根本没有这张模板图若版本号不抬升用户将直接遇到模板缺失导致的导航失败。5.4 Stages 数组排列顺序StageActivityV2 的 Stages 数组按编号从大到小排列。高难关卡高掉落价值排在前面搓玉等低关卡排在后面。这与 tasks 导航文件从小到大、搓玉关最后的规则方向相反是两处文件最容易搞混的地方见 5.6 速查表。5.5 Drop 字段取值规则关卡类型Drop 取值获取方式后三关常规掉落item_index ID如31033在resource/item_index.json中按材料名查表取 key搓玉关等特殊关用户提供的文字描述如搓玉效率0.98直接使用用户提供的描述不查表resource/item_index.json是以材料 ID 为 key 的字典含name、description、usage等字段。当前仓库中确实存在上述示例 ID30023、31013、31033分别位于 item_index.json、L577、L623 附近可据此反查材料名验证按材料名查表取 key的操作闭环。知识个别关卡可能有独立的MinimumRequired如某关卡需要更新版本才能解锁可单独加到该关卡的条目中{ Display: XX-4, Value: XX-4, Drop: 搓玉用, MinimumRequired: v6.16.0 }。但用户通常不会指定不需要主动询问。六、MaaRelease 仓库同步可选步骤MaaRelease 仓库的同步是可选操作。用户本地可能没有拉取该仓库或者仓库不在上级目录。操作前先检查../MaaRelease/是否存在不存在则跳过此步骤。6.1 前置检查# 检查上级目录是否有 MaaRelease Test-Path ..\MaaRelease若存在则git pull更新到最新。6.2 需要同步的文件文件操作api/gui/StageActivityV2.json与主仓库缓存保持一致api/resource/tasks.json将新活动导航任务追加到文件开头BlackFlowTemporary之前6.3api/resource/tasks.json的追加规则MaaRelease 的tasks.json是精简覆盖层只放活动导航任务本身不放依赖项SS-Open、SideStoryStage、SwipeToStage、ChapterSwipeToTheRight等基础任务由客户端本地资源提供——这与第四节分析的baseTask继承机制相互印证基础任务本就来自本地 base.json 与 tasks.json无需重复分发新内容放文件开头{之后、第一个已有 key 之前不是末尾内容与主仓库resource/tasks/Stages/XX.json完全一致。七、排列顺序速查与完整操作清单7.1 排列顺序速查文件顺序resource/tasks/Stages/XX.json常规关卡编号从小到大搓玉关放最后MaaReleaseapi/resource/tasks.json同上StageActivityV2.json的Stages数组关卡编号从大到小搓玉关天然在末尾7.2 完整操作清单✅ 创建/修改resource/tasks/Stages/XX.json导航任务常规关卡从小到大搓玉关放最后✅ 修改build/bin/Debug/cache/gui/StageActivityV2.json本地测试缓存替换活动关卡从大到小Drop 查表或用用户描述若XXChapterToXX用模板图修改MinimumRequired为下一个版本通知用户复查 检查../MaaRelease/是否存在存在则cd ../MaaRelease; git pull修改api/gui/StageActivityV2.json远程源文件同步骤 2修改api/resource/tasks.json导航任务追加到开头关卡从小到大八、要点回顾SideStory 导航的本质是一条OCR/模板识别 → 点击进入 → 选章 → 滑动找关的任务图而活动元数据与远程资源镜像保证这条任务图在正确的时间、正确的客户端版本上对用户可见。实操时的三条铁律三处内容一致主仓库 tasks 文件、本地 StageActivityV2 缓存、MaaRelease 远程源必须同步修改两种排序方向tasks 文件从小到大搓玉关最后StageActivityV2 的 Stages 从大到小模板图必抬版本号凡新增模板图片MinimumRequired必须指向包含该图片的新版本并请用户复核。按 SKILL.md 的信息清单收集齐 11 项参数后以 TO.json 这类历史文件为范本复制改写即可完成一次完整、可测试的活动导航更新。【免费下载链接】MaaAssistantArknights《明日方舟》小助手全日常一键长草| A one-click tool for the daily tasks of Arknights, supporting all clients.项目地址: https://gitcode.com/GitHub_Trending/ma/MaaAssistantArknights创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考