跳转到内容
搜索文档

更新日志

Cloudflare 的最新更新与改进。

Agent 可以响应 MCP 引导式输入(elicitation)请求

现在,使用 addMcpServer 连接到 Model Context Protocol (MCP) 服务器的 Agent 可以处理 引导式输入(elicitation)请求。

引导式输入允许 MCP 服务器在处理工具调用时请求用户输入。表单(Form)模式收集结构化、非敏感的数据。URL 模式在打开带外(out-of-band)流(如第三方授权或支付)之前会征得同意。

sequenceDiagram
    participant 用户
    participant Agent as Agent (MCP 客户端)
    participant 服务器 as MCP 服务器
    participant 浏览器

    服务器->>Agent: elicitation/create
    Agent->>用户: 显示服务器、原因以及输入或 URL
    用户->>Agent: 提交、打开、拒绝或取消
    Agent->>浏览器: 征得同意后打开 URL(URL 模式)
    Agent->>服务器: accept, decline, or cancel
    服务器-->>Agent: 可选的 URL 完成通知

onStart() 中为您 Agent 支持的每种模式注册一个处理器:

import { Agent } from "agents";

export class MyAgent extends Agent {
	onStart() {
		this.mcp.configureElicitationHandlers({
			form: (request, serverId) => this.forwardToUser(request, serverId),
			url: (request, serverId) => this.forwardToUser(request, serverId),
		});
	}

	forwardToUser(request, serverId) {
		// Show the request in your UI and resolve after the user responds.
		throw new Error(
			`Implement elicitation for ${serverId}: ${request.params.message}`,
		);
	}
}
import { Agent } from "agents";
import type { ElicitRequest, ElicitResult } from "agents/mcp";

export class MyAgent extends Agent<Env> {
	onStart() {
		this.mcp.configureElicitationHandlers({
			form: (request, serverId) => this.forwardToUser(request, serverId),
			url: (request, serverId) => this.forwardToUser(request, serverId),
		});
	}

	private forwardToUser(
		request: ElicitRequest,
		serverId: string,
	): Promise<ElicitResult> {
		// Show the request in your UI and resolve after the user responds.
		throw new Error(
			`Implement elicitation for ${serverId}: ${request.params.message}`,
		);
	}
}

连接仅通告配置了处理器的模式。没有处理器的 Agent 不通告任何引导式输入能力,这允许服务器使用其回退方案。SDK 会在每次 MCP 服务器注册时存储通告的模式,以便它们在 Durable Object 休眠后仍能存活。回调函数将保留在内存中,并在 onStart() 运行时重新附着。

有关实现细节和浏览器转发模式,请参阅 MCP 客户端引导式输入mcp-clientmcp-elicitation 示例实现双端对接。

升级

要更新到此版本:

npm i agents@latest

Precursor 引入基于会话的 Bot 检测

Precursor 从今天起向所有客户推出。Precursor 是一种客户端 JavaScript,可实现基于会话的 Bot 检测。

您可以阅读公告博客,了解我们构建 Precursor 的背景以及会话级行为检测的工作原理。

启用 Precursor 后,Cloudflare 可以:

  • 在整个会话中持续评估行为信号
  • 随着行为变化重新验证挑战清除状态
  • 使用会话上下文更新 Bot 评分
  • 在以往不存在的客户端提供可见性

它与现有保护措施(包括安全规则)集成,可直接从 Cloudflare 仪表板启用,并提供可配置模式以平衡安全性和用户体验。

Animated walkthrough of enabling Precursor in the Cloudflare dashboard

如需了解更多,请参阅 Precursor 文档

适用于 Markdown for Agents 的源站内容信号(Origin Content Signals)

Markdown for Agents 现在在将 HTML 转换为 Markdown 时,会保留源站中与安全和缓存相关的响应标头:

  • Markdown for Agents 在转换后的响应上保留了安全标头,例如 Strict-Transport-Security (HSTS)、Content-Security-Policy (CSP)、X-Frame-OptionsSet-Cookie 以及 CORS 标头(例如 Access-Control-Allow-Origin)。
  • 缓存标头(Cache-ControlExpiresAge)继续透传。

您源站的 Content Signals 策略现在具有权威性。如果您的源站设置了 content-signal 标头,Markdown for Agents 会保留它。当源站没有发送该标头时,Cloudflare 会添加默认的 Content-Signal: ai-train=yes, search=yes, ai-input=yes

此版本还修复了针对目录风格基准 URL(以斜杠结尾的 URL)的相对链接解析问题。以前,像 ../page/ 这样的相对链接可能会解析到高出一个路径段的位置并返回 404。现在,链接已根据 RFC 3986 正确解析。

请参阅我们的开发者文档了解更多详情。

R2 Data Catalog 现在支持只读 API 令牌

R2 Data Catalog 现在接受只读 API 令牌,因此仅读取数据的查询引擎和客户端不再需要读写令牌。此前,每个目录操作都需要管理员读写令牌,这意味着只读客户端被授予了超出实际需要的访问权限。

您现在可以根据工作负载对 Iceberg 引擎进行身份验证:

  • 只读操作(例如列出命名空间、加载表和查询数据)可使用管理员只读令牌(R2 Data Catalog 读取和 R2 存储读取)。
  • 写入操作(例如创建或删除表以及提交事务)继续需要管理员读写令牌。

这让您可以遵循最小权限原则——例如,为向表写入数据的管道使用读写令牌,为 R2 SQLDuckDBPyIceberg 等查询引擎使用只读令牌。

请注意,目录颁发的凭证继承用于身份验证的令牌的 R2 存储权限。为确保对底层数据的只读访问,请将 R2 存储权限也限定为只读。

有关选择和创建正确令牌的详细信息,请参阅对 Iceberg 引擎进行身份验证

R2 Data Catalog 压缩现在优化清单文件

R2 Data Catalog 是直接内置于 R2 的托管 Apache Iceberg 目录,现在作为压缩的一部分自动优化清单文件。

清单文件跟踪组成 Iceberg 表的数据文件。随着表积累了许多小型或碎片化的清单,查询引擎在查询规划期间必须读取更多元数据,这会导致查询变慢,甚至在扫描任何数据之前就已如此。

当压缩运行时,R2 Data Catalog 现在会按分区重写和聚簇清单文件作为尽力而为的预处理步骤。这可以整合碎片化的清单,减少查询引擎必须打开的清单数量,并降低元数据 I/O 开销。已经聚簇良好的表将被跳过,因此该操作仅在能带来收益时才运行。

对于已启用压缩的表,此功能自动生效——无需任何配置更改。

如需更多信息,请参阅表维护

源代码检测改进

数据丢失防护 (DLP) 源代码检测现在专注于识别整个源代码文件的上传和下载。以前,源代码检测执行部分扫描,导致误报率较高。由于现在仅对整个源代码文件进行评估,因此嵌入在其他内容(例如聊天消息、文档或代码示例)中的代码不再被标记为源代码,从而消除了常见的误报来源。

源代码检测需要至少 500 个字符来评估文件。低于此阈值的文件不会被标记,以减少噪点。此阈值过滤掉了缺乏足够上下文以进行可靠分类的小片段。

启用并设置置信度级别以调整匹配敏感度。较高的置信度级别通过需要更强烈的信号来表明内容确实是源代码,从而减少误报。较低的置信度级别会捕获更多文件,但代价是会产生额外的噪点。

源代码检测适用于 Gateway HTTP 策略中的独立源代码文件。它不会检测嵌入在其他文件类型或有效负载(例如 .docx 文件或聊天消息)中的源代码。

有关更多详细信息,请参阅 Source Code predefined profiles

Markdown 转换的纯文本输出

Markdown 转换服务现在支持一个新的 output 转换选项,用于控制转换后内容的格式。

output.format 设置为 text 以接收移除了 Markdown 语法的纯文本。默认值为 markdown,因此现有转换不受影响。

使用 env.AI 绑定(binding):

await env.AI.toMarkdown(
	{ name: "page.html", blob: new Blob([html]) },
	{
		conversionOptions: {
			output: { format: "text" },
		},
	},
);
await env.AI.toMarkdown(
	{ name: "page.html", blob: new Blob([html]) },
	{
		conversionOptions: {
			output: { format: "text" },
		},
	},
);

或者调用 REST API:

curl https://api.cloudflare.com/client/v4/accounts/{ACCOUNT_ID}/ai/tomarkdown \
  -H 'Authorization: Bearer {API_TOKEN}' \
  -F '[email protected]' \
  -F 'conversionOptions={"output": {"format": "text"}}'

当您请求文本输出时,每个结果的 format 字段会被设置为 text。有关更多详细信息,请参阅转换选项

Workflows 现在在重试时支持延迟函数

通过 Workflows,您可以为每个步骤配置内置的重试行为。以前,您可以配置具有固定延迟时长(例如秒、分钟或小时)的步骤重试,以及诸如 constantlinearexponential 之类的退避策略。

步骤重试现在支持动态延迟函数。您无需仅选择基本延迟和退避策略,而是可以向 retries.delay 传递一个函数,并根据失败的尝试和抛出的错误计算下一次延迟。

当重试需要取决于故障类型时,这非常有用。您的 Workflow 可能需要在遇到速率限制错误后等待更长时间,但在发生短暂的网络故障后能更快地进行重试。如果下游 API 在其错误消息中返回了 Retry-After 值,延迟函数也可以适应提供商的指导。

await step.do(
	"sync customer",
	{
		retries: {
			limit: 5,
			delay: ({ ctx, error }) => {
				if (error.message.includes("rate limit")) {
					return `${ctx.attempt * 30} seconds`;
				}

				return "10 seconds";
			},
		},
	},
	async () => {
		await syncCustomer();
	},
);
await step.do(
	"sync customer",
	{
		retries: {
			limit: 5,
			delay: ({ ctx, error }) => {
				if (error.message.includes("rate limit")) {
					return `${ctx.attempt * 30} seconds`;
				}

				return "10 seconds";
			},
		},
	},
	async () => {
		await syncCustomer();
	},
);

动态延迟函数可以返回一个持续时间字符串、一个数字或一个解析为持续时间的 Promise。使用它们可以添加自适应重试行为,而无需编写单独的队列或调度逻辑。有关更多信息,请参阅休眠和重试

新的 DNS Firewall UX 带来更多仪表板设置

Cloudflare 仪表板中的 DNS Firewall 页面已焕然一新,将以前仅限 API 的多项设置引入到 UI 中,并使您查看和管理 DNS Firewall 集群的方式更加现代化。

新的 DNS Firewall 用户体验

新增功能

  • 仪表板中提供更多设置:以前只能通过 API 配置的集群选项(如攻击缓解、速率限制、否定 TTL 和解析器子网)现在可直接在仪表板中使用。
  • 更佳的表格体验:重新设计了 DNS Firewall 集群表格以一目了然地呈现集群详细信息,支持调整列大小,以及显示或隐藏列以根据您的工作流定制视图。
  • 全新的创建和编辑 UX:添加和编辑集群现在使用现代化的表单,将相关设置分在组里,使配置更快速、更清晰。

可用性

作为现有订阅的一部分,向所有 DNS Firewall 客户提供。

在哪里可以找到它

在 Cloudflare 仪表板中,转到 DNS Firewall 页面。

Go to Clusters ↗

有关更多信息,请参阅 DNS Firewall

新的 Durable Object 命名空间必须使用 SQLite 存储后端

如果您的账户中尚无基于键值 (KV) 后端的 Durable Object 命名空间,您将无法再创建新的此类命名空间。新的 Durable Object 命名空间必须使用 SQLite 存储后端。自 2024 年该后端正式商用 (GA) 以来,我们一直推荐所有新的 Durable Objects 使用该后端。

通过 new_sqlite_classes 迁移创建一个新类:

{
  "$schema": "./node_modules/wrangler/config-schema.json",
  "migrations": [
    {
      "tag": "v1",
      "new_sqlite_classes": [
        "MyDurableObject"
      ]
    }
  ]
}
[[migrations]]
tag = "v1"
new_sqlite_classes = ["MyDurableObject"]

基于 SQLite 的 Durable Objects 与键值后端具有同等的功能特性——包括键值存储 API——并且还支持关系型 SQL 查询以及 时间点恢复 (PITR),可将对象存储恢复到过去 30 天内的任意时间点。

如果您尝试在受影响的账户上创建新的基于键值的命名空间(使用 new_classes 迁移),部署将失败并显示以下错误:

Creating new key-value backed Durable Object namespaces is no longer supported on this account. Please create a namespace using a `new_sqlite_classes` migration instead.

此更改仅影响尚未开始使用键值存储后端的账户。拥有至少一个现有基于键值命名空间的账户目前仍可创建新的命名空间,而 Workers 免费计划一直以来仅支持基于 SQLite 的 Durable Objects。这是向将 SQLite 作为 Durable Objects 单一存储后端迈出的更广泛一步,为未来现有基于键值对象的迁移路径做准备。

欲了解更多信息,请参阅 Durable Objects 迁移

Zero Trust Networks 路由终点和 Cloudflare Tunnel 连接字段将于 2026 年 10 月 5 日停用

2026 年 10 月 5 日,两项变更将在 Zero Trust Networks APICloudflare Tunnel API 中生效:移除经过 CIDR 编码的路由终点,且 tunnel list 和 get 响应将不再包含 connections 字段。如果您通过 API、cloudflared、Terraform 或其他集成管理私有网络路由或读取 tunnel 连接详情,请阅读以下部分中的变更说明并在移除日期之前完成迁移。

路由终点

经过 CIDR 编码的路由终点已被弃用,转而使用目前已存在的基于标准 route_id 的终点。这两组终点都是通过 Cloudflare TunnelCloudflare Mesh 路由私有网络(API 仍将 Mesh 节点称为 warp_connector)— 仅请求形状(request shape)发生了变化。

已弃用的终点(将于 2026 年 10 月 5 日移除):

替代终点:

变更内容

已弃用(CIDR 编码路径) 替代方案
路由标识符 路径中经过 URL 编码的 CIDR (/network/{ip_network_encoded}) 路径中的 route_id(创建时 network 移动到请求体中)
创建 POST .../teamnet/routes/network/{ip_network_encoded} 请求体中包含 networktunnel_idPOST .../teamnet/routes
更新 PATCH .../teamnet/routes/network/{ip_network_encoded} PATCH .../teamnet/routes/{route_id}
删除 DELETE .../teamnet/routes/network/{ip_network_encoded} DELETE .../teamnet/routes/{route_id}

需要采取的行动

  1. 通过调用列出 tunnel 路由获取每个路由的 route_id,或者在首次使用替代终点创建路由时从响应中读取它。
  2. 更新任何直接调用经过 CIDR 编码的终点的脚本、后端服务或 CI/CD 流水线。
  3. 如果您使用 cloudflared tunnel route ip add | delete 命令管理路由,请将 cloudflared 升级到最新版本
  4. 如果您使用 Terraform 管理路由,请确保您使用的是最新版本的 cloudflare_zero_trust_tunnel_cloudflared_route 资源以及 Cloudflare Terraform 提供商
# Before: create a route by URL-encoding the CIDR into the path
curl https://api.cloudflare.com/client/v4/accounts/$ACCOUNT_ID/teamnet/routes/network/172.16.0.0%2F16 \
     -H 'Content-Type: application/json' \
     -H "Authorization: Bearer $CLOUDFLARE_API_TOKEN" \
     -d '{"tunnel_id": "'$TUNNEL_ID'", "comment": "Example comment for this route."}'

# After: create a route with the network in the request body
curl https://api.cloudflare.com/client/v4/accounts/$ACCOUNT_ID/teamnet/routes \
     -H 'Content-Type: application/json' \
     -H "Authorization: Bearer $CLOUDFLARE_API_TOKEN" \
     -d '{"network": "172.16.0.0/16", "tunnel_id": "'$TUNNEL_ID'", "comment": "Example comment for this route."}'

# After: update or delete a route using its route_id
curl -X PATCH https://api.cloudflare.com/client/v4/accounts/$ACCOUNT_ID/teamnet/routes/$ROUTE_ID \
     -H 'Content-Type: application/json' \
     -H "Authorization: Bearer $CLOUDFLARE_API_TOKEN" \
     -d '{"comment": "Updated comment for this route."}'

curl -X DELETE https://api.cloudflare.com/client/v4/accounts/$ACCOUNT_ID/teamnet/routes/$ROUTE_ID \
     -H "Authorization: Bearer $CLOUDFLARE_API_TOKEN"

Cloudflare Tunnel 和 Cloudflare Mesh 连接

自同一天起,将从 Cloudflare TunnelCloudflare Mesh 节点(cfd_tunnelwarp_connector API 资源)的 list 和 get 响应中移除 connections 数组。请查询专用的连接终点,而不是从 tunnel 或节点对象中读取该字段。

这会影响:

需要采取的行动

从特定于 tunnel 的连接终点获取连接详情,而不是从 list 或 get 响应中解析。对于 Cloudflare Tunnel,请调用 GET /accounts/{account_id}/cfd_tunnel/{tunnel_id}/connections。对于 Cloudflare Mesh,请调用 GET /accounts/{account_id}/warp_connector/{tunnel_id}/connections

# Before: read connections off the tunnel object
curl https://api.cloudflare.com/client/v4/accounts/$ACCOUNT_ID/cfd_tunnel/$TUNNEL_ID \
     -H "Authorization: Bearer $CLOUDFLARE_API_TOKEN"

# After: query connections directly
curl https://api.cloudflare.com/client/v4/accounts/$ACCOUNT_ID/cfd_tunnel/$TUNNEL_ID/connections \
     -H "Authorization: Bearer $CLOUDFLARE_API_TOKEN"

更新任何从 tunnel list 或 get 响应中解析 connections 的仪表板、监控脚本或自动化。cloudflared 和 Cloudflare Terraform 提供商不读取此字段,因此它们的这一部分更新不需要做任何更改。

做出这些更改的原因

  • 响应更小、速度更快。 具有许多连接的 Cloudflare Tunnel 和 Cloudflare Mesh 节点不再膨胀每次 list 和 get 调用 — 仅在您需要时才获取连接详情。
  • 静态或标识路由的单一方式。 统一使用 route_id 消除了对路径中 CIDR 范围进行 URL 编码的需要,并且与 Zero Trust Networks API 中所有其他资源的寻址方式一致。
  • 跨 API 的一致性。 这两项变更使这些终点与 Cloudflare 针对资源标识符和嵌套详情终点的标准 REST 约定保持一致。

要了解更多信息,请参阅 Zero Trust Networks APICloudflare Tunnel API路由文档。

随 Worker 上传发送 npm 包依赖项元数据

Wrangler 现在在执行 wrangler deploywrangler versions upload 期间,从您项目的 package.json 中收集 npm 包依赖项信息,并将其包含在发送到 Cloudflare API 的上传元数据中。这些数据包括每个依赖项的名称、声明的版本范围以及实际安装的确切版本,有助于实现依赖项分析以及未来的供应链安全功能(如漏洞警报)。

要选择停用,请在您的 Wrangler 配置文件中将 dependencies_instrumentation.enabled 设置为 false

{
	"dependencies_instrumentation": {
		"enabled": false
	}
}
[dependencies_instrumentation]
enabled = false

有关更多详细信息,请参阅 Wrangler 配置

按精确对象键筛选 AI Search 列表项

AI Search 中,您可以将文件上传到实例,或连接诸如 R2 存储桶之类的数据源,从而让您能够使用自然语言搜索您的内容。每个文件都成为由对象 **key(其文件名或路径)**标识的 项(item)列表项端点会返回实例中的项。

该端点现在接受 key 查询参数,因此您可以通过精确的对象键查找单个项,而无需翻页浏览整个列表。这为您知道键但不知道 ID 的情况补充了现有的 item_id 筛选器。

curl "https://api.cloudflare.com/client/v4/accounts/<ACCOUNT_ID>/ai-search/instances/<INSTANCE_NAME>/items?key=docs/readme.md" \
  -H "Authorization: Bearer <API_TOKEN>"

键在每个数据源中是唯一的,因此当多个数据源中存在相同的键时,请将 keysource 结合使用(例如 source=builtin)以消除歧义。

有关更多信息,请参阅管理项

Workers AI toMarkdown 和 AI Search 现在支持 GIF 和 BMP 图像转换

除了已支持的 JPEG、PNG、WebP 和 SVG 格式外,Workers AI Markdown 转换 (toMarkdown) 现在还支持 .gif.bmp 图像文件。

GIF 和 BMP 文件与其他格式运行相同的图像流水线。根据需要调整每张图像的大小(对于动态 GIF,仅使用第一帧),然后传递给目标检测模型以识别其包含的内容。这些检测到的目标会提示视觉模型编写图像的自然语言描述,该描述将变成可搜索、机器可读的 Markdown。

AI Search 会自动使用 toMarkdown 来处理它引入的文件,因此下一次您的索引同步时会自动包含任何 .gif.bmp 文件,无需更改任何配置。当您的内容混合了多种格式时,例如充满屏幕截图的支持知识库或 BMP 扫描件的存档,这将非常有用。

详细了解 Markdown 转换 以及 AI Search 支持的文件类型的完整列表。

IPsec 降级保护 (Beta)

Cloudflare IPsec 现在支持 IKE_SA_INIT_FULL_TRANSCRIPT_AUTH IKEv2 扩展,以防御 IPsec 隧道上的降级攻击。

IKEv2 的原始身份验证设计是让每个端点仅对其自己的出网消息进行签名,而不是对完整的握手脚本进行签名。具有量子计算能力的路径上(on-path)攻击者可以利用这一点,通过将连接降级为传统密码学,从而绕过后量子密钥交换。IKE_SA_INIT_FULL_TRANSCRIPT_AUTH 扩展通过在身份验证交换期间让双方对整个握手脚本进行签名来解决此问题,从而防止攻击者在不被发现的情况下操纵协商。

关键详情:

  • 在 Cloudflare WAN 和 Magic Transit IPsec 隧道中提供 Beta 版。
  • 启用该功能标志后,Cloudflare 会作为响应方(responder)无条件发送 IKE_SA_INIT_FULL_TRANSCRIPT_AUTH 通知。
  • 发起方(您的设备)和响应方(Cloudflare)都必须支持该扩展,降级保护才能生效。
  • 此功能目前由每个账户的功能标志控制。请联系您的账户团队将其开启。

请参阅降级保护了解更多详情。

从仪表板使用 R2 SQL 查询 R2 Data Catalog 表

您现在可以直接从 Cloudflare 仪表板使用 R2 SQL 查询您的 R2 Data Catalog 表,而无需安装 CLI 或接入客户端。这使得在同一个地方探索 Apache Iceberg 数据、验证查询并检查结果变得非常容易。

R2 SQL 查询编辑器

要开始使用,请转到 Cloudflare 仪表板中的 R2 Data Catalog 并选择 **Query data(查询数据)**以启动内置的 SQL 编辑器。从那里您可以:

  • 交互式编写和运行查询 — 直接在浏览器中对 R2 SQL 进行迭代,提供语法高亮和自动完成功能,而无需通过 Wrangler 或 REST API 重新运行命令。
  • 探索您的数据 — 在编辑器旁探索您的命名空间和表,这样您无需离开页面或使用其他工具即可发现哪些内容是可查询的。
  • 了解结果和性能 — 查看包含每个查询统计信息的结果集,导出它们,并获取有用的 EXPLAIN 输出以确切了解查询如何运行。

Moondream 3.1 现已在 Workers AI 上可用

我们与 Moondream 合作,将其最新模型 @cf/moondream/moondream3.1-9B-A2B 引入 Workers AI。Moondream 3.1 是一款基于混合专家(mixture-of-experts)架构构建的快速视觉语言模型,总参数量为 9B,活跃参数量为 2B,可在保持快速、高性价比推理的同时提供前沿级别的视觉推理。

Moondream 3.1 专为实际视觉任务而设计,具备 32K token 上下文窗口,用于处理复杂查询和结构化输出。

关键能力

  • Query(查询) — 针对图像提出开放式问题,带有一个可选的推理参数
  • Caption(描述) — 生成图像的简短、正常或长描述
  • Point(指向) — 返回与目标词组匹配的对象坐标
  • Detect(检测) — 返回与目标词组匹配的对象边界框

边缘实时视觉

像实时摄像头馈送、机器人、内容审核和交互式智能体之类的视觉工作负载,需要毫秒级而不是秒级的响应。Moondream 3.1 较小的活跃占用(2B 活跃参数)与 Workers AI 的无服务器、全球分布式推理完美结合:请求可在靠近您用户的地方运行,且流式响应几乎可以立即开始返回 token。

在我们的测试中,首个 token 在大约 20–30 毫秒内流式返回,并且在每项任务中结果都非常迅速。以下示例端到端时间(客户端观察到的中位数,包括网络往返时间)是针对一张简单的、单一主体的图像。实际延迟很大程度上取决于图像以及您所要求的详细程度。

任务 端到端 (p50)
query ~770 ms
caption ~480 ms
point ~145 ms
detect ~160 ms

在这样的速度下,您可以在处理请求时以内联方式调用模型,而无需将工作推送到后台队列或单独的服务。这开启了那些“如果响应缓慢就会破坏体验”的使用场景:在存储用户上传的图像前对其进行审核、在视频帧中定位对象以驱动实时叠加层、在提交表单时从文档中提取字段,或者让智能体在单轮内检查屏幕截图并决定其下一步操作。

快速入门

通过 Workers AI 绑定(binding) (env.AI.run()) 或 /ai/run 处的 REST API 来使用 Moondream 3.1。您还可以在这些端点中搭配使用 AI Gateway

欲了解更多信息,请参阅 Moondream 3.1 模型页面定价

Cloudflare Drop

Cloudflare Drop 允许您向 Cloudflare 部署静态网站,而无需先拥有 Cloudflare 账户。

Cloudflare 拖放上传界面,用于浏览文件夹或 ZIP 文件

上传包含静态资产(静态 HTML、CSS、JavaScript、图像和字体)的文件夹或 ZIP 文件,即可获得保持在线 1 小时临时的实时预览。在此时间窗内,您可以测试网站、共享预览 URL 或认领该部署以保留它。

Cloudflare 拖放临时实时预览界面,带有认领和复制认领链接操作

当您准备好使部署永久生效时,请点击 Claim(认领) 以登录或创建 Cloudflare 账户。您可以将网站认领到现有的 Cloudflare 账户中,也可以为该部署创建一个新账户。

Cloudflare 拖放认领账户界面,显示认领链接过期前的倒计时

认领网站后,您可以:

  • 添加域名连接现有域名或为您的网站购买新域名。
  • 启用可观测性:监控您网站的性能和使用情况。
  • 启用 Markdown for Agents:允许 AI 智能体以 Markdown 格式访问您网站的内容。
  • 控制访问:将您的网站设为私有并选择谁可以查看它。
已认领的 Cloudflare 拖放网站设置界面,显示添加域名、控制访问、启用可观测性以及为智能体启用 Markdown 的选项

Cloudflare One Client for Windows (version 2026.6.850.0)

A new GA release for the Windows Cloudflare One Client is now available on the stable releases downloads page.

This hotfix addresses a Windows authentication issue in the embedded WebView2 browser. Single sign-on could fail to use the Windows primary account, causing users to be prompted for an interactive sign-in. The embedded authentication browser now allows SSO providers to use the OS primary account when available.

Workflows 定价增加按步骤计费。步骤和存储计费将不早于 2026 年 8 月 10 日开始。

Workflows 定价现在包括按步骤计费。自最初的公开 Beta 版以来已启用请求和 CPU 时间计费,且不会发生变化。

Workflows 增加步骤计费

步骤是 Workflow 执行的每个工作单元,包括诸如休眠等待事件之类的步骤操作。

您可以使用 GraphQL Analytics API 查询 Workflows 分析,包括 Workflow 实例的 stepCount

步骤和存储计费将于 2026 年 8 月 10 日生效

自 2026 年 8 月 10 日起(不早于该日期),Cloudflare 将开始对 Workers Paid 计划的步骤和存储使用进行计费。

存储定价自 Workflows 正式发布以来就已公布,且不会发生变化。存储以 GB-月为单位度量持久化的 Workflow 状态。

维度 Workers Free Workers Paid
步骤 每天包含 3,000 步 每月包含 500,000 步,之后每增加 100,000 步为 0.80 美元
存储 包含 1 GB-月 包含 1 GB-月,之后每增加 1 GB-月为 0.20 美元

Workers Free 计划的开发者无需为超出包含数量的步骤或存储付费。

Cloudflare 在 2026 年 8 月 10 日之前不会对步骤和存储使用量进行计费。

在此更改生效之前,您可以在 Cloudflare 仪表板中查看 Workflows 使用情况。为了降低成本,可以考虑减少每个 Workflow 的步骤数量,或提高存储状态的内存效率。

有关完整详细信息,请参阅 Workflows 定价页面。

用于基于浏览器的 RDP 的文件传输控制(Beta)

您现在可以为使用 Cloudflare Access 的基于浏览器的 RDP 配置文件传输控制,允许您限制用户是否可以在其本地计算机与远程 Windows 服务器之间上传或下载文件。

Access 策略配置中的文件传输连接设置。

对于支持自带设备(BYOD)政策或使用未托管设备的第三方承包商的组织,此功能非常有用。通过限制文件传输,您可以防止敏感数据从远程会话转移到用户的个人设备。

配置选项

文件传输控制在您的 Access 应用程序中针对每个策略进行配置,与现有的文本剪贴板控制并列。对于每个策略,您可以选择以下选项之一:

  • 允许从客户端到远程 RDP 会话 — 用户可以从其本地计算机上传文件到基于浏览器的 RDP 会话中。
  • 允许从远程 RDP 会话到客户端 — 用户可以从基于浏览器的 RDP 会话下载文件到其本地计算机中。
  • 允许双向 — 用户可以在其本地计算机与基于浏览器的 RDP 会话之间上传和下载文件。
  • 禁用复制/粘贴 — 不允许用户在其本地计算机与基于浏览器的 RDP 会话之间传输文件。

默认情况下,新策略的文件传输功能是被拒绝的。对于在此功能可用之前创建的现有 Access 应用程序,文件传输依然被拒绝。

工作原理

要上传,请将文件拖入浏览器窗口,或选择 RDP 会话左侧的设置齿轮图标。要下载,请在远程会话中复制文件,然后选择设置齿轮以进行下载、将多个文件下载为 zip 包,或者将 PDF 打印到本地打印机。

显示可供传输文件的剪贴板侧边面板。已准备好下载或本地打印的远程文档。

此功能处于 Beta 阶段,可在所有 Zero Trust 方案中使用。欲了解更多信息,请参阅基于浏览器的 RDP 的文件传输

浏览器隔离支持授权代理端点

浏览器隔离现在支持 Gateway 授权代理端点。您可以对通过授权代理端点路由的流量应用 HTTP 隔离策略,方式与对来自 Cloudflare One 客户端的流量相同。

此前,只有源 IP 代理端点支持浏览器隔离,且仅支持非基于身份的策略。由于授权代理端点通过身份提供商对用户进行认证,您现在无需 Cloudflare One 客户端即可对 PAC 文件代理流量应用基于身份的隔离策略。

如需开始,请创建授权代理端点构建隔离策略

Browser Run 无障碍树新端点

Browser Run 现在支持独立的 /accessibilityTree 端点,为 Agent 和自动化工作流提供对已渲染网页浏览器无障碍树的直接访问。

无障碍树是浏览器对已渲染页面的结构化视图:角色、名称、状态、值和层级关系。它对无障碍工具很有用,同时也对需要页面结构而无需处理原始 HTML 噪音或截图成本的 AI Agent 和自动化工作流非常实用。

对于 AI Agent 而言,这意味着减少了从像素推断信息以及解析 HTML 的工作。您可以直接提供页面结构,帮助 Agent 识别可用元素并判断其可执行的操作。

使用新的 /accessibilityTree 端点,当您只需要页面的语义结构时,可以直接请求无障碍树。如果需要在单次 API 调用中获取多种页面格式,可以使用 /snapshot 端点,该端点同时返回 Markdown、HTML 和截图。

curl -X POST 'https://api.cloudflare.com/client/v4/accounts/<accountId>/browser-run/accessibilityTree' \
  -H 'Authorization: Bearer <apiToken>' \
  -H 'Content-Type: application/json' \
  -d '{
    "url": "https://example.com/"
}'
{
	"success": true,
	"result": {
		"accessibilityTree": {
			"role": "RootWebArea",
			"name": "Example Domain",
			"children": [
				{
					"role": "heading",
					"name": "Example Domain",
					"level": 1
				},
				{
					"role": "link",
					"name": "Learn more"
				}
			]
		}
	}
}

使用 interestingOnly 仅返回语义上有意义的节点,或使用 root 捕获特定子树的无障碍树。

请参阅 /accessibilityTree 文档 以获取使用示例和支持的参数。

新的 WebSocket Analytics Logpush 数据集

企业客户现在可以使用新的 websocket_analytics 数据集将每个连接的 WebSocket 分析推送到任何 Logpush 目标。每条日志记录在 WebSocket 连接关闭时生成,并包含以前只有 Cloudflare 工程师才能通过内部工具访问的字段。

关键字段包括:

  • ConnectionCloseReason — 连接结束的原因:peerResetpeerNoErrortimedOutupstreamResetprotocolViolationunspecifiedErrornone
  • ConnectionCloseSource — 哪一方发起关闭:upstreamdownstreammeboth
  • ConnectionTransportCloseCode — TLS 警报代码或 TCP 级别关闭代码,提供额外精度。
  • RayID — 将 WebSocket 连接事件与现有 HTTP 请求日志关联。

该数据集还包含方向性字节计数(BytesSentClientBytesReceivedClientBytesSentOriginBytesReceivedOrigin)、连接时间戳、客户端 IP、机房代码以及原始 WebSocket 升级请求的元数据。

这些数据可帮助您直接在现有日志分析工具中,根据连接关闭模式构建告警——例如,按主机和数据中心分组,检测 TCP 重置(ConnectionCloseReason == "peerReset")的峰值。

有关可用字段的完整列表,请参阅 WebSocket Analytics

R2 Data Catalog 在手动删除数据前发出警告

R2 Data Catalog 是直接内置于 R2 存储桶的托管 Apache Iceberg 目录。Iceberg 通过元数据文件树追踪您的数据,因此每次插入、更新和删除都必须通过目录事务进行。在目录外手动添加、修改或删除对象可能会留下指向不再存在的文件的指针,使表损坏成难以恢复的不一致状态。

为帮助防止此类情况,R2 仪表板和 Wrangler 现在会在您尝试对启用 Data Catalog 的存储桶执行手动删除操作时发出警告。

仪表板

当您尝试从启用 R2 Data Catalog 的存储桶中删除对象时,仪表板会显示一个警告,解释该操作可能使目录处于无效状态,并提供正确删除数据的文档链接。您可以取消操作或选择继续执行。

在启用 Data Catalog 的存储桶中删除对象之前显示的 R2 仪表板警告

Wrangler

Wrangler 现在在运行删除操作前会检查存储桶是否启用了 Data Catalog,并在继续之前发出警告:

Data Catalog is enabled for this bucket. 
Proceeding may leave the data catalog in an invalid state. Continue?

要了解如何安全管理和删除表中的数据,请参阅 R2 Data Catalog 文档