# Gateway 架构设计 **更新日期:** 2026-03-14 ## 文档维护规范 0. **先改文档,再动代码** - 新功能或重大修改需先完成文档更新、并完成审阅后,再进行代码实现 1. **文档分层,链接代码** - 关键实现需标注代码文件路径;格式:`module/file.py:function_name` 2. **简洁快照,日志分离** - 只记录已确认的架构设计 --- ## 整体架构 Gateway 是自研 Agent 框架的管理系统,负责 Agent 的生命周期管理和任务执行调度。 **核心定位:** 使命/职能对话系统 - 用户给 Agent 分配任务 - Agent 汇报工作、述职 - 是"管理-执行"关系 **与 IM 系统的区别:** - IM 系统:LLM 作为主体的平等交流(协作-沟通关系) - Gateway:用户对 LLM 的使命/职能对话(管理-执行关系) ``` ┌──────────────────────┐ │ 飞书(个人助理) │ │ 使命/职能对话 │ └──────────┬───────────┘ │ │ Webhook │ ┌───────────────────────────▼───────────────────────────┐ │ Gateway(Agent 管理系统) │ │ │ │ ┌──────────────────────────────────────────────────┐ │ │ │ Channels(外部渠道接入) │ │ │ │ - 飞书集成(个人助理型) │ │ │ │ - 消息路由 │ │ │ └──────────────────────────────────────────────────┘ │ │ │ │ ┌──────────────────────────────────────────────────┐ │ │ │ Lifecycle(生命周期管理) │ │ │ │ - Trace 注册和查询 │ │ │ │ - Workspace 管理 │ │ │ │ - 配置热重载 │ │ │ └──────────────────────────────────────────────────┘ │ │ │ │ ┌──────────────────────────────────────────────────┐ │ │ │ Executor(任务执行调度) │ │ │ │ - 接收用户任务 │ │ │ │ - 调度 Agent 执行 │ │ │ │ - 管理执行状态 │ │ │ └──────────────────────────────────────────────────┘ │ │ │ │ ┌──────────────────────────────────────────────────┐ │ │ │ IM Client(可选) │ │ │ │ - Agent 主动通信 │ │ │ └──────────────────────────────────────────────────┘ │ └────────────────────────────────────────────────────────┘ ┌─────────────────────────────────────────────────────────┐ │ IM Server │ │ - 所有主体(Agent、用户)的平等通信系统 │ │ - 接入飞书(数字员工型)、微信等渠道 │ │ - LLM 作为主体参与对话 │ └─────────────────────────────────────────────────────────┘ ↑ │ IM Protocol │ ┌────────────────┼────────────────┐ │ │ │ ┌────▼────┐ ┌───▼────┐ ┌───▼────┐ │IM Client│ │IM Client│ │IM Client│ │(自研) │ │(Claude │ │(飞书数字 │ │ │ │ Code) │ │ 员工) │ └─────────┘ └─────────┘ └─────────┘ ``` --- ## 模块结构 ``` gateway/ ├── core/ # 核心服务层(内部接口) │ ├── channels/ # 外部渠道接入 │ │ ├── feishu/ # 飞书集成 │ │ │ ├── connector.py # 飞书连接器 │ │ │ ├── webhook.py # Webhook 处理 │ │ │ └── api.py # 飞书 API 调用 │ │ ├── router.py # 消息路由 │ │ └── channel_manager.py # 渠道管理 │ │ │ ├── lifecycle/ # Agent 生命周期管理 │ │ ├── trace_manager.py # Trace 注册和查询 │ │ ├── workspace_manager.py # Workspace 管理 │ │ └── config_watcher.py # 配置热重载 │ │ │ └── executor/ # 任务执行调度 │ ├── task_manager.py # 任务管理 │ ├── scheduler.py # 调度器 │ └── execution_context.py # 执行上下文 │ ├── api/ # HTTP API 层(外部接口) │ ├── lifecycle_api.py # 生命周期管理 API │ ├── executor_api.py # 任务执行 API │ └── webhook_api.py # Webhook API(飞书等) │ └── client/ # 客户端 SDK └── python/ # Python SDK ├── client.py # GatewayClient └── cli.py # CLI 工具 ``` --- ## 核心模块 ### Channels(外部渠道接入) **职责:** - 接入飞书等外部渠道(个人助理型 Agent) - 消息路由(飞书用户 ID → Trace ID) - 自动创建 Trace(首次对话) **实现位置:** - `gateway/core/channels/feishu/connector.py` - `gateway/core/channels/router.py` - `gateway/core/channels/channel_manager.py` **详细文档:** [channels.md](./core/channels.md) ### Lifecycle(生命周期管理) **职责:** - 调用 Agent 框架创建/查询 Trace - 管理 Workspace(创建、引用计数、清理) - 监听配置变化并热重载 **实现位置:** - `gateway/core/lifecycle/trace_manager.py` - `gateway/core/lifecycle/workspace_manager.py` - `gateway/core/lifecycle/config_watcher.py` **详细文档:** [lifecycle.md](./core/lifecycle.md) ### Executor(任务执行调度) **职责:** - 接收用户分配的任务 - 调度 Agent 框架执行任务 - 管理任务执行状态和结果 **实现位置:** - `gateway/core/executor/task_manager.py` - `gateway/core/executor/scheduler.py` - `gateway/core/executor/execution_context.py` **详细文档:** [executor.md](./core/executor.md) --- ## 两种对话模式 ### 使命/职能对话(通过 Gateway) **场景:** - 用户通过管理界面给 Agent 分配任务 - Agent 定期向用户汇报工作进度 - 用户查询 Agent 的执行状态 **消息流转:** ``` 用户 → Gateway API → Executor → Agent 框架执行 → Executor → Gateway API → 用户 ``` **特点:** - 用户是管理者,Agent 是执行者 - 任务导向,有明确的目标和结果 - 通过 Gateway 的 API 接口 ### 主体间交流(通过 IM 系统) **场景:** - 用户在飞书上和 Agent 聊天(平等对话) - Agent A 请求 Agent B 协助完成任务 - Agent 主动向用户发送通知 **消息流转:** ``` 用户/Agent A → IM Client → IM Server → IM Client → Agent B ``` **特点:** - 所有参与者都是平等主体 - 协作导向,强调沟通和交流 - 通过 IM Server 的消息系统 --- ## 接入方式 ### 内部 Agent 接入 **特点:** - 和 Gateway 运行在同一台机器 - 使用我们的 Agent 框架 - 直接调用 Core 层的 Python 接口 **使用方式:** ```python # 直接导入 Core 层模块 from gateway.core.lifecycle import TraceManager from gateway.core.executor import TaskManager trace_mgr = TraceManager() task_mgr = TaskManager() # 创建 Trace trace_id = trace_mgr.create_trace(workspace_id="user_001", agent_type="personal_assistant") # 提交任务 task_id = task_mgr.submit_task(trace_id, task_description="分析销售数据") ``` ### 外部 Agent 接入 **特点:** - 运行在不同机器或使用其他框架 - 通过 HTTP API 接入 - 使用 Client SDK 简化调用 **使用方式:** ```python # 使用 Client SDK from gateway.client.python import GatewayClient client = GatewayClient("http://gateway-host:8000") # 创建 Trace trace_id = client.create_trace(workspace_id="user_001", agent_type="personal_assistant") # 提交任务 task_id = client.submit_task(trace_id, task_description="分析销售数据") ``` --- ## 与 IM 系统的集成 Gateway 管理的 Agent 可以通过 IM Client 参与 IM 系统的通信: 1. **Agent 执行过程中需要协作**: - Agent 通过 IM Client 发送消息给其他 Agent - 其他 Agent 通过 IM 回复 2. **Agent 主动通知用户**: - Agent 通过 IM Client 发送消息给用户 - 用户在飞书等渠道收到消息 3. **消息历史管理**: - IM Client 存储在 Workspace 内 - 管理该 Agent 的所有 IM 对话历史 --- ## 相关文档 - [需求规划](./requirements.md):已确认的需求和功能范围 - [核心模块文档](./core/):各核心模块详细文档 - [API 文档](./api/):HTTP API 参考 - [Client SDK 文档](./client/):客户端 SDK 使用指南 - [IM Server 架构](../../im-server/docs/architecture.md):IM 系统架构设计 - [IM Client 文档](../../im-client/docs/):IM Client 使用指南