# MCU芯片测试 AI 角色定义与权限约定 ## 团队架构 ``` ┌─────────────────────────────────────────────┐ │ 人类负责人 │ │ 需求分析 · 架构设计 · 最终决策 │ └───────────────┬───────────┬─────────────────┘ │ │ ┌───────────┴──┐ ┌────┴────────────┐ ▼ ▼ ▼ ▼ ┌───────────────┐ ┌──────────────┐ │ Arch AI │ │ 执行AI │ │ 需求分析 │ │ 代码实现 │ │ 架构设计 │ │ 测试执行 │ │ 测试方案设计 │ │ 报告生成 │ │ 结果分析 │ └──────────────┘ └───────────────┘ ``` --- ## 输入资源 项目启动时需要以下输入资源: | 资源类型 | 存放位置 | 用途 | |---------|---------|------| | Excel 寄存器表格 | `docs/00_芯片资料/registers/` | Arch AI 分析芯片功能,生成寄存器定义头文件 | | 串口 printf Demo 工程 | `projects/P01_chip_test/demo/` | 执行AI 基于该工程扩展测试功能 | | 芯片手册 | `docs/00_芯片资料/datasheet/` | 参考文档 | --- ## 角色职责 ### Arch AI (架构AI) **职责范围:** - ✅ 芯片功能需求分析和测试规划 - ✅ 解析 Excel 寄存器表格,生成头文件 - ✅ 测试架构设计和测试方案制定 - ✅ 编译器选择和环境配置方案 - ✅ JTAG调试流程设计 - ✅ 串口日志分析方案 - ✅ 编写测试架构文档 (`docs/`) - ✅ 定义验收标准 (`review/*/acceptance.md`) - ✅ 评估测试结果影响 (`review/*/impact.md`) - ✅ 维护共享资源 (`shared/`) - ✅ 维护测试工具 (`tools/`) - ✅ 指导执行AI工作 **可读但不可写:** - 👁 AI 配置文件 (`.ai/`) —— 只读,了解团队规则 - 👁 测试报告 (`reports/`) —— 只读,了解测试结果 - 👁 测试反馈 (`review/*/feedback/`) —— 只读,了解问题 **禁止操作:** - ❌ 无(架构 AI 拥有最高 AI 权限) ### 执行AI (Executor AI) **职责范围:** - ✅ 编写测试固件代码 (`projects/*/src/`) - ✅ 配置编译环境 (Arm Clang / Keil MDK / Arm GCC) - ✅ 通过JTAG调试下载固件 (`tools/jtag/`) - ✅ 执行测试,收集串口日志 (`tools/uart/`) - ✅ 单步调试和验证功能 - ✅ 生成测试报告 (`reports/`) - ✅ 提交测试反馈 (`review/*/feedback/`) - ✅ 补充验收标准 (`review/*/acceptance.md`) **可读但不可写:** - 👁 任务描述 (`review/*/task.md`) —— 只读,不可修改 - 👁 架构文档 (`docs/`) —— 只读,了解测试方案 **禁止操作:** - ❌ 修改测试架构设计文档 - ❌ 修改共享资源 (`shared/`) - ❌ 修改任务描述和影响评估 ### 人类负责人 **职责范围:** - ✅ 可以修改所有目录 - ✅ 审核 AI 输出质量 - ✅ 解决 AI 之间的冲突 - ✅ 最终决策和验收 --- ## 工作流程 ``` ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ │ 需求分析 │ ───→ │ 测试架构 │ ───→ │ 执行测试 │ ───→ │ 验收确认 │ │ (Arch AI) │ │ (Arch AI) │ │ (执行AI) │ │ (人类) │ └──────────────┘ └──────────────┘ └──────────────┘ └──────────────┘ ↑ │ │ Bug → 修复 │ └──────────────────────┘ (最多 2 轮) ``` ### 详细流程说明 **0. 准备输入资源(前置步骤)** - 人类将 Excel 寄存器表格放入 `docs/00_芯片资料/registers/` - 人类将串口 printf Demo 工程放入 `projects/P01_chip_test/demo/` **1. 需求分析阶段** - Arch AI 解析 Excel 寄存器表格,分析芯片功能需求,制定测试规划 - 输出: `docs/01_测试需求/`、`review/{task_id}/task.md`、寄存器定义头文件 **2. 测试架构阶段** - Arch AI 设计测试架构,选择编译器,规划JTAG/串口调试流程 - 输出: `docs/02_测试架构/`、`review/{task_id}/impact.md`、`review/{task_id}/acceptance.md` **3. 执行测试阶段** - 执行AI 读取任务描述和验收标准,基于 Demo 工程扩展测试功能,配置环境,下载执行 - 输出: `projects/*/src/`, `projects/*/docs/`, `reports/test-results/`, `review/{task_id}/feedback/` **4. 验收确认阶段** - 人类审核测试报告,确认任务完成或驳回 - 确认后任务状态更新为 DONE,移入 `review/archived/` ### 缺陷修复循环 | 规则 | 说明 | |------|------| | 最大轮次 | 3 轮(初始测试 + 最多 2 轮修复复查) | | 循环范围 | 测试失败 → 执行AI 修复 → 执行AI 复查 | | 跳过项 | 修复轮次中执行AI **只修固件或测试流程**,不重新写 acceptance/impact | | 触发升级 | 第 3 轮仍有 BLOCKER 或 HIGH 级别 Bug → 暂停流转,待人类裁决 | ``` Round 1: Arch AI 设计 → 执行AI 测试 → 3 个 Bug Round 2: 执行AI 修复 → 执行AI 复查 → 1 个 Bug(MEDIUM) Round 3: 执行AI 修复 → 执行AI 复查 → 0 个 Bug ✅ → 提交人类验收 ``` 如果 Round 3 仍有 BLOCKER/HIGH: ``` Round 3: 执行AI 修复 → 执行AI 复查 → 仍 1 个 HIGH → ⚠️ 升级给人类裁决 ``` --- ## 目录权限矩阵 > **图例**:`-` = 无权访问    `R` = 只读    `W` = 可写(含读)    `RW` = 读写 | 目录路径 | Arch AI | 执行AI | 人类 | |---------|---------|--------|------| | `.ai/` | `R` | `-` | `RW` | | `docs/` | `RW` | `R` | `RW` | | `tools/` | `RW` | `RW` | `RW` | | `shared/` | `RW` | `R` | `RW` | | `projects/*/src/` | `RW` | `RW` | `RW` | | `projects/*/tests/` | `RW` | `RW` | `RW` | | `projects/*/docs/` | `RW` | `RW` | `RW` | | `review/*/task.md` | `RW` | `R` | `RW` | | `review/*/acceptance.md` | `RW` | `RW` | `RW` | | `review/*/impact.md` | `RW` | `-` | `RW` | | `review/*/feedback/` | `R` | `RW` | `RW` | | `reports/` | `R` | `RW` | `RW` | | `.github/` | `-` | `-` | `RW` | > **解析优先级**:当同一条路径被多个规则匹配时,`forbidden > read_only > allowed`。禁止规则永远优先。 > > **默认行为**:任何未出现在上表中的路径,默认禁止所有 AI 访问(等效于 `-`)。 --- ## 沟通规范 ### Arch AI → 执行AI 在 `review/{task_id}/` 目录提交: - **验收标准** (`acceptance.md`) - 明确测试目标 - **变更影响范围** (`impact.md`) - 指导回归测试 - **环境准备** 参考项目级 `ENVIRONMENT.md` ### 执行AI → Arch AI / 人类 在 `review/{task_id}/feedback/` 目录提交: - **测试结果报告** (`round{round}.md`) - **问题清单** - 列出问题和严重程度 - **改进建议** - 优化建议 --- ## 命名规范 ### 项目命名 ``` P01_芯片测试项目 # P01 表示项目编号 ``` ### 任务编号 ``` P01-001 # P01 项目编号 + 001 任务编号 ``` ### 分支命名 ``` feature/P01-001-gpio-test # 功能测试 bugfix/P01-001-uart-fix # Bug修复 test/P01-001-perf-verify # 性能验证 ``` ### 提交信息 ``` feat(P01-001): 实现GPIO功能测试 fix(P01-001): 修复串口日志输出问题 docs(P01-001): 更新测试架构文档 test(P01-001): 添加定时器测试用例 ``` --- ## 编译器配置 ### Arm Clang ```json { "compiler": "armclang", "version": ">= 18.0.0", "target": "armv8-m", "optimization": "O2" } ``` ### Keil MDK ```json { "compiler": "AC6", "version": ">= 6.18", "target": "Cortex-M7", "optimization": "-O2" } ``` ### Arm GCC ```json { "compiler": "arm-none-eabi-gcc", "version": ">= 12.0.0", "target": "armv8-m", "optimization": "-O2" } ``` --- ## JTAG调试流程 1. **准备固件**: 编译生成 .hex / .elf 文件 2. **连接硬件**: 通过JTAG/SWD连接硬件 3. **下载固件**: 使用OpenOCD或pyOCD下载 4. **运行调试**: 启动调试,设置断点 5. **串口监控**: 监听串口输出日志 6. **单步调试**: 单步执行,验证功能 --- ## AI 配置文件说明 | 文件 | 说明 | |------|------| | `.ai/config/architect.json` | Arch AI 配置(权限、职责) | | `.ai/config/executor.json` | 执行AI 配置(权限、职责) | | `.ai/config/workflow.json` | 工作流配置(阶段、触发器) | | `.ai/prompts/architecture/` | 架构设计提示词模板 | | `.ai/prompts/execution/` | 执行提示词模板 |