cf 正式發布:面向整個 Cloudflare API 的智慧體驅動 CLI
這篇文章亦提供 English、Deutsch、Español、Español (Latinoamérica)、日本語、한국어、简体中文和Nederlands.

在過去一年裡,AI 智慧體對 Wrangler 的使用量急劇攀升。
2026 年 3 月,AI 智慧體貢獻了 Wrangler 使用量的四分之一,而前一年的佔比還是個位數百分比。上週,智慧體的使用率已達到 48%。
AI 智慧體是更高產的使用者,每天使用的不同命令數量幾乎翻倍,使用六個或更多命令的可能性幾乎是四倍。
AI 智慧體喜愛 CLI。但 Wrangler 僅提供約 280 種操作的命令,而 Cloudflare 提供的操作多達數千種。
今年早些時候,我們曾預告過我們的解決方案。今天,我們正式推出全新 CLI:cf,讓 AI 智慧體能夠使用每一個 Cloudflare 產品。
cf 是專為下一代軟體開發打造的 CLI:
- AI 智慧體可以透過專屬搜尋和引導找到所需的命令,完成任何想做的事情。
- JSON 是預設介面,對人類使用者提供適於閱讀的輸出,對 AI 智慧體則進行壓縮,以實現最大限度的上下文節省。
- cloudflare.config.ts 是 Cloudflare 全平台的全新配置格式,從 Workers 開始,將 TypeScript 的安全性和準確性帶給您以及您的智慧體的語言伺服器協議(LSP)。
- Vite 成為預設工具,帶來業界最佳的本地開發伺服器,以及面向開發者和框架作者的插件套件。
立即全球安裝公開測試版,隨時隨地執行:
npm i -g cfcf 讓您的智慧體能存取整個 Cloudflare API
如果您的 AI 智慧體能做到 Cloudflare 能做的一切,會怎樣?這正是我們今年初產生興趣的問題:智慧體變得越來越強大,但它們透過 Cloudflare CLI 所能完成的事情仍然有限。
Wrangler 是手工建置的,每個產品團隊都以自己的方式為命令開發者體驗做出貢獻。即便只有約 280 條命令路徑,在團隊之間推行統一模式幾乎不可能。d1 info、hyperdrive get、workflows describe 之間的術語不一致,因為每個團隊在不同時期制定了各自的實踐方式。部分團隊花費數千行程式碼建置了完全自定義的體驗,但這些體驗極少被使用,而且各團隊對同一問題採用了不同的解決方案。
我們希望在標準化現有內容的同時,一次性完成大規模擴展。Cloudflare 全新的統一 API 生成管道 Forge 讓我們能夠做到這一點,其核心理念是直接從支援 API 文件和 SDK 生成的 API 模式中生成 CLI 命令。我們提供的所有內容都有 OpenAPI 模式,只需添加一點額外資訊進行注解,即可將其作為 Forge 生成 CLI 的來源。
這使我們能夠將 cf 從 Wrangler 多年積累的約 280 個功能,擴展到涵蓋 Cloudflare API 全部超過 3,000 個操作的表面。
現在,只需將 cf 交給您的 AI 智慧體,就能輕鬆要求它設定 Worker、部署、監控與觀測、用 Cloudflare Access 保護、購買網域,並用 Cloudflare WAF 作為前端,所有操作都能透過單一工具完成。
為從未使用過 cf 的智慧體而建置
cf 是為軟體工程的發展軌跡而建置的,智慧體驅動的開發正在從根本上改變軟體的建置和部署方式。今年,我們專注於提供支援這一轉變的工具,cf 是這一努力的集大成之作。cf 從零開始以智慧體為核心進行建置,包含用於智慧體驅動命令發現的創新工具,我們認為這些工具將在不久的將來成為更多 CLI 的標準。
Wrangler 有一個優勢:多年的文件、部落格和第三方指南已被納入 LLM 的訓練過程。但這也帶來了同樣的劣勢:改變 Wrangler 的工作方式現在與已學習的行為相悖,而鑑於我們希望實現的改進規模,重大變更是不可避免的。
引入一個 AI 智慧體從未見過的新 CLI 聽起來像是一次巨大的顛覆性變化——但實際上這是我們能做的最乾淨的事情。由於我們所做的設計決策、我們可以進行的上下文注入以及我們可以追加的 AGENTS.md 檔案,以這種方式進行切換實際上比讓智慧體理解它所熟悉的工具的兩個版本之間的主要差異要簡單明了得多。我們在發布時內建了幾項此類面向智慧體的功能,更多功能即將推出。
智慧體需要過濾 JSON,而不是查看表格
當 AI 智慧體使用 Wrangler 時,它們會在每個命令後附加 --json,然後經常用 jq 過濾輸出以提取欄位子集。但 Wrangler 中只有部分命令支援 --json;許多命令返回的是專為人類在終端機查看而設計的 Unicode 表格。智慧體能夠解讀這些表格,但代價是比 jq 過濾器更多的時間和 token。
在 cf 中,我們採取了相反的立場:智慧體只需要 JSON,如果智慧體是這個工具未來的主要使用者,那麼 JSON 就應該是預設值。對於極少由人類存取的絕大多數命令來說,這顯然是正確的選擇。
作為這個 CLI 的人類使用者,您實際上與直接使用它隔了一層。讓 AI 智慧體能夠輕鬆過濾其結果,然後以您要求的任何格式返回該過濾後的清單,比提供您可能永遠不會直接閱讀的表格更為可取。
但如果您想做一些可能需要真實個人輸入的事情,比如搜尋要購買的網域,該怎麼辦?
對於您的 AI 智慧體可以透過在長而繁瑣的序列中鏈結命名參數來存取的命令,您只需填寫表單即可。Cf 將 API 的要求分解為一系列經過驗證的輸入,因此即使是要求複雜的網域購買操作,流程也變得簡單易懂。
或者,如果您堅持,也可以直接讓您的智慧體來做。
您的智慧體可以自行找到正確的命令
在一個有 3,000 條可能路徑的 CLI 中,您的 AI 智慧體如何才能快速找到所需操作而不會讓您的上下文爆炸?為此,我們還新增了 cf cli search。
這個命令允許您的 AI 智慧體用自然語言詢問需要做什麼,一個小型搜尋索引將根據 API 描述和參數提供合適命令的清單。當智慧體第一次執行 --help 時,我們會自動告知它這個命令。
對智慧體進行型別檢查的設定
我們的新設定格式基於 TypeScript,人類和 AI 智慧體都易於解析,並允許您以程式設計方式編寫設定。
型別化設定對 AI 智慧體極為有用。我們發現,即使沒有對程式設計設定格式的任何先驗背景,智慧體也能夠輕鬆識別並按需編輯設定,即便是像 env 這樣相比 Wrangler 中同名特性已發生重大變化的元素也不例外。所有使用 LSP 外掛程式的智慧體,例如 Claude Code 和 Codex,都能從在上下文中解讀更多設定檔案格式資訊中獲益,並因此給出更精準的建議。
相比之下,TOML 沒有可存取的模式,JSONC 雖然有關聯模式,但 AI 智慧體很少使用。
Cloudflare 內部的一些 Wrangler 設定檔案已從超過 5,000 行(每位開發者有許多自定義環境)壓縮了 40%,成為能更高效地建置每位開發者設定的工廠檔案。
這是透過從同一通用基礎以程式設計方式定義每個環境來實現的,而不是像 Wrangler 中常見的那樣複製 env 區塊。具有多個環境的簡單 Worker 只需切換 Vite 原生模式參數即可在不同設定集之間切換。
現在,實現此功能的簡單設定看起來像這樣:
import { bindings, defineConfig } from "cf/config";
import * as entrypoint from "./index.js" with { type: "cf-worker" };
export default defineConfig(({ mode }) => ({
worker: {
name: "example-worker",
entrypoint,
compatibilityDate: "2026-09-27",
env: {
Environment: bindings.text(`This is ${mode} environment`),
},
},
}));您可以透過 cf migrate 將您的 Cloudflare Worker 遷移至這個新格式。
我們同時也提供了一些輔助函式,讓您建構 Worker 的過程更加輕鬆。
bindings 為您的智慧體提供了一個簡便的位置,以便探索開發人員平台提供的所有功能。從環境變數到儲存空間、資料庫和佇列,所有項目都能透過您的編輯器進行自動完成並加以說明。
import { bindings, defineConfig } from "cf/config";
export default defineConfig(({ mode }) => ({
worker: {
// ...
env: {
API_URL: bindings.text(
mode === "production"
? "https://example.com"
: "https://staging.example.com",
),
API_TOKEN: bindings.secret(),
CACHE: bindings.kv({
id: mode === "production"
? "production-namespace-id"
: "staging-namespace-id",
}),
DATABASE: bindings.d1({ name: `example-${mode}-database` }),
UPLOADS: bindings.r2({ name: `example-${mode}-uploads` }),
JOBS: bindings.queue < { userId: string } > ({
name: `example-${mode}-jobs`,
}),
AI: bindings.ai(),
SEARCH_INDEX: bindings.vectorize({
name: `example-${mode}-search`,
}),
API: bindings.worker({ worker: `example-${mode}-api` }),
},
},
}));同樣地,我們也為 triggers 加入了輔助工具。這是一種定義 Worker 觸發條件(如路由、佇列、排程和電子郵件觸發器)的新方法。這些設定不再散落在您的設定檔中,現在您可以透過單一區塊輕鬆找到觸發 Worker 執行的所有動作。
import { defineConfig, triggers } from "cf/config";
export default defineConfig({
worker: {
// ...
triggers: [
triggers.fetch({ pattern: "example.com/*" }),
triggers.scheduled({ schedule: "0 * * * *" }),
triggers.queue({ name: "jobs", maxBatchSize: 10 }),
triggers.email({ addresses: ["support@example.com"] }),
],
},
});defineConfig.worker 僅僅是個開始。我們對 cloudflare.config.ts 的願景是,將其作為您管理整個 Cloudflare 服務的方式。您所需的所有產品,以及透過 cf 讓您的智慧體能夠存取的 API,都將能透過型別安全的 (typesafe) 設定來表達。很快,您將能夠透過這個設定檔設定完整的政策、建立區域、配置 DNS 等等。
同類最佳的開發體驗
當 Wrangler 開始建置 JavaScript Workers 時,Vite 還不存在。我們在 Wrangler 中使用 esbuild 來打包您的 Workers。Wrangler 在 :8787 上提供的開發伺服器是 Wrangler 團隊自己建置的,對其進行任何修改都意味著要深入 Miniflare 等 Cloudflare 專屬本地工具的內部。
Vite 在這方面是一個巨大的進步,它擁有豐富的外掛程式生態系統,提供具備 HMR(熱模組替換)的同類最佳開發伺服器,並使用基於 Rust 的函式庫 Rolldown 進行 tree-shaking 建置。您用 Vite 能做的一切,都可以用 Cloudflare Vite Plugin 來實現。
Cloudflare Vite Plugin 是我們建議您建置 Workers 的推薦方式,無論您在建置什麼:無論是以前端為主的專案還是後端 API。結合我們的 Vitest 外掛程式,它提供了一個與 Cloudflare Workers runtime 相符的一體化開發和測試環境,讓您直接存取繫結和平台 API。
cf 預設基於 Vite 建置。您的大多數 Workers 將在 AI 智慧體的協助下輕鬆遷移。其他的可能需要更多時間,這就是為什麼 cf 將繼續委託 Wrangler 來處理需要繼續使用 esbuild 的 JavaScript Workers 以及 Rust 和 Python Workers 的開發與部署。
從 Wrangler 遷移
將 Worker 從 Wrangler 遷移就像執行 cf migrate 一樣簡單。
cf migrate已經使用 Vite 建置的 Workers 將自動轉換為 cloudflare.config.ts。如果您的 Worker 依賴 Wrangler 的 esbuild,cf 將繼續把建置委託給 Wrangler。
當公開測試版結束時,我們將發布 Wrangler 的最終主要版本,引導您和您的 AI 智慧體使用 cf。在測試版結束後,我們將繼續為 Wrangler 提供 18 個月的維護支援,以便您有時間進行遷移。
您也可以執行 cf init/deploy 來自動為 Cloudflare 設定新專案,它將為您安裝 Cloudflare Vite Plugin 並建立設定檔案。
靜態網站仍然不需要設定檔案即可啟動,部署它們就像在您的專案中執行 cf deploy 一樣簡單。
要使用 cf 啟動一個新的 Hello World 專案,請使用 cf init。
cf 是開源軟體,有問題可至我們的 GitHub 儲存庫回報。

