# Gateway 架构设计

**更新日期：** 2026-03-12

## 文档维护规范

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

---

## 架构概述

Gateway 采用分层架构：

```
┌─────────────────────────────────────────────────────────────┐
│ API 层（HTTP 接口）                                          │
│ - 供外部 Agent 调用                                          │
│ - RESTful API                                               │
└────────────────────────┬────────────────────────────────────┘
                         │
┌────────────────────────▼────────────────────────────────────┐
│ Core 层（核心服务）                                          │
│                                                             │
│  ┌─────────────────────────────────────────────────────┐  │
│  │ Lifecycle（生命周期管理）                            │  │
│  │ - Trace 注册和元数据管理                             │  │
│  │ - Workspace 管理                                    │  │
│  │ - 配置热重载                                         │  │
│  └─────────────────────────────────────────────────────┘  │
│                                                             │
│  ┌─────────────────────────────────────────────────────┐  │
│  │ Conversations（对话管理）                            │  │
│  │ - 对话管理                                           │  │
│  │ - 消息历史存储                                       │  │
│  │ - 消息队列和调度                                     │  │
│  └─────────────────────────────────────────────────────┘  │
│                                                             │
│  ┌─────────────────────────────────────────────────────┐  │
│  │ Routing（消息路由）                                  │  │
│  │ - 飞书消息接收和转发                                 │  │
│  │ - 消息路由规则管理                                   │  │
│  │ - Agent 联系人列表维护                               │  │
│  └─────────────────────────────────────────────────────┘  │
└─────────────────────────────────────────────────────────────┘
```

---

## 模块结构

```
gateway/
├── core/                          # 核心服务层（内部接口）
│   ├── lifecycle/                 # Agent 生命周期管理
│   │   ├── trace_manager.py      # Trace 注册和元数据管理
│   │   ├── workspace_manager.py  # Workspace 管理
│   │   └── config_watcher.py     # 配置热重载
│   │
│   ├── conversations/             # 对话管理
│   │   ├── conversation_manager.py  # 对话管理
│   │   ├── message_store.py         # 消息历史存储
│   │   └── message_queue.py         # 消息队列和调度
│   │
│   ├── routing/                   # 消息路由
│   │   ├── router.py              # 消息路由核心
│   │   ├── feishu_connector.py   # 飞书集成
│   │   └── contact_manager.py    # 联系人管理
│   │
│   └── registry.py                # Agent 注册表（保留，兼容旧代码）
│
├── api/                           # HTTP API 层（外部接口）
│   ├── lifecycle_api.py           # 生命周期管理 API
│   ├── conversations_api.py       # 对话管理 API
│   └── routing_api.py             # 消息路由 API
│
├── enterprise/                    # 企业功能（可选）
│   ├── auth/                      # 认证授权
│   ├── audit/                     # 审计日志
│   └── multi_tenant/              # 多租户
│
└── client/                        # 客户端 SDK
    └── python/                    # Python SDK
        ├── client.py              # GatewayClient
        ├── tools.py               # 工具函数
        └── cli.py                 # CLI 工具
```

---

## 核心模块

### Lifecycle（生命周期管理）

**职责：**
- Trace 注册和元数据管理
- Workspace 管理
- 配置热重载

**实现位置：**
- `gateway/core/lifecycle/trace_manager.py`
- `gateway/core/lifecycle/workspace_manager.py`
- `gateway/core/lifecycle/config_watcher.py`

### Conversations（对话管理）

**职责：**
- 对话管理
- 消息历史存储
- 消息队列和调度

**实现位置：**
- `gateway/core/conversations/conversation_manager.py`
- `gateway/core/conversations/message_store.py`
- `gateway/core/conversations/message_queue.py`

### Routing（消息路由）

**职责：**
- 飞书消息接收和转发
- 消息路由规则管理
- Agent 联系人列表维护

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

---

## 两种接入方式

### 内部 Agent 接入

**特点：**
- 和 Gateway 运行在同一台机器
- 使用我们的 Agent 框架
- 直接调用 Core 层的 Python 接口

**使用方式：**
```python
# 直接导入 Core 层模块
from gateway.core.conversations import ConversationManager

manager = ConversationManager()
messages = manager.get_messages(conversation_id)
```

### 外部 Agent 接入

**特点：**
- 运行在不同机器或使用其他框架
- 通过 HTTP API 接入
- 使用 Client SDK 简化调用

**使用方式：**
```python
# 使用 Client SDK
from gateway.client.python import GatewayClient

client = GatewayClient("http://gateway-host:8000")
messages = client.get_messages(conversation_id)
```

---

## 企业功能（可选）

### 认证授权（Auth）
- API Key 认证
- OAuth 集成
- 权限控制
- 单点登录

### 审计日志（Audit）
- 操作日志记录
- 消息审计
- 合规报告

### 多租户（Multi-Tenant）
- 租户隔离
- 资源配额
- 计费管理

**说明：**
- 作为可选模块，独立于核心功能
- 具体实现方式待确认

---

## 相关文档

- [需求规划](./requirements.md)：已确认的需求和功能范围
- [核心模块文档](./core/)：各核心模块详细文档
- [API 文档](./api/)：HTTP API 参考
- [Client SDK 文档](./client/)：客户端 SDK 使用指南
- [设计决策](./decisions.md)：架构决策记录
