Cloudflare 把内部 AI 工程栈公开后,团队真正该补的不是再换模型,而是把身份、路由、上下文和审查链路接成一个系统
Cloudflare 把内部 AI 工程栈公开后,团队真正该补的不是再换模型,而是把身份、路由、上下文和审查链路接成一个系统
先说结论
如果你团队这两个月也在推 AI 编码工具、MCP Server、代码 Agent,Cloudflare 这篇内部 AI 工程栈 复盘最值得看的,不是“又一家大厂全面上 AI 了”,而是它把一个很多团队迟早都会撞上的问题说透了:模型接进来只是开始,真正决定 AI 能不能规模化落地的,是身份认证、请求路由、上下文供给、代码审查和执行隔离这几层能不能被接成一个系统。
Cloudflare 公布的数据非常夸张,但也非常有启发:过去 30 天,Cloudflare 有 3,683 名内部用户在用 AI 编码工具,占全公司约 60%,占 R&D 组织 93%;同期经由 AI Gateway 的请求量达到 20.18M,累计路由 241.37B tokens,Workers AI 处理了 51.83B tokens。更关键的是,他们把这套内部 AI 工程栈,尽量建立在自己已经对外提供的产品层上,而不是靠一堆只供内部维护的临时脚本拼起来。
我的判断是:这条更新对 TG Hubs 的站点相关性高,实践价值高,置信度高。因为它不只是讲“用了哪些模型”,而是同时给了官方技术复盘、Cloudflare Docs、MCP Portal 文档、Code Mode 文档、Agents SDK/README 这些能直接抄作业的一手材料。
这件事的核心问题
现在很多团队谈 AI 落地,讨论顺序经常是这样的:
- 先选模型;
- 再接 IDE 或聊天入口;
- 然后补几个 MCP Server;
- 最后发现成本、权限、审查、上下文开始失控。
问题就在这里。
AI 编码工具看起来像“一个新入口”,本质上却是在重写研发流程。 一旦组织里几百上千人开始同时让 Agent 读代码、改代码、跑工具、提 MR,原本分散在各个系统里的问题会一起被放大:
- 谁能调用哪个模型,怎么计费,谁来做留痕;
- API Key 要不要发到每个人电脑上;
- 一个 Agent 看到的仓库上下文够不够,是否知道团队约定;
- 工具越来越多后,context window 会不会先被工具 schema 吃掉;
- 代码是 AI 先写出来了,但谁来做最后的质量兜底;
- 真要让 Agent 在云里跑长任务,隔离和凭据怎么做。
所以这次 Cloudflare 最值得看的点,不是“AI 用得多”,而是它已经把问题从“单点接入模型”,升级成了“怎么搭一条可治理、可审计、可扩展的 AI 工程栈”。
关键机制拆解
1)统一入口不是为了省配置,而是为了把治理权收回来
Cloudflare 内部这套 AI 工程栈,最核心的设计不是某个模型,而是统一入口。
官方复盘里写得很直接:所有内部 LLM 请求先经过 Cloudflare Access 做身份认证,再统一经过 AI Gateway 做路由、成本追踪、BYOK 和 Zero Data Retention 控制。为了不让 API Key 落到用户机器上,他们没有让客户端直连模型厂商,而是做了一层代理 Worker。
这件事的价值,不只是“登录方便”。本质上它解决了四个非常现实的问题:
- 身份统一:用户继续走公司原有 SSO,而不是给每个 AI 工具单独发凭据;
- 密钥回收:真实模型密钥只在服务端注入,不散落到员工本地;
- 路由统一:OpenAI、Anthropic、Google、Workers AI 等多模型流量从一个控制点出去;
- 记账统一:谁用了多少 token、哪个团队成本高、哪些任务值得切到开源模型,终于能被看见。
这也是为什么官方强调“one URL to configure everything”。很多团队以为统一入口只是体验优化,实际上它更像 AI 时代的研发流量总闸门。没有这一层,后面所有权限控制、匿名归因、模型替换、成本治理都会变得非常难做。
2)AI 工程栈的真正瓶颈,不是模型能力,而是上下文税
Cloudflare 这次给出的一个细节很有价值:他们的 GitLab MCP Server 最初暴露了 34 个独立工具,光这些 tool schema 就要占掉大约 15,000 tokens 的上下文。
这个数字乍看不大,但如果你把它放进高频工程场景里,问题就出来了:在 200K context window 下,还没真正开始做事,7.5% 的预算已经先被工具定义吃掉了。再乘以每个请求、每个工程师、每天的交互次数,这就不只是 prompt 细节,而是结构性成本。
Cloudflare 给出的解法,是在 MCP Portal 层引入 Code Mode。官方文档写得很清楚:Code Mode 会把一堆上游工具折叠成一个 code tool,模型不是一条条调用工具,而是先写 JavaScript,再在隔离的 Dynamic Worker 环境里执行。
这背后的逻辑很值得抄:
- 不是让模型记住越来越多工具;
- 而是让模型在一个固定接口里,通过代码去编排工具;
- 工具越多,客户端看到的入口反而越少;
- context 成本从线性增长,变成更接近常量。
如果你现在团队也在加 MCP Server,这里最该学的不是“Portal 很酷”,而是一个更底层的判断:AI 工程栈一旦进入多工具阶段,先优化的不该是 Prompt,而该是工具暴露方式。
3)光有仓库代码不够,AI 工程栈必须补组织级上下文
很多代码 Agent 在 Demo 阶段表现不错,一进真实仓库就翻车,问题通常不在“不会写代码”,而在“看不见系统外的信息”。
Cloudflare 这次把这部分拆成了两层。
第一层是 Backstage 服务目录。官方文章里给了很具体的数据:它们在 Backstage 里维护了 2,055 个服务、228 个 API、544 个系统、1,302 个数据库、375 个团队以及 6,389 个用户的 ownership 映射。Agent 可以通过 Backstage MCP Server 直接查询“谁负责这个服务、它依赖哪些数据库、API schema 在哪、上下游关系是什么”。
第二层是 AGENTS.md。这部分尤其值得中大型研发团队重视。Cloudflare 发现,很多 Agent 生成的改动“看起来合理但对仓库来说仍然是错的”,往往是因为模型不知道:
- 正确的测试命令是什么;
- 代码目录怎么导航;
- 团队当前约定是什么;
- 哪些目录不能动;
- 哪些依赖关系会被影响。
于是他们把这些内容压缩成每个仓库一份短而高信号的 AGENTS.md,并且已经用自动化流程处理了大约 3,900 个仓库。
这件事的重要性在于:AI 工程栈不是只给模型更多上下文,而是把原本散落在人脑、Wiki、历史习惯里的上下文结构化。
如果没有这层,模型读到的是“代码”;有了这层,模型读到的才是“代码所在的组织环境”。
4)真正能把 AI 工程栈拉到生产级的,不是生成能力,而是审查能力
现在很多团队把“代码 Agent 落地”理解成自动写 PR,但 Cloudflare 这次的重点明显不在“写得更快”,而在“怎么让大规模 AI 改动还能被安全吸收”。
官方文章说得很明确:Cloudflare 现在标准 CI 流程上的每一个 Merge Request,都有 AI Code Reviewer 覆盖。它的做法不是一个单 reviewer,而是一个多 Agent 协调器:先给 MR 做风险分级,再分发给代码质量、安全、文档、性能、规范、发布影响等不同 reviewer。
这套设计有三个关键点:
- 审查结构化:输出按 Security、Code Quality、Performance 等分类,而不是一大段自然语言;
- 严重级别清晰:Critical、Important、Suggestion、Optional Nits 分层,降低工程师阅读成本;
- 规范可引用:当问题命中 Engineering Codex 规则时,会直接引用规则 ID,把“AI 建议”变成“组织标准反馈”。
Cloudflare 还提到,Workers AI 已经承担了大约 15% 的 reviewer 流量,主要用于文档审查等性价比更高的任务,而安全和架构复杂的审查仍会路由到更强的 frontier 模型。
这说明一件事:生产级 AI 工程栈的核心,不是所有任务都上最强模型,而是根据风险和任务类型做分层路由。
5)下一阶段不是更多聊天窗口,而是能在云里持续运行的后台 Agent
Cloudflare 在文末给出的下一步路线,也很值得注意:他们不是继续强调“聊天入口”,而是要把 Agent 推到后台长任务场景。
对应的基础设施是:
- 用 Agents SDK + Durable Objects 管理持久会话;
- 用 Sandboxes 承担需要 shell、文件系统、依赖安装和测试执行的任务;
- 让 Agent 能在一个长会话里完成 clone repo、跑测试、修错、再开 MR 的完整闭环。
这条路线的意义在于,AI 工程栈开始从“辅助工程师”转向“承担一部分真正的工程执行环节”。
如果说上一阶段大家比的是谁更会聊天,下一阶段比的就是:
- 谁能跑更久;
- 谁能带着状态继续做事;
- 谁能在不暴露凭据的前提下操作更多系统;
- 谁能把执行结果稳稳送回现有 CI/CD 和审查链路里。
两个常见误区
误区一:AI 工程栈 = 选一个最强模型 + 接一个 IDE 插件
这基本是最常见的误判。
模型和 IDE 只是入口层。Cloudflare 这次最强的地方,恰恰在于它把认证、代理、路由、知识目录、仓库上下文、审查规则、执行环境全部串起来了。
换句话说,模型能力决定上限,工程栈设计决定能不能规模化。
误区二:MCP Server 接得越多,Agent 就越强
也不对。
工具数量多,并不天然等于可用性高。Cloudflare 官方文档已经把这个问题点透:工具越多,context window 越容易先被 schema 吃掉,响应成本和复杂度也会一起上升。
所以 MCP 真正要优化的,不只是“接更多工具”,而是:
- 怎么做工具选择;
- 怎么减少无关上下文;
- 怎么在 Portal 层集中治理;
- 怎么用 Code Mode 把上下文税打下来。
案例 / 类比
你可以把这套 AI 工程栈理解成“给研发组织加了一座机场控制塔”。
很多团队现在加 AI,很像突然买来一批更快的飞机:
- 模型更强了;
- Agent 会写代码了;
- 工具也接进来了。
但如果没有塔台,飞机越多,混乱越大:
- 谁先起飞、谁先降落不清楚;
- 哪条航线最省油看不见;
- 哪架飞机没拿到授权也可能乱飞;
- 真出了问题,没人能快速回放全链路。
Cloudflare 这次做的,本质上不是“再买更快的飞机”,而是先把塔台、航线、地勤和黑匣子补齐。这样一来,AI 才不只是一个聪明副驾,而是能进入大规模运营体系的一部分。
对你的实际影响
- 对个人开发者:如果你只是本地偶尔用下 AI 编码工具,这套方案看起来会有点重。但一旦你开始跨多个仓库、多个工具、多个模型切换,就会立刻感受到统一认证、统一路由和固定上下文模板的重要性。
- 对团队负责人:最该投入的,不只是买更多模型额度,而是先把仓库约定、测试命令、禁改边界、服务所有权这些信息结构化,不然 AI 用得越多,review 成本越高。
- 对平台工程 / DevEx 团队:这条案例最值得抄的不是某个 SDK,而是“代理层 + 目录层 + 审查层”的三段式架构。没有这三层,AI 往往只能停留在 Demo。
- 对企业管理层:如果你看的是 ROI,这篇文章真正给你的启发不是“AI 需求很大”,而是 AI 支出、模型策略、权限治理和研发产出,终于可以在同一张系统图里被管理。
可执行建议
- 先做一个统一 AI 入口:不要让员工各自直连不同模型和不同 API Key。即便你暂时没有 Cloudflare 这类完整平台,也应该至少有统一代理、统一身份和统一记账层。
- 把仓库上下文写成结构化文件:不一定非要叫
AGENTS.md,但测试命令、目录规则、禁改边界、依赖关系必须显式化。 - 把 MCP 治理前置,而不是事后补救:多工具环境里,要优先考虑 portal、工具裁剪、权限策略和 context 优化,而不是先把所有工具都暴露给模型。
- 把审查做成平台能力:至少要做到风险分级、结构化输出、规则可引用、历史问题可追踪,而不是让 reviewer 只看一段 AI 评论。
- 用任务分层决定模型分层:高风险架构审查、安全审查和低风险文档审查,不应该默认使用同一档模型。先按任务类型做路由,成本控制才会真正有效。
风险与不确定性
第一,这套案例来自 Cloudflare 自己的内部实践,天然带有平台厂商视角;它证明的是“这条路可行”,不等于任何团队今天照搬都能得到同样的速度提升。
第二,Cloudflare 本身已经有很强的平台工程能力、Zero Trust 基础和服务目录积累,中小团队未必一开始就有同样的组织土壤。
第三,文中很多指标是整体使用量和平台流量,并不等于每一个子系统都已经在所有场景下达到最优。
第四,后台长任务 Agent 这条路虽然方向很清晰,但执行隔离、权限注入、失败恢复和合规留痕,仍然会是后续落地时最容易踩坑的地方,置信度中高。
一句话复盘
Cloudflare 这次公开内部 AI 工程栈,真正值得抄的不是“93% 的研发都在用 AI”,而是它证明了:当 AI 进入真实研发组织后,决定成败的不是再换一个更强模型,而是能不能把身份、路由、上下文、审查和执行环境收拢成一条可治理的工程链路。
参考来源:
- Cloudflare Blog(2026-04-20):The AI engineering stack we built internally — on the platform we ship
- Cloudflare Blog(2026-04-20):Building the agentic cloud: everything we launched during Agents Week 2026
- Cloudflare Docs:AI Gateway / MCP server portals / Codemode
- GitHub:cloudflare/agents README、cloudflare/mcp-server-cloudflare README