## 实现方案

### 改动范围
仅修改 `api/routes.py` 一个文件，不涉及 `agents/vent_agent.py` 和 `tools/vent_tools.py`。

### 具体改动

#### 1. 请求模型新增 `mode` 字段
- `TunClickInterpretRequest` 和 `DeviceClickInterpretRequest` 各加一个字段：
  ```python
  mode: str = Field("plan", description="解读模式：plan（智能体+技能）或 fast（直接生成报告）")
  ```
- 默认 `"plan"`，保持向后兼容。

#### 2. 新增 Fast 模式系统提示词（两个常量）
直接嵌入 SKILL.md 中的报告模板（巷道 + 设备），包含：
- 报告固定输出格式
- 风险分级标准（风速/风量/报警）
- 行为规范（不编造数据、只用简体中文、不暴露ID等）

#### 3. 新增 `_get_chat_model()` 辅助函数
从 `agents.vent_agent` 导入 `_get_model`，包装一层确保始终返回 `BaseChatModel` 实例（处理可能返回字符串的边界情况）。

#### 4. 新增两个 Fast SSE 生成器
- `_fast_tun_sse_generator(tun_id, tun_name, thread_id, session_id)`：
  1. 直接调用 `query_tun_data_by_id(tun_id)` 获取数据
  2. 将数据 + 系统提示词发给 LLM
  3. 流式输出 SSE（thinking → executing → token → done）
- `_fast_device_sse_generator(device_id, device_name, device_type, thread_id, session_id)`：同上逻辑，调用 `query_device_data_by_id`

#### 5. 路由处理器分支
在 `click_interpret_tun` 和 `click_interpret_device` 中：
```python
if req.mode == "fast":
    return StreamingResponse(_fast_xxx_generator(...), ...)
# 否则走原有 plan 逻辑
```

### 关键设计决策
- **Fast 模式不调用 Agent**：跳过 skill 加载、工具调用循环、知识库检索，直接 LLM 生成报告
- **Fast 模式不查知识库**：LLM 凭训练知识给出规程引用，速度优先
- **SSE 事件格式与 plan 模式兼容**：前端无需改动
- **模板定义在系统提示词中**：不使用 skills 目录，直接在 `routes.py` 中定义