Cloudflare 发了个新 CLI,但它的第一用户不是你

国庆前最后一个工作日。

手头的活刚收完尾,人已经半只脚迈进假期了,邮箱里进来一封 Cloudflare 的邮件------生日周的推广信,夹着一条发布:他们出了个新的命令行工具,名字就两个字母,cf。

换平时这种邮件我大概率划走。但节前最后一天,心是松的,手是闲的,就点进去看了一眼。

结果被里面一组数字钉住了:

今年 3 月,AI agent 已经占到 Wrangler(Cloudflare 原来的 CLI)使用量的 1/4 ,一年前还只是个位数百分比。 发布前一周,这个比例到了 48%。

Cloudflare 的命令行,快一半是 AI 在敲了。

cf 就是冲着这个事实重做的:它的第一用户是 agent,然后才是人。

不过「新 CLI」这个说法,我第一反应是:Cloudflare 本来就有 CLI,而且不止一个。

一个是 wrangler,一个是 cloudflared。我是 CLI 重度患者,能敲命令绝不点网页,这两个我天天在用、天天来回切。很多开发者知道 Cloudflare 有命令行,但具体是哪两个、各管什么、边界在哪,其实说不太清。

所以看到 cf,我关心的不是「哇,新工具」,而是:它跟我手上这两个老的,到底差在哪?

那还等什么,npm i -g cf,装上试。一试就停不下来------试完顺手把我本机三个 Cloudflare 工具的分工也理清了,理完觉得值得写下来。事情就这么一件接一件,水到渠成地有了这篇。

下面分两部分讲:不写代码的朋友看第一部分就够了;开发者可以直接跳到第二部分。

先用 30 秒说清楚它是什么

Cloudflare 你可能没直接用过,但大概率每天都在经过它------很多网站的加速、防攻击、域名解析都跑在它上面。独立开发者也常用它免费托管网站。

以前要操作 Cloudflare,要么登录网页后台一个个页面点,要么用它的两个命令行工具:

  • wrangler:管「部署」。把网站、小程序后端、数据库这些东西发到 Cloudflare 上,靠它。
  • cloudflared:管「打通」。把你家里电脑或公司服务器上的服务,安全地暴露成一个公网域名(也就是 Tunnel),靠它。

两个都好用,但都只管自己那一块。域名解析、缓存、权限、账单这些,还是得回网页点。

cf 想做的是:Cloudflare 能做的所有事,都能用一行命令做。

安装只要一句:

bash 复制代码
npm i -g cf

第一部分:对不写代码的人,意味着什么

1. 你以后不用学命令,AI 替你敲

这是最直接的变化。过去你让 AI 帮你改个域名解析,它经常只能回你一句「请登录后台,点击 DNS,然后......」,因为它没有手。

cf 就是给 AI 装的那只手。它覆盖了 Cloudflare 3000 多个操作,而旧工具只有 280 个左右。「帮我把这个域名指到新服务器」「把网站缓存清一下」,这类事以后 AI 可以直接做完,而不是教你去做。

2. 你现在的网站不会坏,不用急

官方说得很清楚:测试期结束后,Wrangler 会发最后一个大版本,然后继续维护 18 个月。你现在能用的,未来一年半都还能用。

3. 但「让 AI 动手」这件事,钥匙要管好

AI 能替你改 DNS,也就意味着它能改错 DNS。用之前记住两条:

  • 给 AI 的钥匙(API Token)只开它需要的权限,别给整个账号的全部权限;
  • 删除、改解析、清缓存这类操作,让它先说要执行什么,你点头再执行。

第二部分:对开发者,意味着什么

先说结论:我这个 CLI 重度患者眼里,新老差在哪

Cloudflare 这边,我以前是 wrangler 和 cloudflared 两个来回切,现在多了一个 cf。

先说 cloudflared:它跟 cf 基本不打架。它是 Tunnel 的运行端 ,常驻在服务器上干活;cf 能查 Tunnel 的状态,但不替它跑。所以真正要比的是 wrangler 和 cf。

真用起来,这两个的差别不在「新的功能多」,而在写给谁用:

对比项 wrangler(老) cf(新)
写给谁 人 agent 优先,人其次
管的范围 项目:Workers / Pages / D1 / R2 这些「要部署的东西」 整个账号:DNS、Zone、缓存、Tunnel、Token、账单......
命令从哪来 各产品团队手写,约 280 个 从 OpenAPI schema 自动生成,3000+
命名 各家各样:d1 info / hyperdrive get / workflows describe 生成出来的,天然统一
输出 默认给人看的表格,--json 只有部分命令支持 默认 JSON,给 agent 时还会压缩
找命令 --help 一层层往下翻 cf cli search "<想干什么>",外加 cf schema 看 API 结构
配置文件 wrangler.toml / wrangler.jsonc cloudflare.config.ts,有类型
构建 esbuild Vite(esbuild 项目仍委托给 wrangler)
登录 wrangler login 走浏览器 OAuth 读环境变量里的 token,也可以建多个 profile 按目录绑定
状态 稳定,还会维护 18 个月 Open Beta

有两处差别,我是真被扎过的。

一是多账号。 我名下有两个 Cloudflare 账号,wrangler 在非交互环境里会卡在「选哪个账号」的提示上不动 ,每次都得先 export CLOUDFLARE_ACCOUNT_ID=... 才能跑。cf 的 cf auth activate <profile> [dir] 能把账号绑定到目录,进哪个项目就用哪个账号,这个问题从设计上就没了。

二是「CLI 管不到的地方」。 用 wrangler 的时候,我脑子里一直有条分界线:部署走 CLI,DNS、缓存、Token 这些只能去网页点,或者自己拼 curl。cf 把这条线擦掉了。

所以现在我的切法很简单:Tunnel 还是 cloudflared ,要部署的用 wrangler,要运维的用 cf 。等 cf 转正,再把部署也搬过去。

下面展开几个细节。

1. 「CLI 没有这个功能,只能 curl API」这件事结束了

用 Wrangler 久了一定遇到过:Workers、Pages、D1 很顺,但一到 DNS、缓存、Zone 设置、Token 管理,就只能去翻 API 文档手拼 curl。

原因官方自己说了:Wrangler 是各个产品团队各自往里加命令,术语都不统一 ------查详情有的叫 d1 info,有的叫 hyperdrive get,还有的叫 workflows describe。

cf 换了做法:命令直接从 OpenAPI schema 生成 。他们内部有一条叫 Forge 的流水线,同一份 schema 同时生成 CLI、SDK 和 API 文档。所以覆盖面一下从 280 跳到了 3000+,而且以后 API 新增什么,CLI 就自动有什么。

对我来说,这条比任何新功能都实在:以后脚本里不该再出现 api.cloudflare.com 了。

2. JSON 是默认输出,不是 --json

官方观察到 agent 用 Wrangler 时,几乎每条命令都要手动加 --json,再用 jq 过滤------可惜只有部分命令支持。

cf 直接反过来:默认就是 JSON。给人看的时候美化打印,给 agent 的时候压缩输出,省上下文。

bash 复制代码
cf zones list | jq '.[].name'

3. cf cli search:不让 agent 再套娃 --help

agent 摸索一个陌生 CLI 的标准姿势,是一层层 --help 往下翻------每翻一层都烧 token,而且很容易翻错分支。

cf 给了一个自然语言搜索:

bash 复制代码
cf cli search "list cloudflare tunnels"

返回 5 条 JSON 匹配,每条带命令和简介。我实测搜 tunnel、Pages 部署、D1 查询、R2 上传,第一条都是对的。

更有意思的是:我第一次跑 cf --help,它在最上面先打了一段写给 agent 看的提示,大意是:

AGENTS:别用嵌套的 --help 探索命令,先用 cf cli search。 搜索词请匿名,只描述动作和资源类型,不要带域名、账号 ID、邮箱、token。

一个 CLI 在帮助文本里直接跟 AI 说话,这是我第一次见。它说明 Cloudflare 是真把 agent 当成了一等用户,不是给人用的工具顺便兼容一下。

另一个细节:想看某条命令背后的 API 请求结构,把命令开头的 cf 换成 cf schema 就行。

4. 配置文件变成了 TypeScript

新的配置文件是 cloudflare.config.ts,用 defineConfig() 写,绑定(KV、D1、R2、Queue、AI......)和触发器(fetch、定时、队列、邮件)都集中在一处声明。

有类型的好处不止是自动补全。官方特意点了一句:Claude Code、Codex 这类接了 LSP 的 agent,能直接从类型里读懂配置格式 。以前 agent 写 wrangler.toml 靠猜,现在靠类型检查。

构建也从 esbuild 换成了 Vite 默认,HMR、Rolldown 摇树都能直接用。

5. 迁移:不急,但路径已经给好了

  • 已经用 Vite 构建的 Worker,cf migrate 会自动转成 cloudflare.config.ts;
  • 还依赖 Wrangler 的 esbuild 构建的项目,cf 会继续把构建委托给 Wrangler,不会逼你一次性改完;
  • 新项目用 cf init,部署用 cf deploy,纯静态站点连配置文件都不需要。

我的实测:怎么给 agent 用,又不把钥匙交出去

我没用 cf auth login。它会在本机再存一份凭据,我不想多一处放钥匙的地方。

cf 支持直接读环境变量 CLOUDFLARE_API_TOKEN,所以我从本地密钥库把 token 注入到子进程里,命令跑完,钥匙也跟着消失:

bash 复制代码
<你的密钥注入方式> CLOUDFLARE_API_TOKEN=... -- cf auth whoami

返回里能看到 "authSource": "CLOUDFLARE_API_TOKEN environment variable"、"tokenValid": true,说明走的是环境变量这条路。agent 全程只知道一个别名,不接触明文 token。

但先说清楚几件事

  • 它还是 Open Beta ,我装的是 v1.0.0-beta.5。生产项目的部署链路,我暂时不换。
  • 鉴权和 profile 的机制,官方博客一个字没提。上面的环境变量用法是我自己试出来的,正式版可能会变。
  • cf cli search 的查询是要发出去的,它自己也提醒了别带敏感信息。让 agent 用之前,最好在你的规则里写死这一条。
  • 覆盖 3000 个操作,也意味着 agent 能碰到 3000 个操作。 能力越全,token 权限越要收窄。

一句话

cf 真正的新闻不是「Cloudflare 出了新工具」,而是一家基础设施公司公开承认:它的命令行工具,主要用户已经换成 AI 了。

  • 不写代码的你:以后管理网站,可以直接交给 AI 办,只要管好钥匙;
  • 开发者:现在就可以 npm i -g cf 用来做运维,部署链路等正式版再迁;
  • 做工具的人:值得认真看看它怎么在 --help 里跟 agent 对话------这可能是下一代 CLI 的标准写法。

一封节前的推广邮件,换来了一个下午的折腾和一套想清楚的分工。节前能把这件事想清楚,这个假期可以安心了。

仓库在这里,有问题可以直接提 issue:github.com/cloudflare/...

相关推荐
桃西西呀1 小时前
Laya 源码级原理拆解之四:路由检测与服务部署
人工智能·llm·ai编程
明月_清风1 小时前
前端已死?别急,这可能只是所有行业的开始
前端·ai编程
明月_清风1 小时前
干了 6 年前端,我是怎么一步步转型到 AI 的?
前端·后端·ai编程
leoZ2311 小时前
第 34 篇 Copilot 与嵌入式 AI:把能力缝进工作流
人工智能·大模型·copilot·agent
桃西西呀1 小时前
Laya 源码级原理拆解之三:字段编译与业务胶水
人工智能·llm·ai编程
乘风gg1 小时前
花了 100 亿 Token 后,我发现 Code is cheap 是最大的谎言
前端·ai编程·claude
张忠琳1 小时前
【hermes-agent】Hermes Agent Prompt 构建流程超深度分析
ai·prompt·agent·hermes
VIP_CQCRE2 小时前
在 OpenCode IDE 中接入 Ace Data Cloud:让 VS Code、Cursor、Windsurf 都能调用统一 AI Coding 能力
vscode·ai编程·开发工具·opencode·acedatacloud
宋哥转AI2 小时前
AgentScope Java 实战 03:知识与工具层——给 Agent 装上手和书架
人工智能·agent·ai编程