larry shared this post · 2h ago
小墨同学

万字长文|Cloudflare 从入门到精通,一个域名搞定建站、邮箱、存储和 AI 后端

很多人第一次登录 Cloudflare,是因为某篇建站教程让你“把域名接进 Cloudflare”。照着改完域名服务器,网站确实能打开了,可再回到控制台,左边一长串菜单摆在眼前:域名、计算、AI、存储和数据库、应用程序安全、Zero Trust。每一项都像有用,又不知道哪些跟自己有关。
我从写 VPS 教程开始就一直在用 Cloudflare,前后单独写过域名托管、CDN、WAF 规则、邮件路由和优选 IP。9 月发过一条 Cloudflare 十项福利,后来又陆续发了域名邮箱、防 AI 爬虫、数字名片、低成本做 AI 应用和新 CLI 几条短帖。零散的点越攒越多,这次干脆串成一篇。
https://pbs.twimg.com/media/HUH3hEHbQAE46-i.jpg
这篇文章用一个域名贯穿全程。先把域名接进 Cloudflare,配好解析和 HTTPS;再从 GitHub 仓库发布一个网站,给域名配一个能收信的邮箱,用 R2 存图片和备份;最后写一个 Worker,调用 Workers AI 跑开源模型,并把整个账号交给 Agent 通过命令行管理。
标题写了从入门到精通,这里的精通也有一个实际范围。你能用免费版独立搭起个人网站、域名邮箱、对象存储和一个小型 AI 接口,知道每项服务的免费额度在哪里,遇到常见报错知道先查什么,也知道涉及 API 令牌和删除操作时该停下来确认。企业级 WAF 调优、Zero Trust 组网和大规模付费架构,不在这一篇里展开。
正文用 example.com 代替你的域名,操作时换成自己的即可。截图里的演示域名是我的 79702701.xyz,控制台是中文界面,菜单名以截图为准。

本文导读

01|先把域名接进来
第一章说清 Cloudflare 对普通人有什么用,第二、三章完成域名接入、DNS 和 HTTPS。看完这三章,你的域名就已经在 Cloudflare 上正常工作。
02|网站、邮箱和存储
第四章从 GitHub 仓库发布网站并绑定域名,第五章配置域名邮箱,第六章用 R2 存放图片和备份。这三样加起来,就是一个个人站点最常用的基础设施。
03|挡住不该来的流量
第七章处理 AI 爬虫和机器人流量,知道谁在爬你的网站,哪些能直接拦,哪些只是拖住。
04|给网站加上后端和 AI
第八章写第一个 Worker,第九章接上 Workers AI,并介绍 Cloudflare 新发布的 Clef 决策模型。
05|交给 Agent,再留一张速查表
第十章用新的 cf 命令行,让 Claude Code、Codex 或 Pi 这类 Agent 管理 Cloudflare。第十一章汇总免费额度和常见故障,只想解决眼前问题,可以直接从最后一章开始查。

一、Cloudflare 能替普通人做什么

1. 它站在你的网站前面

很多人把 Cloudflare 理解成一个 CDN,让网站打开快一点。这只说对了一半。
更准确的理解是,Cloudflare 站在访客和你的服务器之间。域名接进来以后,访客的请求先到 Cloudflare 的网络,再由它决定怎么处理:直接返回缓存,转给你的服务器,拦下可疑流量,或者交给运行在 Cloudflare 上的代码。
所以它能做的事情分成三层。

  • 网站入口。 DNS 解析、CDN 加速、HTTPS 证书和基础防护。这是大多数人用 Cloudflare 的起点。
  • 开发者平台。 Workers 运行网站和后端代码,R2、KV、D1 负责存储。没有服务器,也能做出一个完整的小应用。
  • Agent 基础设施。 Workers AI 能直接调用开源模型,Clef 专门帮 Agent 做判断,新的 cf 命令行则是为 Agent 设计的操作入口。

2. 免费版已经够个人用很久

这篇文章的所有操作都在免费版内完成。个人网站、作品页、文档站和小工具,大多数时候碰不到免费额度的上限。

服务 免费额度(截至 2026 年 10 月官方文档)
Workers 每天 100,000 次请求,每次最多 10 毫秒 CPU 时间;访问静态资源的请求免费且不限量
R2 每月 10 GB 存储,100 万次 A 类操作,1,000 万次 B 类操作,出站流量免费
Workers AI 每天 10,000 Neurons
Email Routing 接收和转发免费
这些数字以后可能调整,正式使用前以官方文档为准。每项服务的细节放在对应章节里。

3. 读完以后的完成标准

学完这篇文章,你应该可以完成下面这些事。

  • 把一个域名接进 Cloudflare,分清已代理和仅 DNS 两种解析
  • 选对 SSL/TLS 加密模式,避开“重定向次数过多”
  • 从 GitHub 仓库发布网站,并绑定自己的域名
  • 让 [email protected] 这样的地址收信,并转发到常用邮箱
  • 创建 R2 存储桶,用自己的域名公开访问文件
  • 看清哪些 AI 爬虫在访问网站,并开启 AI 迷宫
  • 部署一个 Worker,让它调用开源模型返回回答
  • 让 Agent 用 cf 查命令、预览改动,再执行
    这些服务看起来很多,最后都会落在同一个域名上。接下来先从控制台开始。

二、把域名接进 Cloudflare

1. 先认控制台的入口地图

登录 Cloudflare 控制台 以后,左侧菜单是整个账号的入口。第一次不用把每一项都点开,先记住和本文有关的几组。

  • 域名:管理接进来的域名,每个域名有自己的 DNS、SSL/TLS 和安全设置
  • 计算:Workers 和 Pages、电子邮件服务都在这里
  • AI:Workers AI 模型
  • 存储和数据库:R2 对象存储、Workers KV、D1 数据库
    Cloudflare 的控制台改版比较频繁,菜单名称和位置可能和截图有出入。找不到时,按 ⌘K 打开顶部的搜索框,直接搜功能名,通常比翻菜单快。
    https://pbs.twimg.com/media/HUH3r8ibQAMVTJj.jpg

2. 添加域名

进入“域名”,选择接入新域名的入口(英文界面是 Onboard a domain),输入根域名 example.com。这里填的是不带 www 的主域名,子域名会在后面的 DNS 记录里管理。
继续以后选择 Free 计划。Cloudflare 会扫描这个域名现有的 DNS 记录,并列出它找到的结果。
扫描结果不一定完整。重点核对三类记录:根域名 example.com 指向哪里,www 等常用子域名在不在,邮箱用的 MX、SPF、DKIM 记录有没有漏。漏掉的记录手动补上,再继续。这一步漏了邮件记录,切换以后最常见的结果就是收不到信。

3. 去注册商修改域名服务器

Cloudflare 会给你分配两条域名服务器地址,形如 ashton.ns.cloudflare.com。接下来要回到买域名的地方,比如 Namecheap、Spaceship 或阿里云,把原来的域名服务器换成这两条。
接入以后,这两条地址也能随时在域名的 DNS → 设置里查到。
https://pbs.twimg.com/media/HUH3uPZbQAgAciE.jpg
修改之前先确认一件事:如果注册商那边开启了 DNSSEC,要先关闭。Cloudflare 官方文档专门提醒过,带着旧的 DNSSEC 切换域名服务器,可能导致域名暂时无法访问。接入完成后,可以在同一个页面里重新启用。
各家注册商的修改入口不同,我之前单独写过一篇域名托管到 Cloudflare 的完整步骤,找不到入口可以对照着看。

4. 等待生效,认识域名自己的菜单

域名服务器的修改需要时间传播,快的几分钟,慢的可能要更久。期间什么都不用做,Cloudflare 会自动检测,生效后域名状态会变成已激活。
点进这个域名,左侧菜单会换成它自己的设置。后面要用到的 AI Crawl Control、DNS、电子邮件、SSL/TLS 和安全性,都在这一列里。
https://pbs.twimg.com/media/HUH3w1ObQAE1u1M.jpg
到这里,域名的解析已经交给 Cloudflare 管理。下一步处理两个最容易出问题的设置:代理状态和 HTTPS。

三、DNS、代理与 HTTPS

1. 橙色云和灰色云

打开域名的 DNS → 记录,每条记录后面都有一列代理状态。
https://pbs.twimg.com/media/HUH3ze8bQAU5qAL.jpg

  • 已代理(橙色云):访客先到 Cloudflare,再转到你的服务器。CDN、HTTPS 证书、防护和缓存都依赖这个状态,访客也看不到服务器的真实 IP。
  • 仅 DNS(灰色云):Cloudflare 只负责解析,访客直接连你的服务器。
    网站的根域名和 www 通常开橙色云。下面这些情况要改成灰色云:
  • 用来 SSH 登录服务器的域名。代理只转发网页常用的端口,SSH 走不通。
  • 邮件服务器用的域名,比如 MX 记录指向的 mail.example.com。它的 A 记录开了代理,邮件就送不到服务器。MX、TXT 这类记录本身没有代理选项,截图里三条 MX 记录就固定显示仅 DNS。
  • 需要访客直连服务器的其他服务,比如某些游戏或数据库端口。
    一个实用习惯:网站用一个开代理的域名,SSH 和面板另配一个灰色云的子域名,两者分开。
    国内访问开了代理的网站,速度有时不理想,可以参考我之前写的优选 IP 教程。

2. SSL/TLS 模式选错,最常见的结果是打不开

进入 SSL/TLS → 概述,可以配置加密模式。它决定的是 Cloudflare 和你的服务器之间怎么连接。访客和 Cloudflare 之间,开了代理就会自动使用 HTTPS。
https://pbs.twimg.com/media/HUH317BbQAM3_G-.jpg

  • 自动 SSL/TLS(推荐):Cloudflare 扫描你的源服务器,自动应用它支持的最安全模式。截图里的域名,自动模式当前选中的就是完整(严格)。
  • 完整(严格):用 HTTPS 连接,并验证服务器证书。最安全。
  • 完整:用 HTTPS 连接,但不检查证书,自签名证书也接受。
  • 灵活:Cloudflare 用 HTTP 连你的服务器,服务器上不用装证书,但这一段是明文。
  • 关闭(不安全):全程不加密,不要用。
    不确定怎么选,就保持自动模式。想手动指定时,服务器装了有效证书,比如 Let's Encrypt 或 Cloudflare 签发的源服务器证书,就选完整(严格)。
    用灵活模式时最常见的翻车,是浏览器提示“重定向次数过多”。原因是服务器自己设置了 HTTP 跳转 HTTPS,Cloudflare 却一直用 HTTP 去连,于是两边来回跳。改成完整或完整(严格)通常就能解决。
    托管在 Workers 上的网站不涉及你自己的服务器,证书由 Cloudflare 自动处理,这一节的设置主要影响有源服务器的网站。

3. 打开始终使用 HTTPS

在 SSL/TLS → 边缘证书页面,打开 Always Use HTTPS(始终使用 HTTPS)。访客输入 http:// 时会被自动跳到 https://。
到这里,域名已经可以安全地接住访问。接下来让它真正承载内容。

四、从 GitHub 仓库发布一个网站

1. 发布入口已经换成了 Workers

以前在 Cloudflare 发静态网站,第一反应是用 Pages。现在控制台的创建流程默认走 Workers:从 GitHub 导入仓库,构建后作为 Worker 部署。页面顶部还留着一行“需要使用旧版 Pages 工作流?继续前往 Pages”,说明 Pages 已经是旧入口。
对普通用户来说,差别不大。官方定价页写明,访问静态资源的请求免费且不限量,导入页面上也有同样的提示;以后想给网站加接口、绑定存储,也都在同一个项目里接着做。
我这里用自己的 Pi 蓝皮书仓库 pi-bluebook 演示,它现在挂在 pi.xiaomovps.com 上。你也可以用之前那篇长文GitHub 从入门到精通里建的 github-first-project,一个只有 index.html 的仓库就够用。

2. 选择仓库

进入 计算 → Workers 和 Pages,点击创建,选择从 GitHub 导入存储库。第一次使用需要授权 Cloudflare 访问你的 GitHub 账号,可以只授权需要部署的仓库,不必放开全部。
https://pbs.twimg.com/media/HUH34dkbQAArYzI.jpg
在仓库列表里搜索并选中要部署的仓库,点击下一步。

3. 构建与部署设置

https://pbs.twimg.com/media/HUH364lbQAYRl5W.jpg

  • 项目名称:默认和仓库同名,会出现在 workers.dev 地址里。
  • 构建命令:可选。纯 HTML 项目不需要构建;用 Hugo、Astro、VitePress 这类框架时,填对应的构建命令。
  • 部署命令:默认是 npx wrangler deploy,保留即可。
    确认后点击部署。部署失败时,先看构建日志里第一条报错,多半是构建命令或输出目录没对上。

4. 拿到访问地址

部署完成后进入项目概述页。右下角的“域名和路由”里能看到 项目名.你的子域.workers.dev 这个地址,右上角的“访问”按钮可以直接打开网站。截图里的项目已经绑定过自定义域名,所以这里多了一行 pi.xiaomovps.com,刚部署的项目只有 workers.dev 一个地址,绑定方法在下一节。
https://pbs.twimg.com/media/HUH39HPbQAI9fEU.jpg
以后每次向 main 推送提交,Cloudflare 都会自动重新部署。

5. 绑定自己的域名

切到项目的“域”标签页,在“自定义域和路由”里点击添加域名,填入 www.example.com 或 example.com。域名已经在同一个 Cloudflare 账号下,DNS 记录会自动创建,不用手动去配。
绑定前先确认这个主机名没有别的用途。官方文档写明,已经有 CNAME 记录的主机名不能直接绑定,要先删掉那条记录。根域名如果还指向 VPS 上的旧网站,建议先用 www 或 blog 这类空闲的子域名试,确认没问题再迁移。
https://pbs.twimg.com/media/HUH3_tQaQAA4lPQ.jpg
绑定完成后,用自己的域名访问,网站就上线了,证书也已经自动配好。
想做一个更完整的个人主页,可以参考我之前发的数字名片短帖,同样是 GitHub 加 Cloudflare 的组合。

五、给域名配一个能收信的邮箱

1. 邮件路由做的是收信和转发

有了 example.com,很多人会想要一个 [email protected] 这样的邮箱,放在网站和名片上更像样。
Cloudflare 的邮件路由(Email Routing)可以免费实现这件事。它的工作方式是:发到 [email protected] 的邮件,由 Cloudflare 接收,再转发到你已有的 Gmail、Outlook 或 QQ 邮箱。
先说清它的边界:邮件路由负责收信和转发,不是一个完整的邮箱服务。用这个地址对外发信是另一项功能,控制台里叫“电子邮件发送”,目前还是 Beta,本文不展开。
使用前提是域名的 DNS 托管在 Cloudflare。上一章已经完成了这一步。

2. 接入域名

在控制台进入 计算 → 电子邮件服务 → 电子邮件路由。列表里是已经开启的域名,新域名点右上角的“接入域名”。
https://pbs.twimg.com/media/HUH4B-KbQAMnp6J.jpg
接入时,Cloudflare 会提示添加几条 DNS 记录,包括 MX、SPF 和 DKIM,确认即可,通常几分钟内生效。
如果这个域名之前已经在用别家的企业邮箱,现有的 MX 记录会和邮件路由冲突。开启前想清楚,邮件到底由谁来收。列表里的“DNS 记录”一列显示配置错误时,多半就是这类记录没对上。

3. 先加目标地址,再建路由规则

点进域名,可以看到概览、活动日志、路由规则、目标地址等几个标签页。右侧的配置摘要里,路由状态显示已启用,说明收信这一层已经通了。
https://pbs.twimg.com/media/HUH4EQkaMAAMunG.jpg
先在“目标地址”里添加你的常用邮箱。Cloudflare 会往这个邮箱发一封验证邮件,点击里面的链接,状态变成已验证才能使用。
然后切到“路由规则”,创建一条规则。
https://pbs.twimg.com/media/HUH4GnabUAA--RW.jpg

  • 电子邮件匹配模式:@ 前面填 hi,后面选择你的域名
  • 操作:选“发送到电子邮件”,目标选刚才验证过的邮箱
  • 保存
    用另一个邮箱给 [email protected] 发一封测试邮件,几秒到几分钟内,常用邮箱就能收到。收不到时先看垃圾箱,再检查 MX 记录是否只剩 Cloudflare 的那几条。
    规则可以建很多条,比如 github@、shop@、newsletter@ 分别对应不同用途,哪个地址开始收垃圾邮件,直接删掉那一条规则。列表里默认还有一条“全收”规则,打开以后,所有没匹配上的地址都会按它处理。想把这件事玩到极致,可以看我之前写的无限子邮箱配置指南。

六、用 R2 存图片和备份

1. R2 最大的好处是出站不收费

R2 是 Cloudflare 的对象存储,可以理解成一个放文件的大仓库,图片、视频、备份压缩包、静态资源都能放。
它最受欢迎的一点,是出站流量免费。很多云存储按下载流量收费,图片被大量访问时账单会涨得很快。R2 免费版每月包含 10 GB 存储、100 万次 A 类操作和 1,000 万次 B 类操作,下载流量本身不收费。
A 类操作大致对应写入、列出这类动作,B 类操作大致对应读取。个人图床和备份,一般很难用完。
需要注意,免费额度只适用于标准存储,不包括不频繁访问存储。

2. 创建存储桶

进入 存储和数据库 → R2 对象存储,点击创建存储桶。
https://pbs.twimg.com/media/HUH4KQtbIAAeKyk.jpg

  • 存储桶名称:页面上写着“存储桶名称是永久性的”,创建后不能改,最好一开始就想好用途。
  • 位置:保持自动即可,Cloudflare 会按你的位置选一个区域。
  • 默认存储类:保持“标准”。选“不频繁访问”就用不了免费额度。
    点击创建存储桶,进入以后把一张图片拖进去上传,就能在“对象”列表里看到它。

3. 用自己的域名公开访问

存储桶默认是私有的,外部打不开里面的文件。要让网站引用图片,需要在存储桶的“设置”里开启公开访问,有两条路。
https://pbs.twimg.com/media/HUH4MyAbUAAkFVK.jpg

  • 自定义域。 在“自定义域”里点击添加,填入 img.example.com,确认 DNS 记录后连接。状态变成活动,通常只要几分钟。截图里我用的是 r2.79702701.xyz。
  • 公共开发 URL。 也就是 r2.dev 地址,点击启用,输入 allow 确认。
    正式使用一定选自定义域。官方文档写得很清楚,r2.dev 地址有速率限制,只适合开发测试,也用不了缓存和访问控制。截图里这个存储桶就只开了自定义域,公共开发 URL 保持禁用。
    开启以后,用 https://img.example.com/文件名 就能直接访问刚上传的图片,可以填进网站、Markdown 或博客的图床设置里。
    设置页上方的 S3 API 地址里带着你的账户 ID,截图分享前记得打码。
    想要一个带上传界面的图床,可以看看 awesome-cloudflare 合集里收录的 CloudFlare-ImgBed,它支持把 R2 作为存储后端。这类第三方项目部署前,记得按那篇 GitHub 长文里说的,先看作者、维护状态和 License。

七、挡住不该来的流量

1. 先看清谁在爬你的网站

现在除了搜索引擎,还有大量 AI 公司的爬虫在抓取网页,有的拿去训练模型,有的替用户实时搜索。对内容站来说,这部分流量不一定带来访客,却会消耗资源。
Cloudflare 把这部分管理放在域名菜单里的 AI Crawl Control,免费版也能用。它的概述页按运营商列出访问过网站的爬虫,比如 OpenAI、Anthropic、Common Crawl、ByteDance、Google,以及每家被允许的请求数。
https://pbs.twimg.com/media/HUH4PPXaYAAvbxF.jpg
以我这个演示域名为例,过去 7 天 AI 爬虫一共发来 974 次请求,放行 390 次,失败 584 次,OpenAI 的 ChatGPT-User 单个爬虫就有 113 次。这里的失败不等于被拦截,页面提示其中 349 次是爬虫请求了不存在的页面,收到了 404。一个流量不大的小站也是这样,内容多的网站只会更多。

2. 在“安全性”里决定放行还是拦截

AI Crawl Control 下面有概述、指标、安全性、优化、信号几个子页。放行和拦截在“安全性”里设置,可以针对每个爬虫单独选择。

  • 放行:这个爬虫能带来引用和流量,或者你本来就愿意被它收录。
  • 拦截:你不希望内容被它抓走。拦截时可以选择返回 403 禁止访问,或者 402 需要付费。
    判断方法很简单:搜索引擎类的爬虫一般放行,否则网站在搜索结果里会消失;纯训练用途的爬虫,按你对内容的态度决定。

3. AI 迷宫是拖住,不是拦截

有些爬虫不遵守 robots.txt,换着身份继续抓。AI 迷宫(AI Labyrinth)的思路是给它们设一个迷宫:在网页里加入只有爬虫能看到的 nofollow 链接,链向 AI 生成的内容,干扰不遵守爬取规范的自动程序。控制台上的说明写得很清楚,这些链接不会改变网页本身的内容,只对自动程序可见。
开启位置在域名的 安全性 → 设置,找到“AI 迷宫”这一行,打开右侧开关。它目前还标着 Beta。
https://pbs.twimg.com/media/HUH4VN8awAANecD.jpg
要分清它和拦截的区别。官方文档写明,AI 迷宫的动作不算拦截,请求本身不会被阻止或质询。想明确挡住某个爬虫,还是用上一节的拦截。同一个页面里的“配置 AI 自动程序策略”,可以按类型控制 AI 自动程序的访问。
更完整的防护规则,比如按国家、路径或请求频率拦截,可以看我之前整理的免费版 WAF 规则详解。

八、Workers:给网站加一段后端

1. Workers 是什么

第四章发布的网站是静态的:页面写好放上去,所有人看到的内容一样。想要一个能处理请求的后端,比如接收表单、调用 API、返回动态数据,传统做法是租一台服务器。
Workers 让你把一段 JavaScript 代码放到 Cloudflare 的网络上运行。请求进来,代码执行,返回结果。不用管服务器,也不用管扩容。
免费版每天可以处理 100,000 次请求,每次请求最多 10 毫秒 CPU 时间。这里的 CPU 时间只算代码真正在计算的时间,等待网络请求返回的时间不算在内,所以调用外部 API 的代码一般不容易超限。

2. 部署第一个 Worker

为了把后端和第四章的网站分开演示,这里单独建一个新的 Worker。进入 计算 → Workers 和 Pages,点击创建,选择从 Hello World 开始,名称填 hello-ai,然后部署。
部署完成后,你会得到一个 hello-ai.你的子域.workers.dev 的地址。在浏览器里打开它,能看到返回的 Hello World!。
https://pbs.twimg.com/media/HUH4Xc3akAAiaVA.jpg
这一行字说明代码已经在 Cloudflare 的网络上跑起来了。下一章就给它接上模型。

3. 需要存数据时,再认识 KV 和 D1

Worker 本身不保存数据,每次请求都是独立的。需要存东西时,Cloudflare 还有两个免费的存储,都在“存储和数据库”菜单里。

存储 适合存什么 免费额度
Workers KV 配置、缓存、短链接这类按键取值的数据 每天 10 万次读取、1,000 次写入,共 1 GB
D1 SQLite 数据库 需要查询的表格数据,比如留言、订单记录 每天读取 500 万行、写入 10 万行,共 5 GB
本文的例子用不到它们,先知道有这两样东西,等项目需要时再接。

九、Workers AI:用免费额度跑开源模型

1. 不用 GPU,也能调用模型

Workers AI 把一批开源模型放在 Cloudflare 的 GPU 上,Worker 可以直接调用,不需要自己准备显卡,也不用单独申请模型的 API Key。
免费版每天有 10,000 Neurons。Neurons 是 Cloudflare 自己的计量单位,不同模型、不同长度的请求消耗不一样。超出后需要升级到付费计划,按每 1,000 Neurons 0.011 美元计费。
在控制台的 AI 菜单里,可以浏览目前支持的模型,有聊天、翻译、图像生成、语音识别等不同类型。

2. 给 Worker 绑定 Workers AI

回到 hello-ai 的概述页,找到“绑定”卡片,点击添加绑定,选择 Workers AI,变量名填 AI。绑定的作用,是让代码里可以通过 env.AI 调用模型。变量名要和代码里一致,大小写也算。

3. 改代码,让它回答问题

点击右上角的编辑代码,把默认代码换成下面这段。

export default {
  async fetch(request, env) {
    const answer = await env.AI.run("@cf/google/gemma-4-26b-a4b-it", {
      messages: [
        { role: "system", content: "你是一个回答简洁的中文助手。" },
        { role: "user", content: "用两句话解释 CDN 是什么。" },
      ],
      chat_template_kwargs: { enable_thinking: false },
    });
    return Response.json(answer);
  },
};

这里调用的是 Google 的 Gemma 4 开源模型,模型 ID 取自 Cloudflare 官方入门文档。messages 和常见的聊天接口格式一样,system 设定角色,user 是要问的问题。
部署以后,刷新刚才的 workers.dev 页面。
https://pbs.twimg.com/media/HUH4ibQaQAA9_OY.jpg
浏览器里出现一段 JSON,content 里就是模型用中文写的回答。一个没有服务器、没有显卡、没有额外 API Key 的 AI 接口,就这样跑起来了。
返回结果末尾的 usage 也值得看一眼。这次一问一答一共 84 个 token,消耗约 1.67 Neurons。按每天 10,000 Neurons 的免费额度粗算,这种短问答一天能跑五六千次。
模型列表和推荐 ID 会随时间更新。调用报错时,先去 AI 菜单的模型页确认这个 ID 是否还在。
还有一点要注意:这个 workers.dev 地址谁都能打开,每打开一次就消耗一次额度。免费版超出每天的额度后只会调用失败,不会扣钱,但演示完最好在设置里关掉 workers.dev 访问,或者直接删除这个 Worker。真要做成对外的服务,先加上访问控制。

4. Clef:专门帮 Agent 做判断的模型

10 月 1 日,Cloudflare 发布了两个开源的决策模型 Clef 和 Clef-flash。它们和聊天模型不一样,不负责写长段回答,只回答选择题。
你给它一段内容,再给一组问题和可选答案,比如“这条工单紧不紧急”“该转给哪个团队”。它不生成文字,而是给每个选项打出一个概率。下游程序拿到概率,就能自动决定下一步。

模型 底座 特点
Clef Qwen 3.8 27B 64K 上下文,支持图片输入,中位延迟约 209 毫秒
Clef-flash Qwen 3.5 9B 中位延迟约 39 毫秒,速度优先
两个模型都以 Apache 2.0 协议开源,权重放在 Hugging Face,也可以在 Workers AI 上通过 @cf/cloudflare/clef 和 @cf/cloudflare/clef-flash 直接调用。
它适合 Agent 里那些需要快速分流的环节:这封邮件要不要处理,这条评论是不是垃圾信息,这个任务该交给哪个工具。以前这些判断也要调用一次大模型,现在可以交给更快的专用模型。

十、让 Agent 接管:用 cf 管理 Cloudflare

1. 一半的命令行操作已经来自 Agent

Cloudflare 原来的命令行工具叫 Wrangler,主要用来开发和部署 Workers。官方公开过一组数据:2026 年 3 月,Agent 发起的 Wrangler 使用占四分之一,到发布 cf 的前一周已经升到 48%,差不多一半。
于是在 9 月 28 日,Cloudflare 发布了新的命令行工具 cf,目前处于公开测试阶段。它和 Wrangler 的主要区别有两点。

  • 覆盖范围更大。 Wrangler 大约有 280 条命令路径,cf 覆盖了 Cloudflare API 的 3,000 多项操作,DNS、R2、邮件、安全设置都能管。
  • 为 Agent 设计。 结果默认输出 JSON,能用自然语言搜索命令,危险操作有额外保护。
    Wrangler 不会马上消失。官方的计划是公开测试结束后,再发布一个提示迁移的 Wrangler 最终版本,并继续维护 18 个月。已有项目可以慢慢迁移,第四章导入仓库时默认的部署命令也还是 npx wrangler deploy。

2. 安装并登录

cf 通过 npm 安装,电脑上需要先装好 Node.js。

npm install --global cf
cf auth login

cf auth login 会打开浏览器,在 Cloudflare 页面确认授权后,回到终端就可以使用。

3. 不知道命令,就让它自己搜

cf 最适合 Agent 的一点,是不需要提前背命令。用自然语言描述要做的事,它会返回最多 5 条匹配的命令。

cf cli search "create D1 database"

https://pbs.twimg.com/media/HUH4uCYbcAAL9N9.jpg
返回结果是一组 JSON,每条有命令和说明,最匹配的 cf d1 create 排在第一。找到命令以后,可以继续查看这条命令需要哪些参数。

cf schema d1 create

4. 先预览,再执行

涉及创建和修改的命令,可以加上 --dry-run,只打印将要发出的请求,不真正执行。

cf d1 create --name my-database --dry-run

https://pbs.twimg.com/media/HUH40N5a4AE2YbD.jpg
输出里能看到请求方法、接口地址和请求体,确认无误再去掉 --dry-run 正式执行。接口地址里同样带着账户 ID,截图分享前记得打码。
删除类操作还有一层保护。在非交互模式下,也就是 Agent 自动执行时,删除命令如果没有加 --force,会输出 Aborted. 并停止。Agent 想删东西,必须明确地多加一个参数,这给了你在审查命令时一个明显的信号。
要注意,这时命令的退出码是 0,看起来像执行成功了,其实什么都没删。官方文档专门提醒,退出成功不代表资源已被删除,让 Agent 删完以后再查一次确认结果。

5. 告诉 Agent 用它

在用户级的 AGENTS.md 或 CLAUDE.md 里加一句官方推荐的说明,这样所有项目都会生效:

When interacting with Cloudflare, use the cf CLI unless the project has a Wrangler configuration file.

意思是操作 Cloudflare 时优先用 cf,项目里已经有 Wrangler 配置文件的除外。Claude Code、Codex、Pi 这类 Agent 读到这句,就知道该调用哪个工具。
之后可以直接对 Agent 说:“把我账号里的 R2 存储桶列出来”“给 example.com 加一条 CNAME,先 dry-run 给我看”。

6. 令牌只给必要权限

让 Agent 在无人值守的环境里运行时,比如定时任务或 CI,不能每次都打开浏览器登录。这时需要创建一个 API 令牌,放进 CLOUDFLARE_API_TOKEN 环境变量。
这一步有三条规矩。

  • 令牌只勾选任务需要的权限和域名,不要图省事选全部。
  • 设置合理的有效期,不用的令牌及时删除。
  • 令牌不要写进代码、提交到仓库,也不要贴进和 AI 的对话。一旦泄露,立即在控制台撤销并重新创建。
    Agent 能帮你点按钮,但它拿到的权限,就是出问题时的影响范围。

十一、免费额度速查与常见问题

1. 免费额度一张表

服务 免费额度 需要更多时
Workers 每天 100,000 次请求,每次 10 毫秒 CPU;访问静态资源的请求免费且不限量 付费计划每月 5 美元起,含一定用量
旧版 Pages 每月 500 次构建,同时 1 个构建,单站 20,000 个文件,单文件 25 MiB 看官方付费计划
Workers KV 每天 10 万次读取、1,000 次写入,1 GB 存储 包含在 Workers 付费计划里
D1 每天读取 500 万行、写入 10 万行,5 GB 存储 看官方付费计划
R2 每月 10 GB 存储、100 万次 A 类操作、1,000 万次 B 类操作,出站免费;仅限标准存储 超出部分按用量计费
Workers AI 每天 10,000 Neurons 付费计划每 1,000 Neurons 0.011 美元
邮件路由 收信和转发 —
数字来自 2026 年 10 月的 Cloudflare 官方文档,以后可能调整。

2. 最常见的六种翻车

现象 先检查什么 第一处理动作
浏览器提示重定向次数过多 SSL/TLS 模式是不是灵活,服务器是否强制 HTTPS 改成自动、完整或完整(严格)
域名一直没激活 注册商的域名服务器有没有改对,DNSSEC 是否关闭 核对两条 NS 地址,耐心等待传播
接入后收不到邮件 MX、SPF、DKIM 记录是否在扫描时漏掉 补齐邮件记录,或检查邮件路由的 DNS 记录是否显示配置错误
SSH 连不上服务器 用来连接的域名是不是已代理(橙色云) 换成仅 DNS 的子域名,或直接用 IP
R2 图片访问变慢或被限制 是不是在用 r2.dev 地址 改用自定义域
Worker 报错超出 CPU 限制 代码里有没有大量计算或循环 把计算挪走,或升级付费计划

3. 一条日常使用路径

以后遇到新项目,可以按这个顺序想。

  1. 域名先接进 Cloudflare,DNS 和 HTTPS 配好。
  2. 网站从 GitHub 仓库导入,推送后自动部署。
  3. 需要邮箱,开邮件路由转发。
  4. 需要存文件,用 R2 加自定义域。
  5. 需要接口,写一个 Worker;需要存数据,再接 KV 或 D1。
  6. 需要模型,绑定 Workers AI;需要快速判断,试试 Clef。
  7. 日常维护交给 Agent,用 cf 查命令、先预览、再执行。
    不是每个项目都要走完七步。大多数个人网站停在第 3 步就已经够用,等真有需求时再往下加。

4. 延伸阅读

下面几篇是我之前写的单项教程,可以按需要接着看。

参考资料