网关架构
本文档描述 Gateway(网关)的内部架构设计,帮助你理解各组件之间的协作关系。
架构总览
text
┌──────────────────────────────────────────────────────────┐
│ Gateway Daemon │
│ │
│ ┌────────────┐ ┌────────────┐ ┌──────────────────┐ │
│ │ WebSocket │ │ HTTP API │ │ Management UI │ │
│ │ Server │ │ Server │ │ (Web) │ │
│ └──────┬─────┘ └──────┬─────┘ └────────┬─────────┘ │
│ │ │ │ │
│ ┌──────┴───────────────┴──────────────────┴─────────┐ │
│ │ Multiplexed Listener (:18789) │ │
│ └───────────────────────────────────────────────────┘ │
│ │ │
│ ┌───────────────────────┴───────────────────────────┐ │
│ │ Session Manager │ │
│ └───────┬──────────────┬────────────────┬───────────┘ │
│ │ │ │ │
│ ┌───────┴───┐ ┌──────┴──────┐ ┌──────┴──────┐ │
│ │ Channel │ │ Agent │ │ Tool │ │
│ │ Adapters │ │ Runtime │ │ Registry │ │
│ └───────────┘ └─────────────┘ └─────────────┘ │
└──────────────────────────────────────────────────────────┘核心组件
Gateway Daemon(网关守护进程)
顶层常驻进程,负责启动、管理和协调所有子组件的生命周期。
- 进程管理与信号处理
- 配置加载与热重载
- 日志聚合
- 健康检查
Channel Adapters(通道适配器)
Channel Adapter 负责与外部 LLM(大语言模型)提供商建立和维护连接。
text
┌─────────────────────────────────┐
│ Channel Adapters │
│ │
│ ┌─────────┐ ┌─────────────┐ │
│ │ OpenAI │ │ Anthropic │ │
│ │ Adapter │ │ Adapter │ │
│ └────┬────┘ └──────┬──────┘ │
│ │ │ │
│ ┌────┴──────────────┴──────┐ │
│ │ Channel Pool Manager │ │
│ └──────────────────────────┘ │
└─────────────────────────────────┘适配器模式
每种 LLM 提供商都有独立的 Adapter 实现,统一对上层暴露标准接口。新增模型提供商只需实现 Adapter 接口即可。
Agent Runtime(Agent 运行时)
Agent Runtime 管理 Agent 会话的完整生命周期,包括:
- Prompt 编排与上下文管理
- 工具调用(Tool Calls)的调度与执行
- 对话轮次管理
- 沙箱(Sandbox)隔离
Session Manager(会话管理器)
管理所有活跃会话的状态,提供会话创建、恢复、持久化等能力。
| 职责 | 说明 |
|---|---|
| 会话创建 | 为新连接分配唯一 Session ID |
| 状态维护 | 跟踪会话中的对话历史和上下文 |
| 会话恢复 | 断线重连后恢复会话状态 |
| 资源清理 | 超时或断开后释放资源 |
WebSocket Server
处理客户端的实时双向通信。
json
{
"type": "connect",
"token": "your-gateway-token",
"version": "1.0"
}HTTP API Server
提供 RESTful API 接口,兼容 OpenAI Chat Completions 格式。
多协议支持
WebSocket 和 HTTP API 共享同一端口,Gateway 根据请求类型自动路由。
数据流
用户请求流
text
Client ──WebSocket──▶ Gateway ──▶ Session Manager
│
▼
Agent Runtime
│
▼
Channel Adapter ──▶ LLM Provider
│
▼
Tool Execution (if needed)
│
▼
Client ◀──WebSocket── Gateway ◀── Response Assembly工具调用流
text
Agent Runtime ──tool_call──▶ Tool Registry
│
▼
Permission Check
│
▼
Sandbox Execution
│
▼
Agent Runtime ◀──tool_result── Result线程模型
Gateway 使用异步事件驱动(Event-Driven)模型:
- 主线程:事件循环、连接管理
- 工作线程池:CPU 密集型任务(如工具执行)
- I/O 线程:网络 I/O、文件操作
性能提示
单 Gateway 实例通常足以支撑数十个并发会话。如需更大规模,参阅 多网关部署。
扩展点
| 扩展点 | 说明 | 参考 |
|---|---|---|
| Channel Adapter | 接入新的 LLM 提供商 | Channel 文档 |
| Tool | 注册自定义工具 | 工具开发指南 |
| Auth Provider | 自定义认证方式 | 认证 |
