# 代码审查修复报告

日期: 2026-06-16
分支: feat/simple-router-architecture
审查范围: SimpleRouter + Prompt-based Tool Calling 重构

## 修复的问题

### HIGH 级别

| # | 问题 | 修复方式 | 文件 |
|---|------|----------|------|
| H1 | execute() 缺少 prompt-based tool calling 注入 | 与 execute_stream() 一致，在 execute() 中注入 _build_tool_use_prompt | react.py |
| H2 | agent._routing_result 竞态条件 | _resolve_for_chat 返回 routing_result 而非 monkey-patch agent | portal.py |
| H3 | TEAM_COLLAB/REWOO/REFLEXION 降级为 REACT 无提示 | 添加 execution_mode 完整分支处理，高级模式降级时记录 warning 日志 | portal.py, chat.py |
| H4 | Any 类型滥用 | SimpleRouter 使用 SkillRegistry/Tool 类型，ConversationStore 使用 SessionManager 类型 | simple_router.py, portal.py |

### MEDIUM 级别

| # | 问题 | 修复方式 | 文件 |
|---|------|----------|------|
| M1 | default_system_prompt `or` vs `is not None` | 改为 `if default_system_prompt is not None` | simple_router.py |
| M2 | CostAwareRouter 死代码 | 改为条件初始化（legacy_cost_aware_router 配置项），默认不初始化 | app.py |
| M3 | chat.py 不处理 DIRECT_CHAT | 添加 DIRECT_CHAT 分支：直接 LLM 调用，不经过 ReActEngine | chat.py |

## 测试结果

- SimpleRouter 单元测试: 20/20 通过
- SimpleRouter E2E 回测: 24/24 通过（准确率 100%）
- chat/core 单元测试: 153/153 通过
- Ruff lint: All checks passed

## 变更文件

1. `src/agentkit/core/react.py` — execute() 添加 prompt-based tool calling 注入
2. `src/agentkit/chat/simple_router.py` — 类型注解修复（Any → SkillRegistry/Tool），`is not None` 修复
3. `src/agentkit/server/routes/portal.py` — 竞态条件修复，execution_mode 完整分支，类型修复
4. `src/agentkit/server/routes/chat.py` — DIRECT_CHAT 处理，execution_mode 降级警告
5. `src/agentkit/server/app.py` — CostAwareRouter 条件初始化，移除 semantic router build_index 死代码
