feat: complete phase 2 -- multi-agent routing, interrupt TTL, escalation, templates
- Intent classification with LLM structured output (single/multi/ambiguous) - Discount agent with apply_discount and generate_coupon tools - Interrupt manager with 30-min TTL auto-expiration and retry prompts - Webhook escalation module with exponential backoff retry (max 3) - Three vertical industry templates (e-commerce, SaaS, fintech) - Template loading in AgentRegistry - Enhanced supervisor prompt with dynamic agent descriptions - 153 tests passing, 90.18% coverage
This commit is contained in:
@@ -276,6 +276,9 @@ Smart Support 是一个 AI 客服行动层框架。核心价值主张: "粘贴
|
||||
|
||||
## Phase 2: 多 Agent 路由 + 安全层 (第 3-4 周)
|
||||
|
||||
> Status: COMPLETED (2026-03-30)
|
||||
> Dev log: [Phase 2 Dev Log](phases/phase-2-dev-log.md)
|
||||
|
||||
### 目标
|
||||
|
||||
完善 Supervisor 的意图分类和多 Agent 路由能力, 实现 Webhook 升级、垂直行业模板、中断超时处理。
|
||||
@@ -289,22 +292,22 @@ Smart Support 是一个 AI 客服行动层框架。核心价值主张: "粘贴
|
||||
|
||||
#### 2.1 Supervisor 路由增强 (预计 2 天)
|
||||
|
||||
- [ ] **2.1.1** 实现 LLM 结构化输出的意图分类 (基于 Agent 描述选择)
|
||||
- [x] **2.1.1** 实现 LLM 结构化输出的意图分类 (基于 Agent 描述选择)
|
||||
- 文件: `backend/app/graph.py` (增强)
|
||||
- 工作量: M (4 小时)
|
||||
- 依赖: Phase 1 完成
|
||||
- 风险: 中 -- 路由准确率需要评估
|
||||
- [ ] **2.1.2** 实现多意图请求处理 ("取消订单并给我一个折扣" -> 顺序执行)
|
||||
- [x] **2.1.2** 实现多意图请求处理 ("取消订单并给我一个折扣" -> 顺序执行)
|
||||
- 文件: `backend/app/graph.py` (增强)
|
||||
- 工作量: M (6 小时)
|
||||
- 依赖: 2.1.1
|
||||
- 风险: 高 -- 多意图原子性问题 (全部成功 vs. 部分失败升级)
|
||||
- [ ] **2.1.3** 实现歧义意图处理 (无法分类时询问澄清问题)
|
||||
- [x] **2.1.3** 实现歧义意图处理 (无法分类时询问澄清问题)
|
||||
- 文件: `backend/app/agents/fallback.py` (增强)
|
||||
- 工作量: S (2 小时)
|
||||
- 依赖: 2.1.1
|
||||
- 风险: 低
|
||||
- [ ] **2.1.4** 编写路由测试 (正确路由、多意图、歧义、回退)
|
||||
- [x] **2.1.4** 编写路由测试 (正确路由、多意图、歧义、回退)
|
||||
- 文件: `backend/tests/test_routing.py`
|
||||
- 工作量: M (4 小时)
|
||||
- 依赖: 2.1.1, 2.1.2, 2.1.3
|
||||
@@ -312,12 +315,12 @@ Smart Support 是一个 AI 客服行动层框架。核心价值主张: "粘贴
|
||||
|
||||
#### 2.2 Mock 折扣 Agent (预计 0.5 天)
|
||||
|
||||
- [ ] **2.2.1** 创建 Mock 折扣 Agent + 工具 (apply_discount, generate_coupon)
|
||||
- [x] **2.2.1** 创建 Mock 折扣 Agent + 工具 (apply_discount, generate_coupon)
|
||||
- 文件: `backend/app/agents/discount.py`
|
||||
- 工作量: S (2 小时)
|
||||
- 依赖: Phase 1
|
||||
- 风险: 低
|
||||
- [ ] **2.2.2** 更新 agents.yaml 添加折扣 Agent 配置
|
||||
- [x] **2.2.2** 更新 agents.yaml 添加折扣 Agent 配置
|
||||
- 文件: `backend/agents.yaml`
|
||||
- 工作量: S (30 分钟)
|
||||
- 依赖: 2.2.1
|
||||
@@ -325,17 +328,17 @@ Smart Support 是一个 AI 客服行动层框架。核心价值主张: "粘贴
|
||||
|
||||
#### 2.3 中断超时处理 (预计 1 天)
|
||||
|
||||
- [ ] **2.3.1** 实现 30 分钟 TTL 自动取消机制
|
||||
- [x] **2.3.1** 实现 30 分钟 TTL 自动取消机制
|
||||
- 文件: `backend/app/interrupt_manager.py`
|
||||
- 工作量: M (4 小时)
|
||||
- 依赖: Phase 1 (interrupt 基础)
|
||||
- 风险: 中 -- 定时器精度和状态一致性
|
||||
- [ ] **2.3.2** 实现过期后重试提示 (重新评估当前状态后重新发起)
|
||||
- [x] **2.3.2** 实现过期后重试提示 (重新评估当前状态后重新发起)
|
||||
- 文件: `backend/app/interrupt_manager.py` (扩展)
|
||||
- 工作量: M (3 小时)
|
||||
- 依赖: 2.3.1
|
||||
- 风险: 中
|
||||
- [ ] **2.3.3** 编写中断超时测试
|
||||
- [x] **2.3.3** 编写中断超时测试
|
||||
- 文件: `backend/tests/test_interrupt.py`
|
||||
- 工作量: S (2 小时)
|
||||
- 依赖: 2.3.1, 2.3.2
|
||||
@@ -343,17 +346,17 @@ Smart Support 是一个 AI 客服行动层框架。核心价值主张: "粘贴
|
||||
|
||||
#### 2.4 Webhook 升级 (预计 1 天)
|
||||
|
||||
- [ ] **2.4.1** 实现 Webhook 升级模块 (HTTP POST 到配置的 URL, 包含完整对话上下文)
|
||||
- [x] **2.4.1** 实现 Webhook 升级模块 (HTTP POST 到配置的 URL, 包含完整对话上下文)
|
||||
- 文件: `backend/app/escalation.py`
|
||||
- 工作量: M (3 小时)
|
||||
- 依赖: Phase 1
|
||||
- 风险: 低
|
||||
- [ ] **2.4.2** 实现 Webhook 重试机制 (指数退避, 最多 3 次)
|
||||
- [x] **2.4.2** 实现 Webhook 重试机制 (指数退避, 最多 3 次)
|
||||
- 文件: `backend/app/escalation.py` (扩展)
|
||||
- 工作量: S (2 小时)
|
||||
- 依赖: 2.4.1
|
||||
- 风险: 低
|
||||
- [ ] **2.4.3** 编写 Webhook 测试 (成功发送、目标不可达、重试)
|
||||
- [x] **2.4.3** 编写 Webhook 测试 (成功发送、目标不可达、重试)
|
||||
- 文件: `backend/tests/test_escalation.py`
|
||||
- 工作量: S (2 小时)
|
||||
- 依赖: 2.4.1, 2.4.2
|
||||
@@ -361,22 +364,22 @@ Smart Support 是一个 AI 客服行动层框架。核心价值主张: "粘贴
|
||||
|
||||
#### 2.5 垂直行业模板 (预计 0.5 天)
|
||||
|
||||
- [ ] **2.5.1** 创建电商模板 YAML (订单查询、订单操作、折扣)
|
||||
- [x] **2.5.1** 创建电商模板 YAML (订单查询、订单操作、折扣)
|
||||
- 文件: `backend/templates/e-commerce.yaml`
|
||||
- 工作量: S (1 小时)
|
||||
- 依赖: 1.2.2
|
||||
- 风险: 低
|
||||
- [ ] **2.5.2** 创建 SaaS 模板 YAML (账户查询、订阅管理、计费)
|
||||
- [x] **2.5.2** 创建 SaaS 模板 YAML (账户查询、订阅管理、计费)
|
||||
- 文件: `backend/templates/saas.yaml`
|
||||
- 工作量: S (1 小时)
|
||||
- 依赖: 1.2.2
|
||||
- 风险: 低
|
||||
- [ ] **2.5.3** 创建 Fintech 模板 YAML (交易查询、争议处理)
|
||||
- [x] **2.5.3** 创建 Fintech 模板 YAML (交易查询、争议处理)
|
||||
- 文件: `backend/templates/fintech.yaml`
|
||||
- 工作量: S (1 小时)
|
||||
- 依赖: 1.2.2
|
||||
- 风险: 低
|
||||
- [ ] **2.5.4** 实现模板加载逻辑 (选择模板 -> 覆盖 agents.yaml)
|
||||
- [x] **2.5.4** 实现模板加载逻辑 (选择模板 -> 覆盖 agents.yaml)
|
||||
- 文件: `backend/app/registry.py` (扩展)
|
||||
- 工作量: S (2 小时)
|
||||
- 依赖: 2.5.1, 2.5.2, 2.5.3
|
||||
|
||||
Reference in New Issue
Block a user