# RFC 0011 多智能体协作系统 — 测试计划时间表

> 制定日期：2026-05-14
> 基准文档：`docs/rfc/0011-multi-agent-collaboration.md`
> 任务跟踪：`TODO.md`

---

## 开发状态总览

| Phase | 名称 | 开发状态 | 可测试性 |
|-------|------|---------|---------|
| A | 基础框架 | ✅ 已完成 | 🟢 可直接测试 |
| B | 消息通讯 | ✅ 已完成 | 🟢 可直接测试 |
| C | 文件编辑锁 | ✅ 已完成 | 🟢 可直接测试 |
| D | 前端交互 | ✅ 已完成 | 🟢 可直接测试 |
| E | 完善与优化 | ✅ 已完成 | 🟢 可直接测试 |

> **结论**：TODO.md 中 5 个 Phase 的所有任务均已勾选完成，全部可进入测试阶段。

---

## 整体测试时间线

```
2026-05-14  ──┬── Phase A：基础框架测试（2 天）
              │
2026-05-16  ──┬── Phase B：消息通讯测试（1.5 天）
              │
2026-05-18  ──┬── Phase C：文件编辑锁测试（1.5 天）
              │
2026-05-19  ──┬── Phase D：前端交互测试（2 天）
              │
2026-05-21  ──┬── Phase E：完善与优化测试（2 天）
              │
2026-05-23  ──┬── 跨 Phase 集成测试（2 天）
              │
2026-05-25  ──── 回归与验收（1 天）
```

**总预计耗时：12 个工作日（2026-05-14 ~ 2026-05-26）**

---

## Phase A：基础框架

**测试周期**：2026-05-14 ~ 2026-05-15（2 天）
**开发状态**：✅ 已完成，可直接测试
**详细验证清单**：`docs/rfc/0011-phase1-verification-checklist.md`

### 测试范围

| 模块 | 覆盖内容 |
|------|---------|
| AgentDescriptor | agent_id / role / label / system_prompt / lifecycle / tools / status 字段 |
| AgentRegistry | 注册表增删查、HashMap 结构、并发安全 |
| create_agent 工具 | 参数校验、注册、事件触发、工具集限制 |
| dismiss_agent 工具 | 销毁、资源清理、状态变更、事件触发 |
| Sub Agent ReactEngine | 独立循环、工具调用、system_prompt 注入、Session 继承 |
| StreamEvent | AgentCreated / AgentStatusChanged / Worker* 事件 |

### 关键测试用例类别

| 类别 | 用例数 | 优先级 | 说明 |
|------|--------|--------|------|
| 数据结构正确性 | 11 | P0 | AgentDescriptor 各字段初始化、Registry 结构 |
| create_agent 正常流程 | 8 | P0 | 创建成功、事件触发、工具集继承/限制 |
| create_agent 异常场景 | 7 | P0 | 重复 role、空参数、数量上限、权限 |
| dismiss_agent 正常流程 | 8 | P1 | 销毁成功、资源释放、状态转换 |
| dismiss_agent 异常场景 | 5 | P1 | 不存在、重复销毁、销毁主 Agent |
| Sub Agent 执行循环 | 9 | P0 | 启动、工具调用、完成、并行执行 |
| Sub Agent 异常处理 | 6 | P1 | 工具失败、轮次限制、超时、并发上限 |
| StreamEvent 验证 | 14 | P1 | 事件类型、字段正确性、时序 |

### 验收标准

- [ ] 所有 P0 用例 100% 通过
- [ ] P1 用例通过率 ≥ 90%
- [ ] 无内存泄漏（创建/销毁 10 轮后内存稳定）
- [ ] 事件流时序正确（Created → StatusChanged → WorkerStarted → WorkerChunk → WorkerCompleted）

---

## Phase B：消息通讯

**测试周期**：2026-05-16 ~ 2026-05-17 上午（1.5 天）
**开发状态**：✅ 已完成，可直接测试

### 测试范围

| 模块 | 覆盖内容 |
|------|---------|
| AgentMessage 类型 | from / to / content / priority 字段 |
| MessageBus | 消息路由、收件箱机制、消息注入 ReactEngine |
| send_message 工具 | 点对点消息发送、路由正确性 |
| broadcast_message 工具 | 广播消息、exclude 排除机制 |
| Agent 收件箱 | 消息注入上下文、消息队列管理 |
| StreamEvent | AgentMessage 事件 |

### 关键测试用例类别

| 类别 | 用例数 | 优先级 | 说明 |
|------|--------|--------|------|
| 点对点消息发送 | 6 | P0 | 主→Sub、Sub→主、Sub→Sub 三种路径 |
| 广播消息 | 5 | P0 | 全量广播、exclude 排除、空团队广播 |
| 消息路由正确性 | 4 | P0 | role 路由、不存在的 role、已销毁 Agent |
| 消息优先级 | 3 | P1 | normal / urgent 优先级处理差异 |
| 收件箱消息注入 | 4 | P0 | 消息注入 ReactEngine 上下文、多条消息排队 |
| 消息并发安全 | 3 | P1 | 多 Agent 同时发消息、消息不丢失不乱序 |
| AgentMessage 事件 | 3 | P1 | 事件字段正确性、前端展示 |

### 验收标准

- [ ] 点对点消息在所有路径下正确送达
- [ ] 广播消息 exclude 机制正确
- [ ] 消息不丢失、不乱序（并发场景下）
- [ ] 已销毁 Agent 的消息返回明确错误

---

## Phase C：文件编辑锁

**测试周期**：2026-05-17 下午 ~ 2026-05-18（1.5 天）
**开发状态**：✅ 已完成，可直接测试

### 测试范围

| 模块 | 覆盖内容 |
|------|---------|
| FileLockManager | 锁获取、锁释放、锁状态查询 |
| lock_file / unlock_file 工具 | 参数校验、锁操作 |
| write_file / replace_in_file 集成 | 执行前检查锁状态、拒绝无锁写入 |
| 锁超时机制 | 300 秒自动释放 |
| Agent 销毁时锁释放 | 自动释放所有持有锁 |
| 主 Agent 锁权限 | 可强制释放任何锁 |
| StreamEvent | FileLockChanged 事件 |
| 锁冲突报告 | active_locks_summary |

### 关键测试用例类别

| 类别 | 用例数 | 优先级 | 说明 |
|------|--------|--------|------|
| 锁获取与释放 | 5 | P0 | 正常获取、释放、重复获取同一文件 |
| 锁冲突 | 5 | P0 | Agent A 持锁时 Agent B 尝试获取同文件 |
| write_file 锁检查 | 4 | P0 | 有锁可写入、无锁被拒绝、锁释放后可写入 |
| replace_in_file 锁检查 | 4 | P0 | 同 write_file 逻辑 |
| 锁超时自动释放 | 3 | P1 | 300 秒后自动释放、超时后其他 Agent 可获取 |
| Agent 销毁锁释放 | 3 | P0 | 销毁 Agent 后其持有的锁全部释放 |
| 主 Agent 强制释放 | 3 | P1 | 主 Agent 可释放 Sub Agent 持有的锁 |
| FileLockChanged 事件 | 3 | P1 | 获取/释放/超时均触发事件 |
| active_locks_summary | 2 | P2 | 正确报告当前所有活跃锁 |

### 验收标准

- [ ] 锁互斥正确，不会出现两个 Agent 同时写入同一文件
- [ ] 超时释放机制可靠
- [ ] Agent 销毁后锁完全释放，无残留
- [ ] 主 Agent 强制释放权限正常

---

## Phase D：前端交互

**测试周期**：2026-05-19 ~ 2026-05-20（2 天）
**开发状态**：✅ 已完成，可直接测试

### 测试范围

| 模块 | 覆盖内容 |
|------|---------|
| notify_user 工具 | Sub Agent 直接推送消息到前端 |
| Agent Tab 切换 | 用户查看不同 Agent 执行细节 |
| @提及输入 | @dev / @test / @all 语法 |
| Agent 面板 | 团队成员列表、状态、手动关闭按钮 |
| Tauri commands | Agent 相关事件转发 |
| StreamEvent | AgentNotification 事件 |

### 关键测试用例类别

| 类别 | 用例数 | 优先级 | 说明 |
|------|--------|--------|------|
| notify_user 推送 | 4 | P0 | info / warning / error / question 四种级别 |
| Agent Tab 创建与切换 | 5 | P0 | 创建后 Tab 出现、点击切换、内容正确 |
| Agent Tab 状态指示 | 3 | P1 | 空闲/运行中/已销毁状态显示 |
| @提及路由 | 5 | P0 | @dev 路由到 dev Agent、@all 广播、不存在的 @mention |
| Agent 面板展示 | 4 | P1 | 成员列表、状态、关闭按钮功能 |
| 手动关闭 Agent | 3 | P1 | 面板关闭按钮触发 dismiss、确认弹窗 |
| Tauri 事件转发 | 3 | P2 | 后端事件正确转发到前端 |
| AgentNotification 事件 | 2 | P2 | 事件字段正确性 |

### 验收标准

- [ ] Tab 切换流畅，内容正确对应各 Agent
- [ ] @提及语法正确路由到目标 Agent
- [ ] Agent 面板实时反映团队状态
- [ ] 手动关闭 Agent 有确认机制，防止误操作

---

## Phase E：完善与优化

**测试周期**：2026-05-21 ~ 2026-05-22（2 天）
**开发状态**：✅ 已完成，可直接测试

### 测试范围

| 模块 | 覆盖内容 |
|------|---------|
| 临时 Agent 自动销毁 | lifecycle=temporary 的 Agent 任务完成后自动销毁 |
| Agent 错误恢复 | Sub Agent 失败不影响其他 Agent |
| 并发限制 | 最大 8 个 Agent、同时运行 4 个 |
| Token 预算分配 | 200K 共享预算、超出暂停 |
| system prompt 团队指引 | 工具使用指引正确注入 |
| Sub Agent 并行执行 | futures::join_all 协作并发 |

### 关键测试用例类别

| 类别 | 用例数 | 优先级 | 说明 |
|------|--------|--------|------|
| 临时 Agent 自动销毁 | 4 | P0 | 任务完成后自动销毁、销毁后资源释放、事件触发 |
| 持久 Agent 不自动销毁 | 2 | P0 | lifecycle=persistent 的 Agent 任务完成后仍存活 |
| Agent 错误隔离 | 4 | P0 | 一个 Agent 崩溃不影响其他 Agent、主 Agent 收到错误通知 |
| 最大 Agent 数量限制 | 3 | P0 | 8 个上限、超出拒绝、销毁后可重新创建 |
| 并发运行限制 | 3 | P0 | 4 个并发上限、第 5 个排队、完成后自动开始 |
| Token 预算分配 | 4 | P1 | 预算共享、超出暂停、预算恢复后继续 |
| system prompt 指引 | 2 | P2 | Agent 了解团队工具用法 |
| 并行执行正确性 | 3 | P1 | 多 Agent 并行结果正确、无资源竞争 |

### 验收标准

- [ ] 临时 Agent 生命周期管理正确
- [ ] 错误隔离可靠，单 Agent 故障不影响团队
- [ ] 并发限制严格生效
- [ ] Token 预算机制合理，不会因预算耗尽导致数据丢失

---

## 跨 Phase 集成测试

**测试周期**：2026-05-23 ~ 2026-05-24（2 天）
**前置条件**：Phase A ~ E 单项测试全部通过

### 端到端场景

| 场景 | 涉及 Phase | 预计耗时 | 说明 |
|------|-----------|---------|------|
| 完整团队协作流程 | A+B+C+D+E | 2h | 创建团队→分配任务→消息通讯→文件协作→完成销毁 |
| 多 Agent 并行开发 | A+B+C+E | 1.5h | dev+test 并行执行、文件锁协调、结果汇总 |
| 前端全链路交互 | A+B+D | 1.5h | Tab 切换、@提及、面板操作、消息展示 |
| 压力测试：8 Agent 满载 | A+E | 1h | 8 个 Agent 同时存在、4 个并发运行 |
| 错误恢复全链路 | A+B+C+E | 1h | Agent 崩溃→锁释放→消息通知→团队继续 |
| 长时间运行稳定性 | A+B+C+E | 2h | 持续运行 1 小时、多次创建销毁、内存稳定 |

### 验收标准

- [ ] 所有端到端场景无阻塞通过
- [ ] 长时间运行无内存泄漏（内存波动 < 10%）
- [ ] 前端交互流畅，无明显卡顿

---

## 回归与验收

**测试周期**：2026-05-25 ~ 2026-05-26（1 天）
**活动**：修复验证 + 回归测试 + 最终验收

| 活动 | 预计耗时 | 说明 |
|------|---------|------|
| Bug 修复验证 | 3h | 验证集成测试中发现的 Bug 修复 |
| 回归测试 | 3h | 重跑各 Phase 的 P0 用例，确保修复无副作用 |
| 最终验收报告 | 1h | 汇总测试结果，输出验收报告 |

---

## 风险与注意事项

| 风险 | 影响 | 缓解措施 |
|------|------|---------|
| LLM API 不稳定导致测试结果不确定 | 中 | 准备 mock 模式，关键路径可离线验证 |
| 并发场景难以复现 | 中 | 增加并发测试轮次，添加日志辅助定位 |
| 前端测试依赖 Tauri 环境 | 低 | 提前准备测试环境，确保 Tauri dev 可正常启动 |
| Token 预算测试需要大量消耗 | 低 | 使用短 prompt 任务，控制测试成本 |

---

## 测试进度跟踪

| Phase | 计划日期 | 实际开始 | 实际完成 | 通过率 | 状态 |
|-------|---------|---------|---------|--------|------|
| A 基础框架 | 05-14 ~ 05-15 | ⬜ | ⬜ | — | 未开始 |
| B 消息通讯 | 05-16 ~ 05-17 上午 | ⬜ | ⬜ | — | 未开始 |
| C 文件编辑锁 | 05-17 下午 ~ 05-18 | ⬜ | ⬜ | — | 未开始 |
| D 前端交互 | 05-19 ~ 05-20 | ⬜ | ⬜ | — | 未开始 |
| E 完善与优化 | 05-21 ~ 05-22 | ⬜ | ⬜ | — | 未开始 |
| 跨 Phase 集成 | 05-23 ~ 05-24 | ⬜ | ⬜ | — | 未开始 |
| 回归与验收 | 05-25 ~ 05-26 | ⬜ | ⬜ | — | 未开始 |
