跳转到内容
搜索文档

更新日志

Cloudflare 的最新更新与改进。

Agents SDK 改进了浏览器自动化、代码执行和恢复功能

Agents SDK 的最新版本使得构建能够安全地与真实系统交互且在中断时能够继续工作的 agent 变得更加容易。

Agent 现在可以通过 Browser Run 浏览网站、通过 Code Mode 针对外部工具编写代码、在委托给 Think 子 agent 时使用客户端提供的工具,并在从部署、Durable Object 驱逐以及连接流失中恢复时更加可靠。

更安全的浏览器自动化

Agent 现在可以通过单个持久化的 browser_execute 工具来使用 Browser Run。模型无需从固定的操作列表中进行选择,而是可以针对 Chrome DevTools Protocol (CDP) 编写代码,并可以检查页面、捕获屏幕截图、读取渲染的内容、调试前端行为以及与实时浏览器会话进行交互。

const browserTools = createBrowserTools({
	ctx: this.ctx,
	browser: this.env.BROWSER,
	loader: this.env.LOADER,
	session: { mode: "dynamic" },
});
const browserTools = createBrowserTools({
	ctx: this.ctx,
	browser: this.env.BROWSER,
	loader: this.env.LOADER,
	session: { mode: "dynamic" },
});

浏览器会话可以是一次性的、重用的,或者在运行期间从一次性提升为持久化的。当 agent 需要人工登录、完成多因素身份验证(MFA)或批准敏感操作时,这非常有用。运行可以暂停,保持相同的标签页和 Cookie,并在批准后恢复。

浏览器工具还为单次浏览任务添加了 Live View URL、可选的会话记录以及 browser_markdownbrowser_extractbrowser_linksbrowser_scrape 等快速操作。

具有批准的可恢复代码执行

Code Mode 现在使用 createCodemodeRuntime、连接器和持久化的执行日志。这让您只需为模型提供一个 codemode 工具,而不是满是工具定义的庞大 Prompt。模型可以发现它需要的功能、针对类型化的全局变量编写代码并重用保存的代码片段。

const runtime = createCodemodeRuntime({
	ctx: this.ctx,
	executor: new DynamicWorkerExecutor({ loader: this.env.LOADER }),
	connectors: [new GithubConnector(this.ctx, this.env, connection)],
});

const result = streamText({
	model,
	messages,
	tools: { codemode: runtime.tool() },
});
const runtime = createCodemodeRuntime({
	ctx: this.ctx,
	executor: new DynamicWorkerExecutor({ loader: this.env.LOADER }),
	connectors: [new GithubConnector(this.ctx, this.env, connection)],
});

const result = streamText({
	model,
	messages,
	tools: { codemode: runtime.tool() },
});

当代码执行到受批准限制的操作时,运行时会暂停执行并返回一个待处理的批准。批准后,已完成的调用将从持久化日志中回放,运行获得批准的操作,然后继续执行相同的代码。这使得构建创建议题(issues)、更新外部系统或执行其他副作用的 agent 变得非常实用,而无需为每个工具都编写自定义的暂停和恢复逻辑。

更好的 Think 委托

Think 子 agent 现在可以通过 RPC chat() 路径使用客户端定义的工具。父 agent 可以通过 clientTools 传递工具 schema,并通过 onClientToolCall 解析工具调用。这使得被委托的 agent 能够使用调用者提供的功能,而无需浏览器 WebSocket。

await child.chat(message, callback, {
	signal,
	clientTools: [
		{
			name: "get_user_timezone",
			description: "Get the caller's timezone",
			parameters: { type: "object" },
		},
	],
	onClientToolCall: async ({ toolName, input }) => {
		return runClientTool(toolName, input);
	},
});
await child.chat(message, callback, {
	signal,
	clientTools: [
		{
			name: "get_user_timezone",
			description: "Get the caller's timezone",
			parameters: { type: "object" },
		},
	],
	onClientToolCall: async ({ toolName, input }) => {
		return runClientTool(toolName, input);
	},
});

Think Workflows 还改进了 step.prompt()。Prompt 步骤现在会在返回结构化输出之前运行一个完整的 agent 轮次,因此 agent 可以在产生类型化结果之前调用工具。这使得 Workflow 步骤在持久的分流、研究和审批流中更加有用。

在绑定 Browser Run 时,统一的 Think 执行工具还可以包含 cdp.* 浏览器功能,以及 state.*tools.*

Voice 输出设备选择

Voice 客户端可以将助手音频路由到特定的输出设备。在 useVoiceAgent 中使用 outputDeviceId,或者从与框架无关的客户端调用 client.setOutputDevice()

const voice = useVoiceAgent({
	agent: "MyVoiceAgent",
	outputDeviceId: selectedSpeakerId,
});
const voice = useVoiceAgent({
	agent: "MyVoiceAgent",
	outputDeviceId: selectedSpeakerId,
});

不支持扬声器选择的浏览器将继续通过默认的输出设备播放,并报告非致命的 outputDeviceError

可靠性修复

此版本包括针对生产环境 agent 的多项修复:

  • useAgentAgentClient 在重连和配置更改期间更可靠地处理 WebSocket 替换。
  • 聊天流回放在重连、部署和提供商错误后更加可靠。
  • 纤程(Fiber)恢复可以跨多通道扫描继续,并在恢复 Hook 持续失败时进行退避。
  • 即使启动拆卸的请求被取消,Agent 拆卸仍会继续。
  • 大型会话历史记录使用按字节预算的读取,以减少启动期间的内存压力。

升级

要更新到最新版本:

npm i agents@latest @cloudflare/think@latest @cloudflare/codemode@latest @cloudflare/ai-chat@latest @cloudflare/voice@latest

有关更多信息,请参阅 Code Mode 文档浏览器工具文档Think 工具文档以及 Voice 文档

在 Workers AI 上推出 GLM-5.2

我们很高兴宣布在 Workers AI 上推出 GLM-5.2,这是 Z.ai 的旗舰代理(agentic)编码模型。

@cf/zai-org/glm-5.2 是一款专为代理型编码工作流构建的文本生成模型。凭借函数调用和推理支持,它可以处理长代码库、多步规划和工具增强型智能体。

关键特性和使用场景:

  • 代理编码:专为自主编码任务、长周期规划和复杂的软件工程工作流而设计
  • 大型上下文窗口:GLM-5.2 最多支持 1,048,576 个 token 的上下文窗口。Workers AI 推出该模型时提供 262,144 个 token 的上下文窗口,并计划在未来增加此限制
  • 函数调用:构建可在多个对话轮次中调用工具和 API 的智能体
  • 推理:解决复杂的问题求解和分步推理任务

通过 Workers AI 绑定(binding) (env.AI.run())、REST API /run/v1/chat/completions,或 AI Gateway 来使用 GLM-5.2。

定价可在模型页面定价页面上找到。

通过 VPC 网络上的 connect() 进行 TCP 连接

VPC 网络(VPC Network) 绑定(binding)现在除了支持通过 fetch() 进行 HTTP 流量传输外,还支持用于指向私有目标的原始 TCP 连接的 connect() Socket API。

这意味着 Workers 现在可以向通过绑定的 Cloudflare Tunnel、Cloudflare Mesh 或 Cloudflare WAN 接入端(on-ramp)可达的任何私有服务打开 TCP 套接字 —— 包括 Redis、Memcached、MQTT、自定义二进制协议或任何其他基于 TCP 的服务。

{
  "$schema": "./node_modules/wrangler/config-schema.json",
  "vpc_networks": [
    {
      "binding": "PRIVATE_NETWORK",
      "network_id": "cf1:network",
      "remote": true
    }
  ]
}
[[vpc_networks]]
binding = "PRIVATE_NETWORK"
network_id = "cf1:network"
remote = true

在运行时,在绑定上使用 connect() 以向私有目标打开 TCP 套接字:

export default {
	async fetch(request: Request, env: Env) {
		// Open a TCP connection to a private Redis instance
		const socket = await env.PRIVATE_NETWORK.connect("10.0.1.50:6379");

		// Write a Redis PING command
		const writer = socket.writable.getWriter();
		await writer.write(new TextEncoder().encode("PING\r\n"));
		await writer.close();

		return new Response(socket.readable);
	},
};

有关更多详细信息,请参阅 VPC 网络(VPC Networks)Workers 绑定(Binding)API

Workers 追踪现在支持自定义 span

您现在可以使用 tracing.enterSpan() 在您的 Workers 代码中创建自定义追踪 span。自定义 span 与自动平台检测(fetch 调用、KV 读取、D1 查询以及其他平台操作)一起显示在您的追踪和 OpenTelemetry 导出中,并具有正确的父子嵌套关系。

该 API 可以通过 import { tracing } from "cloudflare:workers" 或通过处理程序上下文 ctx.tracing 访问:

import { tracing } from "cloudflare:workers";

export default {
  async fetch(request, env, ctx) {
    return tracing.enterSpan("handleRequest", async (span) => {
      span.setAttribute("url.path", new URL(request.url).pathname);
      const data = await env.MY_KV.get("key");
      return new Response(data);
    });
  },
};

Span 根据 JavaScript 异步上下文自动嵌套,并在回调返回或其返回的 Promise 解决时自动结束。Span 对象提供了 setAttribute(key, value) 用于附加元数据,以及 isTraced 属性用于检查当前请求是否正在被采样。

追踪瀑布图,显示与自动 KV 和 fetch 检测嵌套在一起的自定义 span

必须在您的 Wrangler 配置中启用追踪才能记录 span。

有关完整的 API 详细信息和示例,请参阅自定义 span

在 WAF 规则中使用 Cloudforce One 威胁情报

您现在可以在 WAF 规则中针对 Cloudforce One 威胁情报匹配传入的请求。新的检测会在威胁情报数据库中查找每个请求的客户端 IP 地址。如果该 IP 在过去七天内参与了威胁活动,Cloudflare 将填充 cf.intel.ip.* 字段,您可以在 自定义规则速率限制规则 中使用这些字段。

该检测会填充以下字段。使用带有 [*] 通配符的 any() 函数来匹配数组值:

  • cf.intel.ip.datasets — 标记该 IP 地址的数据集(ddoswaf)。
  • cf.intel.ip.target_industries — 该 IP 地址针对的行业。
  • cf.intel.ip.attacker_names — 与该 IP 地址关联的已知威胁活动者。
  • cf.intel.ip.attacker_countries — 威胁活动的来源国家/地区。
  • cf.intel.ip.target_countries — 该 IP 地址针对的国家/地区。

例如,以下自定义规则表达式会阻断来自与针对法国的 DDoS 活动相关联的 IP 地址的请求:

any(cf.intel.ip.target_countries[*] == "FR") and any(cf.intel.ip.datasets[*] == "ddos")

这些字段适用于 Cloudflare API 和 Terraform。匹配项将记录在 安全分析 中。

拥有活动 Cloudforce One 订阅的客户可以使用威胁情报检测。欲了解更多信息,请参阅 威胁情报

WAF 发布 - 2026-06-15

本周的发布引入了新的托管防护,以解决 Ghost CMS 中的关键 SQL 注入漏洞(CVE-2026-26980),以及一条旨在识别和阻断利用混淆布尔逻辑的复杂 SQL 注入 (SQLi) 绕过尝试的新通用规则。这些规则在网络边缘保护受影响的安装免受未经授权的数据外泄。

主要发现

  • CVE-2026-26980: Ghost CMS Content API(版本 3.24.0 至 6.19.0)中存在盲 SQL 注入漏洞,由于输入验证不当,允许未经身份验证的远程攻击者通过查询参数注入恶意 SQL 命令。
规则集规则 ID旧版规则 ID描述先前操作新操作注释
Cloudflare 托管规则集Ghost CMS - SQLi - CVE:CVE-2026-26980记录阻断

这是新的检测。

Cloudflare 托管规则集SQLi - Obfuscated Boolean - URI记录已禁用

这是新的检测。

在 AI Gateway 日志中查看请求的用户代理(User Agent)

AI Gateway 日志现在能够捕获发起每个请求的客户端的用户代理(User Agent),从而更容易识别是哪个 SDK、库或应用程序发送了流经您网关的流量。例如,您可以区分来自 openai-python 的请求与来自自定义应用程序或 Cloudflare Worker 的请求。

用户代理会与每个日志条目中的其他详细信息一起显示,并且您可以在仪表板中按用户代理(等于、不等于或包含)对日志进行筛选。

欲了解更多信息,请参阅日志记录

按对象 ID 或名称筛选 Durable Objects 指标

现在,您可以在 Cloudflare 仪表板中,按单个 Durable Object 的 ID名称 筛选 Durable Objects 命名空间的 指标 选项卡。此前,指标图表仅显示聚合的命名空间级数据,因此很难隔离特定对象的行为。

Go to Durable Objects ↗已按 ID 筛选为单个对象的 Durable Objects 指标选项卡,按调用状态显示每个对象的请求和错误。

开始在筛选器中输入 ID 或名称,然后从自动完成下拉列表中选择匹配项。自动完成仅显示在选定时间范围内有调用的对象,因此未出现的对象在该时间窗内未被调用。这并不一定意味着该对象已被删除。页面上的每个图表都会更新,以仅反映所选的对象。这使得在调试高流量对象、错误激增或意外存储使用时,更容易识别和调查单个 Durable Object。清除筛选器可返回命名空间级指标。

指标由 GraphQL Analytics API 提供支持,因此适用标准的分析行为,例如摄取延迟和采样

欲了解更多信息,请参阅指标和分析

Terraform v5.20.0 现已可用

Cloudflare 的 Terraform v5 Provider 让开发人员能够轻松地使用配置即代码(configuration as code)方法来管理其 Cloudflare 基础设施。它每 2-3 周发布一次,以确保您始终可以管理平台中的最新功能。本周,我们发布了 Terraform v5.20.0,其中添加了 24 个新资源,将底层的 Go SDK 升级到了 cloudflare-go v7,并根据社区反馈进行了一系列错误修复和状态升级。

新资源

  • cloudflare_ai_search_namespace: 管理 AI Search 命名空间
  • cloudflare_custom_csr: 管理自定义证书签名请求
  • cloudflare_dls_prefix_binding: 管理 DLS 区域服务前缀绑定(binding)
  • cloudflare_flagship_app: 管理 Flagship 功能标志应用
  • cloudflare_flagship_flag: 管理 Flagship 功能标志
  • cloudflare_google_tag_gateway: 管理 Google Tag Gateway
  • cloudflare_load_balancer_monitor_group: 管理负载均衡器监视器组
  • cloudflare_oauth_client: 管理 IAM OAuth 客户端
  • cloudflare_origin_cloud_region: 管理源站云区域(v2 终结点)
  • cloudflare_secrets_store: 管理 Secrets Store 实例
  • cloudflare_secrets_store_secret: 管理 Secrets Store 机密
  • cloudflare_share: 管理资源共享
  • cloudflare_share_recipient: 管理共享接收者
  • cloudflare_share_resource: 管理共享资源
  • cloudflare_zero_trust_device_deployment_groups: 管理 Zero Trust 设备部署组
  • cloudflare_zero_trust_dlp_data_class: 管理 DLP 数据类
  • cloudflare_zero_trust_dlp_data_tag: 管理 DLP 数据标签
  • cloudflare_zero_trust_dlp_data_tag_category: 管理 DLP 数据标签类别
  • cloudflare_zero_trust_dlp_sensitivity_group: 管理 DLP 敏感性组
  • cloudflare_zero_trust_dlp_sensitivity_level: 管理 DLP 敏感性级别
  • cloudflare_zero_trust_dlp_sensitivity_level_order: 管理 DLP 敏感性级别排序
  • cloudflare_zero_trust_resource_library_application: 管理 Zero Trust 资源库应用
  • cloudflare_zero_trust_resource_library_category: 管理 Zero Trust 资源库类别
  • cloudflare_zero_trust_tunnel_warp_connector_config: 管理 WARP 连接器隧道配置

功能

  • cache: 为 smart_tiered_cache 添加创建 (POST) 方法
  • cache: 更新 OPCR 配置为 v2 终结点
  • dlp: 将 classification Stainless 配置提升至主分支
  • dlp: 添加自定义提示词主题终结点
  • email_security_block_sender: 用于 v4 到 v5 迁移的状态升级器
  • email_security_impersonation_registry: 用于 v4 到 v5 迁移的状态升级器
  • email_security_trusted_domains: 用于 v4 到 v5 迁移的状态升级器
  • snippets: 为 snippet 和 snippet_rules 添加 Terraform id_property 注释
  • 将 Go SDK 升级到 cloudflare-go v7

错误修复

  • account_member: 缺少从 v5.0–v5.15 的升级路径
  • authenticated_origin_pulls_settings: 空指针异常 (nil pointer panic)
  • bot_management: 恢复 model.go 中对 content_bots_protection 的处理
  • dns_record: 防止 FQDN 规范化吞掉名称缩短的更改
  • list: 将空的嵌套对象设为 null,以防止 apply 后出现不一致的结果
  • load_balancer_pool: 接受 schema_version=0 时早期 v5 对象形状的状态
  • load_balancer_pool:load_shedding 属性添加 UseStateForUnknown 以防止漂移
  • r2_custom_domain: 恢复 resource.go 中的降级响应处理
  • regional_hostname: 将 cloudflare-go 导入从 v6 更新为 v7
  • secrets_store: 修复模型/架构一致性并保护验收测试
  • spectrum_application: 接受 schema_version=0 时早期 v5 对象形状的状态
  • worker: 在多次读取之间保留 observability.traces.propagation_policy
  • worker: 在可观测性默认值中添加 propagation_policy
  • worker_version: 恢复手写的 D1 database_id 处理
  • workers_custom_domain: 状态迁移中缺少 CertId field
  • workers_script: 恢复被代码生成(codegen)剥离的注释 Read 规避方案
  • zero_trust_access_identity_provider:read_only 从计算(computed)更改为可选(optional)
  • zero_trust_access_identity_provider:UseStateForUnknown 添加到仅限 SAML 的配置字段
  • zero_trust_access_identity_provider: 在 scim_config 字段上使用 UseNonNullStateForUnknown
  • zero_trust_access_policy: 在迁移区域范围的 v4 状态时填充 account_id
  • zero_trust_access_policy: 迁移中缺少 common_names 转换
  • 在迁移期间当配置具有 attributes_flat 时,优雅地处理空指针解引用
  • 为所有新资源设置初始架构版本为 500

重构

MoveState 空值保护(nil guard)提取到共享助手程序中

了解更多信息

Moonshot AI Kimi K2.7 Code 现已在 Workers AI 上可用

@cf/moonshotai/kimi-k2.7-code 现已在 Workers AI 上可用。Kimi K2.7 Code 是 Kimi K2 系列中针对代码进行了优化的变体,基于混合专家(Mixture-of-Experts)架构构建,总参数量为 1T,每个 token 的活跃参数量为 32B。

改进的编码和智能体性能

K2.7 Code 在编码和智能体基准测试中相比 K2.6 实现了显著提升:

  • +21.8%,在 Kimi Code Bench v2 上
  • +11.0%,在 Program Bench 上
  • +31.5%,在 MLS Bench Lite 上

推理效率

K2.7 Code 与 K2.6 相比,使用的推理 token 减少了 30%,从而减少了“过度思考”并降低了重推理工作负载的推理成本。

关键能力

  • 262.1k token 上下文窗口,用于在长期运行的智能体任务中保留完整的对话历史记录、工具定义和代码库
  • 长周期编码,具有改进的指令遵循和更高的端到端编码任务成功率
  • 视觉输入,用于随文本一起处理图像
  • 可通过 chat_template_kwargs.thinking 配置推理深度的思维模式
  • 多轮工具调用,用于构建在多个对话轮次中调用工具的智能体
  • 支持 JSON schema 的结构化输出

与 Kimi K2.6 的区别

如果您正在从 Kimi K2.6 迁移,请注意以下几点:

  • K2.7 Code 针对编码任务进行了优化,具备改进的基准测试性能和推理效率
  • 缓存的输入 token 定价为每百万(M)token 0.19 美元(而 K2.6 为 0.16 美元)
  • API 使用方式完全相同 —— 无需更改参数

快速入门

通过 Workers AI 绑定(binding) (env.AI.run())、/ai/run 处的 REST API,或者 /v1/chat/completions 处的兼容 OpenAI 的端点来使用 Kimi K2.7 Code。您还可以在这些端点中搭配使用 AI Gateway

欲了解更多信息,请参阅 Kimi K2.7 Code 模型页面定价

Browser Run /snapshot 端点新增 formats 参数

Browser Run/snapshot 端点 现在支持 formats 参数,允许您在单次 API 调用中返回多种页面格式。此前,/snapshot 仅返回 HTML 内容和截图。您现在还可以在同一响应中包含 Markdown 和无障碍树。

这些格式对 AI Agent 工作流特别有用:

  • Markdown 提供了页面内容的高效 token 表示形式,LLM 可直接处理,无需解析 HTML 标记。
  • 无障碍树提供了页面元素的结构化表示,包括角色、标签和层级关系,帮助 LLM 理解页面结构并导航其内容。

以下示例在一次调用中返回截图、Markdown 和无障碍树:

curl -X POST 'https://api.cloudflare.com/client/v4/accounts/<accountId>/browser-rendering/snapshot' \
  -H 'Authorization: Bearer <apiToken>' \
  -H 'Content-Type: application/json' \
  -d '{
    "url": "https://example.com/",
    "formats": ["screenshot", "markdown", "accessibilityTree"]
  }'
import Cloudflare from "cloudflare";

const client = new Cloudflare({
	apiToken: process.env["CLOUDFLARE_API_TOKEN"],
});

const snapshot = await client.browserRendering.snapshot.create({
	account_id: process.env["CLOUDFLARE_ACCOUNT_ID"],
	url: "https://example.com/",
	formats: ["screenshot", "markdown", "accessibilityTree"],
});

console.log(snapshot.markdown);
console.log(snapshot.accessibilityTree);
interface Env {
	BROWSER: BrowserRun;
}

export default {
	async fetch(request, env): Promise<Response> {
		return await env.BROWSER.quickAction("snapshot", {
			url: "https://example.com/",
			formats: ["screenshot", "markdown", "accessibilityTree"],
		});
	},
} satisfies ExportedHandler<Env>;

您必须至少请求两种格式。如果只需要一种格式,请使用相应的单格式端点,例如 /screenshot/markdown

请参阅 /snapshot 文档 以获取完整的支持值列表。

为 AI 提示词保护定义自定义主题

您现在可以为 AI 提示词保护定义自定义主题。预定义的 AI 提示词主题涵盖了常见的生命周期和意图类别,例如 PII、源代码和越狱(jailbreak)尝试。自定义主题允许您检测未包含在预定义类别中的独特或专有概念。

您用自然语言描述一个自定义主题,Cloudflare DLP 会根据上下文(而非特定关键字)检测提示词是否与该主题匹配。例如,描述机密合并讨论的主题会与对该交易进行释义的提示词相匹配,即使该提示词从未包含“合并”一词或涉及的公司名称。要检测诸如内部代号或产品标识符之类的字面值,请改用自定义单词列表或模式条目

自定义主题与预定义的 AI 提示词主题运行相同的应用程序精细控制路径。自定义主题适用于 ChatGPT、Google Gemini、Perplexity 和 Claude。

创建自定义 AI 提示词主题

  1. Cloudflare 仪表板中,转到 Zero Trust > Data loss prevention(数据防泄露) > Detection entries(检测条目)
  2. 选择 AI prompt topics(AI 提示词主题),然后选择 Custom Prompt Topic(自定义提示词主题)
  3. 用自然语言描述主题。具体说明您想要检测的概念。例如,描述未发布的产品路线图细节或机密的客户合同条款。
  4. 将此检测条目添加到现有的 DLP 配置文件中,或创建一个新的 DLP 配置文件
  5. 在 Gateway HTTP 策略中使用该配置文件,以记录或阻断与该主题相匹配的提示词。

有关更多详细信息,请参阅 AI prompt topics

从仪表板和 GraphQL API 跟踪 Dynamic Workers 的使用情况

Workers 概览页面上的 Dynamic Workers 使用情况

客户现在可以从 Cloudflare 仪表板的 Workers 概览页面查看在其计费周期内调用的 Dynamic Workers 数量。

此计数反映了 Cloudflare 在所选计费周期内将计费的 Dynamic Workers 数量。Dynamic Workers 的使用数据仅追溯到 2026 年 6 月 1 日。

您还可以通过 GraphQL Analytics API 查询此计数,方法是使用 workersInvocationsByOwnerAndScriptGroups 并选择 distinctDynamicWorkerCount

query getDynamicWorkersCount(
	$accountTag: string!
	$filter: AccountWorkersInvocationsByOwnerAndScriptGroupsFilter_InputObject
) {
	viewer {
		accounts(filter: { accountTag: $accountTag }) {
			workersInvocationsByOwnerAndScriptGroups(limit: 10000, filter: $filter) {
				uniq {
					distinctDynamicWorkerCount
				}
			}
		}
	}
}

使用变量来设置账户和计费周期日期范围:

{
	"accountTag": "<ACCOUNT_ID>",
	"filter": {
		"date_geq": "2026-06-01",
		"date_leq": "2026-06-30"
	}
}

有关更多信息,请参阅 Dynamic Workers 定价

使用 Wrangler CLI 管理 AI Search 命名空间

AI Search 现在支持命名空间级别的 Wrangler 命令,这使得从您的终端、脚本和代理工作流程中管理命名空间(namespaces)变得更加容易。

以下命令可用:

命令 描述
wrangler ai-search namespace list 列出 AI Search 命名空间
wrangler ai-search namespace create 创建新的 AI Search 命名空间
wrangler ai-search namespace get 获取命名空间的详细信息
wrangler ai-search namespace update 更新命名空间描述
wrangler ai-search namespace delete 删除 AI Search 命名空间

直接从 CLI 为新应用程序或租户创建命名空间:

wrangler ai-search namespace create docs-production --description "Production documentation search"

通过分页列出命名空间,或按名称或描述进行过滤:

wrangler ai-search namespace list --search docs --page 1 --per-page 10

--jsonlistcreategetupdate 结合使用,以返回自动化和 AI 代理可以直接解析的结构化输出。

实例级别的命令现在也支持 --namespace 标志,因此您可以从 CLI 与特定命名空间内的实例进行交互:

wrangler ai-search list --namespace docs-production

有关完整的用法详情,请参阅 AI Search Wrangler 命令文档

账户级 DNS 记录配额

Cloudflare 现在针对企业级(Enterprise)账户在账户级别执行 DNS 记录配额。这些账户不再限制每个区域的配额,而是对其所有区域的记录总数设立配额,允许您根据需要随意在各个区域之间分配记录,而无需考虑每个区域的计划。公共区域和内部区域分别计算,每个区域的默认配额为 1,000,000 条记录。

没有账户级配额的账户不受影响:现有的每个区域配额与以前完全相同。

有关更多详细信息,请参阅 DNS records quota

Flagship API 参考现已上线

Flagship API 参考 现已上线。您可以使用 Cloudflare API 创建和更新应用,以及在不使用仪表板的情况下创建、更新、删除和列出功能标志。

例如,使用 API 创建一个新的布尔标志:

curl https://api.cloudflare.com/client/v4/accounts/$ACCOUNT_ID/flagship/apps/$APP_ID/flags \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer $CLOUDFLARE_API_TOKEN" \
  -d '{
    "key": "new-checkout",
    "enabled": true,
    "default_variation": "off",
    "variations": {
      "off": false,
      "on": true
    },
    "rules": []
  }'

要创建 API token,请前往 Cloudflare 仪表板中的账户 API Tokens 并搜索 Flagship。

API 参考包含 Flagship 应用、标志、更新日志条目和标志评估的端点。Agent 还可以使用 Cloudflare skill 中的 Flagship 参考 创建和管理 Flagship 资源。

请参阅 Flagship 文档 以了解有关从应用程序评估功能标志的更多信息。

使用 Images 绑定管理托管的图像

使用 Images 绑定(binding)可以直接从您的 Worker 上传、列出、检索、更新和删除存储在 Images 中的图像,而无需管理 API 令牌(tokens)或发送 HTTP 请求。

env.IMAGES.hosted 命名空间支持以下存储和管理操作:

例如,您可以从请求主体中上传图像并返回其元数据:

const image = await env.IMAGES.hosted.upload(request.body, {
	filename: "upload.jpg",
	metadata: { source: "worker" },
});

return Response.json(image);

或者检索并提供托管图像的原始字节:

const bytes = await env.IMAGES.hosted.image("IMAGE_ID").bytes();
return new Response(bytes);

欲了解更多信息,请参阅 Images 绑定

针对 Brand Protection 的自动 Cease and Desist(停止并终止)模板

摘要(TL;DR): Brand Protection 现在具有 自动 Cease & Desist(C&D) 工作流。当您发现托管在 Cloudflare 之外的侵权域名时,您可以在数秒内立即生成、审查并下载带有自定义品牌标识且预先填写的法律通知。

为什么这很重要

此更新引入了从纯检测到可行性执法的重大转变,消除了您的 Trust & Safety 和法务团队的手动负担:

  • 即时 WHOIS 和收件人查询:我们会在后台自动抓取注册商数据和 WHOIS 联系信息(例如注册人或注册商滥用投诉邮箱),精确指出您的通知需要发送到哪里
  • 智能模板自动化:我们使用基本元数据预先填写您的自定义品牌模板,包括侵权域名、注册商名称和发现日期。
  • 量身定制的执法语气:根据基础设施匹配的严重程度,从三种默认布局策略中进行选择:
    • Exact Match(精确匹配):针对完全相同的商标侵权行为提出正式要求
    • Similar Match(相似匹配):针对域名仿冒(单字符距离匹配)进行优化的标准通知
    • Friendly Tone(友好语气):针对潜在的无意或意外侵权行为的友好初步沟通
  • 完全的编辑控制:在创建最终的 PDF 之前,实时审查屏幕允许您微调消息传递、修改占位符,并确保您的文本与内部法律标准完美契合

工作原理

在仪表板内审查恶意域名匹配时,您的执法路径会根据攻击者所在的位置而有所不同:

  1. 在 Cloudflare 网络上:如果该域名使用 Cloudflare 的网络或注册商,只需单击一下即可触发我们现有的集成滥用报告流程。
  2. 托管在其他地方:如果该域名托管在外部提供商上,单击 Generate C&D Letter 选项启动新的文档生成器,选择您的模板,验证自动填充的收件人数据,然后下载最终生成的 PDF。

您可以通过前往 Cloudflare 仪表板 > Application Security > Brand Protection 并选择您检测到的 Brand Protection 匹配项来管理模板并执行匹配。 有关更多信息,请参阅 Brand Protection 文档

注意:Cloudflare 并不代表您,也无法为您提供法律建议。只有您自己能决定您的权利是否受到侵犯、警告信是否合适以及该信件应包含的内容。

已弃用 Sandbox SDK 功能

今天我们宣布弃用 Sandbox SDK 的若干功能。自首次发布以来,SDK 已大幅成长和成熟。随着 Agent 工作流的发展,我们已发布了许多新功能和实验性内容,让开发者能够轻松地将安全的隔离代码执行集成到其工作流中。

我们希望 SDK 在快速迭代代码库的同时,继续为 Agent 工作流提供稳定的基础。这些已弃用的功能要么已被更新的功能所取代,要么采用率较低。它们将保留在代码库中直至 2026 年 7 月 9 日,之后将不再出现在未来的 Sandbox SDK 版本中。

HTTP 和 WebSocket 传输

2026 年 4 月,我们发布了新的 RPC 传输并弃用了 WebSocket 传输。此设置控制沙箱容器与 Workers 生态系统的通信方式。RPC 传输消除了 HTTP 和 WebSocket 传输的两种限制。自 2026 年 6 月 9 日起,它是推荐的默认选项。HTTP 和 WebSocket 传输将不再出现在 2026 年 7 月 9 日后发布的 Sandbox SDK 版本中。

如需在 2026 年 7 月 9 日之前迁移,请将 SANDBOX_TRANSPORT 变量更新为 rpc,或在调用 getSandbox() 时设置 transport 选项。更多信息,请参阅传输配置文档

Desktop

Desktop 功能作为 Sandbox SDK 功能演示而推出——可在沙箱中控制完整的浏览器环境。随着 Cloudflare Browser Run 的推出,该功能使用率极低。我们已在 0.10.2 中将其移除。

公开端口

我们最近在 Sandbox SDK 中发布了对 Cloudflare Tunnel 的支持。它为将沙箱中运行的服务公开到公共互联网提供了强大的 API,解决了许多人在本地开发和部署到 workers.dev 域名时遇到的问题。如需从 exposePort() 迁移到隧道,请参阅隧道 API 文档公开服务指南

默认会话

默认情况下,Sandbox SDK 中的 exec() 方法在所有调用之间维护一个默认会话,因此某次调用中的 cd 会在下一次调用中生效。这种便利性对手动编写 exec 语句的开发者有帮助,但会让 Agent 感到困惑,并导致难以追踪的 Bug。自 0.10.3 起,我们在 getSandbox() 接口上引入了 enableDefaultSession 标志来关闭此功能。默认会话这一概念——以及该标志——将在后续版本中移除。

我们建议今天就将 enableDefaultSession: false 设置为当前值,并在需要之前行为时使用 sandbox.createSession() API

其他变更

我们还在整合所有缓冲数据的 API,以默认支持流式传输。这包括 readFilewriteFileexec。流式等效方法将被移除。

我们正在探索将非核心功能(如代码解释器终端git API)移入辅助工具。这些功能将保留现有 API,因此迁移应该很简单。

后续步骤

如果您使用了上述任何功能,请参阅 2026 年弃用迁移指南。我们还提供了一个 Agent skill 来协助迁移。

如有任何问题,请在 Cloudflare 开发者 Discord 中提问。

WAF 发布 - 2026-06-09

此版本引入了针对使用 PostgreSQL 的 Drupal 安装中关键 SQL 注入漏洞(CVE-2026-9082)的新检测,以及针对 Mirasvit Cache Warmer 扩展中不安全反序列化缺陷(CVE-2026-45247)的针对性防护。此外,此版本还包含对 Axios 中原型污染向量(CVE-2026-40175)的覆盖,以及一条旨在识别和阻断利用混淆布尔逻辑的复杂 SQL 注入 (SQLi) 绕过尝试的新通用规则。

主要发现

  • CVE-2026-9082: 配置了 PostgreSQL 后端的 Drupal 网站受到数据库抽象漏洞的影响。远程、未经身份验证的攻击者可以通过精心设计的输入利用该漏洞注入恶意 SQL 命令并访问或操作后端数据。
  • CVE-2026-45247: Magento 和 Adobe Commerce 的 Mirasvit Cache Warmer 扩展中存在 PHP 对象注入漏洞。该漏洞源于对不受信任的用户进行的不安全反序列化输入,使未经身份验证的攻击者能够在托管服务器上执行任意代码。
  • CVE-2026-40175: Axios HTTP 客户端库中存在原型污染漏洞。攻击者可以利用此漏洞向全局 JavaScript 对象原型中注入恶意属性,从而可能导致应用程序崩溃(拒绝服务)或根据应用程序结构执行未经授权的代码。

影响

成功利用这些漏洞可能允许未经身份验证的攻击者执行任意代码、操作数据库内容或引发应用程序崩溃,从而导致严重的操作中断或服务器完全受损。这些新部署的签名在边缘拦截了这些先进的恶意负载,然后它们才能与脆弱的软件配置进行交互。

规则集规则 ID旧版规则 ID描述先前操作新操作注释
Cloudflare 托管规则集Axios - Prototype Pollution - CVE:CVE-2026-40175记录阻断

这是新的检测。

Cloudflare 托管规则集Drupal - PostgreSQL SQLi - CVE:CVE-2026-9082 - Body记录阻断

这是新的检测。

Cloudflare 托管规则集Drupal - PostgreSQL SQLi - CVE:CVE-2026-9082 - URI记录阻断

这是新的检测。

Cloudflare 托管规则集SQLi - Obfuscated Boolean - Body已禁用

这是新的检测。

Cloudflare 托管规则集SQLi - Obfuscated Boolean - Headers已禁用

这是新的检测。

Cloudflare 托管规则集Mirasvit Cache Warmer - PHP Object Injection - CVE:CVE-2026-45247阻断

这是新的检测。

身份验证的 SMTP 提交功能现已在 beta 阶段可用

您现在可以使用 smtp.mx.cloudflare.net:465 上的身份验证 SMTP 提交,通过 Cloudflare Email Service 发送电子邮件。SMTP 与 REST APIWorkers 绑定 一起构成了发送交易性电子邮件的第三种方式——这对于已经采用 SMTP 协议的现有应用程序以及语言原生 SMTP 库(如 Nodemailer、smtplib、PHPMailer、JavaMail)非常有用。

设置
主机 (Host) smtp.mx.cloudflare.net
端口 (Port) 465 (隐式 TLS)
AUTH PLAINLOGIN
用户名 (Username) api_token
密码 (Password) 具有 Email Sending: Edit 权限的 Cloudflare API 令牌(账户所有或用户所有)

提交将进入与 REST API 和 Workers 绑定相同的递送管道:相同的限制、自动 DKIM 和 ARC 签名,以及共享的仪表板日志。

使用单条命令发送您的第一封电子邮件:

curl --ssl-reqd \
  --url "smtps://smtp.mx.cloudflare.com:465" \
  --user "api_token:<API_TOKEN>" \
  --mail-from "welcome@yourdomain.com" \
  --mail-rcpt "user@example.com" \
  --upload-file mail.txt

有关身份验证详细信息、响应代码和特定语言的示例,请参阅 SMTP 参考

R2 SQL 现在支持 UNION、INTERSECT、EXCEPT 和 SELECT DISTINCT

R2 SQL 现在支持集合操作(UNIONINTERSECTEXCEPT)和 SELECT DISTINCT,从而扩展了您可直接对 R2 Data CatalogApache Iceberg 表运行的分析查询范围。

集合操作

组合多个 SELECT 语句的结果:

  • UNION — 返回两个查询的所有行,并移除重复项。
  • UNION ALL — 返回两个查询的所有行,保留重复项。
  • INTERSECT — 仅返回在两个查询中都出现的行。
  • EXCEPT — 返回存在于第一个查询中但不存在于第二个查询中的行。
-- Find zones that had either firewall blocks OR high-risk requests
SELECT zone_id FROM my_namespace.firewall_events WHERE action = 'block'
UNION
SELECT zone_id FROM my_namespace.http_requests WHERE risk_score > 0.8
-- Find zones with both firewall blocks AND high traffic
SELECT zone_id FROM my_namespace.firewall_events WHERE action = 'block'
INTERSECT
SELECT zone_id FROM my_namespace.http_requests
GROUP BY zone_id
HAVING COUNT(*) > 10000
-- Find enterprise zones that have not been compacted
SELECT zone_id FROM my_namespace.zones WHERE plan = 'enterprise'
EXCEPT
SELECT zone_id FROM my_namespace.compaction_history

SELECT DISTINCT

从查询结果中消除重复行:

SELECT DISTINCT region, department
FROM my_namespace.sales_data
WHERE total_amount > 1000
ORDER BY region, department
LIMIT 100

对于可以接受近似结果的大型数据集,approx_distinct() 仍是计算唯一值数量的更快替代方法。

有关完整语法参考,请参阅 SQL 参考。有关性能指南,请参阅限制与最佳实践

RealtimeKit 会后转录现已正式发布

RealtimeKit 让您可以在 Cloudflare 的全球 WebRTC 基础设施上构建人们通过实时音视频进行会议的产品,例如医疗健康科技、教育科技、监考以及其他实时平台。

会后转录现已正式发布,已完成的 RealtimeKit 会议可在结束后自动生成完整的转录文件。这些转录文件还可为AI 生成摘要提供支持,用于会议记录、审查工作流以及转录文件可用后的跟进任务。

会后转录是由 Workers AI 使用 Whisper Large v3 Turbo 驱动的托管服务。RealtimeKit 处理转录过程,并可通过 webhook 或 REST API 返回转录和摘要文件,因此您无需运行自己的转录基础设施。

生成转录和摘要

要在会议结束后生成转录,请在创建会议时设置 transcribe_on_end: true。要在转录可用后也自动生成 AI 摘要,请设置 summarize_on_end: true

curl -X POST "https://api.cloudflare.com/client/v4/accounts/$ACCOUNT_ID/realtime/kit/$APP_ID/meetings" \
  -H "Authorization: Bearer $CLOUDFLARE_API_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "title": "Weekly product review",
    "transcribe_on_end": true,
    "summarize_on_end": true,
    "ai_config": {
      "transcription": {
        "language": "en"
      },
      "summarization": {
        "word_limit": 500,
        "text_format": "markdown",
        "summary_type": "team_meeting"
      }
    }
  }'

获取结果

当 RealtimeKit 完成会议处理后,会为转录文件创建下载 URL,如果设置了 summarize_on_end,则还会为摘要创建下载 URL。您可以通过 webhook 自动接收这些 URL,或通过 REST API 稍后为特定会话获取。

要在结果准备好后立即接收,请配置 meeting.transcriptmeeting.summary webhook 事件:

curl -X POST "https://api.cloudflare.com/client/v4/accounts/$ACCOUNT_ID/realtime/kit/$APP_ID/webhooks" \
  -H "Authorization: Bearer $CLOUDFLARE_API_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "AI results webhook",
    "url": "https://example.com/webhook",
    "events": ["meeting.transcript", "meeting.summary"],
    "enabled": true
  }'

要稍后获取结果,请调用相应会话的转录摘要端点:

curl -X GET "https://api.cloudflare.com/client/v4/accounts/$ACCOUNT_ID/realtime/kit/$APP_ID/sessions/$SESSION_ID/transcript" \
  -H "Authorization: Bearer $CLOUDFLARE_API_TOKEN"

curl -X GET "https://api.cloudflare.com/client/v4/accounts/$ACCOUNT_ID/realtime/kit/$APP_ID/sessions/$SESSION_ID/summary" \
  -H "Authorization: Bearer $CLOUDFLARE_API_TOKEN"

仅当未设置 summarize_on_end 且您希望在转录可用后手动生成摘要时,才使用为会话转录生成摘要 API:

curl -X POST "https://api.cloudflare.com/client/v4/accounts/$ACCOUNT_ID/realtime/kit/$APP_ID/sessions/$SESSION_ID/summary" \
  -H "Authorization: Bearer $CLOUDFLARE_API_TOKEN"

会后转录支持 CSV、JSON、SRT 和 VTT 转录输出格式自动语言检测和 Whisper 语言代码。RealtimeKit 还支持使用 Deepgram Nova-3 进行实时转录,用于实时字幕、会议内无障碍功能和实时记录。

RealtimeKit 转录文档摘要文档中了解更多信息。

直接从 Threat Events 保存的视图创建 WAF 规则

Cloudforce One 用户现在可以将 Threat Events 指标转化为主动防御。通过此更新,用户可以立即生成一个 WAF 规则,该规则与他们的任何 Saved Views(已保存视图) 返回的 IP 地址动态列表相匹配。

为什么这很重要

威胁情报在能立即转化为行动时最有效。以前,阻止威胁行为者需要从威胁事件中手动提取指标并将其复制到您的防火墙规则中。 这一新的集成弥合了威胁发现与威胁缓解之间的差距:

  • 当您识别出活动的威胁模式时 —— 例如针对特定行业的持续活动,或者使用已知的指标类型 —— 您只需单击一下即可从调查转向缓解。
  • 这种功能允许您利用在 Threat Events 生态系统内已经定义并保存的特定过滤逻辑,而不是编写复杂的静态 IP 规则。
  • 自动从您的威胁视图中生成 WAF 规则表达式可消除手动复制错误,确保立即阻止正确的恶意基础设施。

如何使用

您可以通过仪表板 UI 以及通过 API / Terraform 来实施这些规则。

前往 Cloudflare 仪表板 > Application Security(应用安全) > Threat Intelligence(威胁情报) > Manage Views(管理视图),选择您所需的视图,然后选择 Create WAF Rule(创建 WAF 规则)

这将使用匹配的威胁事件 IP 指标自动预先填充 WAF 规则生成器

您还可以通过结合使用 WAF Rule Builder API 以及您的 Threat Events saved views 终点来自动执行此工作流程。