LLM网关不是控制平面:Agent绕过治理的真相

LLM网关只能治理经过它的流量,Agent可绕行直连模型API,真正的治理需在网络层与身份层建立强制边界。
本文源自一场关于LLM网关架构局限性的技术讨论,核心论点是:LLM网关(如LiteLLM、Portkey)作为反向代理,只能治理主动经过它的流量,而拥有凭证和网络访问权限的Agent完全可以绕过网关直连模型API或工具端点。这意味着"部署了网关≠Agent被治理",网关是治理的一个组件而非边界本身。真正的控制平面需要叠加出口强制(在网络层切断绕过路径)、影子发现(检测已发生的绕过行为)和严格的身份层(可验证的调用归属)三个维度,才能将治理从"应用层自愿"升级为"基础设施层强制"。随着Agent环境日益分散于Kubernetes集群、云端运行时、MCP服务器等异构基础设施,这一架构缺口的风险将持续放大。
一个被忽视的架构问题
如今,几乎每个AI团队的技术栈中都能找到一个LLM网关(LLM Gateway)。它负责路由模型调用、集中管理凭证、添加日志、施加速率限制,甚至处理开销追踪。像 LiteLLM、Portkey、OpenRouter 这类工具已经成为许多生产环境的标配。
但一个来自 Reddit 的技术讨论提出了一个相当根本却常被忽视的问题:如果一个 Agent 根本不使用网关,会发生什么?
这个问题看似简单,却触及了 Agent 治理(Agent Governance)的核心。当我们把网关部署在技术栈中时,我们默认它就是"治理边界"。然而现实是,网关只能治理那些经过它的流量——对于绕过它的流量,它无能为力。

流量控制 ≠ 路径控制
原帖作者用一张简洁的架构图揭示了问题的本质:
┌──→ LLM Gateway ──→ Models
Agent ───┤
├──→ Direct provider API
├──→ Direct MCP/tool endpoint
└──→ Other external egress
在这个结构中,Agent 完全可以选择不走网关这条路。它可以:
- 直接调用模型提供商的 API
- 直接访问 MCP/工具端点
- 通过其他外部出口(egress)发起请求
此时,网关仍然在"尽职工作"——它照常路由、记录、限流。但它不再治理这个 Agent。
作者由此提出了一个关键洞察:流量控制(traffic control)和路径控制(path control)是两个不同的问题。 一个代理(proxy)无法强制约束那些从未到达它的流量。换句话说,如果治理机制依赖于"流量必须经过网关"这个前提,那么只要 Agent 拥有绕过网关的能力,整个治理体系就形同虚设。
网关是组件,不是边界
这里的核心论点是:LLM 网关应该被视为 Agent 治理的一个组件,而非治理边界本身。
这是一个重要的心智模型转变。很多团队在部署网关后会产生一种"安全错觉"——认为只要流量走了网关,Agent 就被管住了。但实际上,网关能提供的治理能力,仅覆盖那些"愿意"或"被迫"经过它的流量。真正的治理边界,需要在网络层、身份层等更底层的位置建立。
构建无法绕过的治理架构
针对这个问题,原帖作者提出了一种更严密的分层架构:
Agent
↓
Agent Gateway
↓
LLM Gateway / Governed Tools
↓
Models + APIs + 网络/出口强制 + 身份 + 影子发现
这个架构的关键在于,它不再假设"把流量路由过网关就等于 Agent 被治理了",而是通过多个层次共同构建治理边界:
出口强制(Egress Enforcement)
这是从网络层堵住绕过路径的关键。即便 Agent 拥有凭证和绕过意图,如果网络层面限制了它能访问的出口目标,它就无法直接连接到未经治理的模型或工具端点。这把治理从"应用层的自愿"变成了"网络层的强制"。
影子发现(Shadow Discovery)
影子发现用于检测那些绕过网关的隐蔽路径。在一个分布式的 Agent 环境中,你很难保证所有 Agent 都规规矩矩地走网关。影子发现的作用是主动识别出这些"影子流量"和"影子端点",从而暴露并关闭绕过路径。
身份(Identity)
身份层确保每个 Agent 的每次调用都有明确的、可验证的身份归属。这是把访问控制策略真正落地的前提——没有身份,就谈不上精细化的授权和审计。
原帖提到 Lyzr Open Controller 在这方面比较有意思:它将网关与出口强制、影子发现配对使用,专门用于检测和关闭绕过路径,而不是简单假设"路由即治理"。
为什么这个问题会越来越重要
作者预判,随着 Agent 部署环境(agent estates)变得越来越分布式,这个问题的严重性会持续放大。今天的 Agent 可能分散在:
- Kubernetes 集群
- 云端 Agent 运行时(cloud agent runtimes)
- MCP 服务器
- 内部自托管服务
在如此碎片化的环境中,"所有流量都乖乖走网关"这个假设越来越难以成立。每一个拥有凭证和网络访问权限的 Agent,都是一个潜在的绕过点。
这引出了原帖最尖锐的一问:如果一个 Agent 同时拥有凭证和网络访问权限,能够直接调用模型或工具,那么究竟是什么在真正阻止它绕过?
结语:架构图之外的真实答案
这场讨论的价值,不在于给出一个标准答案,而在于戳破了一个普遍存在的架构假象。原帖作者最后特别强调,他想听的是在真实生产环境中真正有效的做法,而不是架构图上"应该有效"的设计。
这提醒我们,Agent 治理的落地远比画图复杂。从工程实践角度,几个方向值得深入思考:
- 收紧凭证分发:Agent 是否真的需要能直接调用提供商 API 的原始凭证?还是应该只发放经过网关代理的短期令牌?
- 网络层强制:通过 egress 策略、防火墙规则或服务网格,在网络层面切断绕过路径,让"走网关"从可选变成唯一选择。
- 持续发现与审计:假设绕过一定会发生,通过影子发现机制持续暴露它,而非依赖一次性配置。
归根结底,一个真正的控制平面(control plane),必须是 Agent 无法绕过的。当绕过成为可能时,网关就只是一个"可选的便利设施",而非"治理的边界"。这个区别,正是从"看起来受控"走向"真正受控"的分水岭。
相关推荐

@ai-sdk/zai@3.0.10 发布:依赖更新的补丁版本解析
Vercel AI SDK 发布 @ai-sdk/zai@3.0.10 补丁版本,同步更新 provider、provider-utils 与 openai-compatible 等底层依赖。本文解析该版本变更内容及 AI SDK provider 体系的设计意义。

Vercel AI SDK 更新:@ai-sdk/workflow 2.0.29 修复工具结果保留问题
Vercel AI SDK 发布 @ai-sdk/workflow 2.0.29 补丁版本,核心修复工作流在终止、延迟、暂停三种响应状态下 provider 工具执行结果的保留问题,并同步升级 ai@7.0.98 等核心依赖。

Vercel AI SDK 更新:@ai-sdk/xai 4.0.58 批处理与图像生成改进
Vercel AI SDK 发布 @ai-sdk/xai 4.0.58 版本更新,新增批处理图像生成支持,修复批处理请求类型校验及 DeepSeek 推理流问题,并同步升级 provider 相关依赖。