From 7a54fdbc7311826efb64f44f93a000851a8299f6 Mon Sep 17 00:00:00 2001 From: Wanderingss <1624155937@qq.com> Date: Sat, 10 Oct 2026 16:19:14 +0800 Subject: [PATCH] =?UTF-8?q?docs(build):=20@build=20=E7=BB=9F=E4=B8=80?= =?UTF-8?q?=E4=B8=BA=20keil-build=20skill=EF=BC=8Cbuild.bat=20=E9=99=8D?= =?UTF-8?q?=E4=B8=BA=E7=AD=89=E4=BB=B7=E5=8E=9F=E7=94=9F=E5=85=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - AGENTS.md 构建条:@build = keil-build skill(写明 UV4 解析链、退出码 0/1/2/3、日志路径);MDK-ARM/build.bat 明确为等价原生入口,并列出 它相对 skill 缺的三项(无超时保护 / UV4 只认 DTU_KEIL_UV4 / 失败 dump 整份日志) - keil-build SKILL.md「本仓库」段同步:skill 即 @build 口径 - 3 个 skill(new-source-file / ui-verify / new-machine-setup)与 8 篇 docs、README、MDK-ARM/README、环境与部署 3 篇:命令示例与 @build 标识统一改指 skill - scripts/stack_report.py 的构建提示串改指 skill - 环境与部署:DTU_KEIL_UV4 使用方补 keil_build.py;反向测试期望的报错 文案对齐 skill 实际输出(BUILD_ENV_ERROR: ... is set but not a file) - 刻意未改:docs/问题记录/项目审查与优化建议报告.md 的 P2-14/N-18 历史审计条目(属史实记录);test/run_all_suites.py 的 BUILD_BAT 常量(是代码、非文档,改动需另做验证) --- .dsh/skills/keil-build/SKILL.md | 7 +++++-- .dsh/skills/new-machine-setup/SKILL.md | 4 ++-- .dsh/skills/new-source-file/SKILL.md | 2 +- .dsh/skills/ui-verify/SKILL.md | 2 +- AGENTS.md | 2 +- MDK-ARM/README.md | 6 +++--- README.md | 4 ++-- docs/UI设计/UI_中文字体生成与配置.md | 2 +- docs/UI设计/UI_自动化测试流程.md | 4 ++-- docs/产品需求/产品需求设计文档.md | 2 +- docs/子系统设计/ADC采样节拍设计说明.md | 2 +- docs/架构设计/项目架构总览.md | 2 +- docs/测试说明/FTP_Test_Guide.md | 2 +- docs/测试说明/SD2506_Test_Guide.md | 4 ++-- docs/测试说明/m2_data/README.md | 4 ++-- docs/测试说明/实机测试实施指南.md | 4 ++-- docs/测试说明/测试开发标准流程.md | 2 +- docs/测试说明/自动化测试流程.md | 2 +- docs/测试说明/链路延迟测试说明.md | 6 +++--- docs/环境与部署/CI配置指南.md | 2 +- docs/环境与部署/本地工具路径环境变量方案.md | 2 +- docs/环境与部署/项目部署环境要求.md | 16 ++++++++-------- scripts/stack_report.py | 2 +- 23 files changed, 44 insertions(+), 41 deletions(-) diff --git a/.dsh/skills/keil-build/SKILL.md b/.dsh/skills/keil-build/SKILL.md index f2669f28..24033943 100644 --- a/.dsh/skills/keil-build/SKILL.md +++ b/.dsh/skills/keil-build/SKILL.md @@ -22,9 +22,12 @@ whenToUse: 需要编译 Keil MDK 工程、验证代码改动是否 0 错误 0 ## 本仓库 -仓库原生入口 `& "MDK-ARM\build.bat"`(`@build` 约定)与本 skill 脚本判定口径一致 +**`@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)`), -两者任选;`@build` 文档口径不变。环境变量 `DTU_KEIL_UV4`(用户级,指向 UV4.exe)。 +**等价可用**,但它无超时保护、UV4 只认 `DTU_KEIL_UV4`、失败时 dump 整份日志 → 默认走本 skill。 +环境变量 `DTU_KEIL_UV4`(用户级,指向 UV4.exe)。 ## 铁律与陷阱(实测教训) diff --git a/.dsh/skills/new-machine-setup/SKILL.md b/.dsh/skills/new-machine-setup/SKILL.md index 3b63667b..305d8ea0 100644 --- a/.dsh/skills/new-machine-setup/SKILL.md +++ b/.dsh/skills/new-machine-setup/SKILL.md @@ -33,14 +33,14 @@ whenToUse: 换新机器/新克隆要把环境搭起来、构建或烧录报"环 4. **验收三连**(全绿才算环境就绪): ```powershell & '.venv\Scripts\python.exe' .dsh/skills/serial-assistant/scripts/serial_tool.py selftest # 23/23 PASS - & "MDK-ARM\build.bat" # exit 0 + & '.venv\Scripts\python.exe' .dsh\skills\keil-build\scripts\keil_build.py # exit 0 & "MDK-ARM\reset.bat" list # 列出探针 ``` ## 实测坑(本会话两次撞上) - **agent/服务派生的 shell 不继承"服务启动之后"设置的用户级环境变量**: - `build.bat` 报 exit 2 先分清"真没设"还是"没继承"——查 + `keil_build.py`(或等价的 `build.bat`)报 exit 2 先分清"真没设"还是"没继承"——查 `[Environment]::GetEnvironmentVariable('DTU_KEIL_UV4','User')`,有值就 `$env:DTU_KEIL_UV4 = <该值>` 注入当前会话再跑,别急着让用户重设。 (`env_check.py` 对这种情况报 WARN 并给注入命令。) diff --git a/.dsh/skills/new-source-file/SKILL.md b/.dsh/skills/new-source-file/SKILL.md index 7b23c98e..0542fcd2 100644 --- a/.dsh/skills/new-source-file/SKILL.md +++ b/.dsh/skills/new-source-file/SKILL.md @@ -28,7 +28,7 @@ whenToUse: 新建 App/、Drivers/BSP/ 下的 .c 文件,或构建/运行报 und ```powershell cmake --build simulator/build --config Debug # 0 警告 -& "MDK-ARM\build.bat" # BUILD_OK,0 错 0 警 +& '.venv\Scripts\python.exe' .dsh\skills\keil-build\scripts\keil_build.py # BUILD_OK,0 错 0 警 ``` ## 注意 diff --git a/.dsh/skills/ui-verify/SKILL.md b/.dsh/skills/ui-verify/SKILL.md index b2190517..370e4d2f 100644 --- a/.dsh/skills/ui-verify/SKILL.md +++ b/.dsh/skills/ui-verify/SKILL.md @@ -14,7 +14,7 @@ UI 相关改动完成后必须跑完 5 个门禁再提交。完整说明见 `doc cmake --build simulator/build --config Debug # 0) 构建模拟器(须 0 警告) .venv\Scripts\python.exe simulator/tests/check_menu_rows.py # 1) 菜单 8 状态像素回归 + 池基线门禁 .venv\Scripts\python.exe simulator/tests/check_content_pages.py # 2) 内容页黄金参考回归 + 往返池门禁 -& "MDK-ARM\build.bat" # 3) Keil 构建(BUILD_OK,0 错 0 警) +& '.venv\Scripts\python.exe' .dsh\skills\keil-build\scripts\keil_build.py # 3) Keil 构建(BUILD_OK,0 错 0 警) .venv\Scripts\python.exe scripts/check_coding_standard.py # 4) 代码规范检查(PASS) ``` diff --git a/AGENTS.md b/AGENTS.md index 4bde67e0..c12e0f66 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` = `& "MDK-ARM\build.bat"`(仓库根目录用**相对路径**);退出码 0 = 0 错误 0 警告,1 = 有警告或错误(查 `MDK-ARM/build_log.txt`),2 = `DTU_KEIL_UV4` 未设/无效(换机必设,见 `docs/环境与部署/本地工具路径环境变量方案.md`);UV4 路径经 `DTU_KEIL_UV4` 环境变量解析(**不再硬编码**;显式设置但无效会立即报错、不静默回退) +- `@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` - `@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: