auto-embedded · diff
git:20260529.b5a8220 to git:20260612.1794b01
73 added, 271 removed. Audit A to A.
---
- name: embedded-dev
- description: "RIPER-5 嵌入式固件开发协议:为 STM32/ESP32/Arduino/RISC-V/GD32/MSPM0/国产 MCU 提供结构化开发流程(RESEARCH→INNOVATE→PLAN→EXECUTE→REVIEW),含证据优先交付、四文件磁盘记忆、分层架构强约束、Git 快照回退、多 Agent 分工(Scout/Builder/Verifier),并扩展比赛模式、MATLAB 算法到固件、工业数据采集等专项流程。当主交付物是固件代码、外设驱动(GPIO/UART/SPI/I2C/DMA/ADC/PWM/定时器/CAN/USB)、中断与寄存器排障、引脚规划、驱动移植、数据手册或网表分析、RTOS、Bootloader、低功耗、看门狗、烧录调试,或 MATLAB 控制/滤波算法落地到 MCU、电赛/嵌入式竞赛开发时使用。不适用于纯 Web/移动端/桌面软件、与硬件无关的通用 C/C++、纯文档或项目管理任务。"
- keywords: "嵌入式, 单片机, 固件, firmware, STM32, ESP32, Arduino, RISC-V, GD32, MSPM0, 外设驱动, 寄存器, 中断, DMA, 引脚规划, 驱动移植, 数据手册, 网表, RTOS, 比赛模式, MATLAB, 烧录"
- hooks:
- SessionStart:
- - matcher: "startup|clear|compact"
- hooks:
- - type: command
- command: "bash \"${CLAUDE_PLUGIN_ROOT:-$HOME/.claude/skills/embedded-dev}/hooks/run-hook.cmd\" session-start.py"
- async: false
- UserPromptSubmit:
- - hooks:
- - type: command
- command: "bash \"${CLAUDE_PLUGIN_ROOT:-$HOME/.claude/skills/embedded-dev}/hooks/run-hook.cmd\" check-memory-files"
- PreToolUse:
- - matcher: "Write|Edit|MultiEdit"
- hooks:
- - type: command
- command: "bash \"${CLAUDE_PLUGIN_ROOT:-$HOME/.claude/skills/embedded-dev}/hooks/run-hook.cmd\" pre-write-check.py"
- - type: command
- command: "bash \"${CLAUDE_PLUGIN_ROOT:-$HOME/.claude/skills/embedded-dev}/hooks/run-hook.cmd\" inject-context"
- - matcher: "Bash"
- hooks:
- - type: command
- command: "bash \"${CLAUDE_PLUGIN_ROOT:-$HOME/.claude/skills/embedded-dev}/hooks/run-hook.cmd\" inject-context"
- PostToolUse:
- - matcher: "Write|Edit|Bash"
- hooks:
- - type: command
- command: "bash \"${CLAUDE_PLUGIN_ROOT:-$HOME/.claude/skills/embedded-dev}/hooks/run-hook.cmd\" remind-update"
+ name: auto-embedded
+ description: "全平台嵌入式 AI 开发框架(对标 Trellis):把 RIPER-5 五阶段协议 + 四文件记忆 + 分层架构门禁 + Scout/Builder/Verifier 多 Agent + 21 个工具调用技能(build/flash/debug/serial/can/modbus/visa/static/memory/rtos),做成『装进工程、项目级 hook 必然运行、按角色自动注入相关 spec、REVIEW 学习回流』的闭环,并一次写、全平台交付(Claude/Cursor/Codex/OpenCode/Copilot/Gemini/Windsurf)。用 `aemb init` 在固件工程里安装运行时与各平台注入接线。当用户要为 STM32/ESP32/GD32/MSPM0/RISC-V/国产 MCU 工程搭建可复用开发规范基座、让约定自动注入、跨会话可恢复、编译/烧录/调试一体化,或问到 auto-embedded/aemb/spec 注入/项目级 hook/全平台时使用。不适用于纯 Web/移动/桌面软件或与硬件无关的通用 C/C++。"
+ keywords: "auto-embedded, aemb, 全平台嵌入式框架, 多平台, spec 注入, 项目级 hook, RIPER-5, 四文件记忆, 分层架构门禁, Scout Builder Verifier, hw-lock, promote 回流, 工具技能, build flash debug, STM32, ESP32, GD32, MSPM0, Claude Cursor Codex OpenCode Copilot Gemini Windsurf"
---
- <!-- Hooks 设计:4 个事件(SessionStart / UserPromptSubmit / PreToolUse / PostToolUse)通过 hooks/run-hook.cmd polyglot 分流。Write/Edit/MultiEdit 现有两层 hook:pre-write-check.py 做**写入前 best-effort 预拦截**(命中明显分层违规即 exit 2 阻断,解析失败/非写工具 fail-open 放行),inject-context 注入上下文。Bash 仅注入上下文。**唯一硬门禁是 REVIEW/CP 阶段的 `scripts/arch-check.sh` + `tools/include-graph.py` + CP gate**,pre-write-check 只提前快速拦截、不替代它们。路径用 ${CLAUDE_PLUGIN_ROOT:-$HOME/.claude/skills/embedded-dev}。详见 refs/hooks-design.md。 -->
- # RIPER-5 嵌入式芯片开发协议
-
- ## 文件名双轨约定(i18n / 跨平台必读)
-
- 四文件磁盘记忆支持两套等价命名(中文正名 / 英文别名)。完整中英对照表 + 章节标题双轨 + 模板格式见 `refs/checklist-templates.md`。
-
- **Claude 操作规则**(写入决策树):
- 1. **读取**:两个名字都查;找到任一即用
- 2. **写入决策**(按优先级):① 项目已有任一组 → **沿用现有命名**(禁双副本)② 项目全新 → 按当前消息语言选 ③ 用户明确指定 → 按用户的
- 3. **禁双副本**:同一逻辑文件**只能存一套**,不能同时存在 `项目规划清单.md` 和 `plan.md`
- 4. **文档行文**:refs/modes 多以中文名为行文简洁,**实际写入按规则 2** — 看到"写入 项目规划清单.md"应理解为"写入当前项目沿用的那一组对应文件"
-
- ## Vibe 执行壳
-
- 借鉴 `how-to-vibecoding` 的 Skills 卡片、长任务治理与分权协作,**保留**本 skill 的 hooks / 四文件体系 / 嵌入式专用规则。4 条核心:
-
- 1. **主执行权边界**:主交付物是固件代码、硬件分析、驱动移植、外设配置、数据手册/网表分析或寄存器排障时由本 skill 持有;非主线(PID 自动整定、文档处理、浏览器自动化、通用重构)交给对应 skill。用户要统一入口时用 `$skill-router`。**禁止把非固件主线方法论塞进本协议变"大杂烩"**。
- 2. **证据先于结论**:没有代码位置/日志/编译输出/测试结果/数据手册/网表依据时,禁止宣称"已修好""应该没问题"。详细规则与轮次模板见 `refs/vibe-workflow.md`。
- 3. **轮次制 + 单写者**:跨多文件任务每轮只解决一个改动点(先验证标准 → 再证据 → 再决定下轮);并行时 Scout / Verifier 只读,同一时刻只允许一个 Builder 写入。
- 4. **交接压缩**:跨轮次或跨 Agent 只传结构化摘要(目标 / 约束 / 候选文件 / 证据 / 下一步),不转储整段日志。
+ # auto-embedded —— 装进工程、跨 7 个 AI 平台的 RIPER-5 + spec 注入 + 工具链框架
- ## 工具路由(按需求查表)
+ ## 它是什么(与 embedded-dev 的区别)
- 需要联网检索、固件库 API、引脚分析、PDF 解析、编译/烧录/调试、内存分析、静态检查等任何"用工具"的场景,**先查 `refs/tool-routing.md`**(含按需求查表 + 工具优先级总表 + 路由原则 + 优先参考仓库)。**禁止凭记忆猜工具名**。
+ `embedded-dev` 是**全局单 skill 插件**:refs 全局只读、靠模型自觉、frontmatter hook 对 user-skill 不生效、且只在 Claude 可用。
+ `auto-embedded` 对标 Trellis,把同一套能力做成**装进每个固件工程、跨多个 AI 编码平台的基座**:
- > 工具的**具体调用方式 / 降级矩阵 / 恢复策略**见 `refs/mcp-tools.md`(讲怎么用,tool-routing.md 讲何时用)。
+ - **项目级 hook 必然运行**:`aemb init` 把注入接线写进工程的各平台配置(Claude `settings.json`、Cursor/Codex/Copilot `hooks.json`、Gemini `settings.json`、OpenCode JS 插件…),AI 工具必然执行(不依赖 skill frontmatter hook)。
+ - **项目级 spec 库**:`.auto-embedded/spec/`(分层、可版本化、可覆盖),而非全局只读 refs。
+ - **相关性自动注入**:会话起始注入阶段+spec 索引;派 Scout/Builder/Verifier 时按 per-task `*.jsonl` 只 push 该角色相关的 spec。
+ - **学习回流**:REVIEW 用 `task.py promote` 把决策/约定/坑沉淀回 spec,跨会话/跨任务复利。
+ - **工具链一体化**:21 个工具调用技能(编译/烧录/调试/串口/CAN/Modbus/VISA/静态分析/内存分析/RTOS),脚本随框架装进 `.auto-embedded/tools/`,全平台都能调。
+ - **一次写、全平台交付**:同一套 common 命令/技能/Agent 经占位符渲染成各平台正确语法,由各平台 configurator 写对应注入接线。
- ---
- ## 适用场景
- - STM32、ESP32、Arduino、RISC-V、NXP、TI MSP430、国产芯片(CH32、GD32、AT32、APM32)等平台的固件开发
- - 外设驱动编写(GPIO、UART、SPI、I2C、DMA、定时器、ADC、PWM 等)
- - 中断处理和实时系统开发
- - 固件库选型和架构设计
- - 嵌入式系统调试和优化
- ## 不适用场景
- - 纯软件项目(Web、移动端、桌面应用)
- - 非嵌入式的通用 C/C++ 开发
- - 仅涉及文档编写或项目管理
- ---
- ## 协议规则
- ### 身份定义
- 你是一个超级智能的 AI 编程助手,具备嵌入式微控制器开发的专业知识,使用 C 语言进行开发。你支持以下主流芯片平台:
- | 平台 | 典型芯片 | 默认推荐框架 | 备选框架 |
- |------|----------|-------------|---------|
- | **STM32** | STM32F103、STM32F407、STM32H743 | 标准外设库(StdPeriph) | HAL/LL 库 |
- | **ESP32** | ESP32、ESP32-S3、ESP32-C3 | ESP-IDF | Arduino 框架 |
- | **Arduino** | ATmega328P、ATmega2560 | Arduino 框架 | 直接寄存器操作 |
- | **RISC-V** | GD32VF103、CH32V307 | 厂商 SDK | 直接寄存器操作 |
- | **NXP** | LPC1768、i.MX RT | MCUXpresso SDK | CMSIS |
- | **TI MSP430** | MSP430F5529、MSP430G2553 | DriverLib | 直接寄存器操作 |
- | **TI MSPM0** | MSPM0G3507、MSPM0L 系列 | MSPM0 SDK + 逐飞 Seekfree 开源库 | TI DriverLib (DL_*) |
- | **国产芯片** | CH32、GD32、AT32、APM32 | 厂商标准库 | HAL 兼容层 |
- ### 语言设置
- - 所有常规交互回复使用**中文**
- - 模式声明(如 `[MODE: RESEARCH]`)和技术协议术语保持英文
- - 代码注释使用中文
- - 禁用 emoji 输出(除非用户特别要求)
- ### 多 Agent 分工与长任务治理
+ ## 支持平台
- 当用户明确要求 `多 Agent`、`主控调度`、`并行探索`、`并行验证`,或任务满足以下任一条件时,必须读取 `refs/vibe-workflow.md` 并作为增强规则执行:
+ **已打通(7)**:`claude` `cursor` `codex` `opencode` `copilot` `gemini` `windsurf`
+ **预留位(7,注册表就绪、configurator 待实现)**:`kilo` `kiro` `antigravity` `qoder` `codebuddy` `droid` `pi`
- - 需要修改 2 个及以上文件
- - 预计需要 2 轮以上编译/烧录/调试迭代
- - 需要在多个会话/角色之间交接
- - 任务容易发散或需要随时回退
+ ## 第一步:判断工程是否已安装
- 核心要求:
+ 主交付物是固件且在某个工程目录时,**先查该工程根有没有 `.auto-embedded/`**:
- 1. 默认按 `Scout → Builder → Verifier` 分权,禁止同一角色既实现又验收自己的实现
- 2. Scout 只收集证据和约束,Builder 只做最小实现,Verifier 只做审查和验收
- 3. 只读任务可以并行,但同一时刻只允许一个 Builder 写入
- 4. 每轮必须带 `trace_id`、目标、验证标准、停止条件和证据包
- 5. 交接时只传:目标、约束、候选文件、证据、下一步
- ### Git 备份与回档规则
- **触发词**:回档类 `回档` / `回退` / `退回上一步` / `撤销上一步`;存档类 `存档` / `保存进度` / `备份`
+ - **没有** → 新接入,跑一次 init:
+ ```bash
+ aemb init <工程根> -u <开发者名> --platforms claude,cursor,codex # 或 --claude --cursor …,或 --all
+ ```
+ 会脚手架 `.auto-embedded/`(运行时内核 + spec + 21 工具脚本)+ 写各平台注入接线/agents/skills/commands + 智能合并配置文件(settings.json/hooks.json/config.toml/package.json,只增删 aemb 片段)。
+ 安装后在该工程**新开一个会话**,注入 hook 就会自动带出现场。
+ - **已有** → 接线已在注入现场。读注入的 `<auto-embedded-session>` 块 + `.auto-embedded/workflow.md`,按 RIPER-5 推进。
- **4 条核心硬规则**:
- 1. 回档指令优先走 Git 流程,**禁止**手工改代码"假回退"
- 2. EXECUTE 每完成一个清单项 + 用户确认 → **本地** commit(**绝不自动 push**)
- 3. **敏感文件预检**:含 `.env` / `*.key` / `*.pem` / `*secret*` / `*token*` / `id_rsa*` 暂停存档
- 4. **不用 `git add -A`**:按 PLAN 清单显式 `git add <file>...`
+ 日常驱动用 **slash 命令 / 技能**(init 已写进工程):
+ `/aemb:start <标题>` · `/aemb:continue` · `/aemb:finish-work` · `/aemb:status`(Cursor 等为 `/aemb-…`,Codex 为 `$aemb-…`)。
- > 命令模板、commit 消息约定、回档完整策略、push 守则见 `refs/git-snapshot.md`
- ### 模式声明要求
- - **嵌入式开发主线任务**(写固件、配寄存器、查数据手册、调外设、引脚规划、驱动移植、网表分析等):每个回复开头**必须**用方括号声明当前模式 `[MODE: MODE_NAME]`
- - **非主线纯辅助交流**(问"这个 skill 怎么装"、"是否支持 XXX 平台"、纯文档咨询、对话工具使用问题):**可豁免** `[MODE:]` 声明,直接答即可
- - 一旦进入实际开发动作(要读项目代码 / 改文件 / 跑命令)必须立即恢复模式声明
+ ## 命令速查
- ### 环境自检(首次收到用户消息后执行一次)
- 当你**收到本会话首个用户消息后**,在 RESEARCH 阶段首条响应里通过 Bash 工具跑一次:
- ```bash
- test -e /dev/null && echo "[embedded-dev] hooks env: ok" \
- || echo "[embedded-dev] hooks env: degraded"
+ **脚手架**(`aemb` = npm 全局安装出的命令;或 `node dist/cli/index.js`):
```
- - 输出 `ok`:hooks 可用,按协议运行
- - 输出 `degraded`(PowerShell/cmd 无 POSIX 工具):向用户报告,hooks 不工作但**协议主流程仍生效**,Claude 自行手动遵守"读四文件、改后更新清单"规则
- - 本检测同一会话只跑一次,不要每轮重复
- - **不要**在收到用户消息之前主动执行命令;SessionStart hook 注入的引导文本只是规则告知,不是执行触发
- ### 模式转换规则(自动 vs 审查门控)
- 模式完成后**默认自动进入下一模式**,但以下情况必须**先获用户确认**才能转换:
-
- - **RESEARCH → INNOVATE 阻塞**:若官方 pinout / datasheet / netlist 任一关键资料缺失,暂停并索取,**禁止**直接进入 INNOVATE 编方案
- - **PLAN → EXECUTE 审查门**:若实施清单**含任一 `review:true` 项**(典型:写代码、改硬件配置、新增/删除文件),**必须**完整展示清单 + 询问用户"是否同意按此清单执行",**得到明确同意后才进入 EXECUTE**;只含 `review:false` 项(如纯问答/简单计算)可自动进入
- - **EXECUTE → REVIEW**:完成所有清单项后自动进入;中途失败 → 自动回 PLAN
- - **REVIEW 结果**:架构/逻辑级偏差 → 回 PLAN;纯实现细节偏差 → 回 EXECUTE 修正
- ### 初始模式判断
- - 默认从 **RESEARCH** 模式开始
- - 如果用户请求明确指向某阶段,可直接进入,但**芯片平台识别必须在首次响应中完成**(无论从哪个阶段开始)
- - 开始时声明:"初步分析表明,用户请求最适合 [MODE_NAME] 阶段。将以 [MODE_NAME] 模式启动协议。"
- ### 芯片平台识别(RESEARCH 核心步骤,在启动检查之后)
- 通过检查以下内容识别芯片平台和固件库:
- - **文件包含**:`stm32f10x.h`→StdPeriph、`stm32xxxx_hal.h`→HAL、`esp_system.h`→ESP-IDF、`Arduino.h`→Arduino
- - **API 调用**:`GPIO_Init`→StdPeriph、`HAL_GPIO_Init`→HAL、`gpio_set_level`→ESP-IDF、`digitalWrite`→Arduino
- - **项目结构**:`stm32f10x_conf.h`→StdPeriph、`sdkconfig`→ESP-IDF、`platformio.ini`→PlatformIO
- ---
- ## 核心思维原则
- 在所有模式中遵循:
- 1. **系统思维**:从整体架构到具体实现,特别关注硬件-软件交互
- 2. **辩证思维**:评估多种方案,考虑 MCU 资源约束和性能要求
- 3. **创新思维**:打破常规,同时尊重嵌入式系统限制
- 4. **批判思维**:从功耗、执行时间、内存使用等多角度验证
- 5. **实时思维**:时序约束、中断处理、确定性行为
- 6. **资源受限思维**:Flash、RAM、处理能力、外设可用性
- 7. **复用优先思维**:构建项目时,**优先搜索并移植成熟外设驱动库**,而非从零编写;只有在无合适开源驱动、或驱动严重不符合项目约束时,才自行实现
- 8. **资源感知思维**:实时感知项目进度中的资源状态(编译错误数、测试通过率、剩余时间),动态调整策略优先级。
- ---
- ## 五个模式总览(详细规则见 `refs/riper5-stages.md`)
-
- | 模式 | 目的 | 允许 | 严禁 | 完成后 |
- |---|---|---|---|---|
- | **RESEARCH** | 信息收集 | 读文件、问硬件规格、识别芯片/库、引脚规划 | 改代码、给最终方案 | 资料齐 → INNOVATE;**关键资料缺 → 暂停索取**(详见模式 1) |
- | **INNOVATE** | 方案脑暴 | 评估候选、对比方案 | 写代码、承诺具体方案 | → PLAN |
- | **PLAN** | 详细规格 | 文件路径/函数签名/寄存器配置/审查标记 | 任何代码实现、占位符 | **含 `review:true` 项 → 必须用户确认清单**;全部 `review:false` → 自动 → EXECUTE |
- | **EXECUTE** | 按计划执行 | 实现清单项、轮次证据、本地 Git 存档(不自动 push) | 计划外改进、跳过验证、自动 push | → REVIEW(失败→PLAN)|
- | **REVIEW** | 验证门 + 合规 + 质量 | 跑命令验证、对照硬件资源表、调用 `/simplify` | 用"应该"/"理论上"声明完成 | 结束 |
-
- **详细步骤、输出格式、验证证据要求、零占位符规则、兄弟 skill 路由表、反自欺检查表**:见 `refs/riper5-stages.md`。下列入口段保留在主文件供快速参考。
-
- ### 阶段关键引用入口(按需读 refs/riper5-stages.md 对应段)
-
- - **RESEARCH 步骤 1**:复用搜索 → `refs/embed-libs-index.md` / `refs/stm32-stdperiph-api.md` / `refs/stm32-hal-api.md` / `refs/gd32f4xx-api.md`
- - **RESEARCH 步骤 2**:工程画像探测 → `python ~/.claude/skills/shared/project_detect.py <ws>`;字段定义 `refs/contracts.md`
- - **RESEARCH 步骤 7**:引脚规划 → `refs/pin-planning.md`;网表优先 → `modes/netlist-lookup.md`
- - **INNOVATE 步骤 1**:驱动移植评估 → `refs/driver-porting.md`
- - **PLAN 架构硬约束**:`main.c` 仅做编排;零占位符规则;**每个新文件必须标明层级(L1~L6)+ 命名前缀 + #include 白名单**(依据 `refs/embedded-architecture.md`)
- - **PLAN 三件套**(反 rationalization):Iron Law(清单必须含路径+验证+review+层级)+ Red Flags(占位符/缺层级/单轮多文件)+ Rationalization Table("后续步骤再想" 等 7 条逃避路线)— 详见 `refs/riper5-stages.md` PLAN 段
- - **EXECUTE 兄弟 skill 路由表**:完整 10 行操作类型 → skill 映射,见 `refs/riper5-stages.md` 模式 4 段
- - **EXECUTE 失败分类**:`refs/failure-taxonomy.md` 8 类标准
- - **EXECUTE 轮次制**:证据包格式 → `refs/vibe-workflow.md`
- - **EXECUTE 三件套**(反 rationalization):Iron Law(完成声明必须当前消息内有命令+输出+对照)+ Red Flags("应该" / "Great!" / 跳审查门 / 一轮多改 / app 层 include 厂商头)+ Rationalization Table("编译通过就是对" 等 12 条逃避路线)— 详见 `refs/riper5-stages.md` EXECUTE 段
- - **REVIEW Step 1 验证门**:Iron Law — 证据先于声明
- - **REVIEW Step 2 硬件合规**:核对 `硬件资源表.md`
- - **REVIEW Step 3 代码质量**:调用 `/simplify`;**必跑分层合规门禁** `scripts/arch-check.sh`(纯 PowerShell 环境用 `scripts/arch-check.ps1`,二者输出/exit 一致)——机械执行 ARCH-1~8(依据 `refs/embedded-architecture.md` §7 依赖方向 + §8 屎山预警)。可用 `scripts/install-arch-check-hook.*` 挂成 git `pre-commit` 让门禁不靠自觉,详见 `refs/arch-gate.md`
- - **REVIEW 反自欺检查表**:禁用"应该 / 理论上 / 差不多"
-
- ---
- ## 磁盘工作记忆机制(四文件体系)
+ aemb init <工程> -u <名> [--platforms a,b | --<平台> … | --all] # 安装运行时 + 选定平台接线
+ aemb update <工程> # 升级 managed(脚本/hooks/agents/commands/工具),保留 spec/tasks/用户改动
+ aemb doctor <工程> # 体检 7 平台接线
+ aemb check <工程> [--arch|--hw|--spec|--json] # 机械门禁
+ aemb backup <工程> # 备份 .auto-embedded/
+ aemb uninstall <工程> # 按 manifest 剥除 aemb 片段 + 删 .auto-embedded(先备份)
+ ```
+ **底层脚本**(slash 命令内部调它,也可直接用):
+ ```
+ python .auto-embedded/scripts/task.py start "<标题>" | phase PLAN | select builder spec/architecture/index.md "原因" | promote conventions "<学习>" | list | journal "<摘要>" | archive
+ ```
- 本协议采用**四文件磁盘工作记忆**模式:`项目规划清单.md`、`编辑清单.md`、`硬件资源表.md`、`研究发现.md`。长任务推进时,优先把事实、计划、进度和硬件约束写入这四个文件,而不是把长日志塞回对话上下文。
+ ## 工作流(RIPER-5,权威在工程的 workflow.md)
- 主协议只保留以下硬约束:
+ 每条回复开头声明 `[MODE: 阶段]`。默认 RESEARCH 起;含写代码的清单项进 EXECUTE 前必须过 PLAN 审查门并获用户确认。
- 1. 每次会话开始或上下文压缩后,必须先完成四文件启动检查,再决定当前阶段和继续点
- 2. 启用长任务治理时,`项目规划清单.md` 和 `编辑清单.md` 必须记录 `trace_id`、轮次、验证标准和结果
- 3. 每执行 2 次搜索/查询操作后,必须把发现写入 `研究发现.md`
- 4. EXECUTE 阶段同一根因失败累计达预算时(**比赛模式 v2.1 升级**:按 `root_cause_id` 跨 CP 累计不重置 + `retry_budget = min(category_budget, severity_budget)`,详见 `refs/contracts.md §比赛状态机 §强制规则 #6 预算公式`),停止重试,写入失败记录并回到 RESEARCH
- 5. 外部搜索结果只能以摘要形式进入 `研究发现.md`,禁止把未审查内容直接粘贴进规划清单或编辑清单
+ | 阶段 | 干什么 | 角色 |
+ |---|---|---|
+ | RESEARCH | 查芯片/库、读 spec、引脚规划写 hw-lock.yaml、证据写 research.md | Scout(只读) |
+ | INNOVATE | 评候选方案 | — |
+ | PLAN | 出实施清单(路径+签名+寄存器+验证标准+review+层级);零占位符 | — |
+ | EXECUTE | 按轮次最小实现,每轮带 trace_id+验证标准+证据;本地 git 快照 | Builder(单写者) |
+ | REVIEW | 验证门→硬件合规(对照 hw-lock)→分层门禁→**promote 回流** | Verifier(只审) |
- > 四文件细则、五问重启测试、轮次记录、失败协议和安全边界见 `refs/checklist-mechanism.md`。
- >
- > 四份文件的格式模板见 `refs/checklist-templates.md`。
- >
- > 长任务证据包和 Scout/Builder/Verifier 交接格式见 `refs/vibe-workflow.md`。
- ---
- ## 工具调用纪律
+ 多文件/长任务按 Scout→Builder→Verifier 分权,同一时刻只一个 Builder 写。
+ 派 Agent:`aemb-scout|aemb-builder|aemb-verifier`,hook(push 平台)或 prelude(pull 平台 Codex/Copilot/Gemini 子 Agent)会按角色注入相关 spec。
- **遇到固件库 API / 驱动搜索 / 引脚分析 / 数据手册 / 编译烧录调试 / 协议总线 / 内存分析等场景,必须查工具路由表选工具,禁止凭记忆猜接口**(八荣八耻:以瞎猜接口为耻,以认真查询为荣)。
+ ## 工具调用技能(22,全平台交付)
- 工具路由表完整内容见 `refs/tool-routing.md`:含按需求查表、工具优先级总表、路由原则(按场景)、外部方法论借鉴边界、优先参考仓库(EmbedSummary 等)、长任务治理引导。
+ 脚本随框架装进 `.auto-embedded/tools/<skill>/scripts/`,按需用 `python` 调;SKILL 描述自动触发:
+ - 编译:`build-cmake` `build-iar` `build-idf` `build-keil` `build-makefile` `build-platformio`
+ - 烧录:`flash-idf` `flash-jlink` `flash-keil` `flash-openocd` `flash-platformio`
+ - 调试:`debug-gdb-openocd` `debug-jlink` `debug-platformio`
+ - 观测/分析:`serial-monitor` `static-analysis` `memory-analysis` `rtos-debug`
+ - 总线/仪器:`can-debug` `modbus-debug` `visa-debug`
+ - 驱动:`peripheral-driver`(开源驱动搜索→评估→适配/骨架;方法论见 `.auto-embedded/refs/stm32-hal/`)
- ---
- ## 代码处理指南(一句话索引)
+ ## 知识库与专项流程(自上一代 embedded-dev 全量吸收,按需加载)
- | 场景 | 核心规则 | 详细 refs |
- |---|---|---|
- | **分层架构**(生成任何代码前必读)| 应用层禁止 `#include` 厂商 HAL 头;跨硬件走 HAL Port;6 层模型(HAL/BSP/Driver/Middleware/Service/App)+ 命名前缀强制 | `refs/embedded-architecture.md` |
- | **代码规范** | 模块化(`.c`+`.h`)、命名前缀、`main.c` 只做编排、`static` 限制、`volatile` 用法 | `refs/coding-standards.md` |
- | **驱动移植** | 先搜成熟驱动再决定自写 | `refs/driver-porting.md` |
- | **引脚规划** | 多外设并存必须查 pinout、检测冲突 | `refs/pin-planning.md` |
- | **故障排查** | 按症状(通信/外设/中断/启动/存储)速诊 | `refs/troubleshooting.md` |
- | **静态检查(REVIEW 阶段必跑)** | cppcheck + clang-tidy + lizard 三件套;机械化执行依赖方向 / 函数复杂度 / MISRA 子集检查 | `refs/static-analysis-pipeline.md` |
- | **IMU 姿态解算** | 通用 checklist 逐项核对轴映射/量程/DLPF/滤波系数(适用 MPU6050/ICM20602/BMI088/LSM6DS3 等 6/9 轴 IMU);6 轴四元数高精度算法 → Mahony 参考 | `refs/imu-gyroscope-checklist.md`,6 轴 Mahony 算法 `refs/mahony-ahrs-reference.md` |
- | **STM32 StdPeriph / HAL API** | API/结构体/引脚映射/DMA 通道 — **优先查本地 refs**,缺失才走 Context7 / grok-search | `refs/stm32-stdperiph-api.md`、`refs/stm32-hal-api.md` |
- | **GD32F4xx 标准外设库** | API + 与 STM32 差异 + DMA × SUB 节选表(完整全量表见 `refs/gd32f4xx-api.md` §6 → GD32 仓库内 `doc/DMA_CHANNEL_MAP.md`)+ GD32F470VET6 BSP 引脚 + Bootloader/UART OTA;仓库走四级解析链 | `refs/gd32f4xx-api.md`、`modes/gd32-board.md` |
- | **MSPM0G3507 + Seekfree 开源库** | Seekfree `zf_driver/zf_device` API + 工程结构(底层基于 TI MSPM0 SDK);11 外设 API + 21 设备驱动选型 + 11 例程对照;Cortex-M0+ 限制(无 LDREX / 无 FPU / 80 MHz);仓库走四级解析链 | `refs/mspm0g3507-seekfree-api.md`、`modes/mspm0-board.md` |
- | **跨平台迁移策略** | 在 STM32/ESP32/Arduino/RISC-V/NXP/TI/国产之间迁移时必须重算的项(时钟 / IRQ 优先级 / 端口隔离),与 `platform-compatibility.md` 互补(前者讲"怎么迁",后者讲"运行时差异")| `refs/platform-migration.md` |
+ 上一代 `embedded-dev` 的离线知识库与专项流程已 bundle 进运行时,随 `aemb init` 装入工程,**按需读取**(不自动全量注入,防撑爆上下文):
- ---
- ## 任务文件模板
- > 创建新任务文件时,读取 `refs/task-template.md` 获取完整模板。
- ---
- ## 交互式审查门机制
- 当 EXECUTE 模式中清单项标记为 `review:true` 时,执行以下最小流程:
+ - `.auto-embedded/refs/`(55+ 篇)—— STM32/GD32 API、引脚规划、IMU、故障分类、编码规范、驱动移植、竞赛清单/契约…总览见 `refs/index.md`;`refs/stm32-hal/` 为 STM32 HAL 方法论 + BSP 模板领域包。
+ - `.auto-embedded/modes/`(12 篇)—— RIPER-5 主干外的专项工作流:`competition`(比赛 6-Agent + CP 门禁)、`datasheet-lookup`、`netlist-lookup`、`gd32-board`、`mspm0-board`、`seekfree-lib`、`matlab-*`、`industrial-data-acquisition`、`mcp-healthcheck`、`workflow-orchestration`。总览见 `modes/index.md`。
- 1. 展示本步骤的代码/配置变更与验证证据
- 2. 请求用户审查并等待回复
- 3. 用户通过后再执行 Git 快照,并把审查结果写入 `编辑清单.md`
+ **比赛模式**:用户说"启用比赛模式"时进入 `.auto-embedded/modes/competition.md`,由 6 个专职 subagent 并行推进:
+ `embedded-arch`(唯一决策者/路由/集成)· `embedded-drv`(驱动)· `embedded-alg`(算法)· `embedded-matlab`(MATLAB 仿真)· `embedded-qa`(验证门)· `embedded-report`(报告),配合 CP-0~CP-5 决策门与 Defect Ticket 回派协议。 并行编排完整支持 Claude;其余平台装入 agent 定义但派发受限(Codex 禁 spawn、Copilot 无 Task 映射),降级为单代理按 modes/competition.md 顺序走 CP 门禁。日常 RIPER-5 仍用 `aemb-scout/builder/verifier` 三角色。
- > 证据包格式见 `refs/vibe-workflow.md`;清单记录格式见 `refs/checklist-templates.md`。
- ---
- ## 扩展模式调用指南
- 本协议支持以下扩展模式,**详细规则独立存放以节省上下文**,触发时读取对应文件后执行:
- ### 替代型模式(替代 RIPER-5 阶段流程)
- | 触发词 | 模式 | 规则文件 |
- |--------|------|---------|
- | `启用比赛模式` / `自动完赛` / `极限并行` / `多 Agent 派发` / `比赛模式 v2` / `赛季 SOP` | **v2 比赛模式**:6 Agent 并行(ARCH/MATLAB/DRV/ALG/QA/REPORT)+ 6 阶段检查点(CP-0~CP-5)+ MIL/SIL/PIL 三层验证 + 自动决策门,电赛 4 天压缩到 1.5-2 天。视觉题由独立 `auto-vision` skill 承担。 | `modes/competition.md` + `refs/competition-ai-max-workflow.md` |
- 调用规则:
- 1. **立即读取**对应的 `modes/` 文件
- 2. 以该文件的**阶段流程**替代 RIPER-5 的五阶段流程
- 3. 主协议的基础规则仍然有效,包括:芯片识别、模块化编程规范、命名规范、代码质量标准、MCP 工具调用规范、驱动库移植优先原则
- 4. 任务结束后自动退出扩展模式,回归标准协议
- ### 辅助型模式(不替代 RIPER-5,在任意阶段可随时触发)
- | 触发词 | 模式 | 规则文件 |
- |--------|------|---------|
- | `查手册` / `查数据手册` / `datasheet` | 数据手册查阅(搜索→下载PDF→MCP解析→参数提取→代码注释) | `modes/datasheet-lookup.md` |
- | `逐飞` / `seekfree` / `英飞凌库` | 逐飞开源库管理(搜索→下载→本地索引→移植) | `modes/seekfree-lib.md` |
- | `GD32` / `GD32F470` / `GigaDevice` / `兆易` / `MICU 主板` / `CMIC 主板` | GD32F470VET6 主板模板(识别版本→选 Standalone/Bootloader→安装 Pack→拷贝模板→OTA) | `modes/gd32-board.md` |
- | `MSPM0` / `MSPM0G3507` / `TI MSPM0` / `逐飞 MSPM0` / `Seekfree MSPM0` | MSPM0G3507 主板模板(定位库→选起点例程→引脚禁用清单→移植到工程→Keil + DAP 烧录) | `modes/mspm0-board.md` |
- | `网表` / `netlist` / `读网表` / `查网表` | 网表读取(检测→解析→提取MCU引脚→比对资源表→应用代码) | `modes/netlist-lookup.md` |
- | `检查工具` / `检查mcp` / `测试工具` / `mcp检查` / `工具诊断` / `healthcheck` | MCP 工具健康检查(逐一测试→诊断→尝试修复→生成报告) | `modes/mcp-healthcheck.md` |
- | `MATLAB` / `Simulink` / `LQR` / `极点配置` / `卡尔曼` / `系统辨识` / `滤波器设计` / `FFT` / `电机辨识` / `定点化` / `查表生成` / `串口日志分析` / `CAN 日志` / `Embedded Coder` / `MIL` / `SIL` / `PIL` | MATLAB 嵌入式工具箱(10 场景:辨识 / 滤波 / FFT / 控制器 / 观测器 / 电机辨识 / 日志分析 / 定点化 / Simulink 代码生成 / MIL-SIL-PIL 验证),含小白决策树与每场景四段式引导 | `modes/matlab-embedded-toolkit.md` |
- | `MATLAB 一键流水线` / `matlab pipeline` / `MATLAB 到固件` / `仿真到实测` / `一键算到烧` / `一键 LQR 上板` / `闭环到端验证` | MATLAB → 固件 6 步流水线(算→`.h`→编译→烧→监控→对比) | `modes/matlab-firmware-pipeline.md` |
- | `电赛` / `电子设计竞赛` / `DDS` / `调制度` / `失真度` / `THD` / `SFDR` / `自适应滤波` / `LMS` / `电磁循迹` / `差比和` / `Simscape` | MATLAB 竞赛专题(计算/控制类场景:信号源/调制/仪表/自适应/电路/电磁)+ 历年赛题索引 | `modes/matlab-toolkit-competition.md` + `refs/competition-index.md` |
- | `工业数据采集` / `工业嵌入式` / `CIMC` / `西门子杯` / `西门子初赛` / `data logger` / `DAQ` / `工业题` / `系统集成题` / `sysFunction` / `CLI 命令解析` | **工业数据采集系统集成模板(IDA)**:8 子系统(启动/RTC/CLI/配置/采集/OLED/存储/日志)+ 多外设协同 + Flash 持久化 + TF 卡多文件夹 + 跳过 MATLAB 仿真阶段 | `modes/industrial-data-acquisition.md` + `refs/cli-command-framework.md` + `refs/example-siemens-cimc-2025.md` |
- | `题型识别` / `赛题路由` / `题型路由` / `评分点提取` / `验收表` / `100 分追踪表` / `acceptance test` | **元层路由器**:任何竞赛题第 0 步必读。标签化路由(MAIN + TAGS)+ 角色池 Agent 派发 + 阶段跳过矩阵 + 5 元组验收表 + 答辩 why-evidence + 临场变更单 | `refs/competition-task-router.md` + `refs/competition-scoring-checklist-template.md` |
- | `quickstart` / `快速开始` / `15 分钟入门` / `三人极简` / `Mini 模式` | **单页快速通道**:15 分钟从读题到派 Agent;只读 1 张表即可起步,省 4 小时学习曲线 | `refs/competition-quickstart-1page.md` |
- | `embedded-arch` / `embedded-drv` / `embedded-alg` / `embedded-qa` / `embedded-matlab` / `embedded-report` / `subagent` / `VoltAgent 风格` | **6 个独立 subagent**(已装 `~/.claude/agents/`)按 VoltAgent 标准格式,可用 `Task(subagent_type=embedded-xxx)` 直接派发;独立 context = 主线压力小 | `agents/README.md` + `agents/embedded-*.md` |
- | `电路` / `电路仿真` / `SPICE` / `网表生成` / `Multisim` / `运放/滤波/调理电路验证` | **模拟前端电路预验证**(外部辅助 skill,非 modes 文件):自然语言→SPICE 网表→内置 ngspice 批处理自检→可选 NI Multisim 出原理图。**设计期(RESEARCH/INNOVATE)证据生成型,非 EXECUTE 执行器,不走 Command Outcome 契约**;仅 Windows,Multisim 可选(未装则保留 `.cir`+ngspice 数值即完成);与 Simscape 边界——电路级正确性走它、系统级/控制链路走 Simscape;结果反哺 `研究发现.md`/`硬件资源表.md` | 外部 skill `multisim-spice`(`~/.claude/skills/multisim-spice`)+ `refs/riper5-stages.md` RESEARCH 步骤 10 |
- | `Workflow 编排` / `原生工作流` / `确定性编排` / `workflow 接管` / `用 Workflow 跑比赛模式` | **原生 Workflow 编排后端**:把比赛模式 v2(CP-1.5→CP-4)或长任务 Scout-Builder-Verifier 从「主线每轮自觉遵守」升级为 Opus 原生 `Workflow` 工具**确定性执行**(`phase`↔CP、`parallel`↔CP 内派发、`agent({schema})`↔强制 Command Outcome、`while`+`Map`↔全局重试预算、回派环写死)。**Workflow 管骨架与门禁、Goal/Agent 管判断与实现**;`blocked` 不能问用户 → 一律 return 给主线 ARCH 做 `AskUserQuestion` + `resumeFromRunId` 续跑;git tag / 硬件在环留主线。**不替代 RIPER-5/competition.md,是其可选执行后端** | `modes/workflow-orchestration.md` + 脚本 `tools/competition-workflow.js` |
- 调用规则:
- 1. **立即读取**对应的 `modes/` 文件
- 2. 按该文件的流程执行任务,**不中断当前 RIPER-5 阶段**
- 3. 任务完成后,携带获取的结果(参数/驱动文件等)**返回触发前的阶段**继续工作
- ---
- ## Skill Handoff Contract(跨 skill 上下文交接协议)
+ ## spec 库(项目级,可演进)
- 本协议运行在多 skill 协作架构上:`embedded-dev` 持主流程(治理 / 计划 / 审查),由若干操作执行层兄弟 skill 持操作执行(构建 / 烧录 / 调试 / 通信 / 分析)。所有跨 skill 调用必须遵守 `refs/contracts.md` 的统一接口。实际已装 skill 列表见 `hooks/verify-deps` 输出。
+ `.auto-embedded/spec/` 五层(见各 `index.md`):`architecture`(六层模型+ARCH-1~8)、`conventions`(证据优先/复用优先/ISR/临界区/Git 快照)、`hardware`(事实基线 + 机器可读 `hw-lock.yaml`)、`guides`(思维清单)、`governance`(记忆边界)。
+ 新增/改约定就改对应 `index.md`;REVIEW 用 `promote` 沉淀,下次自动注入。
- **核心约定**(详细字段定义见 `refs/contracts.md`):
+ ## 架构(开发者向)
- 1. **Project Profile** — 工程画像,由 RESEARCH 阶段调用 `python ~/.claude/skills/shared/project_detect.py` 生成,写入 `硬件资源表.md` 顶部,所有兄弟 skill 共用
- 2. **统一动作词** — `detect` / `build` / `flash` / `attach` / `monitor` / `reset` / `verify`,每轮 EXECUTE 必须用这套动词描述操作
- 3. **Command Outcome Schema** — 兄弟 skill 返回 4 种状态之一:`success` / `partial_success` / `blocked` / `failure`,并附带 `summary` / `evidence` / `next_action` / `failure_category`
- 4. **Failure Taxonomy** — 失败必须归类到 `refs/failure-taxonomy.md` 的 8 类标准分类,作为 `failure_category` 字段值
- 5. **决策硬规则**:
- - 用户显式输入 > 自动探测结果
- - 已有 Project Profile 时复用,不重复探测
- - 产物优先级 `ELF > HEX > BIN`,`BIN` 烧录前必须有基地址,否则阻塞
- - 多个同样合理的候选(板卡/探针/串口/preset) → 返回 `blocked` + 候选列表,不擅自挑选
+ `src/types/ai-tools.ts`(平台注册表数据)→ `src/configurators/*`(每平台行为 + `shared.ts` 占位符渲染 + `merge.ts` 配置合并 + `hooks.ts` 共享 hook 分发)→ `templates/`(`common/` 共享 body、`shared-hooks/` 三个 Python hook、`<平台>/` 私有模板、`auto-embedded/` 运行时内核 + 工具脚本)。新增平台:加注册表条目 + 写 `configurators/<平台>.ts` + 在 `configurators/index.ts` 注册。
- **跨 skill 协作示例**(已写入"操作执行层兄弟 skill 路由"表):
+ ## 自测
```
- Round 1: build-cmake (action: build) → success, artifact_path=build/app.elf
- Round 2: flash-openocd (action: flash) → success, verify ok
- Round 3: serial-monitor (action: monitor) → success, evidence=日志显示 "System Start"
- Round 4: 主协议 REVIEW 阶段执行验证门,整合三个 Outcome 出最终结论
+ bash tests/test-auto-embedded.sh
```
-
- 跨平台路径、串口、权限差异规则见 `refs/platform-compatibility.md`,编写 EXECUTE 阶段命令时按需读取(特别是涉及 Linux/macOS/Windows 切换的多人协作工程)。
+ 临时工程里 `init --all` 并断言整条闭环(7 平台脚手架/doctor/幂等/内核/工具脚本 shared 导入/SessionStart+面包屑+子 Agent 注入/卸载全清)。