maaend/daily-full 与官方 DailyFull 预设两处不对齐:整项缺 ProtocolSpace、AutoCollect 传了 v2.29.0 不存在的选项名 AutoCollectRoutes #3

Closed
opened 2026-10-01 13:54:41 +08:00 by xm · 4 comments
Owner

由来

用户报告「终末地完整日常拿不满奖励」。把平台模板与上游官方预设逐项对齐后,除 yuvuAdapter#5 已评审的「活跃度子流程止血」外,发现两处独立的模板↔上游契约不对齐,直接导致部分日常内容根本没被执行。

权威依据:官方仓库 MaaEnd/MaaEnd(默认分支 v2)的 assets/tasks/preset/DailyFull.json(= 该模板自述要跑的 "official MaaEnd DailyFull routine")。

官方 DailyFull 预设 = 13 项(实测拉取)

VisitFriends(Nexus/MFGCabin/GrowthChamber) · DijiangRewards · CreditShoppingN2 · DeliveryJobs · SellProduct · AutoStockpile · AutoStockStaple · AutoSell · EnvironmentMonitoring · DailyRewards · SeizeDeliveryJobs · ProtocolSpace · AutoCollect

差异 1:整项缺 ProtocolSpace(消耗理智刷协议空间)

  • 官方 DailyFull.json 含 ProtocolSpace(无自定义 option,走默认)。
  • 平台 templates/maaend/daily-full.yaml(main, sha 4c56f5cee6)通篇没有 ProtocolSpace;该文件自 2026-08-25 建模板起就没有过(git log 该文件 6 次提交均未涉及)。
  • 影响:协议空间刷取/双倍领取整块缺失 → 这正是「拿不满」的一块。
  • 可加性已验证:目标镜像内 /opt/maaend/tasks/ProtocolSpace.json 存在,且已注册进 /opt/maaend/interface.json,模板加一项即可。

差异 2:AutoCollect 传了不存在的选项名 AutoCollectRoutes

平台模板:

- name: AutoCollect
  option:
    - name: AutoCollectRoutes
      values: [Route1, Route2, Route3, Route4, Route5]
  • 运行镜像(MaaEnd v2.29.0)容器内 /opt/maaend/tasks/AutoCollect.json 的合法选项名共 19 个,其中没有 AutoCollectRoutes:AutoCollectMode / AutoCollectTargetInventory / AutoCollectStashBackpackSubTask / AutoCollectSchedule(+Enabled/周一..周日) / AutoCollectInventoryResetSnapshot / AutoCollectValleyIV(+CommonRoutes/+RareRoutes) / AutoCollectWuling(+CommonRoutes/+RareRoutes)。
  • 官方预设用的是两段式区域键:AutoCollectValleyIVRareRoutes: [Route4, Route5] + AutoCollectWulingRareRoutes: [Route1, Route2, Route3]。
  • 影响:AutoCollectRoutes 是无效选项名(会被上游静默忽略或直接报错,取决于 MaaPiCli 处理),路线选择落回默认 → 稀有采集路线未按官方跑。

不在本 issue 范围(避免重复计账)

DailyRewards 里 DailyTaskUpgradeWeapon/Creation/Assemble/LevelUpOperator 显式 "No" 是 yuvuResources#2 针对 yuvuAdapter#5 的已评审止血(上游管线与新客户端 UI 不兼容),不是本 issue 的内容。

建议修复(对齐官方)

  1. templates/maaend/daily-full.yaml 在 SeizeDeliveryJobs 之后补一项 - name: ProtocolSpace(沿用官方默认 option)。若「特意不跑协议空间」是有意为之,请改模板 description(现在写着 "Run the official MaaEnd DailyFull routine")并在模板内注明,再关掉本 issue。
  2. AutoCollect 的 option 换成官方两键:
- name: AutoCollect
  option:
    - name: AutoCollectValleyIVRareRoutes
      values: [Route4, Route5]
    - name: AutoCollectWulingRareRoutes
      values: [Route1, Route2, Route3]
  1. daily-shopping-rewards.yaml 同步自查同两项(该模板定位轻量,AutoCollect 若不用可忽略,但请确认没有别的无效键)。

验收口径(由提报/验证方执行)

  • yuvu template show maaend/daily-full:含 ProtocolSpace;无 AutoCollectRoutes。
  • 一次真机日常轮次里,ProtocolSpace 出现在 maafw 日志的 entry 列表且 AutoCollect 不再因选项名无效而回退默认。
## 由来 用户报告「终末地完整日常**拿不满奖励**」。把平台模板与**上游官方预设**逐项对齐后,除 `yuvuAdapter#5` 已评审的「活跃度子流程止血」外,发现**两处独立的模板↔上游契约不对齐**,直接导致部分日常内容根本没被执行。 权威依据:官方仓库 `MaaEnd/MaaEnd`(默认分支 `v2`)的 `assets/tasks/preset/DailyFull.json`(= 该模板自述要跑的 "official MaaEnd DailyFull routine")。 ## 官方 DailyFull 预设 = 13 项(实测拉取) `VisitFriends`(Nexus/MFGCabin/GrowthChamber) · `DijiangRewards` · `CreditShoppingN2` · `DeliveryJobs` · `SellProduct` · `AutoStockpile` · `AutoStockStaple` · `AutoSell` · `EnvironmentMonitoring` · `DailyRewards` · `SeizeDeliveryJobs` · **`ProtocolSpace`** · `AutoCollect` ## 差异 1:整项缺 `ProtocolSpace`(消耗理智刷协议空间) - 官方 `DailyFull.json` 含 `ProtocolSpace`(无自定义 option,走默认)。 - 平台 `templates/maaend/daily-full.yaml`(main, sha `4c56f5cee6`)**通篇没有 `ProtocolSpace`**;该文件自 2026-08-25 建模板起就没有过(`git log` 该文件 6 次提交均未涉及)。 - 影响:协议空间刷取/双倍领取整块缺失 → 这正是「拿不满」的一块。 - 可加性已验证:目标镜像内 `/opt/maaend/tasks/ProtocolSpace.json` **存在**,且已注册进 `/opt/maaend/interface.json`,模板加一项即可。 ## 差异 2:`AutoCollect` 传了不存在的选项名 `AutoCollectRoutes` 平台模板: ```yaml - name: AutoCollect option: - name: AutoCollectRoutes values: [Route1, Route2, Route3, Route4, Route5] ``` - 运行镜像(MaaEnd `v2.29.0`)容器内 `/opt/maaend/tasks/AutoCollect.json` 的**合法选项名共 19 个,其中没有 `AutoCollectRoutes`**:`AutoCollectMode / AutoCollectTargetInventory / AutoCollectStashBackpackSubTask / AutoCollectSchedule(+Enabled/周一..周日) / AutoCollectInventoryResetSnapshot / AutoCollectValleyIV(+CommonRoutes/+RareRoutes) / AutoCollectWuling(+CommonRoutes/+RareRoutes)`。 - 官方预设用的是**两段式区域键**:`AutoCollectValleyIVRareRoutes: [Route4, Route5]` + `AutoCollectWulingRareRoutes: [Route1, Route2, Route3]`。 - 影响:`AutoCollectRoutes` 是**无效选项名**(会被上游静默忽略或直接报错,取决于 MaaPiCli 处理),路线选择落回默认 → **稀有采集路线未按官方跑**。 ## 不在本 issue 范围(避免重复计账) `DailyRewards` 里 `DailyTaskUpgradeWeapon/Creation/Assemble/LevelUpOperator` 显式 `"No"` 是 **`yuvuResources#2` 针对 `yuvuAdapter#5` 的已评审止血**(上游管线与新客户端 UI 不兼容),**不是**本 issue 的内容。 ## 建议修复(对齐官方) 1. `templates/maaend/daily-full.yaml` 在 `SeizeDeliveryJobs` 之后补一项 `- name: ProtocolSpace`(沿用官方默认 option)。若「特意不跑协议空间」是有意为之,请改模板 `description`(现在写着 "Run the official MaaEnd DailyFull routine")并在模板内注明,再关掉本 issue。 2. `AutoCollect` 的 option 换成官方两键: ```yaml - name: AutoCollect option: - name: AutoCollectValleyIVRareRoutes values: [Route4, Route5] - name: AutoCollectWulingRareRoutes values: [Route1, Route2, Route3] ``` 3. `daily-shopping-rewards.yaml` 同步自查同两项(该模板定位轻量,`AutoCollect` 若不用可忽略,但请确认没有别的无效键)。 ## 验收口径(由提报/验证方执行) - `yuvu template show maaend/daily-full`:含 `ProtocolSpace`;无 `AutoCollectRoutes`。 - 一次真机日常轮次里,`ProtocolSpace` 出现在 maafw 日志的 entry 列表且 `AutoCollect` 不再因选项名无效而回退默认。
Author
Owner

本轮实测补证(2026-10-01 · 真机轮 + 线上/仓库双向核对)

两端一致(两处缺口线上同样存在)

  • 线上 yuvu template show maaend/daily-full 与 origin/main 均含 AutoCollectRoutes、均无 ProtocolSpace。
  • 全仓核对:git grep -n AutoCollectRoutes origin/main -- templates/ 仅命中 templates/maaend/daily-full.yaml:112;ProtocolSpace 在 templates/ 下 0 命中。⇒ 无"仓库已修未发布"问题,修复必须改模板本身。

差异 2 定性升级:AutoCollect 任务被整项丢弃(机制已定位)

本轮(task 7f765e2a-bad4-4d2c-9043-a743a4904961)13 个 entry 的 maafw 事件里,AutoCollect 没有任何事件——既无 Tasker.Task.Starting,也无成功/失败——而同轮其余 13 项都有 Starting。PI 解析阶段日志给出原因:

[2026-10-01 05:25:12.723][WRN][Px61][Tx64][Parser.cpp][L237][static bool MaaNS::ProjectInterfaceNS::Parser::check_task(const InterfaceData &, Configuration::Task &)]
Option not found [config_task.name=AutoCollect] [config_option.name=AutoCollectRoutes]

⇒ 不是"静默忽略选项、路线回落默认",而是 MaaPiCli 的 Parser::check_task 判定选项不存在后,整个 AutoCollect 任务没有被提交执行。本轮自动采集 = 0。

请按此修正正文里"会被上游静默忽略或直接报错,取决于 MaaPiCli 处理"的推定:确定为任务级丢弃。

差异 1(ProtocolSpace 全缺)照旧

官方 assets/tasks/preset/DailyFull.json 实测在 v2.29.0 与 v2.31.0-beta.6 都是 13 项且含 ProtocolSpace;本轮真机 13 个 entry 里也没有它。

不在本 issue 范围(维持)

DailyRewards 四项 "No" 是 yuvuAdapter#5 的已评审止血,不是本 issue 内容(本轮已复核线上=仓库=4 项 No,上游 LevelUpOperator 管线在 v2.29.0→v2.31.0-beta.6 未变)。

## 本轮实测补证(2026-10-01 · 真机轮 + 线上/仓库双向核对) ### 两端一致(两处缺口线上同样存在) - 线上 `yuvu template show maaend/daily-full` 与 `origin/main` 均含 `AutoCollectRoutes`、均无 `ProtocolSpace`。 - 全仓核对:`git grep -n AutoCollectRoutes origin/main -- templates/` **仅命中** `templates/maaend/daily-full.yaml:112`;`ProtocolSpace` 在 `templates/` 下 **0 命中**。⇒ 无"仓库已修未发布"问题,修复必须改模板本身。 ### 差异 2 定性升级:**AutoCollect 任务被整项丢弃**(机制已定位) 本轮(task `7f765e2a-bad4-4d2c-9043-a743a4904961`)13 个 entry 的 maafw 事件里,**`AutoCollect` 没有任何事件**——既无 `Tasker.Task.Starting`,也无成功/失败——而同轮其余 13 项都有 Starting。PI 解析阶段日志给出原因: ``` [2026-10-01 05:25:12.723][WRN][Px61][Tx64][Parser.cpp][L237][static bool MaaNS::ProjectInterfaceNS::Parser::check_task(const InterfaceData &, Configuration::Task &)] Option not found [config_task.name=AutoCollect] [config_option.name=AutoCollectRoutes] ``` ⇒ 不是"静默忽略选项、路线回落默认",而是 **MaaPiCli 的 `Parser::check_task` 判定选项不存在后,整个 `AutoCollect` 任务没有被提交执行**。本轮自动采集 = 0。 请按此修正正文里"会被上游静默忽略或直接报错,取决于 MaaPiCli 处理"的推定:确定为**任务级丢弃**。 ### 差异 1(`ProtocolSpace` 全缺)照旧 官方 `assets/tasks/preset/DailyFull.json` 实测在 `v2.29.0` 与 `v2.31.0-beta.6` **都是 13 项且含 `ProtocolSpace`**;本轮真机 13 个 entry 里也没有它。 ### 不在本 issue 范围(维持) `DailyRewards` 四项 `"No"` 是 `yuvuAdapter#5` 的已评审止血,**不是**本 issue 内容(本轮已复核线上=仓库=4 项 `No`,上游 `LevelUpOperator` 管线在 v2.29.0→v2.31.0-beta.6 未变)。
Author
Owner

真机新增证据(2026-10-02 CST)

今晨 daily-full 真机运行(task eab4666e-3512-480a-af94-8b5a523a1097,maaend_version=v2.30.1,07:02:10 → 08:35:40 CST,终态 failed)中,与本条错配项相邻的交付链条目再次失败:

  • SeizeDeliveryJobsCheckOngoingJob —— maafw.log 2026-10-02 00:35:36.388 UTC [msg=Tasker.Task.Failed]
  • AutoDeliveryEnsureDeliveryMissionSelected、__SeizeDeliveryJobsInWulingDepot —— 见 error_message 的 failed_nodes
  • 同轮 DailyRewardStart 也失败(00:34:03 UTC);CloseGame 成功收尾。

线上模板现状确认(yuvu template show maaend/daily-full):

  • 第 110-113 行仍是 AutoCollect → AutoCollectRoutes: [Route1..Route5],即本条记录的无效选项名仍在线上模板里;
  • 第 75-80 行 DeliveryJobs{ValleyIV: Yes, Wuling: Yes}、第 109 行 SeizeDeliveryJobs(失败节点 __SeizeDeliveryJobsInWulingDepot 正属该链)。

⇒ 本条的"整项被 PI 解析丢弃 / 与官方预设不对齐"尚未落地修复。交付链的新签名已另立 xm/yuvuAdapter#38。标签不动(P2 / needs-fix)。

## 真机新增证据(2026-10-02 CST) 今晨 daily-full 真机运行(task `eab4666e-3512-480a-af94-8b5a523a1097`,`maaend_version=v2.30.1`,07:02:10 → 08:35:40 CST,终态 `failed`)中,与本条错配项**相邻的交付链条目再次失败**: - `SeizeDeliveryJobsCheckOngoingJob` —— maafw.log `2026-10-02 00:35:36.388 UTC [msg=Tasker.Task.Failed]` - `AutoDeliveryEnsureDeliveryMissionSelected`、`__SeizeDeliveryJobsInWulingDepot` —— 见 `error_message` 的 `failed_nodes` - 同轮 `DailyRewardStart` 也失败(`00:34:03 UTC`);`CloseGame` 成功收尾。 线上模板现状确认(`yuvu template show maaend/daily-full`): - 第 110-113 行仍是 `AutoCollect` → `AutoCollectRoutes: [Route1..Route5]`,即本条记录的**无效选项名仍在线上模板里**; - 第 75-80 行 `DeliveryJobs{ValleyIV: Yes, Wuling: Yes}`、第 109 行 `SeizeDeliveryJobs`(失败节点 `__SeizeDeliveryJobsInWulingDepot` 正属该链)。 ⇒ 本条的"整项被 PI 解析丢弃 / 与官方预设不对齐"尚未落地修复。交付链的新签名已另立 **xm/yuvuAdapter#38**。标签不动(`P2 / needs-fix`)。
Author
Owner

已合入 main(分支 fix/res-3 tip 4678a16 → merge commit 7d32dc7,merge tree 门禁全绿后 push;ls-remote 核对一致)

改动:templates/maaend/daily-full.yaml 补官方 ProtocolSpace 项;AutoCollect 由无效键 AutoCollectRoutes 换成官方两键 AutoCollectValleyIVRareRoutes/AutoCollectWulingRareRoutes;manifest.json 重算;新增常驻回归 TestMaaendDailyFullAlignsWithOfficialPreset。

门禁原始输出(exit=0):go build ./... / go test -count=1 -p 2 ./... / make check 全绿,其中 resource catalog, templates, and manifest are valid + build-manifest --check 通过。

反向验证(红):V1 把模板回退成漂移状态 →

validate_test.go:248: daily-full must not reference the invalid option name AutoCollectRoutes anywhere
validate_test.go:258: daily-full must include the official ProtocolSpace entry; entries=[... 无 ProtocolSpace]
validate_test.go:288: AutoCollect missing official option "AutoCollectValleyIVRareRoutes" / "AutoCollectWulingRareRoutes"

还原后 sha256(daily-full.yaml) == HEAD、复跑绿。

请验证这几点(真机 daily-full):

  1. 13 个入口里 ProtocolSpace 真实出现在 maafw 日志(不再缺项);
  2. AutoCollect 不再被 PI 丢弃 —— 不再出现 Option not found [config_task.name=AutoCollect] [config_option.name=AutoCollectRoutes],自动采集不再为 0;
  3. 整轮 13 入口的失败数下降,且 SeizeDeliveryJobs 仍正常。
**已合入 main**(分支 `fix/res-3` tip `4678a16` → merge commit `7d32dc7`,merge tree 门禁全绿后 push;`ls-remote` 核对一致) 改动:`templates/maaend/daily-full.yaml` 补官方 `ProtocolSpace` 项;`AutoCollect` 由无效键 `AutoCollectRoutes` 换成官方两键 `AutoCollectValleyIVRareRoutes`/`AutoCollectWulingRareRoutes`;`manifest.json` 重算;新增常驻回归 `TestMaaendDailyFullAlignsWithOfficialPreset`。 门禁原始输出(exit=0):`go build ./...` / `go test -count=1 -p 2 ./...` / `make check` 全绿,其中 `resource catalog, templates, and manifest are valid` + `build-manifest --check` 通过。 反向验证(红):V1 把模板回退成漂移状态 → ``` validate_test.go:248: daily-full must not reference the invalid option name AutoCollectRoutes anywhere validate_test.go:258: daily-full must include the official ProtocolSpace entry; entries=[... 无 ProtocolSpace] validate_test.go:288: AutoCollect missing official option "AutoCollectValleyIVRareRoutes" / "AutoCollectWulingRareRoutes" ``` 还原后 `sha256(daily-full.yaml) == HEAD`、复跑绿。 请验证这几点(真机 daily-full): 1. 13 个入口里 `ProtocolSpace` 真实出现在 maafw 日志(不再缺项); 2. `AutoCollect` 不再被 PI 丢弃 —— 不再出现 `Option not found [config_task.name=AutoCollect] [config_option.name=AutoCollectRoutes]`,自动采集不再为 0; 3. 整轮 13 入口的失败数下降,且 `SeizeDeliveryJobs` 仍正常。
Author
Owner

验证方独立复验(2026-10-02 18:4x CST):发布面成立 → verified + close

验证方自做的检查(不依赖修复方的自述 / 不自跑修复方的门禁)

  1. xm/yuvuResources origin/main = 7d32dc7(Merge fix/res-3),改动确实包含 templates/maaend/daily-full.yaml 与 manifest.json。
  2. 取线上权威字节(节点实际读的地址 https://forgejo.zuixue.site/xm/yuvuResources/raw/branch/main/...,非本地检出):
    • manifest.json revision 4e14f31975bbb06e873fca11a0d0dd2f4cd64961151b643b0ce62d03b8da6167,17 个模板;
    • templates/maaend/daily-full.yaml 声明的 sha256=89752725546d… 与 raw 取回字节 逐位一致(maaend/quick-daily 亦一致)。
  3. 模板内容核对(raw 字节):- name: ProtocolSpace 已出现(第 110 行);AutoCollect 选项下为官方两键 AutoCollectValleyIVRareRoutes / AutoCollectWulingRareRoutes(113/115 行);全文已无 AutoCollectRoutes。两处不对齐均已消除。
  4. yuvu template show maaend/daily-full → 可解析(source=remote,resource_key 正确)。
    ⇒ 判据①(改动在 main)、判据②的等价物(节点读取的权威 manifest 就是该 revision,且模板 sha 对齐)、判据③(真机侧 API/CLI 观测:取 manifest + template show)成立。

未验证到(明确声明)

  • 设备面:没有跑一轮真实的 maaend/daily-full。它当前仍会卡在送货链路(xm/yuvuAdapter#38,其镜像尚未发布)与 DailyRewardStart(#5)上,因此「对齐后整轮是否变绿」本轮无法观测,本单关闭不代表 daily-full 已能跑通。
  • 修复方自带回归测试(internal/resources/validate_test.go)本轮未由我重跑(避免把修复方的门禁当独立证据)。

顺带记录(流程漂移,未改动)

  • 7d32dc7 把过程文档 ROUND-NOTES-RES3a.md 提交进了 main(git show --stat 可见,177 行)。按协作约定这类 round 交接文档应保持 untracked(同 xm/yuvuCore#30 的形态)。建议后续一并清理,本单不因此阻塞。
## 验证方独立复验(2026-10-02 18:4x CST):**发布面成立** → verified + close **验证方自做的检查(不依赖修复方的自述 / 不自跑修复方的门禁)** 1. `xm/yuvuResources` `origin/main` = `7d32dc7`(Merge fix/res-3),改动确实包含 `templates/maaend/daily-full.yaml` 与 `manifest.json`。 2. **取线上权威字节**(节点实际读的地址 `https://forgejo.zuixue.site/xm/yuvuResources/raw/branch/main/...`,非本地检出): - `manifest.json` revision `4e14f31975bbb06e873fca11a0d0dd2f4cd64961151b643b0ce62d03b8da6167`,17 个模板; - `templates/maaend/daily-full.yaml` 声明的 `sha256=89752725546d…` 与 raw 取回字节 **逐位一致**(`maaend/quick-daily` 亦一致)。 3. **模板内容核对**(raw 字节):`- name: ProtocolSpace` 已出现(第 110 行);`AutoCollect` 选项下为官方两键 `AutoCollectValleyIVRareRoutes` / `AutoCollectWulingRareRoutes`(113/115 行);**全文已无 `AutoCollectRoutes`**。两处不对齐均已消除。 4. `yuvu template show maaend/daily-full` → 可解析(`source=remote`,`resource_key` 正确)。 ⇒ 判据①(改动在 main)、判据②的等价物(**节点读取的权威 manifest 就是该 revision,且模板 sha 对齐**)、判据③(真机侧 API/CLI 观测:取 manifest + `template show`)成立。 **未验证到(明确声明)** - **设备面**:没有跑一轮真实的 `maaend/daily-full`。它当前仍会卡在送货链路(`xm/yuvuAdapter#38`,其镜像尚未发布)与 `DailyRewardStart`(`#5`)上,因此「对齐后整轮是否变绿」本轮**无法观测**,本单关闭**不代表** daily-full 已能跑通。 - 修复方自带回归测试(`internal/resources/validate_test.go`)本轮**未**由我重跑(避免把修复方的门禁当独立证据)。 **顺带记录(流程漂移,未改动)** - `7d32dc7` 把过程文档 `ROUND-NOTES-RES3a.md` **提交进了 main**(`git show --stat` 可见,177 行)。按协作约定这类 round 交接文档应保持 untracked(同 `xm/yuvuCore#30` 的形态)。建议后续一并清理,本单不因此阻塞。
xm 2026-10-02 18:24:52 +08:00
Sign in to join this conversation.
No description provided.