用途
Error Message Explainer 用于解决 Arduino 与嵌入式开发(包括 ESP32、RP2040 等)中的报错理解问题:把晦涩的编译器、上传、启动、供电与运行时错误翻译成可执行的修复建议。它适用于用户从 Arduino IDE、Arduino CLI、PlatformIO 或厂商专用工具中贴出错误或失败信息时。
主要能力
技能内置脚本 scripts/parse_errors.py,提供 20 多种错误模式的自动分析,并引用 Uno R4 系列开发板的共享注意事项文档 ../../docs/board-support/uno-r4-family.md。它能区分构建、上传、硬件和系统证据,给出与具体开发板相关的恢复路径,不假设 UNO、ESP32 或 RP2040 的行为一致。
覆盖的错误类型包括:
- 编译错误:如 "'xyz' was not declared in this scope"(拼写错误、声明顺序、缺少 #include、函数前向声明)、"expected ';' before..."(上一行缺少分号)、"expected ')' / '}'"(括号不匹配)、"invalid conversion from 'const char*' to 'char*'"(字符串字面量只读)、"no matching function for call to..."(参数数量或类型不符)、"multiple definition of 'xyz'"(多文件重复定义,建议用 extern 或 inline)、"'xyz' does not name a type"(缺少对应开发板的头文件)、"redefinition of 'xyz'"(同作用域重复声明)等。
- 上传错误:"avrdude: stk500_recv(): programmer is not responding"(通信失败排查顺序:开发板、端口、数据线、USB 口、TX/RX 引脚、复位、驱动)、"A fatal error occurred: Failed to connect to ESP32"(进入 bootloader 的按键操作)、"Sketch too big"(使用 F() 宏、移除未用库、缩小数据类型或换更大 Flash 的板子)。
- 库与类型错误:"fatal error: xyz.h: No such file or directory"(通过库管理器安装或添加 ZIP 库)、"exit status 1"(真正的错误在其上方)、"cannot convert 'String' to 'const char*'"、"invalid operands to binary expression"(C 字符串不能用 + 拼接)等。
使用方式
脚本支持多种调用方式:
uv run --no-project scripts/parse_errors.py --file error_log.txt
uv run --no-project scripts/parse_errors.py --message "error: 'LED' was not declared in this scope"
uv run --no-project scripts/parse_errors.py --interactive
arduino-cli compile 2>&1 | uv run --no-project scripts/parse_errors.py --stdin
处理用户错误消息的流程为:识别错误类型、用简单语言解释含义、给出带代码示例的具体修复、解释错误发生的原因(教学价值);若目标为 Uno R4 系列且涉及 WiFi、OTA、USB 或板卡识别,则查阅 ../../docs/board-support/uno-r4-family.md。
恢复边界
在建议复位、擦除、修复 bootloader 或重新烧录之前,需先记录确切的开发板/版本、工具与库版本、端口、供电路径和最后已知可用的镜像,并使用 ../arduino-workflow-router/references/failure-recovery.md 处理上传失败、启动失败、供电故障或固件损坏。不要把编译修复称作硬件或系统修复。
调试策略
- 先读第一条错误(后续错误常为级联);2. 记下文件名与行号;3. 查看该行及其上一行;4. 对照常见模式;5. 一次只修一个错误并重新编译;6. 重复直至干净。
输出约定
遵循 ../../docs/arduino-skill-contract.md 的共享 Arduino 技能契约:说明假设、所需工具与版本、实现步骤、按证明阶段划分的测试/证据、已知限制以及恢复与安全注意事项。
限制
资料未提供该技能的独立定价、平台支持范围、准确率指标或离线能力等信息。其错误模式库的具体条目数量仅描述为 20+,未列出完整清单。