feat: 完善 MCU 芯片自动化测试架构
- 重构为三角色协作:人+Arch AI+执行AI - 新增 Excel 寄存器表格解析工具,自动生成测试代码 - 新增串口日志分析工具,自动生成测试报告 - 完善项目文档:AGENTS.md、README.md - 创建自动化测试架构设计文档 - 添加示例测试任务 P01-001
This commit is contained in:
@@ -1,119 +1,271 @@
|
||||
# AI 角色定义与权限约定
|
||||
|
||||
> **如果你是 AI,请直接跳转到你的角色入口:**
|
||||
> - Arch AI → `dashboard.md` 全文
|
||||
> - Dev AI → `.ai/roles/dev/card.md` → 对应 `.ai/tasks/active/P01-XXX.md`
|
||||
> - QA AI → `.ai/roles/qa/card.md` → 对应 `.ai/tasks/active/T01-XXX.md`
|
||||
>
|
||||
> **如果你是**人类,请看 `dashboard.md` 顶部「人类区」。
|
||||
>
|
||||
> 本文档是权限矩阵的**唯一权威参考**。角色工作台中的权限描述为摘要,如有冲突以本文档为准。
|
||||
>
|
||||
> **架构说明**: 旧入口(DASHBOARD.md / ROADMAP.md / roles/*/today.md / roles/*/queue.md)已归档至 `.ai/archive/`。详见 ADR-012。
|
||||
|
||||
---
|
||||
# MCU芯片测试 AI 角色定义与权限约定
|
||||
|
||||
## 团队架构
|
||||
|
||||
`1 人类 + 3 AI` 协作模式:
|
||||
- **Arch AI** — 需求分析、架构设计、技术选型、跨模块协调
|
||||
- **Dev AI** — 代码编写、文档生成、Bug 修复
|
||||
- **QA AI** — 测试设计、测试执行、质量反馈
|
||||
- **人类** — 需求输入、最终决策、成果验收
|
||||
```
|
||||
┌─────────────────────────────────────────────┐
|
||||
│ 人类负责人 │
|
||||
│ 需求分析 · 架构设计 · 最终决策 │
|
||||
└───────────────┬───────────┬─────────────────┘
|
||||
│ │
|
||||
┌───────────┴──┐ ┌────┴────────────┐
|
||||
▼ ▼ ▼ ▼
|
||||
┌───────────────┐ ┌──────────────┐
|
||||
│ Arch AI │ │ 执行AI │
|
||||
│ 需求分析 │ │ 代码实现 │
|
||||
│ 架构设计 │ │ 测试执行 │
|
||||
│ 测试方案设计 │ │ 报告生成 │
|
||||
│ 结果分析 │ └──────────────┘
|
||||
└───────────────┘
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 工作流(简化版)
|
||||
## 输入资源
|
||||
|
||||
```
|
||||
需求分析(Arch) → 架构设计(Arch) → 开发实现(Dev) → 测试验证(QA) → 人类验收
|
||||
↑ │
|
||||
└── Bug修复 ──┘ (最多3轮)
|
||||
```
|
||||
项目启动时需要以下输入资源:
|
||||
|
||||
缺陷修复循环:最多 3 轮。第 3 轮仍有 BLOCKER/HIGH → 升级给人类裁决。
|
||||
|
||||
详细工作流配置:`.ai/config/workflow.json`
|
||||
| 资源类型 | 存放位置 | 用途 |
|
||||
|---------|---------|------|
|
||||
| Excel 寄存器表格 | `docs/00_芯片资料/registers/` | Arch AI 分析芯片功能,生成寄存器定义头文件 |
|
||||
| 串口 printf Demo 工程 | `projects/P01_chip_test/demo/` | 执行AI 基于该工程扩展测试功能 |
|
||||
| 芯片手册 | `docs/00_芯片资料/datasheet/` | 参考文档 |
|
||||
|
||||
---
|
||||
|
||||
## 角色职责
|
||||
|
||||
### Arch AI
|
||||
- 可写:需求分析、架构设计、技术选型、跨模块协调、架构文档、验收标准、影响评估、共享资源、开发工具、训练数据、业务代码
|
||||
- 只读:AI 配置、测试代码、测试报告、测试反馈
|
||||
- 指导 Dev AI 和 QA AI 工作,分配任务队列
|
||||
### Arch AI (架构AI)
|
||||
**职责范围:**
|
||||
- ✅ 芯片功能需求分析和测试规划
|
||||
- ✅ 解析 Excel 寄存器表格,生成头文件
|
||||
- ✅ 测试架构设计和测试方案制定
|
||||
- ✅ 编译器选择和环境配置方案
|
||||
- ✅ JTAG调试流程设计
|
||||
- ✅ 串口日志分析方案
|
||||
- ✅ 编写测试架构文档 (`docs/`)
|
||||
- ✅ 定义验收标准 (`review/*/acceptance.md`)
|
||||
- ✅ 评估测试结果影响 (`review/*/impact.md`)
|
||||
- ✅ 维护共享资源 (`shared/`)
|
||||
- ✅ 维护测试工具 (`tools/`)
|
||||
- ✅ 指导执行AI工作
|
||||
|
||||
### Dev AI
|
||||
- 可写:业务代码、技术文档、项目级文档、开发工具、训练数据、共享资源、验收标准、影响评估
|
||||
- 只读:任务描述、测试反馈
|
||||
- 禁止:测试代码、测试报告
|
||||
**可读但不可写:**
|
||||
- 👁 AI 配置文件 (`.ai/`) —— 只读,了解团队规则
|
||||
- 👁 测试报告 (`reports/`) —— 只读,了解测试结果
|
||||
- 👁 测试反馈 (`review/*/feedback/`) —— 只读,了解问题
|
||||
|
||||
### QA AI
|
||||
- 可写:测试用例、测试报告、验收标准补充、测试反馈
|
||||
- 只读:业务代码、技术文档、项目级文档、训练数据、共享资源、任务描述
|
||||
- 禁止:AI 配置、开发工具、影响评估
|
||||
**禁止操作:**
|
||||
- ❌ 无(架构 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` = 读写
|
||||
> **图例**:`-` = 无权访问 `R` = 只读 `W` = 可写(含读) `RW` = 读写
|
||||
|
||||
| 目录路径 | Arch AI | Dev AI | QA AI | 人类 |
|
||||
|---------|---------|--------|-------|------|
|
||||
| `.ai/` | `R` | `-` | `-` | `RW` |
|
||||
| `docs/` | `RW` | `RW` | `R` | `RW` |
|
||||
| `tools/` | `RW` | `RW` | `-` | `RW` |
|
||||
| `data/` | `RW` | `RW` | `R` | `RW` |
|
||||
| `shared/` | `RW` | `RW` | `R` | `RW` |
|
||||
| `projects/*/src/` | `RW` | `RW` | `R` | `RW` |
|
||||
| `projects/*/tests/` | `R` | `-` | `RW` | `RW` |
|
||||
| `projects/*/docs/` | `RW` | `RW` | `R` | `RW` |
|
||||
| `review/*/task.md` | `RW` | `R` | `R` | `RW` |
|
||||
| `review/*/acceptance.md` | `RW` | `RW` | `RW` | `RW` |
|
||||
| `review/*/impact.md` | `RW` | `RW` | `-` | `RW` |
|
||||
| `review/*/feedback/` | `R` | `R` | `RW` | `RW` |
|
||||
| `reports/` | `R` | `-` | `RW` | `RW` |
|
||||
| `.github/` | `-` | `-` | `-` | `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。
|
||||
> **解析优先级**:当同一条路径被多个规则匹配时,`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 表示项目编号
|
||||
```
|
||||
|
||||
### 任务编号
|
||||
`P{项目编号}-{任务序号}`,如 `P01-001`
|
||||
```
|
||||
P01-001 # P01 项目编号 + 001 任务编号
|
||||
```
|
||||
|
||||
### 分支命名
|
||||
```
|
||||
feature/P01-001-short-desc # 功能开发
|
||||
bugfix/P01-001-short-desc # Bug修复
|
||||
test/P01-001-short-desc # 测试用例
|
||||
feature/P01-001-gpio-test # 功能测试
|
||||
bugfix/P01-001-uart-fix # Bug修复
|
||||
test/P01-001-perf-verify # 性能验证
|
||||
```
|
||||
|
||||
### 提交信息
|
||||
```
|
||||
feat(P01-001): 简短描述
|
||||
fix(P01-001): 简短描述
|
||||
docs(P01-001): 简短描述
|
||||
test(P01-001): 简短描述
|
||||
feat(P01-001): 实现GPIO功能测试
|
||||
fix(P01-001): 修复串口日志输出问题
|
||||
docs(P01-001): 更新测试架构文档
|
||||
test(P01-001): 添加定时器测试用例
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## AI 配置文件索引
|
||||
## 编译器配置
|
||||
|
||||
### 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/coder.json` | Dev AI 配置(权限、职责) |
|
||||
| `.ai/config/tester.json` | QA AI 配置(权限、职责) |
|
||||
| `.ai/config/executor.json` | 执行AI 配置(权限、职责) |
|
||||
| `.ai/config/workflow.json` | 工作流配置(阶段、触发器) |
|
||||
| `.ai/prompts/architecture/` | 架构设计提示词模板 |
|
||||
| `.ai/prompts/coding/` | 编码提示词模板 |
|
||||
| `.ai/prompts/testing/` | 测试提示词模板 |
|
||||
| `.ai/roles/` | AI 角色工作台(日常入口) |
|
||||
| `.ai/phases/` | 阶段上下文 |
|
||||
| `.ai/knowledge/` | 知识沉淀 |
|
||||
| `.ai/prompts/execution/` | 执行提示词模板 |
|
||||
|
||||
Reference in New Issue
Block a user