集成测试 6: 信号驱动机制测试
测试目标
验证新实现的信号驱动 Sub-Agent 通讯机制是否正常工作。
测试内容
1. SignalBus 创建
- ✅ 验证 AgentRunner 中 SignalBus 实例已创建
- ✅ 验证 signal_bus 被传递到工具 context
2. 信号发送机制
- ✅ 验证 SubAgentManager 发送
subagent.start 信号
- ✅ 验证 SubAgentManager 发送
subagent.complete 信号
- ✅ 验证信号包含正确的数据(trace_id, parent_trace_id, result)
3. 信号接收机制
- ✅ 验证主 Agent 在循环中检查信号
- ✅ 验证 _handle_signal 方法被调用
- ✅ 验证信号被正确处理
4. wait=True 模式(同步)
- ✅ 验证 SubAgentManager 启动后台任务
- ✅ 验证 _wait_for_completion 轮询信号
- ✅ 验证收到完成信号后返回结果
5. 后台任务执行
- ✅ 验证 Sub-Agent 在后台运行
- ✅ 验证后台任务完成后发送信号
- ✅ 验证后台任务的错误通过信号传播
运行测试
cd examples/integration_test_6
python run.py
预期结果
信号发送: 每次 subagent 调用应该发送 2 个信号
subagent.start: Sub-Agent 启动时
subagent.complete: Sub-Agent 完成时
信号接收: 主 Agent 应该在每次循环迭代时检查信号
评估功能: Agent 应该使用 subagent(mode="evaluate") 评估代码
文件生成: 应该生成 validator.py 和 REPORT.md
监控输出
测试脚本会实时显示:
[信号发送]: 每次信号发送
[信号接收]: 每次信号接收
[评估结果]: 评估是否通过
测试场景
任务:实现一个简单的数据验证模块
- 包含 3 个验证函数(email, phone, age)
- 使用 goal 工具规划任务
- 使用 subagent(evaluate) 评估实现质量
- 生成测试报告
这个场景会触发:
- 多次 subagent 调用
- 信号的发送和接收
- 后台任务执行
- 信号轮询机制
成功标准
- ✅ SignalBus 已创建
- ✅ 发送了信号(至少 2 个)
- ✅ 接收了信号(至少 2 个)
- ✅ 包含预期的信号类型(start, complete)
- ✅ 使用了 subagent(evaluate)
- ✅ 生成了代码文件
注意事项
- 信号监控: 测试脚本通过钩子函数监控信号的发送和接收
- 实时输出: 信号活动会实时显示在控制台
- 详细日志: 完整的 trace 日志保存在
.trace/ 目录