Cloudflare 擁有龐大的 API 範圍,涵蓋超過 100 個產品和近 3,000 個 HTTP API 操作。

隨著時間推移,代理程式成為我們 API 的主要使用者。開發者透過代理程式在 Cloudflare 上建置和部署應用程式、代理和平台,配置帳戶,並查詢分析和日誌資料。

我們希望讓每個 Cloudflare 產品都能以代理程式所需的各種方式使用。例如,我們現在已將 Cloudflare 的完整 API 集中於單一 Code Mode MCP 伺服器中,且僅使用不到 1,000 個 token。然而,還有更多介面需要涵蓋:CLI 指令、Workers 綁定(包含本地開發與測試的 API)、多語言 SDK、設定檔、Terraform、開發者文件、API 文件與 OpenAPI 架構,以及代理技能。

目前,許多產品尚未在所有這些介面中提供完整支援,尤其是 CLI 工具 Wrangler。許多 Cloudflare 產品在 Wrangler 中沒有對應的 CLI 指令,而代理程式非常喜愛 CLI。

因此,我們正在重建 Wrangler CLI,目標是成為涵蓋所有 Cloudflare 產品的 CLI,提供所有產品的指令,並允許使用基礎設施即程式碼的方式一同配置。

今天,我們分享下一代 Wrangler 的早期技術預覽版本。雖然仍處於非常初期階段,但我們相信公開開發能獲得最佳回饋。

你可以透過執行 npx cf 試用此技術預覽,或使用 npm install -g cf 全域安裝。

目前,cf 指令僅支援 Cloudflare 產品的一小部分。我們已在測試支援完整 Cloudflare API 範圍的版本,並將針對每個產品的指令進行審查與調整,確保輸出對代理程式和人類使用者都友好。值得強調的是,這個技術預覽只是未來 Wrangler CLI 的一小部分,未來幾個月我們將整合你熟悉且喜愛的 Wrangler 功能。

為了配合 Cloudflare 產品快速發展的節奏,我們必須建立一套新系統,能自動生成指令、設定、綁定 API 等。

我們已基於 Cloudflare API 的 OpenAPI 架構生成 API SDK、Terraform 提供者和 Code Mode MCP 伺服器,但 CLI、Workers 綁定、wrangler.jsonc 設定、代理技能、儀表板和文件仍需手動更新,過程容易出錯且難以擴展,無法支援下一代 CLI 的完整 API。

OpenAPI 架構僅描述 REST API,無法涵蓋我們的互動式 CLI 指令(結合本地開發與 API 請求)、Workers 綁定(以 RPC API 表達)、代理技能及相關文件。

Cloudflare 廣泛使用 TypeScript 作為軟體工程的通用語言,我們發現用 TypeScript 表達 API 更加有效,正如 Cap n’ Web、Code Mode 和 Workers 平台內建的 RPC 系統所示。

因此,我們引入了新的 TypeScript 架構,能定義完整的 API 範圍、CLI 指令與參數,以及生成任何介面所需的上下文。這個架構格式是帶有慣例、語法檢查和保護機制的 TypeScript 類型集合,確保一致性。由於是自有格式,能靈活支援現有及未來介面,並可生成 OpenAPI 架構。

目前,我們大部分精力集中在此層面,打造所需的機制,讓我們能開始建置多年來期望的 CLI 和其他介面。這讓我們能更大膽地思考如何在 Cloudflare 內部標準化並優化代理程式體驗,特別是在 CLI 的上下文工程方面。

代理程式期望 CLI 指令一致。例如,若一個指令使用 <command> info 取得資源資訊,另一個卻用 <command> get,代理程式可能會誤用不存在的指令。在擁有數百或數千名工程師及眾多產品的大型組織中,透過審查手動維持一致性非常困難。即使在 CLI 層強制一致,CLI、REST API 與 SDK 間的命名差異仍會加劇問題。

我們首要工作之一是建立規則與保護機制,在架構層強制執行。例如,永遠使用 get,絕不用 info;永遠使用 --force,絕不用 --skip-confirmations;永遠支援 --json,絕不用 --format,且這些規則適用於所有指令。

Wrangler CLI 也相當獨特,能同時操作模擬的本地資源與遠端資源,如 D1 資料庫、R2 儲存桶和 KV 命名空間。這使得一致的預設值更為重要。若代理程式誤以為正在修改遠端資料庫,實際卻是在本地資料庫新增紀錄,且開發者使用遠端綁定在本地開發,代理程式就無法理解為何新紀錄未在本地開發伺服器的請求中顯示。明確的預設值與清楚標示指令作用於本地或遠端資源的輸出,能確保代理程式獲得明確指引。

今天,我們也推出 Local Explorer 功能,於 Wrangler 和 Cloudflare Vite 插件中開放測試。

Local Explorer 讓你在本地開發時,能檢視 Worker 使用的模擬資源,包括 KV、R2、D1、Durable Objects 和 Workflows。這些操作與你透過 Cloudflare API 和儀表板執行的功能相同,但完全在本地完成,並由相同的底層 API 架構支援。

多年來,我們押注於完全本地開發,不僅限於 Cloudflare Workers,還涵蓋整個平台。使用 D1 時,雖然它是託管的無伺服器資料庫產品,你仍可完全在本地透過綁定執行資料庫和通訊,無需額外設定或工具。透過 Miniflare(本地開發平台模擬器),Workers 執行環境在本地開發與生產環境中提供相同 API,並使用本地 SQLite 資料庫實現相同功能。這讓測試快速執行且無需網路連線,支援離線工作。

但過去要了解本地存儲的資料,需要逆向工程、檢視 .wrangler/state 目錄內容,或安裝第三方工具。

現在,當你使用 Wrangler CLI 或 Cloudflare Vite 插件執行應用程式時,系統會提示你開啟 Local Explorer(快捷鍵 e)。它提供簡單的本地介面,讓你查看 Worker 目前綁定的資源及其存儲的資料。

對於使用代理程式開發者,Local Explorer 是理解代理程式如何操作資料的絕佳工具,使本地開發流程更具互動性。你可以隨時使用 Local Explorer 驗證結構、建立測試紀錄,或重新開始並執行 DROP TABLE。

我們的目標是提供一個只修改本地資料的 Cloudflare API 鏡像,讓所有本地資源都能透過與遠端相同的 API 使用。透過讓本地與遠端 API 結構一致,未來 CLI 版本中執行指令並加上 --local 參數時,指令即可直接作用於本地鏡像 API。

從今天起,這個 API 可在任何使用 Wrangler 或 Vite 插件的應用程式中,透過 /cdn-cgi/explorer/api 訪問。代理程式只需指向此地址,即可找到 OpenAPI 規範,並管理你的本地資源。

現在我們已打造出這套機制,接下來將結合現有 Wrangler 的優點與新功能,讓 Wrangler 成為使用所有 Cloudflare 產品的最佳 CLI。

你可以透過執行 npx cf 試用技術預覽,或使用 npm install -g cf 全域安裝。

在這個非常初期的版本中,我們期待你的回饋——不僅是對目前技術預覽的功能,也包括你對 Cloudflare 全平台 CLI 的期望。告訴我們你希望用一行指令完成但現在需多次點擊儀表板的操作,或你希望能在 wrangler.jsonc 中配置的項目,如 DNS 紀錄或快取規則。還有代理程式遇到的困難,以及你希望 CLI 提供的指令。

歡迎加入 Cloudflare Developers Discord,告訴我們你希望優先新增的 CLI 功能,並持續關注更多更新。

特別感謝 Emily Shen 對 Local Explorer 項目的寶貴貢獻。