# Routing（消息路由）

**模块：** `gateway/core/routing/`

## 文档维护规范

0. **先改文档，再动代码** - 新功能或重大修改需先完成文档更新、并完成审阅后，再进行代码实现
1. **文档分层，链接代码** - 关键实现需标注代码文件路径；格式：`module/file.py:function_name`
2. **简洁快照，日志分离** - 只记录已确认的设计

---

## 模块职责

消息路由，包括：

- **飞书消息接收和转发**：接收飞书消息并转发到对应的 Agent
- **消息路由规则管理**：管理消息路由规则
- **Agent 联系人列表维护**：维护 Agent 的可见联系人列表

---

## 核心概念

### 消息路由

- 根据配置将飞书消息路由到对应的 Trace
- 支持两种 Agent 类型的路由规则

### 飞书集成

- 接收飞书消息
- 发送消息到飞书
- 处理飞书事件

### 联系人管理

- 维护每个 Agent 的可见联系人列表
- 联系人包括：Agent ID、介绍、运行设备信息
- 支持 Agent 之间发送消息

---

## 模块结构

```
gateway/core/routing/
├── router.py              # 消息路由核心
├── feishu_connector.py    # 飞书集成
└── contact_manager.py     # 联系人管理
```

---

## 关键功能

### 消息路由核心

**实现位置：** `gateway/core/routing/router.py`

**职责：**
- 接收消息
- 根据路由规则转发消息
- 管理路由规则

### 飞书集成

**实现位置：** `gateway/core/routing/feishu_connector.py`

**职责：**
- 接收飞书消息
- 发送消息到飞书
- 处理飞书事件（消息、@提及等）

### 联系人管理

**实现位置：** `gateway/core/routing/contact_manager.py`

**职责：**
- 注册 Agent 联系人
- 查询联系人列表
- 更新联系人信息

---

## 两种 Agent 类型的路由规则

### 个人助理型 Agent

**路由规则：**
```
飞书用户 ID → Agent Trace ID

示例：
- 用户 Alice 发消息给助理账号 → 路由到 trace-alice-001
- 用户 Bob 发消息给助理账号 → 路由到 trace-bob-001
```

**实现方式：**
- 维护 `飞书用户 ID → Trace ID` 的映射
- 消息到达时查找对应的 Trace

### 数字员工型 Agent

**路由规则：**
```
所有发给数字员工账号的消息 → 同一个 Trace

示例：
- 用户 Alice 发消息 → trace-receptionist
- 用户 Bob 发消息 → trace-receptionist（同一个）
```

**工作模式：**
- Agent 定时检查或收到新消息通知
- Agent 通过工具主动查看消息
- Agent 通过工具主动回复消息

---

## 相关文档

- [需求规划](../requirements.md)：消息路由需求
- [架构设计](../architecture.md)：模块在整体架构中的位置
- [两种 Agent 类型](../requirements.md#两种-agent-类型)：详细说明
