cf CLI 上線,取代 wrangler.toml 設定
Cloudflare Blog · 2026-09-28
過去要幫一個 Worker 加上 KV、D1、R2 三種綁定,得在 wrangler.toml 裡手動堆區塊,換一個環境就整段 [env.production] 複製貼上一次;要管網域、WAF 規則或 Access 控管,Wrangler 完全碰不到,得切去 Dashboard 或另外串 API。Cloudflare 在 2026 年 9 月 28 日發布的新 CLI 工具 cf,把設定檔改成一份可以型別檢查、可以用函式產生內容的 cloudflare.config.ts,同時把指令涵蓋範圍從 Wrangler 的約兩百八十個指令,擴大成整個 Cloudflare API 的三千多項操作。
背景
Wrangler 的 wrangler.toml/wrangler.json 只覆蓋 Workers 相關的一小塊 API,其餘的網域、WAF、Access 這類資源長期沒有對應的 CLI 入口,團隊得混用 Dashboard、curl 打 API、或另寫腳本。TOML/JSON 格式也沒有邏輯能力,多環境設定只能整段複製,Cloudflare 內部文件因此一路膨脹到「超過五千行」。另一個壓力來自使用型態的改變:官方統計 agent 已佔 Wrangler 每日使用量的 48%(幾年前還是個位數百分比),但 Wrangler 的輸出格式是給人看的文字,指令集也窄,agent 用起來要拼湊、要猜。
核心改動
cf 不是手寫出來的,而是用 Cloudflare 內部的 Forge 產生管線,直接從各服務的 OpenAPI schema 產生指令——官方原話是「只要在 schema 上多加一點標註,就能拿它當 Forge 產生 CLI 的來源」,這也是覆蓋率能從兩百多個指令跳到三千多項操作的原因。設定檔改用 TypeScript 的 defineConfig,搭配 Vite 原生的 mode 參數切換環境,不同環境的綁定值用函式產生而不是複製貼上:
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` }),
AI: bindings.ai(),
},
},
}));觸發器(fetch、scheduled、queue、email)也改成程式化宣告,例如 triggers.scheduled({ schedule: "0 * * * *" })。輸出預設是 JSON,官方說法是「agent 只需要 JSON,如果 agent 是這個工具未來的主要使用者,JSON 就該是預設值」;人類使用者看到的是美化過的 JSON,agent 拿到的是精簡版。CLI 另外加了 cf cli search,讓 agent 可以用自然語言描述要做什麼,回傳對應指令與參數説明;設定檔本身也因為是 TypeScript,能掛 LSP 讓 agent 直接讀型別定位欄位。
| 項目 | Wrangler(既有) | cf(新) |
|---|---|---|
| 設定格式 | wrangler.toml / wrangler.json | cloudflare.config.ts(programmatic) |
| 多環境設定 | 整段複製貼上 | function + mode 參數產生 |
| API 覆蓋 | 約 280 個指令 | 3,000+ 項操作 |
| 預設輸出 | 給人看的文字 | JSON(人類版美化、agent 版精簡) |
| 指令探索 | 翻文件 | cf cli search 自然語言查詢 |
影響範圍
現有用 Wrangler 管 Workers 的團隊可以跑 cf migrate 把舊設定轉換過去,不需要馬上手改;純靜態站台部署則維持原樣簡單,cf deploy 不需要額外設定檔。若專案用 esbuild 或 Rust 工具鏈建置 Worker,cf 目前會把建置這段委派回 Wrangler 處理,代表 Wrangler 不會立刻退場。官方表示開放測試(open beta)結束後會發一個最終大版本的 Wrangler,把使用者與 agent 導向 cf,之後仍會維護 Wrangler 十八個月。安裝方式是 npm i -g cf,專案在 GitHub 上以 cloudflare/cf 開源、採 Apache-2.0 與 MIT 雙授權,目前是 open beta 階段。對用 agent 跑自動化部署或維運腳本的團隊,這次真正的改動是輸出格式與指令發現方式:原本要靠人讀文件才知道有哪些指令,現在 agent 可以直接用 cf cli search 找。
原始來源:Introducing cf: the agentic CLI for the entire Cloudflare API、cloudflare/cf on GitHub