# Gateway 需求规划

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

## 文档维护规范

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

---

## 核心理解

### Agent 的本质

基于 Agent Core 架构（详见 `../../agent/docs/architecture.md`）：

- **Agent = Trace 数据 + Workspace**
- **无状态执行引擎**：每次调用都是"续跑 trace"
- **动态并发**：
  - 1000 个用户可能有 1000 份 Trace 数据和 Workspace
  - 但运行中的 Agent 实例是动态的，预计 ~10 个并发

---

## 三大核心模块

### 1. Agent 生命周期管理（Lifecycle）

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

**关键点：**
- Trace 数据结构由 Agent Core 定义
- Gateway 负责管理 Trace 的元数据和 Workspace 路径
- 配置变更时热重载，不影响正在运行的 Trace

### 2. 对话管理（Conversations）

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

**关键概念：**
- **对话（Conversation）** = 一个用户和一个 Agent 的永久对话
- 每个对话有独立的消息历史

### 3. 消息路由（Routing）

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

**路由规则：**
- 根据配置将飞书消息路由到对应的 Trace
- 支持两种 Agent 类型的路由（见下文）

---

## 两种 Agent 类型

### 类型 1：个人助理型 Agent

**特征：**
- 1 个飞书账号（助理） ← 多个用户
- 每个用户有独立的 Trace + Workspace
- 聊天历史隔离

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

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

**实现方式：**
- IM Server 根据配置维护 `飞书用户 ID → Trace ID` 的映射
- 消息到达时查找对应的 Trace 并执行

### 类型 2：数字员工型 Agent

**特征：**
- 1 个飞书账号（数字员工） ← 所有用户
- 1 个 Agent Trace，但有多个对话（每个用户一个）
- Agent 可以查看所有对话的消息历史
- 串行工作（按全局消息顺序处理，或定时检查）

**工作模式：**
- Agent 通过工具主动查看消息
- Agent 通过工具主动回复消息
- 类似人类的工作方式

**示例工作流程：**
```
1. Agent 定时检查（如每 5 分钟）或收到新消息通知
2. 调用工具查看所有对话
3. 调用工具查看具体消息
4. 调用工具回复消息
5. 串行处理下一个对话
```

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

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

---

## 两种 Agent 接入方式

### 内部 Agent（同设备，我们的框架）

**特点：**
- 和 Gateway 运行在同一台机器
- 使用我们的 Agent 框架
- 直接调用 Gateway 的内部接口（Python 函数调用）

**不需要：**
- HTTP Client
- Webhook
- 网络通信

### 外部 Agent（其他设备/其他框架）

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

**需要：**
- HTTP Client SDK
- Webhook 接收消息
- 网络通信

---

## 联系人管理

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

**说明：**
- Agent 介绍中可能体现其运行在不同设备
- 具体实现细节待后续设计

---

## 企业功能（可选）

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

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

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

**说明：**
- 这些功能可能需要，但具体实现方式待确认
- 作为可选模块，不影响核心功能

---

## 暂不实现的功能

### 能力 Node

**说明：**
- 类似 OpenClaw 的 Node 机制（跨设备能力调用）
- 当前阶段暂不实现
- 未来如有需求再考虑

---

## 相关文档

- [Agent Core 架构](../../agent/docs/architecture.md)：Agent 框架核心设计
- [Gateway 架构](./architecture.md)：Gateway 架构设计
- [核心模块文档](./core/)：各核心模块详细文档
- [API 文档](./api/)：HTTP API 参考
- [设计决策](./decisions.md)：架构决策记录
