Files
STM32F4-Base/.dsh/skills/new-machine-setup/SKILL.md
T
wandering1 eddbedeee8
CI / L0 静态门禁 (pre-commit) (push) Has been cancelled
CI / L0.5 主机侧单测 (MSVC) (push) Has been cancelled
docs(AGENTS): 入口重构——补宏观概况与边界块,瘦身51KB→25.8KB,子域知识入skills
- AGENTS.md 51,067→25,828 B(−50%):审计→迁移→删除,逐节 diff 零信息损失
- 按调研(agents.md 官方/aihero/airflow)补「项目概况」:一句话定位、
  数据主线、顶层目录地图、分层边界;平台约束 17 条分 5 组
- 新增「边界(Ask first / Never)」:git commit/push 须明确指示首次入库
- 串口助手、LVGL 模拟器两节移入 serial-assistant / 新建 lvgl-simulator skill
  (开关语义按 main.c 实锤);LVGL 两条实证坑移入 ui-verify skill
- 9 条入口独有细节迁移至对应设计文档(存储/看门狗/启动顺序/文档规范/
  pre-commit 使用说明/keil-build skill);@test 细节指向自动化测试流程
- 新增 docs/AGENTS编写指南.md:六原则/模板/反模式/维护纪律 + 本仓案例
- 修正 3 处对 AGENTS 串口节的过时引用;docs/README.md 登记新文档
2026-10-11 10:44:50 +08:00

56 lines
3.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
---
name: new-machine-setup
description: 换机/新克隆环境自检与搭建:venv 重建、DTU_* 工具路径环境变量(用户级、无管理员)、驱动确认、验收三连(selftest/build/list)。自带独立自检脚本 env_check.py(纯标准库),含"会话不继承用户级变量"实测坑。任何嵌入式项目通用模式。
whenToUse: 换新机器/新克隆要把环境搭起来、构建或烧录报"环境变量未设/工具找不到"、CI 之外任何机器第一次跑本项目、或怀疑本机环境缺件时。
---
# new-machine-setup — 换机环境自检与搭建
## 先跑自检(只读,不改任何东西)
```powershell
# cwd = 项目根目录
& <任一 python ≥3.10> ".dsh\skills\new-machine-setup\scripts\env_check.py"
```
逐项 PASS/WARN/FAIL + 缺件时打印**可直接执行的修复命令**;退出码 0=可用 / 1=有 FAIL。
## 搭建顺序(自检 FAIL 时的完整路径)
1. **venv**:`& <任一 python ≥3.10> -m venv .venv` →
`& '.venv\Scripts\python.exe' -m pip install -r requirements.txt`
(含 pyserial/fontTools/pre-commit;`requirements.txt` 必须纯 ASCII)。
PATH 默认 `python` 可能是 msys64 的——依赖第三方库的脚本一律用 `.venv`。
2. **工具路径环境变量**(用户级即可,无需管理员;约定见
`docs/环境与部署/本地工具路径环境变量方案.md`):
```powershell
[Environment]::SetEnvironmentVariable('DTU_KEIL_UV4', '<本机>\UV4.exe', 'User')
[Environment]::SetEnvironmentVariable('DTU_STLINK_CLI', '<本机>\ST-LINK_CLI.exe', 'User') # 已入 PATH 可不设
```
语义统一:**显式设了但路径无效 = 立即报错不回退**;不设则走 PATH/自动发现。
3. **驱动**:CH340(调试串口)与 ST-Link 的 USB 驱动装好——
`Get-PnpDevice -Class Ports` 能看到 COMx、`stlink_flash.py list` 能看到探针 SN。
4. **验收三连**(全绿才算环境就绪):
```powershell
& '.venv\Scripts\python.exe' .dsh/skills/serial-assistant/scripts/serial_tool.py selftest # 23/23 PASS
& '.venv\Scripts\python.exe' .dsh\skills\keil-build\scripts\keil_build.py # exit 0
& '.venv\Scripts\python.exe' .dsh\skills\stlink-flash\scripts\stlink_flash.py list # 列出探针
```
## 实测坑(本会话两次撞上)
- **agent/服务派生的 shell 不继承"服务启动之后"设置的用户级环境变量**:
`keil_build.py` 报 exit 2 先分清"真没设"还是"没继承"——查
`[Environment]::GetEnvironmentVariable('DTU_KEIL_UV4','User')`,有值就
`$env:DTU_KEIL_UV4 = <该值>` 注入当前会话再跑,别急着让用户重设。
(`env_check.py` 对这种情况报 WARN 并给注入命令。)
- 换机后 COM 口几乎必变:只改 `.serialtest/config.json` 的 `portName`,
然后 `serial_tool.py restart`(daemon 启动时缓存配置)。
- 串口"拒绝访问"先查残留旧 daemon(`serial-assistant` skill「陷阱」节),不是驱动问题。
## 其它项目怎么套
模式通用:本机差异全部走 `*_TOOL_PATH` 类环境变量(显式无效=硬错)、
仓库内路径全部相对解析、环境就绪判据 = 三条独立验收命令(工具链构建 /
烧录器在位 / 采集自检),自检脚本只读不修、FAIL 行自带修复命令。