云砺 AI 网关方案(公司版)

云砺 AI 网关方案(公司版)

整体架构与架构图 · 权限管理与认证全流程(八个场景)· 技术选型(agentgateway 与 Higress)· 多环境(内部 1 套、外部 SIT / PROD、客户云上单开、客户属地化)。

v1.0 · 2026-09-10 · 评审稿 · 本页不含内部域名、仓库路径与凭据

版本:v1.0 · 2026-09-10 · 评审稿 作者:Claude Code(樊国柱会话) 读者:技术管理层、平台与基础设施团队、AI 应用与 Agent 开发团队、交付与售前 定位:在《企业 AI Gateway 方案设计》(v1.0 · 2026-09-07,下称"前序方案")基础上,按公司口径重组为一份面向全员的总体方案:整体架构与架构图、权限管理与认证全流程、技术选型、多环境。前序方案中的现状盘点、需求接纳矩阵、契约字段与工程量明细不再重复,只在需要处引用。 配套:前序方案(0104)、汇报页与架构图页(Cloudflare Pages)、飞书画板文档。

证据等级沿用前序方案:实测证实(POC S1–S7 / 49 项检查)、文档取证(agentgateway v1.5.0、Higress v2.2.4 的文档与发布说明,2026-09-10 查阅)、湖仓取证源码取证需自建未取证。未标注等级的判断均为设计判断。


0. 一页结论

  1. 一个产品、四类能力、一把 Key。 AI 网关 = LLM 网关 + MCP 网关 + Skill 中心 + A2A 网关(低优先级),由同一个管理中心(门户 / 控制台)管理。内部每人一把个人 Key,同时用于模型、MCP 和 Skill;使用方只需配置网关地址与 Key,不再单独申请权限或凭证。
  2. 身份汇聚到一个 AI IdP。 我司 SaaS 用户中心是客户身份的权威源;内部员工以飞书登录为主;企微、钉钉、客户自建 IdP 以联邦方式接入 AI IdP(Keycloak)。AI IdP 不复制用户目录、不持有用户中心的签名密钥,只做登录桥、协议适配和逐跳换发。
  3. 权限是配置资产,不写在业务代码里。 模型按"别名白名单 + 套餐 / 预算 + 速率 + 守卫"管;MCP 按"登记表 + server / 工具 / 参数三级授权 + 逐跳换发 + 审批"管;Skill 按"审核 + 签名 + 可见性"管。三类策略统一编译成网关配置,带版本、可回滚。
  4. 数据面选 agentgateway,不引入 Higress。 agentgateway(Linux Foundation,Rust 单二进制)原生覆盖 LLM / MCP / A2A,v1.5.0 已具备每 Key 的 Token 与美元预算、Key 管理界面、PostgreSQL 持久化(文档取证)。公司没有 Higress 存量,南北向已有 APISIX / Kong / ingress-nginx;Higress 的长处(南北向一体化、控制台、MCP 市场)与我们的缺口重叠度低,代价却是新增 Envoy / Istio / Wasm 技术栈。
  5. 自研集中在控制面。 管理中心(门户 / 控制台 / 注册中心 / Key 服务)、登录桥与三方登录适配、策略仓与编译流水线、策略处理器(ExtMCP)、Skill 中心、计量对账与看板。不改 agentgateway 源码,只用它的扩展点。
  6. 多环境五种形态、一套模板。 云砺托管三套:内部 1 套、外部 SIT、外部 PROD(生产集群跨可用区);客户侧两种:客户云上单开、客户属地化离线包。同一 Helm / Compose 模板与策略格式,凭据不跨环境。
  7. 工程量约 24–30 人周。 较前序方案的 18–24 人周增加了 Skill 中心、Key 服务、三方登录适配与多环境打包;3 人并行约 10–12 周到内部试点,外部 SIT / PROD 随首个客户项目上线。
  8. 需要和需求方澄清 9 项(§6)。影响最大的两项:业务人员使用的 SaaS 型 Work 工具(ChatGPT Work、Claude Work)的模型调用无法经我司网关,只能以远程 MCP 连接器与 Skill 方式接入;客户云上单开的控制面归属与计费口径。

1. 整体架构说明和架构图

1.1 使用场景

公司内部场景

编号 场景 用到的能力 凭据 入口 说明
I-1 开发人员通过网关对接大模型,在 Claude Code / Codex / pi agent 等开源或免费编码 Harness 中使用 LLM 网关(编程池) 个人 Key 内网 / 零信任 Claude Code 走 Anthropic Messages 入口,Codex 走 OpenAI Responses 入口,pi agent 走 OpenAI Chat 入口;网关自动互转(文档取证)
I-2 业务人员通过网关对接大模型,在 WorkBuddy / ChatGPT Work / Claude Work 等 Work 工具中使用 LLM 网关 + MCP 网关 个人 Key 或 OAuth 内网 / 公网 支持自定义模型端点的工具直接用 Key;模型内置的 SaaS 型 Work 工具只能以远程 MCP 连接器(OAuth)与 Skill 方式接入,见 §6 待澄清 1
I-3 开发和业务人员通过网关把公司统一提供的 MCP 接入编码或 Work 工具 MCP 网关(聚合端点) 同一把个人 Key 或 OAuth 内网 / 公网 一个地址聚合本人有权访问的全部 MCP server,工具列表按人裁剪;也可按 server 单独接入
I-4 开发和业务人员通过网关检索公司 Skill 技能库并添加到工具 Skill 中心 同一把个人 Key 内网 门户检索、插件市场清单、命令行安装、MCP 工具四种入口
I-5 网关给每人发 Key,之后使用模型、MCP、Skill 时无需额外配置权限或凭证 管理中心 Key 服务 + 策略 个人 Key 内网 Key 携带身份与套餐元数据,权限由策略决定;离职即回收

公司外部场景(服务客户)

编号 场景 用到的能力 凭据 入口 说明
E-1 我司开发人员在管理中心注册项目和应用 管理中心(注册中心) 飞书登录 内网 Project → Application 两层;绑定代码仓、负责人、成本中心;审批后签发应用凭据
E-2 为应用配置可访问的大模型与 MCP 工具 管理中心 + 策略仓 应用凭据 公网入口 授权变更编译为网关配置;SIT 验证后晋级 PROD
E-3(补充) 客户用户经我司 SaaS 功能间接使用模型与 MCP 业务 LLM 池 + MCP 网关 用户中心用户令牌(登录桥)+ 应用凭据 内网 前序方案外部四类场景之一,成本按租户 × 应用 × 商品归集
E-4(补充) 客户自有 harness 或三方平台(豆包、WorkBuddy)直接连接我司 MCP MCP 网关 + 业务池 OAuth(AI IdP 授权页) 公网入口 已在生产的票据归档 MCP 是首个对象
E-5(补充) 客户云上单开网关、客户属地化部署 全套或数据面 客户 IdP 联邦 / 本地账户 客户网络 §4

1.2 组件构成与职责

组件 职责 建设方式 依据
LLM 网关(agentgateway LLM 监听器;内部分编程池、业务池) OpenAI Chat / Responses、Anthropic Messages、Gemini 原生入口自动互转;别名路由;同模型跨厂商故障转移(L1 默认开)与跨模型回退(L2 显式声明);Key / JWT 认证;每 Key 预算;限流;注入检测与脱敏守卫;用量与成本日志 开源复用 + 配置 文档取证 v1.5.0;POC S5 实测
MCP 网关(agentgateway MCP 监听器) 聚合端点(多 target、工具名前缀);tools/list 按人裁剪(CEL);参数级策略(ExtMCP 处理器);逐跳换发(RFC 8693);OpenAPI → MCP 零代码转换;MCP 2026-07-28(无状态 / 有状态、Tasks) 开源复用 + 处理器新开发 文档取证 v1.4.0–v1.5.0;POC S1–S4 实测
Skill 中心 Skill 仓库(GitLab 技能库组,SKILL.md 开放标准);索引与检索 API;审核流水线(frontmatter 校验、密钥扫描、提示注入扫描);签名与版本;分发(Claude Code 插件市场清单、标准 skills 仓库、安装脚本);MCP 工具 skill_search / skill_get 新开发 Agent Skills 开放标准已被 Claude Code、Codex、Cursor、VS Code 等 30 余种工具采用(文档取证)
A2A 网关(低优先级) Agent 目录(Agent Card 登记);A2A 路由与 JWT 认证;审计 开源复用 + 登记表扩展 agentgateway A2A 原生(文档取证);阶段 3
身份接入 · AI IdP(Keycloak) 用户中心登录桥;飞书 / 企微 / 钉钉 / 客户 IdP 联邦;OAuth 2.1 授权页(PKCE、CIMD / DCR);RFC 8693 换发;Key ↔ 用户令牌代签 开源复用 + 登录桥 SPI 与三方 IdP 适配新开发 POC S4 / S7 实测;源码取证
管理中心(门户 / 控制台 / 注册中心 / Key 服务) 个人自助:生成 Key、一键配置片段、用量与余量;项目 / 应用注册与授权配置;登记表(MCP server、工具、Skill、模型别名);审批联动(飞书审批);管理员视图 新开发(MVP 可用 agentgateway 管理界面 + 飞书审批 + 多维表格过渡)
策略仓 · 编译流水线 三类策略 IR(ToolPermissionSet、ModelRouteSet、RegistryEntry)→ 网关配置 + 处理器配置 + 价目目录;版本号进日志;GitOps 下发;校验失败不发布 新开发 POC 编译器扩展
策略处理器(ExtMCP ×2) 参数覆写 / 约束 / 剥离、step-up、审批回执、审计事件;fail-closed 新开发(POC 生产化) POC S2 / S3 实测
计量 · 对账 · 看板 网关 OTLP 日志 → 数据平台明细表(UsageRecord / ToolCallEvent);预算状态;余额探针;成本报表与月度对账单 新开发(数据平台侧) 文档取证(用量与成本字段)
存储与基础 RDS PostgreSQL(Key、预算、审批、审计);密钥管理(厂商 Key 轮换);OTel Collector 云服务复用 + 配置

1.3 架构图

AI 网关整体架构图(LLM 网关 · MCP 网关 · Skill 中心 · A2A 网关 · 身份接入 · 管理中心) 使用方 · 网关范围外 内部开发者Claude Code · Codex · pi agent 内部业务人员WorkBuddy · ChatGPT / Claude Work 内部业务服务 · Agent 运行时智能助手 · xagent · 审单 / 识别 外部客户应用 · 三方平台客户 harness · 豆包 · SaaS 功能 存量公网入口DNS → WAF → ALB → APISIX 个人 Key 个人 Key / OAuth 应用凭据 + 用户 JWT AI 网关(本项目交付)· 同一策略格式 · 每环境独立实例 身份接入 · AI IdP(Keycloak 复用 + 登录桥新开发) 用户中心登录桥 · 飞书 / 企微 / 钉钉 · 客户 IdP 管理中心 · 门户 / 控制台(新开发) 项目 · 应用 · Key · 模型 / MCP / Skill 授权 · 审批 AI 网关数据面 · agentgateway(开源复用)· 四类能力 开源复用LLM 网关编程池 · 业务池 别名路由 · 故障转移 开源复用MCP 网关聚合端点 · 工具裁剪 参数策略 · 换发 新开发Skill 中心索引 · 检索 · 审核 签名分发 · 市场清单 开源复用 · 后置A2A 网关Agent 目录 · Card 低优先级 · 阶段 3 新开发策略处理器 ×2(ExtMCP)参数覆写 · 审批回执 · fail-closed 限流 · 预算 · 守卫 · 评测路由Key 策略 · CEL 授权(增强 · 配置) 一把 Key:个人 Key 同时用于 LLM / MCP / Skill;应用凭据用于内外部应用;每跳一个受众,厂商 Key 与下游令牌只在网关 控制面与数据 · 每环境独立后端 新开发策略仓 · 编译流水线IR → 配置 · GitOps 配置版本 云托管RDS PostgreSQLKey · 预算 · 审计 Key · 预算 增强 · 配置密钥管理厂商 Key · 轮换 厂商 Key 开源复用OTel Collector日志 · 指标 · 链路 遥测 新开发计量 · 对账 · 看板明细 · 对账 · 余量 用量事件 环境:内部 1 套 · 外部 SIT / PROD · 客户云上单开 · 客户属地化(同一 Helm / Compose 模板 · 增强 · 配置) 范围外但必须对接:飞书审批(提额 / 应用注册 / 高风险工具)· 飞书通讯录事件(离职即回收 Key)· 用户中心(登录桥 · 过渡桥) 不做 Harness:xagent / 智能助手 / 客户 harness 都是网关的客户端;网关只看协议(OpenAI / Anthropic / MCP / A2A) 能力供给 · 网关范围外 外部厂商模型厂商(公网)火山方舟 · 百炼 · Moonshot · 智谱 · 海外厂商 可选 · 存量自托管模型vLLM · MindIE(私有化必备) 业务方 · 存量公司统一 MCP server只接受网关连接 · 换发 aud=mcp 存量SaaS 业务 API经 xforce-gateway · 换发 aud=api 新建仓库Skill 技能库(Git)SKILL.md 标准 · 版本 · 签名校验 低优先级外部 / 内部 Agent(A2A)Agent Card · JWT · 阶段 3 数据平台 用量明细 · 对账 · 看板 厂商 Key 在网关 经网关出向路由 对账单 · 看板 公网 · 应用凭据 存量 / 网关范围外 网关范围内 · 开源或云服务直接复用 网关范围内 · 需增强或配置 网关范围内 · 需新开发 新开发:管理中心(门户 / 控制台 / 注册中心 / Key 服务)· 登录桥与三方登录适配 · Skill 中心 · 策略仓与编译流水线 · 策略处理器 · 计量对账 | 复用:agentgateway(LLM / MCP / A2A)· Keycloak · RDS · OTel | 增强:路由 / 预算 / 守卫 / Key 策略配置 · 密钥轮换 · Helm / Compose 模板 不变量:每跳一个受众 · 策略不在 server 代码里 · 重试只在网关 · 凭据不进日志 · 迁移后应用容器出站只到网关与登记的 MCP server · fail-closed
图 1 · AI 网关整体架构(Palantir 文档图风格;灰 = 存量 / 范围外,蓝 = 开源或云服务复用,青 = 需增强或配置,橙 = 需新开发) · 下载:SVG PNG

读图顺序:左栏是四类使用方与其凭据(个人 Key、个人 Key 或 OAuth、应用凭据加用户 JWT、公网入口);中栏是本项目交付的 AI 网关——顶部身份接入与管理中心,中部 agentgateway 数据面的四类能力与策略处理器,下部每环境独立的控制面与数据;右栏是网关范围外的能力供给(模型厂商、自托管模型、公司统一 MCP server、Skill 技能库、SaaS 业务 API、A2A Agent、数据平台)。前序方案的 agentgateway 风格图与部署图见架构图页。

1.4 身份接入:多种认证方式如何汇聚

身份来源 使用者 接入方式 状态 / 依据
我司 SaaS 用户中心 客户用户、SaaS 应用 登录桥:用户在用户中心登录页登录(复用其租户 SSO),AI IdP 在服务端校验令牌并取用户、租户、公司范围后签发 AI 令牌;AI IdP 不持有用户中心的 JWT 密钥 源码取证:用户中心令牌为对称密钥 JWT,无 PKCE / JWKS / 换发,登录桥必须自建
飞书 内部员工与开发者(主路径) AI IdP 联邦飞书(OAuth 2.0 授权码,扫码或免登);飞书通讯录事件用于离职回收 需自建适配(Keycloak 社区扩展或自研身份提供者适配,工作量小)
企业微信 客户侧员工(客户使用企微时) 同飞书,作为联邦身份源 有需求时启用
钉钉 客户侧员工 同上;用户中心已按租户联邦钉钉,优先复用 源码取证:用户中心已有钉钉 / 微信联邦
客户自建 IdP(OIDC / SAML / Okta / Entra / CAS) 客户用户 优先复用用户中心已配置的租户 SSO;属地化时 AI IdP 直接联邦客户 IdP 源码取证
本地账户 属地化环境 轻量 IdP 本地用户目录 私有化交付

所有来源在 AI IdP 汇聚为同一种 AI 令牌:非对称签名(RS256 / ES256)、受众 aud=ai-gateway、稳定主体 subtenantroles_refchannel;短期有效并可刷新;用户中心侧登出或禁用通过事件与短 TTL 传播,撤权目标只读 60 秒内、高风险写操作每次在线复核。

1.5 一把 Key:个人 Key 的设计

设计
形态 前缀 xf-ak- + 随机 32 字节(Base62);只在生成时显示一次;服务端只存哈希;默认有效 180 天可续期;每人最多 3 把(按设备或用途命名)
元数据 sub(内部稳定 id)、tenant=internaldeptroleplan(套餐)、channel=personalenv;元数据进入 CEL 授权、限流、预算、日志与指标(agentgateway apiKey 策略的 metadata,文档取证)
存储与下发 agentgateway 混合配置模式(文件 + PostgreSQL)持久化;由管理中心 Key 服务写入;网关内存缓存 TTL 不超过 60 秒
覆盖范围 LLM(编程池入口)、MCP(聚合端点,Authorization: Bearer)、Skill(检索与下载 API)三处使用同一套 Key 校验
与 OAuth 的关系 Key = 便捷、长期、个人;OAuth(授权码 + PKCE)= 标准、短期、可委托。Key 用于所有支持自定义地址或请求头的工具;OAuth 用于不支持自定义请求头的三方连接器(Claude / ChatGPT 连接器、豆包)与外部客户。两条路径在网关内汇聚为同一身份上下文
回收 飞书离职事件或用户中心禁用 → 管理中心禁用 Key 并撤销 IdP 会话;全部 Key 操作留审计
明确不做 Key 不发给应用(应用用应用凭据);Key 不跨环境;Key 原值不进日志(只记 key_id 前 8 位)

1.6 请求路径总览

使用方 → 入口(内网直达或公网 DNS → WAF → ALB → APISIX,存量) → 认证(个人 Key / 应用凭据 / 用户 JWT) → 授权(CEL 规则 + 策略处理器) → 路由(模型别名 / MCP 工具 / Skill 包 / A2A Agent) → 出站(厂商、自托管模型、MCP server、技能库、业务 API) → 计量(用量与工具事件) → 看板与对账。每一跳一个受众:使用方的凭据止于网关,厂商 Key 与下游令牌只在网关。

1.7 与存量的关系(摘要)

  • 现有统一代理(new-api)先作为 LLM 网关的一个 provider,6 个月内退出代理职责;直连厂商的 8 个服务改配置接入业务池,厂商 Key 上收。
  • xagent、智能助手等 Agent 运行时是网关的客户端,网关不做 Harness;网关只看协议(OpenAI / Anthropic / MCP / A2A)。
  • 南北向网关(APISIX / Kong / ingress-nginx / ALB + WAF)不动,外部流量经它们进入;agentgateway 不直接暴露公网。
  • 详见前序方案 §2、§3。

2. 权限管理

2.1 权限模型总览

权限沿四个轴定义:主体(谁)、客体(对什么)、策略(允许什么、有什么义务)、环境(在哪个实例)。策略以配置资产(三类 IR)表达并编译进网关,业务代码与 MCP server 代码里不写权限逻辑。

主体与凭据

主体 凭据 身份上下文(进入策略的字段) 典型场景
内部员工(开发者、业务人员) 个人 Key;或 AI 令牌(飞书登录) subdeptroleplanchannel I-1 至 I-4
客户用户 AI 令牌(用户中心登录桥) sub(用户中心 userId)、tenantaccountcompany_scope_refroles_ref E-3、E-4
应用 / Agent(工作负载) 应用凭据:client_credentials 换 JWT(推荐)或应用 Key(简化档) azpapp_idproject_idapp_versionenv I-2 后端、E-1、E-2
应用代表用户 应用凭据 + 用户 AI 令牌 上两行叠加 E-3
第三方入口(豆包、WorkBuddy、Claude / ChatGPT 连接器) OAuth 客户端(预注册或 CIMD / DCR)+ 用户令牌 channel=doubao / workbuddy / work-tool … I-2、E-4

客体与策略要素

客体 授权粒度 策略要素
模型 别名 可见性白名单、套餐 / 预算、速率、守卫、数据出境(厂商白名单)、评测标记
MCP server → 工具 → 参数三级 登记表、可见性、只读 / 写 / 高风险分级、参数注入 / 约束 / 剥离、审批、速率、渠道裁剪
Skill 包 + 版本 可见性、审核状态、签名、固定版本、撤回
A2A Agent Agent Card 登记、调用方白名单、JWT、审计

角色与操作

操作 全局管理员 应用管理员 内部开发者 业务人员 外部应用
生成 / 吊销个人 Key 任意人 本人 本人
调用编程池模型 套餐内 套餐内(默认档)
调用业务池模型 本应用授权别名 经应用 经应用 授权别名
发现与调用 MCP 工具 全部 本应用授权集 本人授权集 本人授权集 应用授权集
写操作 / 高风险工具 审批人 申请 申请 申请 申请(应用管理员代)
检索与安装 Skill 阶段 2 评估
发布 Skill 审核 提交 提交 提交
注册项目 / 应用 审批 管理本应用 申请
配置应用可用模型 / MCP 审批 提交变更
查看用量与成本 全部 本应用 本人 本人 本应用(API)
发布策略 / 价目版本

决策点

决策点 决定什么 依据 时机
管理中心 身份建档、Key 签发、授权申请与审批、登记 RBAC + 飞书审批 变更时
编译流水线 授权 → 网关配置与处理器策略;校验,失败不发布 三类 IR 发布时
网关(CEL) 认证、别名与工具可见性、速率、预算 Key / JWT 元数据 + 路由 每个请求
策略处理器(ExtMCP) 参数级策略、step-up、审批回执、审计事件 ToolPermissionSet 每次 tools/call
授权适配器 客户用户的资源码与公司范围快照 用户中心接口 登录桥与换发时

2.2 LLM 网关的权限管理

控制项 规则 执行机制 证据
模型可见性 个人:套餐决定别名集合(如 coding-sotacoding-fastgeneral);应用:授权别名集合;未授权别名返回 404,不暴露存在 Key 元数据 plan 或 JWT azp + CEL 规则作用于请求模型名;/v1/models 列表按主体过滤 文档取证(CEL 属性);列表过滤在 A-1 验证
套餐与预算 个人:按套餐的美元或 Token 滚动窗口(日 / 周 / 月);应用:预算按应用 × 租户;超限 Block 或 Audit agentgateway 每 Key 预算(v1.5.0,SQLite / PostgreSQL 持久化,管理 API 可查已用与剩余);JWT 主体走远程限流描述符或计量回写 文档取证;JWT 预算需自建
速率 每 Key 与每应用的每分钟请求数与 Token 数;突发上限 本地限流(每实例)+ 远程限流(跨实例,Envoy 限流服务兼容) 文档取证;S5 实测本地限流
内容守卫 提示注入检测、敏感信息脱敏(正则 mask / reject / audit)、内容审核(OpenAI moderation 内联)、按路由启停 guardrails 文档取证;流式响应只能拒绝不能打码
数据出境 指定别名只允许国内厂商;属地化只允许本地引擎 ModelRouteSet 的 provider 白名单,编译期保证 需自建 IR
环境隔离 Key 与凭据只在签发环境有效 环境独立实例、独立 Key 存储 部署保证
提额与开通 门户申请 → 飞书审批 → 策略仓变更 → 发布 管理中心 + 审批通道 需自建
评测流量 单独别名 + traffic_purpose=eval 头;独立预算与报表 路由 + 注入头 需自建

配置示意(字段名以 v1.5.0 文档为准,真实 Key 由 PostgreSQL 持久化、不进配置文件):

llm:
  policies:
    apiKey:
      mode: strict
      keys:
        - key: "<由管理中心写入 PostgreSQL,此处仅示意>"
          metadata: { sub: "u-1024", dept: "platform", plan: "coding-pro", channel: "personal" }
          budgets:
            - { type: dollars, limit: 60, window: 7d }
    authorization:
      rules:
        - 'apiKey.metadata.plan == "coding-pro" && llm.requestModel in ["coding-sota", "coding-fast", "general"]'
        - 'apiKey.metadata.plan == "standard" && llm.requestModel in ["coding-fast", "general"]'

预算分三层:个人套餐(编程池,挂在 Key 上)、应用预算(业务池,挂在应用 × 租户上)、租户总预算(数据平台按用量回写阈值,网关执行)。提额走门户申请与飞书审批,审批通过后由编译流水线改预算对象并发布,无需改业务代码。

2.3 MCP 网关的权限管理

层级 规则 执行机制 证据
登记表(server 级) 未登记、版本不匹配或 schema 无效的 server 不可发现、不可调用;登记项含负责人、版本、只读证明、schema、副作用级别、超时 RegistryEntry 编译期生成 target 列表 需自建
可见性(server 级) 按主体属性(部门、角色、应用、渠道)决定 server 是否出现在聚合端点 CEL:mcp.tool.target 与主体元数据 S1 实测
工具级 允许工具集;只读 / 写 / 高风险三档;写与高风险默认拒绝或走审批 mcpAuthorization CEL 规则:任一命中即允许,未命中的工具不出现在 tools/list,直接调用返回 403 文档取证;S1 实测
参数级 schema 强校验;注入(租户来自令牌)、约束(范围、枚举)、剥离(指定渠道禁用参数) ExtMCP 策略处理器 S2 实测
渠道裁剪 internal / doubao / workbuddy / work-tool / cloud-market 不同工具面 channel 作为主体属性参与 CEL 需在 IR 加字段
下游身份 MCP server 只认网关:网络策略 + mTLS;携带受众为该 server 的短期令牌(换发或代签);server 调业务 API 再经网关出向路由换发 RFC 8693 换发(缓存);Key 主体由处理器向 AI IdP 申请代表用户的令牌 S4 实测换发;Key 代签在 A-1 验证
审批 高风险工具"拒绝 + 审批回执 + 同动作重试";回执绑定主体、工具、参数哈希、策略版本、TTL,单次消费 处理器 + 飞书审批 S3 实测;网关合成结果被证否
速率与熔断 调用方 × 工具限流;不健康 server 驱逐 限流 + 健康驱逐 文档取证
审计 每次 tools/call 一条 ToolCallEvent(决策、原因码、参数哈希、策略版本、审批号、计费单位) 处理器持久化 + 日志 前序方案 B5 改口径

聚合端点。 网关暴露 /mcp(本人有权访问的全部 server 聚合)与 /mcp/{server}(单个 server)两种地址;工具名前缀取 conditional(仅冲突时加前缀,访问控制与用量按原始工具名);tools/list 缓存键包含主体、授权摘要、登记表版本与策略版本,任一变化即失效。

配置示意:

mcp:
  policies:
    mcpAuthentication: { mode: strict, issuer: "https://<AI IdP>/realms/ai", audiences: [ai-gateway] }   # OAuth 路径
    apiKey: { mode: strict }                                                                             # 个人 Key 路径(同一 Key 存储)
    mcpAuthorization:
      rules:
        - 'mcp.tool.target == "invoice-query"'                                                          # 全员可见的只读 server
        - 'mcp.tool.target == "receipt-archive" && mcp.tool.name.startsWith("archive_")'                # 归档类工具
        - 'mcp.tool.target == "apollo-ops" && ("sre" in jwt.roles || apiKey.metadata.dept == "devops")'  # 运维写工具限角色

2.4 Skill 中心的权限管理

环节 规则
发布 开发者向技能库提交合并请求;CI 校验 SKILL.md frontmatter、扫描密钥、扫描提示注入与危险命令、生成依赖清单;审核人(Skill 维护组或应用管理员)批准后打版本并签名(内容哈希 + 签名清单)
可见性 公开(全员)/ 部门 / 项目 / 应用四档;外部客户默认不可见
检索与安装 Key 校验后只返回可见集合;安装脚本与插件市场清单校验签名与版本
更新 语义化版本;安装端固定版本;门户显示变更日志与风险等级
撤回 发现风险即下架:清单不再返回,安装端下次校验时提示
外部 Skill 引入 外部市场的 Skill 先进技能库走同一审核,不允许工具直接从公网市场安装到公司环境

审核不是形式:对公开市场 31,132 个 Skill 的审计发现 26.1% 至少含一处漏洞(SkillProbe,2026,文档取证);公开市场规模已达数万至数十万条目。公司技能库只收审核过的版本。

2.5 认证的全流程示例(结合场景演示)

以下八个场景覆盖 §1.1 的全部使用场景。图中 AI IdP 指 Keycloak;未特别说明时环境为内部 1 套。每个场景给出时序图、各跳校验点与失败处理。

场景 A · 首次接入:飞书登录管理中心,生成个人 Key

sequenceDiagram
    autonumber
    participant U as 员工
    participant P as 管理中心门户
    participant IdP as AI IdP(Keycloak)
    participant FS as 飞书开放平台
    participant KS as Key 服务
    participant DB as 网关 Key 存储(PostgreSQL)
    U->>P: 打开门户
    P->>IdP: OIDC 授权码 + PKCE
    IdP->>FS: 联邦登录(扫码或免登)
    FS-->>IdP: 用户信息(open_id、部门)
    IdP-->>P: id_token + access_token(sub = 内部稳定 id)
    P->>P: 自动建档:角色 = 内部开发者,套餐 = 默认档
    U->>P: 生成 Key(命名:笔记本)
    P->>KS: 申请签发(sub、dept、plan、channel=personal)
    KS->>DB: 写入 Key 哈希 + 元数据 + 预算对象
    KS-->>P: 明文 Key(仅此一次)
    P-->>U: 展示 Key 与一键配置片段

校验点:飞书侧校验企业成员身份;建档幂等(同一 sub 只建一次);Key 明文只展示一次,服务端只存哈希;预算对象与 Key 同时创建;全部操作写审计。门户给出的配置片段:

# Claude Code(Anthropic Messages 入口)
export ANTHROPIC_BASE_URL=https://<网关地址>
export ANTHROPIC_AUTH_TOKEN=xf-ak-...
# Codex / pi agent / 其他 OpenAI 兼容工具
export OPENAI_BASE_URL=https://<网关地址>/v1
export OPENAI_API_KEY=xf-ak-...
# 公司 MCP 聚合端点(Claude Code,一次添加)
claude mcp add --transport http company https://<网关地址>/mcp --header "Authorization: Bearer xf-ak-..."
# Skill 插件市场(Claude Code,一次添加)
/plugin marketplace add https://<网关地址>/skills/marketplace.json

场景 B · Claude Code 调模型:Key 认证、别名授权、预算、故障转移、计量

sequenceDiagram
    autonumber
    participant CC as Claude Code
    participant GW as LLM 网关(编程池)
    participant DB as Key / 预算存储
    participant P1 as 厂商 A(priority 0)
    participant P2 as 厂商 B(priority 1)
    participant DP as 数据平台
    CC->>GW: POST /v1/messages model=coding-sota + Bearer 个人 Key
    GW->>DB: 查 Key(缓存未命中时)→ 元数据 + 预算余量
    GW->>GW: CEL:套餐允许 coding-sota?速率?预算余量?注入检测
    GW->>P1: 别名 → 虚拟模型 → 厂商 A(厂商 Key 只在网关)
    P1-->>GW: 503
    GW->>GW: 标记厂商 A 不健康(驱逐)· 重试选不同后端
    GW->>P2: 同一请求
    P2-->>GW: 流式响应 + usage(结束帧)
    GW-->>CC: 流式响应(头:actual_model、route_version)
    GW->>DB: 预算扣减(美元 / Token)
    GW->>DP: UsageRecord(sub、dept、actual_model、provider=B、failover_hop=1、tokens、cost、price_version)

校验点与失败处理:

情况 网关行为 使用方看到 处置
Key 无效或已禁用 401 工具提示认证失败 门户重新生成 Key
别名不在套餐内 404(不暴露别名存在) 模型不存在 门户申请套餐升级
速率或预算超限 429,响应头带原因码与剩余额度 限流提示 等窗口刷新或申请提额
守卫拒绝 400 + 原因码 内容被拒 修改输入
厂商 A 故障 同模型跨厂商转移(仅幂等路由),重试只在网关 无感 用量记录标注实际厂商

Codex 走同一网关的 /v1/responses,pi agent 走 /v1/chat/completions,策略相同。

场景 C · 同一把 Key 接入公司 MCP:聚合、裁剪、参数策略、逐跳换发、业务 API

sequenceDiagram
    autonumber
    participant CC as Claude Code
    participant GW as MCP 网关(聚合端点 /mcp)
    participant PI as 策略处理器(ExtMCP)
    participant IdP as AI IdP
    participant M as 发票查验 MCP server
    participant XG as 业务网关(xforce-gateway)
    participant API as 发票查验业务 API
    CC->>GW: tools/list + Bearer 个人 Key
    GW->>GW: Key 校验 → 主体(sub、dept、channel=personal)
    GW->>GW: CEL 裁剪:登记表 ∩ 本人授权 ∩ 渠道;聚合多 server
    GW-->>CC: 本人可见工具列表
    CC->>GW: tools/call invoice_verify{files:[2]}
    GW->>PI: 参数校验 · 注入 tenant · 约束 · 决策记录
    PI->>IdP: 以网关客户端凭据申请代表该用户的短期令牌(aud=invoice-mcp,缓存)
    IdP-->>PI: 本跳令牌
    GW->>M: tools/call(本跳令牌;server 只接受来自网关的连接)
    M->>GW: 出向路由:调用业务 API(server 自己的令牌)
    GW->>IdP: 过渡桥:按用户代签用户中心令牌(仅 IdP 客户端可调、短 TTL、全量审计)
    GW->>XG: 携用户中心令牌
    XG->>API: 注入租户与用户头
    API-->>M: 结果
    M-->>GW: 结果 + _meta.billableUnits=2
    GW->>PI: ToolCallEvent 持久化(decision、policy_version、billable_units)
    GW-->>CC: 结果

校验点:Key 与 OAuth 两条路径在第 2 步汇聚为同一主体;tools/list 与健康检查不产生用量事件;第 7 步"Key 主体换用户令牌"是本方案新增的一跳(POC 只验证过 JWT 到 JWT 的换发),A-1 阶段验证 Keycloak 配置;阶段 1 的降级方案是集群内可信头 + mTLS,只用于只读工具。用户的原始用户中心令牌不进入任何下游。

场景 D · 业务人员在 Work 工具中接入:远程 MCP 连接器 + OAuth 授权页

sequenceDiagram
    autonumber
    participant W as Work 工具(Claude Work / ChatGPT Work / WorkBuddy)
    participant Pub as 公网入口(WAF / ALB / APISIX)
    participant GW as MCP 网关
    participant IdP as AI IdP(授权页)
    participant FS as 飞书 / 用户中心
    W->>Pub: 连接远程 MCP(无令牌)
    Pub->>GW: 转发
    GW-->>W: 401 + 受保护资源元数据(指向 AI IdP)
    W->>IdP: 动态注册或预注册客户端 → 授权码 + PKCE
    IdP->>FS: 用户飞书扫码(内部)或用户中心登录(客户)
    FS-->>IdP: 身份
    IdP-->>W: access_token(aud=ai-gateway、sub、channel=work-tool)
    W->>GW: tools/list(Bearer 令牌)
    GW-->>W: 该渠道可见工具(例如不含运维写工具)
    W->>GW: tools/call …
    GW-->>W: 结果(后续同场景 C)

说明:模型内置的 SaaS 型 Work 工具(Claude Work、ChatGPT Work)的模型调用不经我司网关,网关能管的是它们连接的远程 MCP 与安装的 Skill;WorkBuddy 若支持自定义模型端点与请求头,则模型调用同场景 B、MCP 同场景 C。渠道 work-tool 的工具面默认只含只读与低风险工具。

场景 E · 检索并安装 Skill:门户、插件市场、命令行、MCP 工具

sequenceDiagram
    autonumber
    participant U as 开发者 / 业务人员
    participant CC as Claude Code / Codex
    participant SC as Skill 中心(网关路由 /skills)
    participant IDX as 索引与签名服务
    participant Git as 技能库(GitLab)
    U->>CC: 添加公司插件市场(一次)
    CC->>SC: GET /skills/marketplace.json + Bearer 个人 Key
    SC->>IDX: 按主体可见性生成清单(名称、描述、版本、签名)
    SC-->>CC: 清单
    U->>CC: 安装 invoice-audit
    CC->>SC: GET /skills/invoice-audit/1.3.0.tar.gz
    SC->>Git: 拉取已审核版本(网关持有只读凭据)
    SC-->>CC: 包 + 签名清单
    CC->>CC: 校验签名 · 安装到本地技能目录
    SC->>SC: 审计:谁在何时安装了什么版本

四种入口共用同一套检索 API 与 Key 校验:门户网页检索;Claude Code 插件市场清单;命令行安装脚本(适配 Codex、Cursor 等按 Agent Skills 标准读取本地技能目录的工具);MCP 工具 skill_searchskill_get(Agent 在对话中自助发现与安装,走场景 C 的授权链)。

场景 F · 外部:注册项目与应用,配置可用模型与 MCP,应用调用,SIT 晋级 PROD

sequenceDiagram
    autonumber
    participant Dev as 我司开发者
    participant P as 管理中心(SIT)
    participant FA as 飞书审批
    participant Repo as 策略仓 / 编译流水线
    participant IdP as AI IdP(SIT)
    participant App as 客户项目应用
    participant GW as 业务 LLM 池 / MCP 网关(SIT)
    Dev->>P: 新建 Project(客户、负责人、成本中心)→ 新建 Application(类型、代码仓)
    Dev->>P: 勾选可用模型别名、MCP server 与工具、预算、速率
    P->>FA: 发起审批(应用管理员 / 全局管理员)
    FA-->>P: 通过
    P->>Repo: 生成 RegistryEntry + 授权 IR → 编译 → 校验 → 发布到 SIT
    P->>IdP: 创建 OAuth 客户端(client_credentials)或应用 Key
    P-->>Dev: 应用凭据(SIT)
    App->>IdP: client_credentials → JWT(aud=ai-gateway、azp=app-id、env=sit)
    App->>GW: /v1/chat/completions model=ocr-multipage + JWT
    GW->>GW: CEL:别名 ∈ 应用授权集?预算(应用 × 租户)?
    GW-->>App: 响应 + 用量记录
    Dev->>P: 申请晋级 PROD(同一 IR,PROD 凭据另发)

晋级规则:同一份 IR 经 SIT 验证后,策略仓合并到 PROD 分支并再次审批;PROD 的应用凭据由 PROD 环境的 AI IdP 单独签发,SIT 凭据在 PROD 无效;应用的模型与 MCP 授权变更只改 IR,不改应用代码。

场景 G · 客户用户经我司 SaaS 功能调用:登录桥 + 应用代表用户

sequenceDiagram
    autonumber
    participant CU as 客户用户
    participant SaaS as SaaS 应用(前端 + 后端)
    participant UC as 用户中心
    participant IdP as AI IdP(登录桥)
    participant GW as 业务 LLM 池 / MCP 网关(PROD)
    CU->>SaaS: 登录(用户中心,租户 SSO 可用)
    SaaS->>UC: 用户中心令牌(对称密钥 JWT,8 小时)
    SaaS->>IdP: 服务端换发:携用户中心令牌 + 应用凭据
    IdP->>UC: 校验令牌与用户信息
    IdP-->>SaaS: AI 令牌(sub = 用户中心 userId、tenant、azp=app、aud=ai-gateway)
    SaaS->>GW: 调模型 / MCP(AI 令牌)
    GW->>GW: CEL:应用授权 ∩ 租户预算 ∩ 用户权限快照(授权适配器)
    GW-->>SaaS: 结果 + 用量(按租户 × 应用 × 商品)

场景 H · 撤销与轮换

  • 离职:飞书通讯录事件或用户中心禁用 → 管理中心禁用该用户全部 Key、撤销 AI IdP 会话;网关 Key 缓存 TTL 不超过 60 秒,令牌短期有效,撤权目标只读 60 秒内生效、高风险写操作每次在线复核。
  • 应用负责人变更或凭据疑似泄露:管理中心轮换应用凭据(新旧并行 24 小时),策略不变。
  • 厂商 Key 轮换:只改密钥管理与网关 provider 配置,应用无感。
  • 所有撤销与轮换写审计,含操作人、对象、原因、生效时间。

3. 技术选型

3.1 候选与评估口径

前序报告已横向评估过 LiteLLM、Kong AI Gateway、Envoy AI Gateway、new-api 等,本章只回答公司提出的问题:agentgateway 还是 Higress,以及哪些必须自研。评估依据是 §1、§2 的需求(一把 Key、MCP 三级授权与逐跳换发、Skill 中心、A2A、五种环境形态、私有化交付)与公司存量(无 Higress,南北向已有 APISIX / Kong / ingress-nginx,POC 已在 agentgateway 上验证 49 项检查)。

版本口径:agentgateway v1.5.0(2026-08-27 发布)、Higress v2.2.4(2026-08-13 发布),均以官方发布说明与文档为准,标注"文档取证";未在文档中查到的能力标注"未取证"。

一个背景事实:2026 年独立商业 AI 网关正在被收编——Portkey 被 Palo Alto Networks 收购(5 月)、TensorZero 归档仓库(6 月)、Helicone 被 Mintlify 收购(3 月)(文档取证,awesome-ai-gateway 汇总)。选型偏向基金会治理的开源项目,并把策略资产与网关解耦,是对这类风险的对冲。

3.2 agentgateway 与 Higress 对比

维度 agentgateway v1.5.0 Higress v2.2.4 对本方案的影响
定位与治理 Linux Foundation 开源项目;专为 Agent 流量设计(LLM、MCP、A2A 一个数据面) CNCF Sandbox(2026-03 通过 TOC 投票);阿里云开源;AI 原生 API 网关(南北向 + AI) 两者治理都可靠;agentgateway 与"AI 策略执行点"的定位一致
内核与依赖 Rust 单二进制;无外部依赖,持久化可选 SQLite / PostgreSQL Envoy(C++)数据面 + Istio 控制面 + Go 控制器 + Wasm 插件;注册中心 Nacos,限流 / 配额 / 缓存依赖 Redis 私有化与客户云上单开偏好小体积、少依赖
LLM 入口协议 OpenAI Chat / Responses、Anthropic Messages、Gemini 原生,自动互转 OpenAI 兼容为主(ai-proxy),Anthropic / Bedrock 等厂商适配 Claude Code 与 Codex 同时直连需要互转
路由与故障转移 虚拟模型:权重 / 优先级 failover / 条件(CEL);健康驱逐;重试 ai-load-balancer(含 cluster_hash)、多模型灰度、fallback 两者都够用;agentgateway 的 CEL 条件路由更贴合别名策略
预算与计费 每 Key 的美元与 Token 预算(滚动窗口)、价目目录成本计算、管理 API 查余量 Token 限流(ai-token-ratelimit)、配额(ai-quota,需 Redis);成本核算需自建 顾磊"套餐余量"直接落在 agentgateway 预算上
API Key 管理 虚拟 Key + 任意元数据(进入 CEL / 指标 / 日志 / 限流 / 预算);管理界面生成、掩码、吊销;PostgreSQL 持久化 key-auth 插件 + consumer 管理;控制台管理 "一把 Key"所需的元数据能力 agentgateway 原生具备
MCP MCP 2026-07-28(无状态 / 有状态、Tasks);多 server 聚合与工具前缀;CEL 授权到工具级;guardrails;OpenAPI → MCP;ExtMCP 处理器扩展点 MCP Server Hosting(插件)、openapi-to-mcp、MCP Marketplace、Nacos MCP 注册;MCP 2026-07-28(v2.2.4) 三级授权与参数策略需要处理器扩展点,agentgateway 已有;Higress 侧需写 Wasm 插件
MCP 认证 OAuth 2.1 受保护资源元数据;JWT(Keycloak、Entra 原生);Cross App Access(企业托管授权,v1.4.0) JWT / OAuth 插件;MCP 的 OAuth 授权服务器能力未取证 第三方入口(豆包、Work 工具连接器)依赖标准 OAuth 流程
A2A 原生(Agent Card 代理、jwtAuth) 未取证 A2A 虽低优先级,但不需要另选组件
扩展方式 CEL 策略、ExtProc / ExtMCP、webhook 守卫;不需要写插件 Wasm 插件(Go / Rust / C++),插件生态丰富 我们的扩展点全部落在处理器与 CEL,无需插件开发技能栈
配置与控制台 YAML / Kubernetes CRD(Gateway API);管理界面(引导、Key、日志);数据库存储配置(混合模式) 完整控制台(路由、AI 模型、MCP 市场、插件);CRD / Ingress Higress 控制台更成熟;但本方案的管理中心是自研的业务控制台,两者都不能替代
可观测 OpenTelemetry 原生:gen_ai 指标、结构化日志字段(token、成本、首字延迟)、链路 Prometheus / OTel、ai-statistics 插件 计量对账需要每请求的结构化字段,agentgateway 字段更完整
南北向能力 基础 HTTP / TCP / TLS;不做 WAF 完整南北向(Ingress、Gateway API、WAF、认证插件);可平滑替换 ingress-nginx 公司南北向存量不换,此项对 Higress 是优势但无用武之地
私有化体积 二进制 + 可选 PostgreSQL Envoy + Istio + 控制台(+ Nacos / Redis);有 all-in-one 镜像可单机 属地化交付包 agentgateway 更轻
与公司存量 POC 已验证;无迁移成本 无存量;需新增 Envoy / Istio / Wasm 运维与开发技能
社区规模 约 4.8k stars 约 9.3k stars;国内案例多 Higress 社区更大,中文资料多
主要风险 项目年轻(2025 起),部分能力仅文档取证;A2A 生态未成熟 双重角色(南北向 + AI)与存量网关重叠;扩展需插件开发;对 Nacos / Redis 的依赖

3.3 选型结论与适用条件

结论:AI 策略执行点用 agentgateway;Higress 不引入。 五条理由:

  1. 需求核心是"一把 Key 的元数据驱动授权 + MCP 三级授权与逐跳换发 + 计量字段",agentgateway 原生覆盖;Higress 这三项要靠 Wasm 插件补。
  2. 公司没有 Higress 存量,南北向不会因 AI 网关而重构;Higress 最大的优势在此用不上。
  3. 五种环境形态里三种在客户侧,交付包越轻越好;agentgateway 单二进制、无 Nacos / Redis 依赖。
  4. POC 已在 agentgateway 上跑通 49 项检查,团队已有踩坑记录;换 Higress 意味着重做验证。
  5. A2A 后置但不需要另选组件。

什么情况下应重新评估 Higress: 公司决定把南北向统一到 Envoy 体系并替换 ingress-nginx;或要求"开箱即用控制台 + MCP 市场"且接受 Nacos / Redis 依赖并放弃自研管理中心;或团队具备 Go / Wasm 插件能力并愿意承担插件维护。三者目前都不成立。

风险对冲: 锁定 agentgateway 版本、只用扩展点不改源码;策略 IR 与网关配置解耦(编译器可换目标,例如 Envoy AI Gateway);用量事件模型独立于网关日志格式。

3.4 自研功能清单

为什么开源不覆盖 做法 人周
管理中心:门户 / 控制台 / 注册中心 / Key 服务 网关管理界面面向运维,不懂项目、应用、套餐、审批;Key 需要绑定公司身份与套餐 前后端小应用:飞书登录、个人 Key 自助、配置片段、用量与余量、Project → Application、登记表、授权配置、审批联动;写入网关的 PostgreSQL 或调用其管理 API 5.0
身份适配:登录桥 SPI、飞书 / 企微 / 钉钉适配、Key 主体代签 用户中心不是 OIDC Provider;三方登录需要 IdP 适配;Key 主体换用户令牌是本方案新增一跳 Keycloak 自定义 Identity Provider 与换发配置;社区扩展优先 3.5
策略 IR 与编译流水线 网关只认自己的配置,不认"应用被授权哪些别名和工具" 三类 IR → 网关配置 + 处理器策略 + 价目目录;CI 校验、审批、版本、回滚 2.0
策略处理器(ExtMCP) 参数级注入 / 约束 / 剥离、step-up、审批回执不是网关内置 POC 457 行生产化:PostgreSQL、多副本、超时预算、fail-closed 2.5
Skill 中心 网关不认识 Skill;公开市场无审核 技能库(GitLab)+ 审核 CI + 索引 / 检索 API + 签名分发 + 市场清单 + 安装脚本 + MCP 工具 3.0
计量 · 对账 · 看板 · 余额探针 网关只产日志与预算状态,不做对账单与厂商余量 OTLP 接入、明细表、成本口径、月度对账单、看板、厂商余额适配器 4.0
审批通道(飞书审批) 网关只能拒绝,不能等人 回执绑定与单次消费;提额、应用注册、高风险工具三类流程 1.5
多环境打包:Helm / Compose 模板、客户云上单开、属地化离线包、签名导出 交付形态是公司自己的事 同一模板渲染五种形态;离线策略包导入;用量签名导出 2.5
A2A 目录与登记(低优先级) 网关有 A2A 路由,无目录 RegistryEntry 扩展 Agent Card;阶段 3 1.0
迁移:过渡代理底稿、应用改配、直连收编、NetworkPolicy、回退演练 逐应用 2.5
合计 27.5(区间 24–30)

3.5 明确不做

不做 Harness(xagent、智能助手、客户 harness 都是客户端);不改 agentgateway 源码;不自研限流、路由、协议转换、守卫;不做模型评测平台(只做评测路由与标签);不复制用户目录、不持有用户中心签名密钥;不做 WAF 与南北向网关;不自建模型市场(Skill 中心只管公司技能库)。


4. 多环境

4.1 环境矩阵

内部 · 1 套(INTERNAL) 外部 · SIT 外部 · PROD 客户云上单开 客户属地化
服务对象 员工个人 + 内部应用与 Agent 客户项目应用(联调) 客户项目应用(生产)、SaaS 应用 单一客户 单一客户(离线)
部署位置 阿里云生产主集群,独立命名空间 FAT 主集群,单副本 生产主集群,跨可用区,每池不少于 2 副本 客户云账号 VPC(K8s 或 VM Compose) 客户机房(Compose / Helm 全套)
组件 编程 LLM 池 + 业务 LLM 池、MCP 网关(聚合端点)、Skill 中心、策略处理器、管理中心、AI IdP 业务 LLM 池、MCP 网关、策略处理器、管理中心 SIT 视图 业务 LLM 池 ×2、MCP 网关 ×2、策略处理器 ×2、AI IdP ×2、RDS 高可用 网关数据面(LLM + MCP)+ 最小控制面 网关 + 处理器 + 轻量 IdP + PostgreSQL + 精简管理中心
身份源 飞书 + 用户中心内部租户;个人 Key 应用凭据(SIT);用户中心 FAT 应用凭据(PROD)+ 用户中心用户 客户 IdP 联邦或用户中心租户 客户 IdP / 本地账户
模型出口 厂商 + 过渡代理 + 自托管 厂商测试账号 厂商生产账号(Key 只在网关) 客户自有厂商账号或我司账号 本地引擎(vLLM / MindIE)
MCP 目标 公司统一 MCP server(内部) 登记的 MCP server(FAT) 登记的 MCP server(生产) 客户内网系统 MCP(默认只读) 同左,写操作逐类声明
配置来源 策略仓 main 分支 策略仓 sit 分支 策略仓 prod 分支(审批) 模式 A 托管拉取 / 模式 B 客户自管 离线策略包(带版本)
计量数据 我司数据平台 我司数据平台 我司数据平台 摘要回传(模式 A)或本地 本地 + 签名导出
公网入口 无(内网 / 零信任) 存量 WAF / ALB / APISIX 存量 WAF / ALB / APISIX 客户网络 客户网络
可用性目标 99.9% 尽力 99.95% 按合同 按合同

内部 1 套落在生产主集群而不是 FAT 集群,原因是开发者每天依赖它,可用性要求接近生产;网关自身的配置与版本变更用外部 SIT 验证后再发布到内部与 PROD。

4.2 部署架构图

AI 网关多环境部署架构图(内部 1 套 · 外部 SIT / PROD · 客户云上单开 · 客户属地化) 云砺统一控制面(托管环境共用 · 每环境独立数据面 · 同一策略格式) 新开发管理中心 · 门户 / 控制台项目 · 应用 · Key · 授权 · 审批 新开发策略仓 · 编译流水线IR → 配置 · GitOps · 版本 复用 + 新开发AI IdP(Keycloak)登录桥 · 飞书 / 企微 / 钉钉 · 客户 IdP 新开发计量 · 对账 · 价目版本用量明细 · 对账单 · 看板 增强 · 配置密钥管理厂商 Key · 轮换 · 环境隔离 存量数据平台明细表 · 报表(存量) 内部 · 1 套(INTERNAL) 阿里云生产主集群 · 独立命名空间 开源复用编程 LLM 池 + 业务 LLM 池≥ 2 副本 · 99.9% 复用 + 新开发MCP 网关 + Skill 中心聚合端点 · 技能索引 新开发策略处理器ExtMCP · fail-closed 身份:飞书 + 用户中心内部租户 · 个人 Key 出口:厂商 · 过渡代理 · 自托管 内网 / 零信任 · 无公网入口 外部 · SIT(联调) FAT 主集群 · 单副本 开源复用业务 LLM 池厂商测试账号 开源复用MCP 网关登记的 MCP server(FAT) 新开发策略处理器同 PROD 配置 身份:应用凭据(SIT)· 用户中心 FAT 出口:厂商测试账号 公网入口(存量)· 兼作网关自身验证 外部 · PROD(生产) 生产主集群 · 跨可用区 · ≥ 2 副本 开源复用业务 LLM 池 ×299.95% · 预算 · 别名路由 开源复用MCP 网关 ×2换发缓存 · 工具裁剪 新开发 + 云托管策略处理器 ×2 · RDS 高可用审批回执 · 审计 身份:应用凭据(PROD)+ 用户中心用户 出口:厂商生产账号(Key 只在网关) 公网入口:DNS → WAF → ALB → APISIX(存量) 客户云上单开 客户云账号 VPC · K8s 或 VM 开源复用网关数据面(LLM + MCP)客户专属实例 增强 · 配置最小控制面IdP 联邦到客户 IdP / 用户中心 增强 · 配置配置模式 A / BA 托管拉取 · B 客户自管 身份:客户 IdP 联邦或用户中心租户 出口:客户自有厂商账号或我司账号 专线 / 公网 · 用量摘要回传 客户属地化(离线) 客户机房 · Compose / Helm 全套 复用 + 打包网关 + 处理器 + 轻量 IdP + PG同一策略格式 新开发精简管理中心本地账户 · 本地审批 客户侧本地模型引擎vLLM · MindIE 身份:客户 IdP / 本地账户 出口:本地引擎 · 出境字段策略 离线策略包导入 · 用量签名导出 配置下发 · 用量事件 配置下发 · 用量事件 审批后发布 · 用量事件 GitOps 拉取 · 用量摘要 离线策略包 · 签名导出 凭据不跨环境:SIT 与 PROD 各自签发应用凭据;个人 Key 只在内部环境有效。配置晋级:策略仓 PR → 编译校验 → SIT 验证 → 审批 → PROD 发布,可回滚;客户环境按版本号离线导入。 网络:应用容器出站只允许到网关与登记的 MCP server(NetworkPolicy);厂商 Key 只在网关;托管环境的用量进入我司数据平台,客户环境只回传摘要或签名导出。 存量 / 网关范围外 网关范围内 · 开源或云服务直接复用 网关范围内 · 需增强或配置 网关范围内 · 需新开发 蓝色容器 = 云砺托管环境;薄荷色容器 = 客户侧环境(云上单开 / 属地化)
图 2 · 多环境部署架构(蓝色容器 = 云砺托管环境,薄荷色容器 = 客户侧环境) · 下载:SVG PNG

4.3 配置晋级与凭据隔离

  • 策略仓三条分支(main 内部、sit、prod),同一份 IR 通过合并请求晋级:编译校验 → SIT 验证 → 审批 → PROD 发布;每次发布产生 config_versionpolicy_versionprice_version,写进每条用量记录;可回滚。
  • 凭据不跨环境:每个环境的 AI IdP 独立签发;个人 Key 只在内部环境有效;SIT 与 PROD 的应用凭据各自签发;厂商 Key 按环境分账号。
  • 客户环境按版本号导入策略包,导入前校验签名与兼容版本;模式 A 的客户云上网关通过只读 GitOps 拉取自己的配置分支。

4.4 客户云上单开的两种模式

模式 A · 托管配置 模式 B · 客户自管
控制面 我司管理中心与策略仓;客户网关只读拉取自己的配置分支 客户自有精简管理中心
身份 客户 IdP 联邦到我司 AI IdP,或用户中心租户 SSO 客户 IdP 联邦到客户侧轻量 IdP
模型出口 我司厂商账号(统一计费)或客户账号 客户账号
计量 用量摘要回传我司数据平台;明细留在客户 全部留在客户,可签名导出对账
升级 我司推送镜像与配置版本 客户按发布包升级
适用 客户希望"开箱即用、我司运维" 客户有合规或数据驻留要求

4.5 客户属地化交付包

交付包 = Helm 或 Compose 模板 + 镜像:agentgateway、策略处理器、轻量 IdP(Keycloak)、PostgreSQL、精简管理中心(本地账户、本地审批、用量查看);本地模型引擎由客户或交付团队按 GPU 资源部署(vLLM / Ollama / TGI 已验证 OpenAI 兼容,MindIE 未取证)。同一策略格式与用量事件模型:策略包离线导入、用量记录签名与可验真导出、出境字段策略按路由与字段声明、单任务 Token 硬顶与超时熔断。MCP 两档:轻量内嵌只调产品自带工具;独立档对客户内网系统默认只读,写操作逐类声明并可人工暂停。

4.6 网络、隔离与 SLO

  • 出站:迁移完成后应用容器出站只允许到网关与登记的 MCP server(NetworkPolicy);厂商 Key 与下游令牌只在网关;MCP server 只接受来自网关的连接。
  • 隔离:环境独立实例;模型与 MCP 独立发布单元、独立限流与连接池;编程池与业务池按计费模型与故障域拆池。
  • SLO(沿用前序方案两档):不含处理器路径 P95 不超过 30 毫秒;含参数覆写或 step-up 路径 P95 不超过 100 毫秒;配置收敛 P95 不超过 60 秒;审计完整率不低于 99.9%;凭据原值泄露为零。压测与热更新形态在内部试点期实测。

5. 实施路线与工程量

阶段 内容 出口门槛 周期
0 · 澄清与契约 §6 的 9 项澄清;冻结 Key 元数据、三类 IR、用量事件字段;IdP 路线定稿;导出过渡代理的渠道与用量底稿 澄清项有结论、契约冻结 2 周
1 · 内部试点(LLM + Key + 门户 MVP) 内部 1 套上线编程池与业务池;飞书登录与个人 Key;套餐预算;Claude Code / Codex / pi 接入;已在过渡代理上的应用零改动切流 20 名开发者日常使用;用量与余量看板可看;无叠加重试 4 周
2 · MCP 聚合端点 + Skill 中心 + Work 工具连接器 聚合端点与三级授权;发票查验、票据归档、OCR、运维四类 MCP 登记;Key 主体换令牌验证;Skill 中心首批 10 个技能;Claude / ChatGPT 连接器 OAuth 授权页 两条真实链路通过验收;一次高风险工具审批可追溯 4 周
3 · 外部 SIT / PROD + 注册中心 + 晋级流程 项目与应用注册、授权配置、审批、SIT 到 PROD 晋级;首个客户项目应用接入;月度厂商对账单首次出表 账单能沿"应用 → 项目 → 客户"和"厂商 → 模型"两条路径拆分 4 周(随首个客户项目)
4 · 客户侧形态 客户云上单开模式 A / B 模板;属地化离线包;签名导出;NetworkPolicy 收口;过渡代理退役 一次离线安装演练通过 3 周
5 · A2A(后置) Agent 目录登记、A2A 路由与 JWT、首个内部 Agent 互调场景 按需 2 周

工程量合计约 27.5 人周(§3.4),3 人并行约 10–12 周到阶段 2 结束;阶段 3 起与客户项目节奏对齐。前序方案的 18–24 人周估算在此基础上增加了 Skill 中心(3.0)、Key 服务(约 1.5)、三方登录适配(约 0.5)、多环境打包(约 1.0)。


6. 待澄清问题

# 问题 为什么重要 本文假设
1 业务人员使用的 SaaS 型 Work 工具(ChatGPT Work、Claude Work)模型内置、不能改模型端点,网关只能以远程 MCP 连接器与 Skill 方式接入;WorkBuddy 是否支持自定义模型端点与请求头需确认 决定 I-2 的覆盖范围与"业务人员经网关用模型"的口径 按连接器 + Skill 设计;支持自定义端点的工具按场景 B
2 个人 Key 是否也要覆盖订阅套餐型客户端(Claude / Codex 订阅态直连厂商,不经网关) 影响"所有模型流量经网关"的承诺与成本 只管 API 计费类;订阅态不经网关
3 内部 1 套落生产主集群(本文)还是 FAT 主集群;网关自身变更是否借用外部 SIT 验证 影响可用性与集群资源申请 生产主集群独立命名空间;借用 SIT
4 外部应用凭据形态:client_credentials 换 JWT(推荐)还是简单应用 Key 影响客户接入难度与安全档 两档都支持,默认推荐 JWT
5 客户云上单开的控制面归属(模式 A 托管 / 模式 B 自管)与计费口径(我司厂商账号统一计费还是客户自有账号) 影响交付形态、运维责任与合同 两种模式都提供,默认模式 A
6 Skill 分发形态:Claude Code 插件市场清单 + Agent Skills 标准仓库 + 安装脚本是否足够;是否需要 Codex / Cursor 专用适配 影响 Skill 中心范围 三种形态 + MCP 工具
7 A2A 的优先级与首个场景(xagent 内部 Agent 互调,还是外部伙伴 Agent) 决定阶段 5 是否启动 后置,首个场景为内部互调
8 企微与钉钉当前是否有真实使用者;客户侧是否已通过用户中心联邦 决定三方登录适配顺序 飞书先行;企微 / 钉钉按需
9 管理中心 MVP 是否可先用 agentgateway 管理界面 + 飞书审批 + 多维表格过渡,控制台后置 影响阶段 1 工期 可以过渡,阶段 3 前补齐控制台

附录 A · 术语

术语 含义
AI IdP AI 侧身份提供者(Keycloak):登录桥、联邦、OAuth 2.1 授权页、换发
登录桥 用户在用户中心登录、AI IdP 在服务端校验后签发 AI 令牌的机制;AI IdP 不持有用户中心密钥
逐跳换发 每一跳使用只对该跳受众有效的短期令牌(RFC 8693)
个人 Key 管理中心发给每位员工的凭据,带身份与套餐元数据,用于 LLM / MCP / Skill
应用凭据 注册中心为应用签发的 OAuth 客户端或应用 Key
别名 业务只用的稳定模型名,映射到厂商模型的优先级组,版本化
聚合端点 MCP 网关上把本人有权访问的多个 MCP server 合并暴露的地址
ExtMCP agentgateway 的外部 MCP 处理器扩展点,本方案的策略处理器落在这里
三类 IR ToolPermissionSet、ModelRouteSet、RegistryEntry,策略的中间表示,编译为网关配置
Skill 按 Agent Skills 开放标准打包的技能(SKILL.md + 脚本与资源),Agent 按需加载
A2A Agent 到 Agent 协议,Agent Card 描述能力与入口
CIMD / DCR 客户端身份元数据文档 / 动态客户端注册,让未预注册的客户端完成 OAuth

附录 B · 与前序文档的关系

前序文档 本文引用处 未重复的内容
01-AI-Gateway方案设计.md §1.7、§2.2 预算、§2.3 换发与审批、§4.6 SLO 现状盘点、契约字段草案、用量记录字段、风险清单
02-需求评估与接纳矩阵.md §0 结论 3、§2 顾磊 4 条、翟保延 38 条、我的思考 16 条的逐条接纳与 38 条验收
03-实体关系与场景时序.md §2.5 场景 C、G 沿用其换发链路 实体关系图、6 个场景时序
04-现状盘点与证据索引.md §1.4 源码取证结论 湖仓 SQL 与结果、源码 file:line

附录 C · 参考资料(2026-09-10 查阅)

  • agentgateway 发布说明(v1.4.0、v1.4.1、v1.5.0):https://github.com/agentgateway/agentgateway/releases
  • agentgateway 文档:https://agentgateway.dev/docs/
  • agentgateway 实践文章(LLM、MCP、A2A 一个数据面,Key 元数据与预算配置):https://mehdihadeli.com/blog/agentgateway-ai-gateway
  • Higress 仓库与发布说明(v2.2.0–v2.2.4):https://github.com/higress-group/higress 、https://github.com/higress-group/higress/releases
  • Higress 加入 CNCF(2026-03):https://www.cncf.io/blog/2026/03/25/higress-joins-cncf-delivering-an-enterprise-grade-ai-gateway-and-a-seamless-path-from-nginx-ingress/
  • awesome-ai-gateway(160 余个网关的汇总与 2026 年整合观察):https://github.com/cuihuan/awesome-ai-gateway
  • Agent Skills 开放标准与市场现状:https://blog.agentailor.com/posts/top-ai-agent-standards-2026 、https://skills-hub.ai/glossary/agent-skills-marketplace
  • SkillProbe:对公开 Skill 市场的安全审计(31,132 个 Skill,26.1% 含漏洞):https://arxiv.org/pdf/2603.21019