版本:v1.0 · 2026-09-10 · 评审稿 作者:Claude Code(樊国柱会话)
读者:技术管理层、平台与基础设施团队、AI 应用与 Agent 开发团队、交付与售前
定位:在《企业 AI Gateway 方案设计》(v1.0 · 2026-09-07,下称"前序方案")基础上,按公司口径重组为一份面向全员的总体方案:整体架构与架构图、权限管理与认证全流程、技术选型、多环境。前序方案中的现状盘点、需求接纳矩阵、契约字段与工程量明细不再重复,只在需要处引用。
配套:前序方案(01–04)、汇报页与架构图页(Cloudflare Pages)、飞书画板文档。
证据等级沿用前序方案:实测证实(POC S1–S7 / 49 项检查)、文档取证(agentgateway v1.5.0、Higress v2.2.4 的文档与发布说明,2026-09-10 查阅)、湖仓取证、源码取证、需自建、未取证。未标注等级的判断均为设计判断。
0. 一页结论
- 一个产品、四类能力、一把 Key。 AI 网关 = LLM 网关 + MCP 网关 + Skill 中心 + A2A 网关(低优先级),由同一个管理中心(门户 / 控制台)管理。内部每人一把个人 Key,同时用于模型、MCP 和 Skill;使用方只需配置网关地址与 Key,不再单独申请权限或凭证。
- 身份汇聚到一个 AI IdP。 我司 SaaS 用户中心是客户身份的权威源;内部员工以飞书登录为主;企微、钉钉、客户自建 IdP 以联邦方式接入 AI IdP(Keycloak)。AI IdP 不复制用户目录、不持有用户中心的签名密钥,只做登录桥、协议适配和逐跳换发。
- 权限是配置资产,不写在业务代码里。 模型按"别名白名单 + 套餐 / 预算 + 速率 + 守卫"管;MCP 按"登记表 + server / 工具 / 参数三级授权 + 逐跳换发 + 审批"管;Skill 按"审核 + 签名 + 可见性"管。三类策略统一编译成网关配置,带版本、可回滚。
- 数据面选 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 技术栈。
- 自研集中在控制面。 管理中心(门户 / 控制台 / 注册中心 / Key 服务)、登录桥与三方登录适配、策略仓与编译流水线、策略处理器(ExtMCP)、Skill 中心、计量对账与看板。不改 agentgateway 源码,只用它的扩展点。
- 多环境五种形态、一套模板。 云砺托管三套:内部 1 套、外部 SIT、外部 PROD(生产集群跨可用区);客户侧两种:客户云上单开、客户属地化离线包。同一 Helm / Compose 模板与策略格式,凭据不跨环境。
- 工程量约 24–30 人周。 较前序方案的 18–24 人周增加了 Skill 中心、Key 服务、三方登录适配与多环境打包;3 人并行约 10–12 周到内部试点,外部 SIT / PROD 随首个客户项目上线。
- 需要和需求方澄清 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 架构图
读图顺序:左栏是四类使用方与其凭据(个人 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、稳定主体 sub、tenant、roles_ref、channel;短期有效并可刷新;用户中心侧登出或禁用通过事件与短 TTL 传播,撤权目标只读 60 秒内、高风险写操作每次在线复核。
1.5 一把 Key:个人 Key 的设计
| 项 | 设计 |
|---|---|
| 形态 | 前缀 xf-ak- + 随机 32 字节(Base62);只在生成时显示一次;服务端只存哈希;默认有效 180 天可续期;每人最多 3 把(按设备或用途命名) |
| 元数据 | sub(内部稳定 id)、tenant=internal、dept、role、plan(套餐)、channel=personal、env;元数据进入 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 令牌(飞书登录) | sub、dept、role、plan、channel |
I-1 至 I-4 |
| 客户用户 | AI 令牌(用户中心登录桥) | sub(用户中心 userId)、tenant、account、company_scope_ref、roles_ref |
E-3、E-4 |
| 应用 / Agent(工作负载) | 应用凭据:client_credentials 换 JWT(推荐)或应用 Key(简化档) |
azp、app_id、project_id、app_version、env |
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-sota、coding-fast、general);应用:授权别名集合;未授权别名返回 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_search 与 skill_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 不引入。 五条理由:
- 需求核心是"一把 Key 的元数据驱动授权 + MCP 三级授权与逐跳换发 + 计量字段",agentgateway 原生覆盖;Higress 这三项要靠 Wasm 插件补。
- 公司没有 Higress 存量,南北向不会因 AI 网关而重构;Higress 最大的优势在此用不上。
- 五种环境形态里三种在客户侧,交付包越轻越好;agentgateway 单二进制、无 Nacos / Redis 依赖。
- POC 已在 agentgateway 上跑通 49 项检查,团队已有踩坑记录;换 Higress 意味着重做验证。
- 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 部署架构图
4.3 配置晋级与凭据隔离
- 策略仓三条分支(main 内部、sit、prod),同一份 IR 通过合并请求晋级:编译校验 → SIT 验证 → 审批 → PROD 发布;每次发布产生
config_version、policy_version、price_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