diff --git a/.dsh/skills/keil-build/SKILL.md b/.dsh/skills/keil-build/SKILL.md index 24033943..048386a7 100644 --- a/.dsh/skills/keil-build/SKILL.md +++ b/.dsh/skills/keil-build/SKILL.md @@ -24,9 +24,9 @@ whenToUse: 需要编译 Keil MDK 工程、验证代码改动是否 0 错误 0 **`@build` = 本 skill**(2026-10-10 起为仓库文档口径):在仓库根目录跑 `& '.venv\Scripts\python.exe' .dsh\skills\keil-build\scripts\keil_build.py`。 -仓库原生入口 `& "MDK-ARM\build.bat"` 与本 skill 判定口径一致 -(先删旧日志 → `-b -j0 -o` → 无 `error:` 且含 `0 Error(s), 0 Warning(s)`), -**等价可用**,但它无超时保护、UV4 只认 `DTU_KEIL_UV4`、失败时 dump 整份日志 → 默认走本 skill。 +判定口径(与原 `MDK-ARM/build.bat` 同款;该文件已于 2026-10-10 删除,本 skill 即 `@build`): +先删旧日志 → `-b -j0 -o` → 无 `error:` 且含 `0 Error(s), 0 Warning(s)`。 +本 skill 另有超时保护、UV4 多级解析链(含 PATH 兜底)、失败只打报错行。 环境变量 `DTU_KEIL_UV4`(用户级,指向 UV4.exe)。 ## 铁律与陷阱(实测教训) diff --git a/.dsh/skills/keil-build/scripts/keil_build.py b/.dsh/skills/keil-build/scripts/keil_build.py index c4045cf3..a11ea3f7 100644 --- a/.dsh/skills/keil-build/scripts/keil_build.py +++ b/.dsh/skills/keil-build/scripts/keil_build.py @@ -13,7 +13,7 @@ (环境变量**显式设了但路径无效 = 立即报错,不静默回退**) 日志 --log > 档案 "build_log" > <工程目录>\\build_log.txt -判定口径(与仓库 build.bat 一致,实测教训沉淀): +判定口径(实测教训沉淀;原仓库 MDK-ARM/build.bat 已删除,本脚本即 @build): 1. 先删旧日志——UV4 -o 只在真跑了构建才写日志,残留旧日志会被当成本次结果 2. UV4 单实例:IDE 开着时 -b 可能被转发给 IDE(退出码丢失)→ 只 WARN 不杀进程 3. PASS = 日志存在 + 无 "error:"(大小写不敏感)+ 含 "0 Error(s), 0 Warning(s)" diff --git a/.dsh/skills/new-machine-setup/SKILL.md b/.dsh/skills/new-machine-setup/SKILL.md index 305d8ea0..53b90272 100644 --- a/.dsh/skills/new-machine-setup/SKILL.md +++ b/.dsh/skills/new-machine-setup/SKILL.md @@ -40,7 +40,7 @@ whenToUse: 换新机器/新克隆要把环境搭起来、构建或烧录报"环 ## 实测坑(本会话两次撞上) - **agent/服务派生的 shell 不继承"服务启动之后"设置的用户级环境变量**: - `keil_build.py`(或等价的 `build.bat`)报 exit 2 先分清"真没设"还是"没继承"——查 + `keil_build.py` 报 exit 2 先分清"真没设"还是"没继承"——查 `[Environment]::GetEnvironmentVariable('DTU_KEIL_UV4','User')`,有值就 `$env:DTU_KEIL_UV4 = <该值>` 注入当前会话再跑,别急着让用户重设。 (`env_check.py` 对这种情况报 WARN 并给注入命令。) diff --git a/AGENTS.md b/AGENTS.md index c12e0f66..b9ef9889 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -15,7 +15,7 @@ STM32F407ZGTx @168MHz(HSE 8MHz → PLL M=4/N=168/P=2);**仅 Keil MDK-ARM v ## 构建与验证 -- `@build` = **`keil-build` skill**:`& '.venv\Scripts\python.exe' .dsh\skills\keil-build\scripts\keil_build.py`(仓库根目录执行;纯标准库,任意 python3 亦可)。退出码 0 = 0 错误 0 警告(PASS)、1 = 构建失败(打印报错行)、2 = UV4 未找到/无效、3 = 用法错误。UV4 解析链 `--uv4` > `.serialtest/config.json` 的 `uv4` > `$DSH_KEIL_UV4` > `$DTU_KEIL_UV4` > PATH(**显式设了但无效 = 立即报错、不静默回退**);日志 `MDK-ARM/build_log.txt`。**仓库原生入口 `& "MDK-ARM\build.bat"` 判定口径完全一致(先删旧日志 → `-b -j0 -o` → 无 `error:` 且含 `0 Error(s), 0 Warning(s)`),等价可用**——但它无超时保护、UV4 只认 `DTU_KEIL_UV4`、失败时 dump 整份日志,故默认走 skill。换机必设 `DTU_KEIL_UV4`,见 `docs/环境与部署/本地工具路径环境变量方案.md` +- `@build` = **`keil-build` skill**:`& '.venv\Scripts\python.exe' .dsh\skills\keil-build\scripts\keil_build.py`(仓库根目录执行;纯标准库,任意 python3 亦可)。退出码 0 = 0 错误 0 警告(PASS)、1 = 构建失败(打印报错行)、2 = UV4 未找到/无效、3 = 用法错误。UV4 解析链 `--uv4` > `.serialtest/config.json` 的 `uv4` > `$DSH_KEIL_UV4` > `$DTU_KEIL_UV4` > PATH(**显式设了但无效 = 立即报错、不静默回退**);日志 `MDK-ARM/build_log.txt`。⚠ **原 `MDK-ARM/build.bat` 已于 2026-10-10 删除**(判定口径同款,但无超时保护、UV4 只认 `DTU_KEIL_UV4`、失败时 dump 整份日志);`test/run_all_suites.py` 已改调本 skill。换机必设 `DTU_KEIL_UV4`,见 `docs/环境与部署/本地工具路径环境变量方案.md` - `@test` / `.dsh/skills/serial-boot-test/scripts/run_boot_test.py` 一键闭环(2026-09-20 起为纯 Python 标准库实现,替代 PowerShell 版;`& '.venv\Scripts\python.exe' .dsh/skills/serial-boot-test/scripts/run_boot_test.py`):开串口+清日志 → 烧录(`MDK-ARM/download.bat`,下载后 Reset&Run;快路径 `--flash-cmd "MDK-ARM\reset.bat flash"`)→ **固件身份戳**(从刚烧进去的 hex 里抠 `fw build: