.agents/skills/maa-issue-log-analysis/SKILL.md
KNOWLEDGE.md,先用其中的通用误判规则校正自己的分析路径,再读 issue 和日志。KNOWLEDGE.md 中的 Stateful UI Automation Checks 与 Reception Clue Analysis。maa-cyber-fortune-master/SKILL.md 生成一段短小的玄学回复,把对话自然引导到“补日志 / 截图 / 报错 / 诊断信息”。https://github.com/MaaAssistantArknights/MaaAssistantArknights。#1234 形式的 issue 编号。report_*.zip,先判断用户是否至少提供了其他有效证据(报错文本、截图、导出诊断、清晰复现步骤)。maa-cyber-fortune-master/SKILL.md,不要直接输出严肃分析模板。report_*.zip 但仍有其他有效证据,再明确说明证据不足,并尽量基于 issue 文本、截图、代码和文档给出初步判断。#1234 视为 https://github.com/MaaAssistantArknights/MaaAssistantArknights/issues/1234MaaAssistantArknights/MaaAssistantArknights,停止并说明此 skill 不适用。maa-cyber-fortune-master/SKILL.md,先用短小玄学回复活跃气氛,再把对话引导到补充日志、截图、报错或诊断信息。-hard、用户现象、复现步骤、维护者或机器人评论。report_*.zip。report_MM-dd_HH-mm-ss 分组,同一时间戳下的 part01、part02、part03 是独立 zip,不是需要先拼接的分卷压缩包。part01,再决定是否看 part02+。part01 一定优先,通常包含:debug/asst.logdebug/asst.bak.logdebug/gui.logdebug/gui.bak.logconfig/*cache/*resource/*_custom.*part02+ 只包含 debug 子目录中最近 3 天修改过的文件,可能是:debug/interface/*.pngdebug/drops/*.pngdebug/infrast/**debug/roguelike/**debug/dumps/*part02+ 可能是空包,也可能只包含图片;不要默认里面一定有文本日志。gui.log 找用户点击、所选关卡、任务链开始、报错时间。asst.log 还原底层行为。gui.log 中的 Start Task Chain、GetFightStage、任务出错 锁定时间窗,再回到 asst.log 里的 taskid、SubTaskError、TaskChainError。gui.log 中的重试流程和 asst.log 中的 adb devices、adb connect、ConnectionInfo 串起来。ConnectConfig 是 PC,改走 AttachWindow / Win32Controller 这条线:gui.log 确认 AttachWindow: Found windowasst.log 里看 Win32Controller::screencap、Win32Controller::clickConnectionInfo.ConnectFailed 的思路分析config/ 与 cache/resource/ 还原用户当时实际运行的配置和资源。src/MaaWpfGui/Res/Localizations/zh-cn.xaml 查中文文案,不要直接把 LocalizationHelper.GetString("Key") 里的 Key、DynamicResource key、TaskChain 名或枚举名当成最终展示文本。debug/asst.logSubTaskError / TaskChainErrordebug/asst.bak.logasst.logdebug/gui.logStart Task Chain。debug/gui.bak.logconfig/gui.json、config/gui.new.json、备份文件config/gui.jsonconfig/gui.new.jsonconfig/gui.json.oldconfig/gui.json.bakStagePlan15-13-hard 之类的硬难度关卡gui.new.json 可能比 gui.json 更接近用户当前界面上的任务配置,不能只看一个文件。gui.new.json 与 gui.log / asst.log 的实际运行状态冲突,继续检查:gui.new.json.bakgui.json.oldgui.json.bakcache/resource/tasks.json 和 cache/resource/tasks/tasks.jsoncache/resource,再用当前仓库代码判断是否已修复。cache/gui/StageActivity.json / StageActivityV2.jsondebug/interface/*.pngasst.log 有 Save image ... debug/interface/...,但上传包没有这张图,要明确说明“日志表明现场图存在,但用户未上传对应分卷”。debug/drops/*.pngdebug/infrast/**、debug/roguelike/**debug/dumps/*MAA.exe.dmp,如果有,也要一起分析。-hardreport_03-15_11-07-05git checkout vXXX)复核旧逻辑gui.log 找这几类高价值信号:正在连接模拟器Already connectedGetFightStageStart Task Chain任务出错连接失败asst.log 找底层证据:ConnectionInfoConnectFailedTaskChainErrorSubTaskErrorto_be_recognizedcur_retrySave imageofflineunauthorizedfailed to connectcannot connectadb.exe devices 里有没有 offlineadb.exe connect 是否报 10061ConnectionInfo.what / whyconfig/gui.json 中的:ConnectConfigConnect.AddressConnect.AllowADBRestartConnect.AllowADBHardRestartConnect.MuMu12Extras.Enabledconfig/gui.json 中 Connect.ConnectConfig == "PC"gui.log 中:连接 PC 端(实验性功能,稳定性无法保证)AttachWindow: Found windowhandle: ..., hwnd: ..., screencapMethod: ..., mouseMethod: ..., keyboardMethod: ...asst.log 中:Win32Controller::screencapWin32Controller::clickconfig/gui.new.json / gui.json 中的 StagePlangui.log 中的 GetFightStageasst.log 中的:Episode15ChapterDifficultyHardEnterChapterDifficultyHardSubTaskErrordebug/interface/*.pngresource/tasks/tasks.json 与 cache/resource/tasks*.jsongui.log 只显示“连接失败”,但 asst.log 里已经给出 adb devices、adb connect、端口轮询和 ConnectionInfo。连接类问题必须以 asst.log 为准。
adb devices 显示目标地址 offline,随后 MuMu 备选端口都 10061,通常更像模拟器 / ADB 状态异常,或自动探测到的端口不可达,而不是任务逻辑问题。
gui.log 显示选中的关卡是 15-13-hard 一类 hard 代码,而 asst.log 长时间卡在 ChapterDifficultyHard,OCR 却反复识别到和按钮无关的文字,通常说明当前画面没有进入预期的难度切换界面。
asst.log 明确写了 Save image 到 debug/interface/*.png 或 debug/drops/*.png,但上传包没有相应分卷时,要把“缺失的现场证据”单独写出来。
part02 可以是空包,也可以只包含图片;不要因为没有文本日志就把它判成“无用分卷”。
issue 机器人评论“日志没有上传成功”时,不要自动当真;先验证正文附件是否仍可下载。
如果 gui.log 说“任务出错”,但对应 taskid 的 asst.log 实际 AllTasksCompleted,要明确写“本次日志未复现用户描述的问题”。
对会客室 / 线索 issue,如果 asst.log 里出现 InfrastClueQuickInsert、remove_clue、SendClues 或 InfrastClueQuickSendDuplicates,先对照资源任务判断这是不是当前设计流程,不要只看线索板中途是否为空。
如果线索流程里出现“取下线索 -> 赠送重复线索 -> 条件满足后统一放置”,默认先按 by design 处理;只有当日志显示本应统一放置却没有发生时,再继续追实现问题。
用户日志里的任务流程与当前主线代码明显不一致,且当前代码看起来已经修掉了该问题:
git checkout vXXX)核对旧逻辑。gui.new.json、gui.json 和实际日志不一致时,不要急着判“用户配置写错了”;先看 gui.new.json.bak 和 gui.json.old,尤其是用户复现后又改回开关的场景。
在 ConnectConfig=PC 的 issue 里,Win32Controller::click 正常返回不代表点击真的生效;要看点击后的下一帧中,按钮状态、数量 OCR、场景识别有没有变化。
gui.log 中"已使用即将过期的理智药"这类高层提示,不一定等价于底层逐药 OCR 结论;如果 asst.log 明确识别到 3天、NotExpiring 等相反证据,应优先相信 asst.log。注意过期天数阈值现为可配置参数 medicine_expire_days,不再是固定 48 小时。
src/MaaWpfGui/ViewModels/UserControl/Settings/IssueReportUserControlModel.cssrc/MaaWpfGui/Main/Bootstrapper.cssrc/MaaCore/Utils/Logger.hppsrc/MaaUtils/include/MaaUtils/Logger.hsrc/MaaWpfGui/Main/AsstProxy.cssrc/MaaWpfGui/ViewModels/UI/TaskQueueViewModel.cssrc/MaaWpfGui/ViewModels/UserControl/Settings/ConnectSettingsUserControlModel.cssrc/MaaCore/Controller/MinitouchController.cppdocs/zh-cn/protocol/callback-schema.mddocs/zh-cn/manual/device/android.mdsrc/MaaWpfGui/ViewModels/UserControl/Settings/ConnectSettingsUserControlModel.cssrc/MaaWpfGui/Main/AsstProxy.csresource/tasks/tasks.jsonsrc/MaaWpfGui/ViewModels/UserControl/TaskQueue/FightSettingsUserControlModel.cssrc/MaaWpfGui/Models/AsstTasks/AsstFightTask.cssrc/MaaCore/Task/Interface/FightTask.cppsrc/MaaCore/Task/Fight/MedicineCounterTaskPlugin.cppresource/tasks/tasks.jsonsrc/MaaCore/Utils/DebugImageHelper.hppsrc/MaaWpfGui/Res/Localizations/zh-cn.xamlsrc/MaaWpfGui/Res/Localizations/zh-cn.xaml 中的中文文案。src/MaaWpfGui/ViewModels/UI/TaskQueueViewModel.cs 中 LocalizationHelper.GetString(taskType.ToString()) 的 key,再到 src/MaaWpfGui/Res/Localizations/zh-cn.xaml 查 StartUp、Fight、Infrast、Recruit、Mall、Award、Roguelike、Reclamation、Custom。StartTask、CompleteTask、TaskError、ConnectFailed、TryToReconnect 等 key。*.xaml / *.cs 里找 DynamicResource SomeKey 或 LocalizationHelper.GetString("SomeKey"),再到 src/MaaWpfGui/Res/Localizations/zh-cn.xaml 查中文。Issue、GenerateSupportPayload、OpenDebugFolder 等 key。config/gui*.json 里任务有用户自定义 Name,输出时优先保留用户自定义名称;必要时再括号补默认任务类型中文,例如 刷理智(理智作战 / Fight)。taskChain / 枚举名,例如 基建换班(Infrast)。src/MaaWpfGui/Res/Localizations/zh-cn.xaml 没有对应 key,再退回原始 key 或代码里的英文字符串,并明确说明“未在 src/MaaWpfGui/Res/Localizations/zh-cn.xaml 找到对应文案”。blob 行号链接,用尖括号包裹。https://github.com/MaaAssistantArknights/MaaAssistantArknights/blob/<commit>/<path>#L14-L20<commit> 必须是本次分析实际依据的代码版本:
HEAD如果 issue 像 #16014 一样是 MuMu ADB 连接随机失败,并且同时出现:
config/gui.json 里 ConnectConfig 是 MuMuEmulator12127.0.0.1:16384gui.log 在复现时段从 16384 轮询到 16576asst.log 里 adb devices 返回 127.0.0.1:16384 offlineasst.log 里对备选端口出现 cannot connect ... (10061)ConnectionInfo.what 是 ConnectFailed那么根因更可能是 ADB / 模拟器连接层异常,而不是 GUI 任务队列逻辑;此时应结合 MuMu 默认端口表和 Android offline 文档给出建议。
如果 issue 像 #16002 一样是 15/16 章 hard 难度切换失败,并且同时出现:
config/gui.new.json 或 gui.log 里关卡是 15-13-hardasst.log 里先进入 Episode15ChapterDifficultyHard推演计分 等无关文本SubTaskError,并保存 debug/interface/*.pngresource/tasks/tasks.json 里 EnterChapterDifficultyHard 期望在固定 ROI 识别到 进入作战那么根因更可能是当前画面没有进入预期的难度切换界面,或按钮没有出现在资源定义的期望区域,而不是“Hard 后缀本身没有传到 core”。
先做输出分流,不要无论什么情况都套完整模板。
maa-cyber-fortune-master/SKILL.md 的风格回复,并把“赛博算一卦”放在开头。Issue 概要关键证据根因判断修复方案English translation[一句简短复述用户现象]
[赛博算一卦 / 掐指一算 / 夜观天象开场]
[1 到 2 句短小玄学分析]
[一句自然收束到补日志、截图、报错或导出诊断]
你这个是刷界园时,第一层商店点了招募券就直接结束。
赛博算一卦,界园属木,招募券属火,如今商店财位一震,像是招募灵脉和界园卦象临时撞了车,程序当场收摊回府。
不过这卦现在只有天象,没有脉案。建议补一份复现当次的日志或报错截图,不然贫道也只能隔着网线观星象。
最终回答再用这个完整结构:
## Issue 概要
- issue:`#1234`
- 版本 / 资源时间:
- 模拟器 / 连接配置 / 任务:优先写 `zh-cn` 中文任务名;如果日志里是用户自定义任务名,先写自定义名,再补默认任务类型中文 / key
- 相关设置项 / 关键提示文案:优先写 `src/MaaWpfGui/Res/Localizations/zh-cn.xaml` 中的中文文案
- 用户现象:
## 关键证据
<details><summary>点击此处展开</summary>
- `debug/gui.log`:
- `debug/asst.log`:
- `config/gui.json` / `config/gui.new.json`:
- `cache/resource` / `cache/gui`:
- `debug/interface` / `debug/drops`:
- 代码依据:如需指向具体实现,直接附远端 GitHub 行号链接
</details>
## 根因判断
- 直接结论:
- 证据链:
## 给用户的建议
- 用户现在可以直接尝试的动作:
- 是否建议升级 / 重下完整包 / 同步资源 / 重置配置:
- 是否需要等待开发者修复:
- 是否有临时绕过方案:
## 修复方案
1. 代码 / 资源 / 配置层修复
2. 需要补充的日志或截图
3. 需要补充的测试
## 给修复 AI 的建议(可复制)
<details><summary>点击此处展开</summary>
~~~text
现象:
[一句话描述用户可见的问题]
关键证据:
[粘贴原始日志、堆栈、监控截图中的关键文本]
可能相关线索(待验证):
[根据日志/现象推测的可能方向,不保证准确,供参考]
~~~
</details>
## 置信度
- 高 / 中 / 低
- 还缺什么证据
## English translation
<details><summary>Click here to expand</summary>
Translate the complete conclusion directly into English and paste it here. Note that the English text is in `src/MaaWpfGui/Res/Localizations/en-us.xaml`.
</details>
maa-cyber-fortune-master/SKILL.md,先把气氛接住,再把话题引回补证据。gui.log 下结论。cache/resource。src/MaaWpfGui/Res/Localizations/zh-cn.xaml 的中文文案;必要时才在括号里补原始 key / taskChain / 枚举名。blob 行号链接,用尖括号包裹,不要给本地路径加行号。