面向实施、审查与 agent 的完整技术材料 · 2026-10-02 状态快照
本文件集中保存实现说明、代码、恢复语义和来源;按用途阅读可从实践手册开始。本文按资料截止日阅读,实际部署需要验证自己的环境。
个人基础设施的难处通常不是少一种服务。一个网站能打开之后,还要知道谁能写入、文件存在哪里、任务失败后怎么继续,以及几个月不用时是否仍在付费。本手册围绕这些工作展开,选择服务只是其中一步。
本参考把入口、身份、数据、执行和恢复分开处理。产品状态以截至 2026-10-02 的来源记录为界,不同条目的核验范围见来源说明;文中的操作路线是设计与检查建议,不是作者的云端实测。邮件服务不纳入本版。
这里有三种不同证据:公开来源支持的平台事实;本参考提出的设计与检查;随包示例的本地测试。附件包含 health Worker、离线任务状态模型、费用演算和 PDF 重建工具。本地测试不代表云端验收。 本版未执行账户登录、部署、迁移或模型调用;接手实施时仍需补真实绑定、远端正负向测试、预算与恢复演练。
01 / 选择一条读法#
| 你现在的位置 | 先读 | 暂时可以跳过 |
|---|---|---|
| 想发布一个网页或小 API | 第 2–4 章:分层、准备、最小 Worker | 队列、容器、记忆和私网 |
| 已有本机或 VPS 服务,想安全访问 | 第 5–6 章:身份和 Tunnel | 重写现有后端 |
| 已经在保存用户内容与文件 | 第 7 章:D1、R2、备份与恢复 | 托管搜索、agent 工作台 |
| 自动化经常超时、重复或丢任务 | 第 8 章:任务与外部副作用 | 多模型路由 |
| 想做文档检索、记忆或 agent 执行 | 第 9–11 章 | 大规模事件流和数据湖 |
| 系统能运行,但维护越来越累 | 第 12–15 章:发布、观测、故障、退出 | 新服务的试用申请 |
本期新发布的逐项状态与价格时间线见配套《Cloudflare 新发布观察》。手册解释如何实施;报告解释为什么近期变化值得重新评估。两份文件都能单独阅读。
02 / 先把请求、数据与任务画在不同位置#
Cloudflare 的服务可以组合,但一个应用不必走遍全部层次。先用下表记录职责,往往比画几十个产品图标更有帮助。S45 S47 S58 S59
| 需要安排的职责 | 常见选择 | 一定要留下的决定 |
|---|---|---|
| 用户从哪里进入 | DNS、Custom Domain、Workers、Tunnel | hostname、目标服务、备用入口是否公开 |
| 哪个身份能进入 | Access、人类登录、Service Token | 验证主体、有效期、撤销方式 |
| 进入后能做什么 | 应用角色、资源权限、动作授权 | 读写范围和高风险操作边界 |
| 结构化状态存在哪里 | D1、现有数据库、按实体划分的 DO | 谁负责写入和修订 |
| 文件存在哪里 | R2、现有对象或文件存储 | 对象生命周期、访问权限、导出方法 |
| 工作何时完成 | 直接请求、Queues、Workflows | 接收与完成的区别、失败恢复 |
| 哪些计算需要完整环境 | Workers、Dynamic Workers、Containers | 原生依赖、资源、出站网络与超时 |
一种常见的、小型应用形态是:浏览器访问 Worker;Worker 处理应用权限,使用 D1 保存目录与状态,使用 R2 保存文件。另一种同样合理的形态是:Access 和 Tunnel 只负责访问入口,应用与数据库继续留在原来的服务器。平台能力增加,不构成迁移现有状态的理由。
绑定(binding)是部署时交给代码的能力。 env.DB 或 env.FILES 已指向配置好的资源,代码通常不必再携带管理这些资源的账户 API key。控制面 token 用于创建和部署;运行时 binding 用于应用访问;最终用户权限仍由应用协议决定。这三类权限不应混成一个万能密钥。S45
Service Binding 可以让 Worker 调用指定的另一项服务,减少公开入口和复制凭据。设计内部接口时,仍要限制操作和输入。客户端随便提供一个 x-service-id 字符串不证明身份;可靠的调用者身份应来自受控部署关系或实际校验的凭据。S57
03 / 动手之前:账户、预算、秘密信息#
套餐是账单边界,不是架构图#
Workers Paid 当前最低为每账户每月 $5,多项目共用相应包含量。R2、模型、浏览器、容器、日志等各有计量维度;Zero Trust 也是自己的产品计划。付了 Workers Paid 不等于买下全部企业功能。S34 S38 S41 S67
先在私人记录里写下:允许新增哪些收费服务;一次实验最多运行多久、多少并发;临时数据保留几天;何时停止入口;由谁查看账单。这里的数字是自己的预算,不是宣称 Cloudflare 提供全账户硬封顶。通知只能提醒,应用还要设置实际限制。
对于第一次实验,成本控制最好落在能直接验证的地方:请求大小、每任务最大模型调用次数、容器总运行时间、浏览器会话超时、队列最大重试、产物保留期。不要只靠“流量应该不大”。
凭据按用途拆开#
交互式开发可以使用工具提供的登录流程。CI 使用限定资源、限定权限的凭据,不把全局 API key 放进每个仓库。前端代码、打包产物、客户端环境变量都按公开内容处理;名称里带 SECRET 不会让浏览器里的值变秘密。S03 S45 S66
建议给开发、预览与生产建立清楚的资源映射。测试数据库和生产数据库都叫 DB 没问题,但其绑定目标必须不同。真实 Account ID、域名、bucket 和策略保存在私人配置或受控环境,不复制进公开手册。
创建资源前看一遍将要发生的远端写入。部署、创建数据库、应用迁移、恢复历史、删除对象都是不同操作;不能因为同在一个命令列表里,就默认整串命令都已获准执行。
保留可回来的一条路#
在调整 Access、Tunnel、客户端路由或 DNS 前,确认还有不依赖待改路径的管理入口。准备好旧配置、当前版本与恢复步骤。不要通过唯一的远程会话,同时替换 DNS、私网客户端和服务器防火墙。
04 / 路线 A:先发布一个很小、能验证的 Worker#
本节使用一个无账户依赖的小例子。它只响应健康检查,不连接数据库、不调用模型、不接受用户写入。运行测试只需要支持 Fetch API 的 Node.js;实际部署另用项目中固定版本的 Cloudflare 工具。S66
随包目录 examples/health-worker/ 包含源码、配置模板和测试。下面的代码与该目录一致:
const HEADERS = {
"content-type": "application/json; charset=utf-8",
"cache-control": "no-store",
"x-content-type-options": "nosniff",
};
function reply(body, status, head = false, extra = {}) {
return new Response(head ? null : JSON.stringify(body), {
status,
headers: { ...HEADERS, ...extra },
});
}
export default {
async fetch(request) {
const head = request.method === "HEAD";
const path = new URL(request.url).pathname;
if (path !== "/health") {
return reply({ error: "not_found" }, 404, head);
}
if (request.method !== "GET" && !head) {
return reply({ error: "method_not_allowed" }, 405,
false, { allow: "GET, HEAD" });
}
return reply({ ok: true, schema: "health/1" }, 200, head);
},
};
它故意不回显请求头、上游地址、环境变量和私有版本标识。健康响应只证明请求到达了这个 handler,不证明数据库、文件服务和所有依赖都正常。
第一步:本地检查,不联网#
在仓库根目录运行:
node --test examples/health-worker/worker.test.mjs
python3 tools/check.py
这是纯函数和资料一致性检查。测试不启动 Cloudflare,也不验证实际网络。
第二步:明确选择开发工具#
当前 cf CLI 在公开 beta,Wrangler 仍受支持;维护期计划至少延续到 cf GA 后 18 个月。既有项目不必为了尝鲜立刻改配置。首次试验可以沿官方脚手架选择工具,并把实际采用的版本和锁文件留在项目里。S02 S03 S66
配置模板如下,包含的是合成名称:
{
"name": "health-lab",
"main": "index.mjs",
"compatibility_date": "2026-10-01",
"workers_dev": false,
"preview_urls": false
}
这个模板故意没有生产路由。只有绑定自己的测试 Custom Domain,或在确认服务可公开后主动启用开发入口,远端请求才应到达它。不要把禁用默认入口误读成部署失败。
采用 Wrangler 的项目,可以在安装并固定版本之后,于示例目录执行以下流程。deploy 会修改远端,只在目标账户和测试路由已经核对后运行:
npx --no-install wrangler dev --port 8787
# 另开终端,只测本地:
curl -i http://127.0.0.1:8787/health
curl -i http://127.0.0.1:8787/missing
# 以下是另外一次、明确的远端操作:
npx --no-install wrangler deploy
--no-install 的用途是避免命令临时下载一个与项目锁定版本不同的工具;缺少依赖时应停止并完成安装,而不是不断换命令直到“能跑”。本包没有伪造一份未安装过的 Wrangler 锁文件。
第三步:用不同方向的请求验收#
| 请求 | 预期 | 能证明什么 |
|---|---|---|
GET /health |
200,固定 JSON | 正确路由和 handler 可用 |
HEAD /health |
200,无正文 | HEAD 行为符合约定 |
POST /health |
405,含 Allow | 不把任意方法当作健康检查 |
GET /missing |
404 | 未知路径没有落入宽泛 handler |
| 故意带伪造私有头 | 响应仍不含这些内容 | 不发生请求信息回显 |
域名与 TLS 另行检查。浏览器打开成功只是一条样本;建议再用命令行和不同网络核对,特别是本机有代理、VPN 或自定义 DNS 时。
加上前端资源时#
Workers Static Assets 可以与 API 一起部署。确定资源优先还是 Worker 优先,以及 SPA fallback 是否会把未知 API 路径错误变成 index.html。静态资源免费规则与动态请求不同;启用 Workers Caching 等特定功能时还要重查请求计费,不能把“静态页面”当作永远零计费的属性。S46 S34
私有 PWA 的离线能力要更谨慎:退出登录后仍留在 Service Worker 缓存里的数据可能继续可读。最简单的起点是只缓存公开壳,私有 API 使用 no-store,并实测注销、切换用户和旧版本更新。
05 / 路线 B:把“能到达”与“有权使用”拆开#
浏览器管理台:Access 提供身份,应用决定权限#
Access 可以保护一个内部 hostname 或明确路径。先选择真正需要的身份来源与允许用户,再配置合理的会话期限。应用依赖 Access 身份时,要验证 JWT 签名、issuer、audience 和有效期,而不是检查 Cf-Access-Jwt-Assertion 这个头是否存在。S48
不必无条件再叠一串 bearer token。若验证后的 Access 身份已经成为可靠的应用 principal,接下来应做角色和资源授权。需要另一份凭据的理由,应是机器作用域、单独撤销或更强动作确认,而不是“层数多看起来更安全”。
Cookie 会话的写请求还要考虑 CSRF 与 Origin。对未通过校验的请求在读取私有内容之前拒绝;不能先读完整对象,再靠 UI 隐藏不允许的按钮。
自动化客户端:每个用途有可撤销身份#
Service Tokens 适合机器通过 Access,不需要模拟人类登录。单独签发、设有效期并保留撤销路径。Service Auth 通过之后,应用仍要把该机器映射到允许的操作和数据范围。S49
不要把包含真实 token 的 curl 命令放进聊天或终端历史。把凭据放入受控的配置、系统 secret store 或执行环境,并防止进程调试和日志输出它们。测试记录只需写凭据身份标签、测试时间和通过/拒绝结果。
所有替代入口都要检查#
保护 admin.example.com 并不会自动证明 workers.dev、另一条 Custom Domain、预览地址和源站 IP 都已受保护。列出所有可达路径,逐一匿名访问。只需要一个公开 webhook 时,让那个精确入口执行签名、时效和重放检查,不要顺手公开整个管理面。
| 身份与路径组合 | 期待结果 |
|---|---|
| 匿名访问私有页面 | 登录挑战或明确拒绝 |
| 允许用户访问 | 成功,并映射正确应用角色 |
| 已登录但未获资格的用户 | 仍然拒绝 |
| 过期或被撤销的机器 token | 不能读取旧权限下的数据 |
| 伪造 Access JWT / 错 audience | 验证失败 |
| 默认开发域名、邻近路径、直连源站 | 不绕过既定边界 |
远程 MCP 不要被登录页面卡住#
浏览器网页登录与 MCP 的 OAuth 发现、授权和 token 校验不是同一协议。10 月发布的 Workers OAuth Provider v1 提供授权服务与资源服务分离、范围升级等能力,可作为自建服务的实现候选。S71
部署时要决定哪些发现和授权入口需要客户端可达,哪些资源调用必须携带正确 token。检验错误受众、过期令牌、撤回资格和跨资源请求。不要为了让客户端连接成功,把所有 MCP 工具改成匿名访问;也不要把一个成功 OAuth 页面等同于全部工具权限正确。
06 / 路线 C:已有服务器继续运行,Tunnel 只改变入口#
Tunnel 是源站上的连接器主动连接 Cloudflare,再把请求交给指定本地服务。它不托管应用、不备份本地磁盘,也不会在笔记本关机后继续运行那台机器上的程序。S47
先查本地,再查外网。 本地应用应先能在预期的回环或受控接口上工作。确认端口与当前进程,再创建命名 Tunnel,配置 hostname 和 ingress,必要时叠加 Access,最后做外部正向和反向测试。
以下是结构示例,不含真实 tunnel identity:
ingress:
- hostname: app.example.com
service: http://127.0.0.1:8080
- service: http_status:404
这里的 8080 只是测试端口,必须换成应用实际监听地址。最后的 404 兜底不替代防火墙;源站若同时在另一公网端口公开服务,仍可能绕过入口。
建议把验收按五段记录:本机 HTTP 响应;连接器运行状态;Tunnel 健康;hostname 命中正确服务;Access 与应用权限。某段失败时保持其他配置不变,一次只修一个原因。
Quick Tunnel 适合临时试验;长期使用应选择可管理的命名入口。后台连接器的开机启动、日志轮转、升级与停用也要有说明。一个持续运行的进程,维护责任仍然属于设备或服务器侧。
私有路由与连接维护:API 变更(核验于 2026-10-05)#
本参考没有把私有路由或连接管理写成可执行集成;普通 HTTP ingress 不受下面变更影响。如果读者另有脚本自行维护私有网段路由或 tunnel 连接,按当前官方变更核对端点,不要沿用旧路径。S117
- 私有路由:旧
POST/PATCH/DELETE /accounts/{account_id}/teamnet/routes/network/{ip_network_encoded}于 2026-10-05 移除。新建用POST /accounts/{account_id}/teamnet/routes,在 JSON body 提供network与tunnel_id;修改/删除用PATCH/DELETE /accounts/{account_id}/teamnet/routes/{route_id}。 - 连接查询:Tunnel(
cfd_tunnel)与 Mesh(warp_connector)的 list/get 响应不再内嵌connections字段。Tunnel 连接改用GET /accounts/{account_id}/cfd_tunnel/{tunnel_id}/connections;不是从 routes 端点读取。 - 客户端:使用
cloudflared tunnel route ip add/delete的脚本需升级客户端。cloudflared 与 Terraform 不依赖被移除的connections字段;这条结论只针对连接查询,不表示所有私网 route API/provider 用法都免于检查。
本仓库未调用这些账户接口;以上为官方迁移说明的维护摘要。S117
与设备私网的区别#
Cloudflare One Client / WARP 是终端接入和流量策略;Mesh 连接加入组织的设备与私网;Tunnel 发布被明确选择的服务。当前 Mesh 仍有 beta 标识,不应成为没有替代方案的唯一灾难恢复入口。S61
与现有 VPN 共存时,先在非关键设备观察默认路由、DNS、虚拟接口与私网路径。Split Tunnel 的 IP 排除不自动证明 DNS 也走原来的解析路径,应按客户端实际配置检查。面向个人的小型环境,不需要为了使用 Cloudflare 服务而同时换掉已经稳定的网络层。S62
07 / 数据:保存内容,也保存重新解释它的条件#
D1 与 R2 的分工#
D1 适合结构化目录、任务状态、版本、约束和查询;R2 适合原件、媒体和导出文件。数据库里存对象 key、hash、大小、权限与来源,通常比把大对象塞进每一行更容易维护。D1 按读取/写入的行计量,索引会影响性能和写入成本;R2 还计存储与对象操作。S37 S38
下面是本手册提出的最小文档目录模型,不是平台要求。它把撤回与物理删除分开,也把当前版本与原始对象分开:
CREATE TABLE documents (
id TEXT PRIMARY KEY,
owner_id TEXT NOT NULL,
current_revision INTEGER NOT NULL CHECK(current_revision > 0),
state TEXT NOT NULL CHECK(state IN ('active','withdrawn'))
);
CREATE TABLE document_versions (
document_id TEXT NOT NULL REFERENCES documents(id),
revision INTEGER NOT NULL CHECK(revision > 0),
object_key TEXT NOT NULL,
sha256 TEXT NOT NULL,
byte_size INTEGER NOT NULL CHECK(byte_size >= 0),
created_at TEXT NOT NULL,
PRIMARY KEY(document_id, revision)
);
写新版本时使用比较并交换:只有 current_revision 仍等于用户开始编辑时的值,才提交新版本。否则返回冲突,让调用者重读,而不是让较旧页面覆盖新内容。用数据库实际支持的原子操作实现,不把几次独立网络请求假装成一个事务。
R2 权限与文件处理#
先保持 bucket 私有,通过应用验证资格再返回对象,或签发用途明确、时长合适的访问凭证。不能把难猜的对象 key 当作完整授权;撤回访问之后,既发出的有效链接和客户端缓存也可能需要处理。
上传限制大小、类型和内容,不能只信文件扩展名。对网页可执行内容使用合适的下载策略或隔离域名,避免把上传文件当作主应用可信页面。为原件保留摘要、字节数和对象身份,读取时才能检查内容有没有换掉。
生命周期规则先限到特定 prefix,再核查会影响已有的哪些对象。临时预览、依赖缓存、正式成果和备份分别设保留规则,避免一条“清理旧文件”把长期成果一起删掉。S52
不要用一个“备份成功”覆盖所有情况#
D1 的 Time Travel 提供时间点恢复,但保留期与计划有关;Paid 当前为 30 天。回到过去会改变目标数据库,不能直接在生产上试试看。操作前先读当前 bookmark,确认目标、时间和受影响数据,再在替代环境验证恢复流程。S50
SQL 导出另有实际限制。当前 D1 不直接接收原始 SQLite 文件;导入的是符合 D1 条件的 SQL。包含虚拟表、例如全文索引的数据库还存在导出限制。不要为导出方便临时删掉生产全文表;可以设计应用级原始数据导出,并让可派生的全文索引在恢复后重建。S51
一次有用的恢复演练,应能回答:目录版本是否正确;每个对象是否存在且 hash 一致;当前权限是否恢复;可派生索引如何重建;尚未完成的任务是否会误重复执行。导出文件存在只是开始。
代码回滚与数据回滚分开。 新版本已经写入新字段或发出外部操作之后,回退 Worker 代码不会撤销这些事实。迁移优先采用旧新版本都能读取的过渡结构,再择期清理;涉及不可逆删除时保留单独操作与确认。
08 / 自动化:接收成功、执行成功、结果可见各有自己的状态#
先选择最少的一种编排#
Queues 解决接收与消费解耦、削峰和重投;Durable Objects 适合按实体协调;Workflows 适合多步骤恢复、等待事件或较长间隔;Cron 负责按时间触发。普通短请求不必全套使用。S53 S55 S56 S58
队列是至少一次投递的工作环境,不能因为常见请求只收到一次,就把 consumer 写成单次运行程序。DLQ 是重试耗尽后的存放与调查入口,仍需要有人或程序处理;未配置时要认真确认消息在重试耗尽后的行为。S53 S54
一个常见陷阱:去重记录比工作先完成#
一种有缺口的简化流程是先登记 event_id,发现已经登记就直接 ACK,否则执行工作。如果登记之后、工作之前进程退出,下一次投递看见“已登记”就跳过,任务永远丢失。
相反,工作做完才登记也不充分:外部操作成功、登记前断网,会在下一次投递时重复操作。问题不能靠把一行代码上下移动来解决,需要保存工作处于哪种状态。
以下是建议的任务模型:
| 状态 | 事实含义 | 再次投递时的处理 |
|---|---|---|
pending |
已持久接收,尚未领取 | 可以竞争领取 |
running |
被某个 attempt 领取,租约有效 | 不并发启动相同工作 |
done |
所需结果已核实并提交 | 可以安全 ACK |
retryable |
已知失败,重试不会扩大损失 | 按退避和预算重试 |
uncertain |
外部结果不能确认 | 停止盲重试,先核对 |
cancelled |
取消已生效,后续执行不应再开始 | 返回取消状态,不假装完成 |
领取与状态变化应当是原子的。每次领取有递增 generation 或不可复用的 attempt token;旧执行者即使迟到,也不能提交覆盖新执行者。租约过期只是允许考虑恢复,不证明旧执行者已经停止,更不证明外部操作没有发生。
数据库与队列之间也有一个缝#
“向数据库写任务,再发队列”涉及两个系统。写任务后断网,队列可能没收到;先发队列后写任务,消费者可能看不到任务。建议在数据库的同一原子提交中写任务和 outbox,然后由投递器发送 outbox;发送后的标记失败可以造成重复投递,由 consumer 的任务状态处理。
这保证的是待投递意图不会悄悄消失,不是跨服务 exactly-once。Outbox 本身也要有有界批次、重试、过期和检查积压的入口。
外部副作用需要自己的幂等边界#
对于支持 idempotency key 的服务,将一次逻辑操作的稳定 key 传给服务商。响应丢失后,优先使用同一 key 查询或重试,而不是创造一个新 key。对不支持幂等、结果又不可查询的操作,在发送超时后进入 uncertain,交给明确的核对流程。
付款、对外发布、删除和通知都可能遇到这个问题。Workflow 记住某个步骤,并不把外部服务也变成同一事务;平台的自动重试是机制,不是执行不可逆动作的许可。S55
设计一轮故障注入,而不是只看成功路径#
在合成数据上分别模拟:接收后未发队列;领取后退出;结果已写入但 ACK 丢失;外部服务成功但客户端超时;旧租约持有者迟到;取消与执行竞争;重试耗尽进入 DLQ。验收目标不是“每次都成功”,而是任务没有消失、重复没有扩大副作用、未知状态可以找到。
Workflows 当前按请求、CPU、存储与步骤计费,步骤和存储计费自 2026-08-10 开始;等待网络或 sleep 不计 CPU,但保留状态仍有存储维度。Paid 包含每月 50 万步骤和 1 GB·月状态;不能沿用早期“整个工作流免费”的印象。S44
Cron 使用 UTC。业务想按当地日期执行时,把时区与夏令时语义明确写在任务定义里。每次触发携带逻辑时间窗,例如“处理上一个已结束日期”,避免重触发产生两份不同身份的同日任务。S56
09 / 检索与记忆:先让人找回原件,再让模型组织答案#
两条路径分别解决不同问题#
AI Search 负责托管摄取、索引与检索;Workers AI + Vectorize 则让应用自己控制分块、向量、召回与核验。前者减少运维,后者保留更多可实验的环节。已有检索能满足需求时,不需要仅因新产品 GA 就迁移全部资料。S09 S10 S40 S41
无论选哪一条,都先准备一组实际查询与已知答案位置。例如:精确术语、同义改写、模糊记得的描述、旧版本名称、找不到的内容、没有权限的内容。只展示五个漂亮结果,无法说明系统是否适合日常。
路线 D:公开或获准使用的文档集合#
建议先选 20–50 份可公开的材料。为每份材料保留稳定 ID、来源、版本、获取日期和读取许可。去掉导航噪声、重复导出和错误编码之后,再决定分块边界。不要把“成功导入”当作内容已经完整。
若使用 AI Search,选择适合输入的 embedding 与处理路线,再检查摄取状态、解析结果和真实查询。10 月 GA 已支持图片与 OCR;视觉输入和纯文本描述的效果要用同一组问题对照,不把“支持图片”误写成“理解一切构图”。具体文件大小和模型条件以当前文档为准。S09 S10
若自建 Vectorize,记录 source_id、source_revision、chunk_id、内容 hash、embedding 模型和索引版本。不同模型不只可能维度不同,即使维度相同也未必处在同一语义空间。模型升级应建立新索引代,而不是把新旧向量混写后继续比较分数。S64
检索结果不能自己决定访问资格#
一个建议的读取链路是:
| 阶段 | 输入 | 必须保留的条件 |
|---|---|---|
| 确定读取身份 | 经验证的 principal | 用户、组织、集合与授权范围 |
| 建立候选查询 | 关键词、向量或混合查询 | 尽可能先限制允许的数据范围 |
| 回查当前记录 | 候选 ID 与版本 | 当前资格、撤回状态、有效版本 |
| 读取原文窗口 | 获准的 chunk 或对象引用 | 可回到原件的定位与有限输出量 |
| 生成或整理 | 已核验的材料 | 答案与来源关联,缺失可见 |
过滤条件应该由服务器从授权身份推导,而不是信任模型传来 owner_id。远端索引命中只能提供候选,不能成为“这个人仍然有权读”的证据。缓存和分页同样要绑定读取主体和数据版本。
元数据过滤通常还有字段数量、字符串长度等限制。例如 AI Search 当前过滤字段有数量及索引长度约束;把任意复杂 ACL 编成一个长字符串不等于可靠过滤。复杂权限应选择明确的分区策略,并在返回内容前进行本地或权威记录核验。S10
更新和撤回要有两种速度#
立即生效的应当是应用读取资格:内容撤回后,任何查询都不能再返回该正文。向量与派生缓存的物理清理可以作为可观察、可重试的后续任务,记录何时完成。不要要求用户等待索引重建才真正撤回内容。
更新原文时,先准备新对象与索引,验证可读和版本匹配,再让当前指针切到新代。失败时继续读旧的有效代,或明确报告不可用;不应把一半旧 chunk 与一半新 chunk 混成完整材料。具体实现可以简化,但切换的原子边界要清楚。
Vectorize 的 mutation 成功并不保证所有查询立刻可见。写入后按文档提供的状态与实际读回验证,不靠固定睡一秒钟建立正确性。S64
记忆还多了修订、来源与适用范围#
文档搜索回答“哪里可能有相关材料”,记忆还要回答“这句话何时有效、是谁说的、后来有没有修改、适用于哪个人或项目”。这些问题不是换一个 embedding 自动解决的。
Cloudflare Agent Memory 当前仍为 private beta,与 AI Search 的 GA 状态分开。它提供 namespace/profile 及摄取、抽取、召回等能力,可以作为候选,但不能在未获得权限时写成已可用依赖。S60
建议把自动抽取先放在建议层,保留来源引用;更正与撤回不直接删除所有历史解释;用户能够查看当前有效视图,也能追溯为什么某条内容曾被保留。用“明确禁止召回”“旧偏好后来变更”“不同人物同名”“不同上下文相反”作为测试,而不只测事实问答。
检索的成本也要按阶段观察#
分别记录摄取、embedding、候选查询、重排、原文核验和生成耗时。AI Search 11 月新计费把内部 embedding、重排与存储等纳入服务规则,但生成与外部模型仍需另看;自行使用 Workers AI + Vectorize 则仍按各产品计费。S10 S40 S41
若一个搜索需要十几秒,先看各阶段,而不是立刻换模型。重复生成查询向量、串行权限查询、取回过大上下文、冷启动和远端超时都可能占时间。保留“只检索、不生成”的基线,才能知道生成式回答增加了多少延迟与收益。
10 / 模型调用:先知道谁在付费,再决定谁来回答#
Gateway 是流量控制面,不是另一个模型#
Workers AI 运行模型;AI Gateway 位于应用与支持的模型服务之间,组织身份、观察、路由与费用。通过绑定或受控凭据可以减少业务代码直接持有 provider key,但访问 Gateway 的资格本身仍然是敏感权限。S41 S45 S15
新入口接入时先只记录请求 ID、模型标识、耗时、状态、token 与费用。需要保存正文做调试时,限定数据范围和保留期,允许关闭。不要默认把私有图片、完整对话、工具结果与访问令牌一起写入可长期搜索的日志。
首次 Gateway 创建于 2026-09-24 或之后的新客户,日志采用 Workers Logs 的新规则。Unified Billing 购买 credits 当前加收 5%;“统一入口”不代表模型推理免费或所有日志都在 $5 基础费内。S15
三种缓存分别处理#
| 缓存类型 | 复用什么 | 主要风险 |
|---|---|---|
| 完整回答缓存 | 之前生成的整份输出 | 最新数据与权限改变后仍返回旧答案 |
| 提供商 prompt cache | 模型可复用的输入前缀计算 | 命中条件依提供商与模型,不等同于 HTTP 缓存 |
| 应用结果缓存 | 已计算的结构化业务结果 | 缓存 key 缺少用户、版本或配置维度 |
这是设计上的区分。一个 Gateway MISS 不能证明提供商没有利用输入缓存;一个完整回答命中也不能证明结果仍适用于当前任务。缓存 key 与失效规则应随数据权限和版本一起设计。
AutoRouter:只在允许改变模型的地方用#
AutoRouter 在允许的候选模型中为请求路由。beta 期间路由本身免费,实际推理照常计费。把模型池写成配置,记录实际命中模型;关键任务保存足够的重现信息。S13
先选择可重试、错误可检测的任务,例如草稿分类或简单转换。固定模型的实验、依赖特定输出格式的管线,以及需要稳定行为的长期会话,不应悄悄加入通用自动池。
User Insights 可以帮助按归属观察请求和成本,但只能看见流经 Gateway 的部分;异常标记不会自动阻止调用。聚合成本需要明确区分本地模型、订阅内使用、直接 API 与 Gateway 请求,避免一份图表显得很完整,实际漏掉大部分费用。S14
Clef:有限选择可以先做成低风险建议#
Clef 系列输出定义好选项的概率,适合分类、选择或排序任务。它可用于决定“下一步还需不需要更多材料”,不需要为每次小判断生成长段解释。模型输出概率仍需在自己的材料上校准,不能直接当正确率。S16 S17 S18
一种有用的试验是:准备真实正例、容易混淆的反例与无法判断项,先让它只推荐,不实际触发外部动作。统计漏判和误判的不同代价,再决定是否接入流程。关键不在它能不能给出一个选项,而在错的时候是否可见、可纠正。
11 / Agent 执行:持久身份、Linux 环境与文件历史分开#
哪些事情留在 Worker,哪些交给容器#
普通 API 变换、字段检查和轻量计算先考虑 Worker;需要完整 Linux、系统包、原生依赖或多语言命令时再考虑 Containers。Agents SDK 提供基于 Durable Objects 的身份、状态、连接与执行能力;它不是完整 Linux,也不替代应用自己的权限和任务语义。S58 S59
为一次任务明确记录:输入版本、允许操作、模型配置、运行环境、资源预算、持久结果位置、取消方式。临时执行者拿到的是这次任务的能力,不是长期管理整套账户的权力。
Sandbox 1.0 的关键变化#
当前 1.0 迁移路线不再沿用旧版万能 Sandbox 类。应用通过自己的 Durable Object 控制 ctx.container;命令以参数数组执行,每次独立指定工作目录和环境。新系统镜像不保证包含旧版内置的所有工具;文件 helper 和特殊集成也可能要求相应 shim。S72
这使隔离层次更清楚,但开发者需要显式处理生命周期。部署新 Worker 不等于替换已运行的容器;旧进程和新代码并存时,协议与镜像版本必须能够兼容,或在有控制的停机后重启。
1.0 默认的容器出站能力与旧版不同,应按文档显式选择网络设置或受控 outbound handler。把第三方凭据保留在 handler 之外的控制层、在允许的请求上注入,比把长期密钥写进镜像更容易限制。这个机制仍要经过实际访问测试,不能只看配置写了“deny”。S72
路线 E:一次可以关闭、恢复和比较的执行实验#
选一个无私有凭据的公开仓库版本,在自定义镜像或准备阶段安装准确依赖。第一次只执行确定性的构建或检查,不同时引入自动选模型、互联网自由浏览和生产写权限。
准备完成后保存文件系统快照。它绑定镜像版本,只保存文件,不保存内存与运行中的程序;当前 30 天期限会在恢复时刷新。若快照包含凭据、下载的私有材料或本地工具配置,这些内容也会被一起保存,应在建立基线前清理并核查。S05
从基线生成两个环境,分别做一个有限修改,交回补丁、测试输出和可保存产物。需要留历史的文件可以进入 Artifacts;大型媒体可进入对象存储。正式源码是否接受这些修改,仍走原来的审阅过程。S07
完成后关闭执行环境,重新启动并恢复,确认:输入与镜像身份正确;结果可读;旧任务不会自动重复;临时凭据已失效;成本指标反映了实际运行时长。只有这轮通过,“可恢复”才有具体含义。
休眠时间也属于费用#
Containers 的 CPU 按实际活跃使用计量,内存和磁盘则按分配配置与运行时长计量。任务两分钟做完,但实例多运行十分钟,不能仍按两分钟预算。模型、DO、网络与日志也可能另有费用。S06
为容器建立独立的任务截止时间和关闭策略。一次命令取消可能已改变文件;向外部 API 发出的请求可能已经成功。停止容器不是撤销过去副作用,取消结果需要诚实保留。
不要把临时保活理解为可靠后台任务#
10 月的 DO pending-I/O 更新可以让部分仍在等待的操作继续阻止空闲回收,保护存在时仍计时长费用。它不保证从崩溃中恢复,也不保证整段业务只执行一次。需要可接续的工作,用持久任务记录或 Workflow 保存可恢复状态。S70
什么时候看 Cloudflare OS#
当目标确实是文件、工具、上下文与多个可修改应用组成的工作空间时,Cloudflare OS 值得研究。当前自部署源码与托管候补是两回事。先检查 Gatekeeper 的权限模型、数据导出与升级方法,再决定是否承载关键工作;开源软件不等于它依赖的存储、模型和浏览器免计费。S20
12 / 发布与前端验收:让预览成为可看的证据#
只留一条负责生产发布的路径#
可以由 GitHub Actions 负责检查和部署,也可以由 Workers Builds 负责构建与发布。先决定哪一条是生产入口,另一条提供检查或预览即可。两个系统同时自动部署主分支,容易形成版本竞争与缺失检查。
Workers Builds 当前 Paid 包含每月 6,000 分钟、6 并发,但单次构建仍有 20 分钟上限;不是通用的无限时 Linux 作业平台。macOS、Windows 和设备专属集成测试继续放在合适环境里。S35 S65
建议流水线依次输出:固定依赖安装结果、类型与单元测试、构建物、隔离预览、浏览器检查和可归档验收材料。正式发布使用已经检查的同一源版本,避免检查 A、上线 B。
Preview URL 不证明数据隔离#
当前资源规则中,某些预览状态(例如 DO 和 Containers)有自动隔离支持,其他数据资源则依赖配置。D1、R2、KV、队列或 Vectorize 若指向同一目标,预览仍可能操作正式数据。逐项看绑定,不用一个“Preview”标签代替确认。S63
外部贡献的 PR 不应自动拿到生产 token、真实用户数据和宽泛出站权限。预览用合成数据;需要特定外部服务时使用独立测试身份并限制费用。部署结束记得清理预览产生的文件、队列和临时资源。
Browser Run:操作生命周期比单张截图更重要#
使用固定视口与固定输入,检查从进入页面、执行主要动作、保存、刷新、回读、取消到错误恢复的完整路径。页面视觉和交互行为分别记录。截图显示按钮存在,不证明按下之后状态正确。S36
一个实际的验收包可以包含:桌面与移动视口的截图、键盘操作路径、一次错误状态、导出文件与重开结果。比较同一输入的两个版本,才能判断变化来自设计还是随机内容。
Kitesurf 是新的浏览器与终端操作入口,可以用于独立实验;它的兼容性不能替代目标用户实际使用的浏览器。发布给手机用户的站点,仍要测移动浏览器、软键盘、触控、低带宽与中断恢复。S19
需要登录、上传、发布或支付的浏览器任务,要把人可确认的具体动作留在执行前。正当的自动化可能需要会话 cookie,但应只读取和使用该任务获准的会话,不把浏览器个人资料目录整体交给临时执行环境。
13 / 观测:先记录足以定位的问题,不先复制全部正文#
一次请求最有用的记录#
建议保留 request ID、部署版本、动作类别、处理阶段、耗时、结果状态、重试次数和必要的资源引用。失败时记录稳定错误分类;完整堆栈和原始正文分别控制访问与保留期限。
对于检索,计时分到 embedding、索引查询、权限核验和生成。对于异步任务,分清接收时间、排队时间、执行时间和结果提交时间。一次总耗时无法告诉维护者该优化哪一段。
Workers Issues 的第一轮接入#
当前公开 beta 可以聚合异常、失败调用、5xx 和错误日志,并关联部署与源映射;配置启用后才处理新流量。将 observability.issues.enabled 写进项目配置,避免下一次部署把控制台开关覆盖。S11 S12
先制造一个不会含敏感内容的测试错误,确认分组、版本和调用上下文正确,再连接 webhook 或修复 agent。自动化第一步只生成调查材料和候选修复;是否合并、上线,仍由项目原来的测试和权限决定。
Workers 侧的观测不会自动看到所有本机脚本、第三方平台和离线任务。要么这些路径有自己的日志与告警,要么显式发送经过裁剪的事件,不能在控制台里看不见就推断它们没有失败。
告警应当对应一种行动#
“CPU 稍微高一点”通常不如“任务队列已超过可接受等待时长”有用。选择与用户体验和恢复相关的阈值:持续错误比例、任务积压、未知结果、成本异常、索引新版本长时间未就绪。每条告警都写清应该查看哪份材料,避免只把焦虑推到通知栏。
14 / 三种规模的成本计划#
本节是预算方法,不是账户报价。具体包含量参见本期报告和官方定价;税费、地区、外部服务与已被其他项目消耗的额度都要单独确认。S34 S36 S37 S38 S39 S40 S41 S43 S44
| 使用形态 | 首先观察 | 最容易漏算的项 | 建议的停止条件 |
|---|---|---|---|
| 静态站 + 少量 API | 动态请求、CPU、日志 | Worker-first 路由、重复构建、日志正文 | 错误/请求突然上升时暂关高成本路径 |
| 私人资料库 + 检索 | 索引体量、摄取、查询、模型 | 重复分块、重排/生成、失效索引长期保留 | 日查询或摄取超过个人预算则排队 |
| 按需 agent / Linux 工作台 | 总运行时长、规格、模型调用 | 空闲环境、失败重试、预览、产物与网络 | 截止时间、最大实例数和模型调用数 |
分配量与实际使用量别混算#
容器可能按分配的内存计费,CPU 则看实际使用;R2 计对象操作;D1 计行而不是 SQL 次数;向量费用含维度,不能只数条目;队列重试与消息大小也会影响操作量。把每项单位写出来,比只比较“每月几美元”更可靠。S06 S37 S38 S39 S40
普通 Workers KV 适合一部分读多写少的数据,但不应拿来代替需要事务的高频状态。KV Instant 是另一种特殊产品,其每次写操作与每 MB 存储价格都与普通 KV 显著不同;不要因为名称接近就沿用成本估计。S42 S25
先给实验留一本小账#
每次实验记录输入规模、执行次数、总运行时长、峰值资源和保留产物。第一次小额账单不代表规模扩大后仍等比例:重试风暴、索引全量重建、媒体文件和高并发可能改变主要成本项。
同一账户多个应用共享包含量时,分项目的“独立估计”不能直接相加得到账单。最好先算所有应用的实际总量,扣除一次共享包含量,再按项目观测分配责任。
免费、包含、测试期间不收费是三种承诺#
免费计划可能达到上限就失败;Paid 包含量之外可能继续计费;beta 免费则可能有明确未来起算日。Artifacts 的官方来源目前存在 10 月 14/15 日一天冲突,AI Search 新计费明确从 11 月 1 日开始。发布文档需要同时保留核验日期与生效日期,不能只写“现在免费”。S07 S08 S10
15 / 排障、恢复与停用#
先沿一条请求路径找问题#
| 现象 | 先检查 | 暂时不要做 |
|---|---|---|
| 域名解析与其他设备不同 | DNS、代理、解析器、权威记录 | 同时改证书和应用代码 |
| 302 到登录页 | Access 是否为正确应用与路径 | 直接把整个站点 Bypass |
| 403 | 边缘策略、机器身份、设备条件 | 不看响应来源就重置应用密码 |
| 401 JSON | 应用 token、issuer、audience、scope | 以为 TLS 成功就是权限正确 |
| 404 | hostname、路由、ingress、资源是否存在 | 添加万能 catch-all 把错误藏起来 |
| 429 | 应用或上游的配额与重试 | 无上限即时重试 |
| 5xx / 超时 | request ID、阶段耗时、依赖健康 | 换一批配置却不保留错误样本 |
| 页面仍是旧版 | 部署版本、路由、CDN 与 Service Worker | 认定“部署命令成功”就是用户已看到新版 |
| 向量刚写入查不到 | mutation 状态、模型/维度、命名空间、版本 | 重复无版本地全量 upsert |
| 任务登记了却没结果 | outbox、领取状态、租约、未知结果 | 直接把登记行删除重新跑 |
| 容器里的文件消失 | 生命周期、镜像、恢复方式、持久产物 | 把新环境空目录当作从未执行 |
| 手机连上私网后别的路径断了 | 路由、DNS、客户端模式 | 从唯一远程会话同时改所有网络层 |
这是排查顺序,不是凭状态码就确定根因。记录响应来自边缘、应用还是第三方;一次只改一个可验证的原因,恢复后重做负向测试。
一份可实际执行的恢复记录#
演练前写清目标和范围,例如“恢复一个测试文档集合到指定版本,不恢复生产外部任务”。保存当前版本、对象清单和备份身份。执行后验证代表性记录、对象 hash、权限拒绝、新旧索引切换与待处理任务。
如果恢复过程中发现未知状态,保留它并停止自动推进。把“不知道是否已发出”改成“未发送”会让后续工具制造重复动作;把它改成“成功”又会掩盖缺失。恢复流程应允许不确定性有一个明确位置。
停用不是删掉 Worker 就结束#
先停止新入口和自动触发,再处理正在执行的任务;保存需要的结果,撤销不再使用的凭据;确认容器、浏览器会话、预览、队列、Workflow 状态与临时对象的保留计划。最后根据目标删除资源或继续只读保存。
对域名入口,避免 DNS 仍指向已不存在或由别人接管的服务。对备份,确认至少有一份能在不依赖被停用服务的条件下读取。对模型与日志,单独检查外部提供商和持久记录的保留设置。
16 / 容易误判的做法与核查#
以下问题会改变实施路线或验证结果。表中列出需要分开的条件、当前可用的做法与对应依据;它们不是账户环境中的验收记录。
| 容易误判的做法 | 当前做法 | 理由与出处 |
|---|---|---|
| 每一层入口都再加一份 bearer | 分开网络可达、可信身份与应用授权 | 可信 Access 身份可以映射角色,不必机械叠多份 bearer。S48 |
| 把调用者标签当作 Service Binding 的身份证明 | 明确标签本身不证明身份 | 能力绑定、应用协议与可伪造输入需要分开。S45 S57 |
| 队列先登记、重复就 ACK | 设计可恢复任务状态、outbox、租约与未知结果 | 登记后退出可能导致任务被跳过;第 8 章给出故障路径。S53 S55 |
| 沿用 Sandbox 0.x 的调用方式 | 按 1.0 原生容器接口逐项检查迁移 | 不混用旧类、旧镜像假设和新 API。S72 |
| 临时磁盘丢失,因此所有恢复靠外部存储 | 补充文件系统快照,仍区分长期结果 | 快照不保存进程,且有镜像与期限条件。S05 |
| 把 AI Search 当作仍在 beta,或沿用旧费用 | 按 GA、多模态与 11 月新计费分别核对 | 价格和额外收费判断应按生效条件逐项检查。S09 S10 |
| 对所有 Gateway 使用旧固定日志额度 | 按首次创建日期区分日志规则 | 2026-09-24 之后的新客户走 Workers Logs。S15 |
| 把 Cloudflare OS 的托管版当作已开放 | 区分自部署源码与托管版候补 | 两种交付形态与状态不同。S20 |
| 把 D1 SQL 导出当作通用恢复方案 | 检查虚拟表、导入格式与恢复演练限制 | 不能把全文索引数据库假设成随时可全库导出。S50 S51 |
| 一概禁止浏览器 cookie/storage | 按任务授权并尽量缩小会话范围 | 合法登录任务需要会话;关键是范围、外流与副作用 |
| 模板或测试通过就算已部署可用 | 分开文档、源码、本地、云端与真实使用证据 | 这里的检查不冒充读者的部署记录 |
表中的平台状态与费用按各自来源和资料截止日阅读;公开示例的元数据、附件与权限边界仍须针对准备分发的具体版本检查。
17 / 分享与持续修订#
公开版保留机制与操作顺序,私人版保留真实账户、资源和运行记录。教程里的示例名称不是应该部署到生产的默认配置。截图、终端 prompt、导出 PDF 的元数据和打包的测试数据也需要检查,不能只删除正文中的密钥。
一次修订至少记录:变化依据、核验日期、生效日期、影响哪些章节、哪些例子需重测、哪些旧判断保留为历史。产品从 beta 到 GA 不等于原有试验自动通过验收;SDK 1.0 也不代表示例使用的版本已经安装并执行过。
建议把报告作为按期冻结的出版物,把手册作为可修订入口。来源条目、产品状态和可复算的费用假设保持小而明确;只有出现反复出错的结构时,才把它升级为检查脚本。不要为了持续更新而制造每天都必须发一篇的负担。
来源索引#
以下为本参考引用的公开来源;资料截止日为 2026-10-02,各条目的核验范围见来源说明。网页会继续变化,标题与链接不代表已保存其全文快照。正文中的事实与编辑建议分开表达;本索引不代表云端部署验证。
S02 · cf CLI 发布
https://blog.cloudflare.com/cloudflare-cf-cli-launch/
S03 · cf CLI 文档
https://developers.cloudflare.com/cf/
S05 · Containers 文件系统快照
https://developers.cloudflare.com/containers/guides/snapshots/
S06 · Containers 价格
https://developers.cloudflare.com/containers/platform/pricing/
S07 · Artifacts 公开测试发布
https://blog.cloudflare.com/next-git-platform-on-cloudflare/
S08 · Artifacts 价格
https://developers.cloudflare.com/artifacts/platform/pricing/
S09 · AI Search GA
https://blog.cloudflare.com/ai-search-ga/
S10 · AI Search 限制与价格
https://developers.cloudflare.com/ai-search/platform/limits-pricing/
S11 · Workers Issues 发布
https://blog.cloudflare.com/real-time-issue-detection/
S12 · Workers Issues 文档
https://developers.cloudflare.com/workers/observability/issues/
S13 · AutoRouter 发布
https://blog.cloudflare.com/auto-router/
S14 · AI Gateway User Insights
https://developers.cloudflare.com/ai-gateway/observability/user-insights/
S15 · AI Gateway 价格与日志
https://developers.cloudflare.com/ai-gateway/reference/pricing/
S16 · Clef 与强化学习平台发布
https://blog.cloudflare.com/clef-decision-models/
S17 · Clef 模型卡
https://developers.cloudflare.com/workers-ai/models/clef/
S18 · Clef-flash 模型卡
https://developers.cloudflare.com/workers-ai/models/clef-flash/
S19 · Kitesurf 更新
https://blog.cloudflare.com/kitesurf-update/
S20 · Cloudflare OS 托管候补
https://blog.cloudflare.com/managed-cloudflare-os/
S25 · KV Instant 私测与价格
https://blog.cloudflare.com/workers-kv-instant/
S34 · Workers 价格
https://developers.cloudflare.com/workers/platform/pricing/
S35 · Workers Builds 限制与价格
https://developers.cloudflare.com/workers/ci-cd/builds/limits-and-pricing/
S36 · Browser Run 价格
https://developers.cloudflare.com/browser-run/pricing/
S37 · D1 价格
https://developers.cloudflare.com/d1/platform/pricing/
S38 · R2 价格
https://developers.cloudflare.com/r2/pricing/
S39 · Queues 价格
https://developers.cloudflare.com/queues/platform/pricing/
S40 · Vectorize 价格
https://developers.cloudflare.com/vectorize/platform/pricing/
S41 · Workers AI 价格
https://developers.cloudflare.com/workers-ai/platform/pricing/
S42 · KV 价格
https://developers.cloudflare.com/kv/platform/pricing/
S43 · Durable Objects 价格
https://developers.cloudflare.com/durable-objects/platform/pricing/
S44 · Workflows 价格
https://developers.cloudflare.com/workflows/reference/pricing/
S45 · Workers Bindings
https://developers.cloudflare.com/workers/runtime-apis/bindings/
S46 · Workers Static Assets
https://developers.cloudflare.com/workers/static-assets/
S47 · Cloudflare Tunnel
https://developers.cloudflare.com/cloudflare-one/networks/connectors/cloudflare-tunnel/
S48 · Access JWT 验证
https://developers.cloudflare.com/cloudflare-one/access-controls/applications/http-apps/authorization-cookie/validating-json/
S49 · Access Service Tokens
https://developers.cloudflare.com/cloudflare-one/access-controls/service-credentials/service-tokens/
S50 · D1 Time Travel
https://developers.cloudflare.com/d1/reference/time-travel/
S51 · D1 数据导出
https://developers.cloudflare.com/d1/best-practices/import-export-data/
S52 · R2 对象生命周期
https://developers.cloudflare.com/r2/buckets/object-lifecycles/
S53 · Queues 重试与批处理
https://developers.cloudflare.com/queues/configuration/batching-retries/
S54 · Queues 死信队列
https://developers.cloudflare.com/queues/configuration/dead-letter-queues/
S55 · Workflows 执行规则
https://developers.cloudflare.com/workflows/build/rules-of-workflows/
S56 · Cron Triggers
https://developers.cloudflare.com/workers/configuration/cron-triggers/
S57 · Service Bindings
https://developers.cloudflare.com/workers/runtime-apis/bindings/service-bindings/
S58 · Agents SDK
https://developers.cloudflare.com/agents/
S59 · Sandbox SDK
https://developers.cloudflare.com/sandbox/
S60 · Agent Memory
https://developers.cloudflare.com/agent-memory/
S61 · Cloudflare Mesh
https://developers.cloudflare.com/cloudflare-one/networks/connectors/cloudflare-mesh/
S62 · Split Tunnels
https://developers.cloudflare.com/cloudflare-one/team-and-resources/devices/cloudflare-one-client/configure/route-traffic/split-tunnels/
S63 · Workers 预览资源隔离
https://developers.cloudflare.com/workers/previews/resources/
S64 · Vectorize Client API
https://developers.cloudflare.com/vectorize/reference/client-api/
S65 · Workers Builds
https://developers.cloudflare.com/workers/ci-cd/builds/
S66 · Workers 入门
https://developers.cloudflare.com/workers/get-started/guide/
S67 · Zero Trust 计划
https://www.cloudflare.com/plans/zero-trust-services/
S70 · Durable Objects pending I/O 保活
https://developers.cloudflare.com/changelog/post/2026-10-01-pending-io-keep-alive/
S71 · Workers OAuth Provider v1
https://developers.cloudflare.com/changelog/post/2026-10-01-workers-oauth-provider-1x/
S72 · Sandbox SDK 1.0 迁移差异
https://developers.cloudflare.com/sandbox/sdk/migrate/changes-in-1-0/
S117 · Tunnel routes 与 connections API 变更
https://developers.cloudflare.com/changelog/post/2026-07-09-tunnel-routes-and-connections-api-changes/