Files
tupingr 8157f10768 feat: 完善 MCU 芯片自动化测试架构
- 重构为三角色协作:人+Arch AI+执行AI
- 新增 Excel 寄存器表格解析工具,自动生成测试代码
- 新增串口日志分析工具,自动生成测试报告
- 完善项目文档:AGENTS.md、README.md
- 创建自动化测试架构设计文档
- 添加示例测试任务 P01-001
2026-05-27 10:44:55 +08:00

272 lines
9.2 KiB
Markdown
Raw Permalink 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.
# 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 个 BugMEDIUM
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/` | 执行提示词模板 |