Cloudflare Forge:把 SDK / CLI / 文档生成做成开源管道

Cloudflare
开源
SDK
CLI
API
工具链
2026/10/4
·

阅读时间: 大约 9 分钟

Cloudflare Forge:把 SDK / CLI / 文档生成做成开源管道

Forge 在 CI 中连接数百个 API 仓库并产出预览与正式产物(官方架构图)

2026 年 9 月 28 日(Cloudflare Birthday Week),Dimitri Mitropoulos、Matt “TK” Taylor 与 Samuel Macleod 在官方博客发布并开源了 Forge:一条可插拔、任何人都能免费部署运行的代码生成管道,用来从 API 规范自动产出 SDK、CLI、文档、库乃至 MCP 服务器。官方称它”已经在为 cf CLI 生成所需产物”,未来数月还将接管 Cloudflare 的 API 文档与各语言 SDK。许可证为宽松的 Apache 2.0。

一、为什么 Cloudflare 要重写自己的生成器

Cloudflare 的 API 规模是这件事的起点:官方称其 API 有超过 3500 个操作,背后由数百个服务驱动,这些服务分别用 Rust、Go、TypeScript、Python 写成。当他们要为整个 Cloudflare API 构建统一的 CLI、SDK 和文档站时,就需要一条能跨语言、跨团队工作方式的生成管道。

他们过去尝试并依赖过若干托管(SaaS)代码生成产品,结论是:没有一个真正解决这个问题,其中一些还直接关停了。更痛的是协作模型——某个产品团队合并了一个改动,无意中破坏了生成管道,而另一个团队要到发版时才发现,于是只能回滚上游的多个 PR。

Forge 的思路是把生成管道放进每个团队自己的 CI 里,像代码审查和测试流水线一样:每次改动都先 lint,再生成一个只含本次改动的可安装预览版(CLI、文档、SDK)。这与 Workers Previews”每次改动都给一个完整预览”的理念一致,只是把它搬到了横跨数百仓库的 SDK 生成上。

Forge 引入前后的失败检测时机对比(官方)

二、是什么:一条可链式组合 Transformer 的管道

Forge 不是”从 OpenAPI 到某语言 SDK”的单点转换器,而是一组可以串接的 Transformer(转换器)。官方给出的主干链路是:OpenAPI 规范 → 生成 TypeScript SDK → 再从 TypeScript SDK 生成 cf CLI 与 Cap’n Web(Cloudflare 的 RPC 系统,让 TS 像调本地方法一样调远程 API)→ 最后连同各语言产物一起汇总成文档。

从 OpenAPI 到 TypeScript SDK、CLI、Cap'n Web 再到文档的链式生成(官方)

这个”链式”是 Forge 与多数生成器的关键差异。传统工具通常固定地从某一个中间产物(如 Go SDK)派生 CLI 和 Terraform,用户没有控制权。Forge 把决定权交回用户:Cloudflare 自己的 cf CLI 是 TypeScript 写的,而别的生成器一般不会从 TypeScript SDK 派生 CLI;如果你是 Python 团队,也完全可以让 CLI 用 Python 生成。

支持这种链式的另一个现实原因是:CLI 与 SDK 不同。CLI 常常带一些纯本地、不对应任何 API 调用的手写命令,例如 cf CLI 的 cf dev、cf build,它们要调用 Vite 等其它包的 TypeScript API。如果 CLI 和文档都纯由 OpenAPI 生成,这些手写命令就无法进入文档。Forge 的做法是让手写命令与生成代码混排,并把它们一并反馈进文档产物。

三、输入与输出:今天支持什么,规划支持什么

维度当前(官方口径)规划中
输入规范OpenAPIAsyncAPI、GraphQL、Cap’n Proto、Protobuf、Arazzo
输出语言 SDKTypeScript(已用于 cf CLI)Rust、Go、Python、PHP、Terraform
衍生产物cf CLI、Cap’n Web、文档MCP 服务器、Changelog、TanStack Query / Zod / Valibot 绑定
运行位置跑在各团队 CI,每 PR 生成预览—

官方特别强调 Terraform:他们知道升级任何 Terraform provider 都极其严谨,会在迁移上格外小心。此外,Forge 还在为 Cloudflare 的 API 版本化铺路——v4 API 已经用了 10 年,期间按 SemVer 标准其实已经攒下不少”够格发大版本”的改动,但直接切 v5 会抛弃大量老客户;Forge 在沿途产出构件的能力,正是为”发新大版本而不破坏老 SDK”服务的。

四、评测方法与口径偏差

需要泼几盆冷水:

  1. 项目尚处早期。官方自述”early in its life”,今天的输入只支持 OpenAPI,AsyncAPI/GraphQL/Protobuf 等都还是”设计上支持、尚未落地”;多语言 SDK 与 Terraform 也还在路线图上。换句话说,现在能直接拿来用的成熟度有限,更多是这套架构思路。
  2. 没有公开的生成质量基准。Forge 是工程管道而非算法模型,官方没有、也不太可能给出”生成正确率”这类数字;它宣称的收益(失败提前到 PR 阶段、免去跨团队与供应商协调)来自 Cloudflare 自身规模的痛点,小团队未必有感。
  3. 对比对象是”商业 SaaS 关停”的叙事,而非逐项 benchmark。文中对 Stainless、Speakeasy 这类托管服务的批评是”解决不了我们的规模、有的关停了”,并没有给出生成代码质量的横向数据。这个结论对 3500 操作级别的公司成立,不等于小团队迁过去一定更省事。

五、优势与局限

优势:

  • 去中心化、跑在 CI:每个 API 仓库自己 lint + 预览,失败在 PR 合并前就暴露,而不是发版时才发现;
  • 可链式、用户可控:从哪个中间产物派生 CLI / MCP / RPC 由你定,手写命令能与生成代码共存并进入文档;
  • 彻底开源、可私有运行:Apache 2.0,你可以本地改、私下跑,不依赖任何 SaaS,也不必交出自己的 API 规范。

局限:

  • 生态早期:输入格式与目标语言覆盖不全,Terraform 等关键产物尚未就绪;
  • 价值与规模强相关:它解决的是”数百仓库、3500 操作”的协调问题,单体小 API 用它可能比直接手写 SDK 更重;
  • 迁移成本被轻描淡写:从现有托管生成器迁到自建 CI 管道,lint 规则、预览分发、跨仓库聚合都需要自己搭。

六、谁该关注

  • 维护多语言 SDK / CLI 的平台型团队,尤其是 API 分散在大量仓库里、深受”上游一个改动弄坏下游生成”之苦的人;
  • 想把 API 规范同时喂给 MCP 服务器、RPC binding、前端数据请求库的团队——Forge 的链式 Transformer 正好覆盖这类”一份规范、多个消费面”的需求;
  • 对供应商锁定敏感、不愿把 API 规范交给第三方 SaaS 的组织。

如果你只是一个十来人的小服务、SDK 一年更新不了几次,那这套管道暂时 overkill;但它代表的”把开发者产物生成基础设施开源、免费化”方向,确实在挤压 Stainless 这一类商业 SDK 生成服务的空间。

参考来源