构建一款统一 Agent 接入网关,实现多渠道边缘接入、gRPC 双向流通信、MCP 工具协议集成、A2A 去中心化协作、Wasm/MicroVM 混合沙箱调度、分层存储架构,为 AI Agent 提供高性能、高可用的基础设施。
┌─────────────────────────────────────────────────────────────────┐
│ 边缘接入层 │
│ ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌───────┐ │
│ │ 飞书 │ │ 企微 │ │ 钉钉 │ │ WebSocket│ │ CLI │ │
│ └────┬─────┘ └────┬─────┘ └────┬─────┘ └────┬─────┘ └───┬───┘ │
│ └────────────┼───────────┼──────────────┼───────────┘ │
│ ▼ │
│ ┌──────────────┐ │
│ │ 边缘适配器框架 │ │
│ └──────┬───────┘ │
├───────────────────┼───────────────────────────────────────────────┤
│ ▼ 网关核心层 │
│ ┌────────────────────────────────────────────────────────────┐ │
│ │ gRPC 双向流 (Agent ↔ Gateway) │ │
│ ├────────────┬────────────┬────────────┬─────────────────────┤ │
│ │ 五维路由 │ 会话管理 │ 控制信令 │ MCP Gateway │ │
│ │ 引擎 │ (Redis) │ cancel/ │ (工具代理/沙箱调度) │ │
│ │ │ │ resume │ │ │
│ ├────────────┴────────────┴────────────┴─────────────────────┤ │
│ │ A2A 授权中心 (mTLS + Delegation Token) │ │
│ └────────────────────────────────────────────────────────────┘ │
├───────────────────────────────────────────────────────────────────┤
│ 分层存储层 │
│ ┌──────────────┐ ┌──────────────┐ ┌──────────────────────────┐ │
│ │ L1 热数据 │ │ L2 温数据 │ │ L3 冷数据 │ │
│ │ Redis Cluster│ │ etcd │ │ MongoDB + ClickHouse │ │
│ │ Session/限流 │ │ 路由/Agent │ │ 审计日志 │ │
│ └──────────────┘ └──────────────┘ └──────────────────────────┘ │
│ ┌──────────────┐ │
│ │ L1.5 记忆层 │ │
│ │ Redis Stack │ │
│ │ 向量/上下文 │ │
│ └──────────────┘ │
├───────────────────────────────────────────────────────────────────┤
│ 沙箱执行层 │
│ ┌──────────────────────┐ ┌──────────────────────┐ │
│ │ Wasm 沙箱 (Wasmtime) │ │ MicroVM (Firecracker)│ │
│ │ 无状态代码执行 │ │ 完整 OS 隔离 │ │
│ └──────────────────────┘ └──────────────────────┘ │
└───────────────────────────────────────────────────────────────────┘
| 层次 | 选型 |
|---|---|
| 语言 | Go 1.22+ |
| gRPC | google.golang.org/grpc |
| HTTP/WS | net/http + nhooyr.io/websocket |
| Redis | go-redis/redis/v9 |
| etcd | go.etcd.io/etcd/client/v3 |
| MongoDB | go.mongodb.org/mongo-driver/v2 |
| JWT | golang-jwt/jwt/v5 |
| Wasm | Wasmtime(独立 sidecar) |
| 可观测 | OpenTelemetry + Prometheus |
阶段一 gRPC 双向流与会话管理
↓
阶段二 路由引擎与配置热更新
↓
阶段三 控制信令与流式交互
↓
阶段四 边缘适配器与消息标准化
↓
阶段五 MCP 工具协议与沙箱
↓
阶段六 A2A 去中心化协作
↓
阶段七 流控、限流与韧性
↓
阶段八 可观测性与审计
| 文档 | 内容 |
|---|---|
| 阶段一 | gRPC 双向流与会话管理 |
| 阶段二 | 路由引擎与配置热更新 |
| 阶段三 | 控制信令与流式交互 |
| 阶段四 | 边缘适配器与消息标准化 |
| 阶段五 | MCP 工具协议与沙箱 |
| 阶段六 | A2A 去中心化协作 |
| 阶段七 | 流控、限流与韧性 |
| 阶段八 | 可观测性与审计 |
| 代码结构 | 目录结构与设计决策 |
详见 代码结构设计,包含同类项目对比分析。
opengate/
├── cmd/ # 可执行文件入口
│ ├── gateway/ # 网关主进程
│ ├── agent-sdk/example/ # Agent SDK 示例
│ ├── wasm-sandbox/ # Wasm 沙箱 sidecar
│ └── client/ # CLI 测试客户端
├── internal/ # 网关内部实现
│ ├── gateway/ # 网关核心(启动/配置/生命周期)
│ ├── edge/ # 边缘适配器(feishu/wecom/dingtalk/websocket)
│ ├── router/ # 路由引擎
│ ├── session/ # 会话管理
│ ├── stream/ # gRPC 流管理
│ ├── signal/ # 控制信令
│ ├── mcp/ # MCP Gateway
│ ├── sandbox/ # 沙箱调度(wasm/microvm)
│ ├── auth/ # 鉴权
│ ├── a2a/ # A2A 授权中心
│ ├── ratelimit/ # 限流
│ ├── circuit/ # 熔断
│ ├── approval/ # 审批管理
│ ├── audit/ # 审计日志
│ ├── observability/ # 可观测性
│ └── storage/ # 存储客户端封装
├── pkg/ # 公共包(可被外部导入)
│ ├── sdk/ # Agent SDK
│ ├── proto/ # 生成的 Protobuf 代码
│ ├── model/ # 公共数据模型
│ └── errors/ # 统一错误码
├── proto/ # Protobuf 源文件
├── api/ # HTTP API 定义
├── deploy/ # 部署配置
├── test/ # 测试
├── scripts/ # 构建脚本
├── docs/ # 文档
├── go.mod
└── Makefile