跳转到内容
搜索文档

更新日志

Cloudflare 的最新更新与改进。

Agents SDK v0.12.4:对话恢复、路由重试、持久化 Think 提交及 Voice 连接控制

Agents SDK 的最新版本带来了更可靠的对话恢复、修复了重连时的 Agent 状态同步、添加了 Think 的持久化提交、暴露了路由重试配置,并为 Voice agents 添加了连接控制。

对话恢复改进

@cloudflare/ai-chat 现在在浏览器或客户端流中断时保持服务端 turn 继续运行。这对于长时间运行的 AI 响应场景非常有用,例如用户刷新页面、关闭标签页或临时断线。调用 stop() 仍会取消服务端 turn。

如果浏览器或客户端中止也应取消服务端 turn,请设置 cancelOnClientAbort: true

const chat = useAgentChat({
	agent: "assistant",
	name: "user-123",
	cancelOnClientAbort: true,
});
const chat = useAgentChat({
	agent: "assistant",
	name: "user-123",
	cancelOnClientAbort: true,
});

主要 bug 修复:

  • 对话流恢复协商不再在 replay 与关闭的 WebSocket 连接竞争时抛出异常。
  • 恢复的对话续传不再在原始 socket 在终端响应前断开时,导致 useAgentChat 卡在流式传输状态。
  • 审批自动续传保留推理部分,并在最终消息中持久化续传推理。
  • 当恢复的流从备用观察路径切换到传输拥有的流时,isServerStreaming 现在能正确重置。

Agent 状态和路由修复

[email protected] 防止在 WebSocket 连接设置期间出现重复的初始状态帧。这避免了过时的初始状态消息覆盖客户端已发送的状态更新。

当工具调用跨越 Durable Object 重启时,Agent 恢复也更加可靠。恢复现在会将用户完成钩子推迟到 agent 启动后,并隔离钩子失败,因此一个失败的钩子不会阻止其他恢复的运行完成。

getAgentByName() 现在支持 routingRetry,用于处理瞬态 Durable Object 路由失败:

import { getAgentByName } from "agents";

const agent = await getAgentByName(env.AssistantAgent, "user-123", {
	routingRetry: {
		maxAttempts: 3,
	},
});
import { getAgentByName } from "agents";

const agent = await getAgentByName(env.AssistantAgent, "user-123", {
	routingRetry: {
		maxAttempts: 3,
	},
});

持久化 Think 提交

@cloudflare/think 现在支持持久化的程序化提交。submitMessages() 提供持久化接受、幂等重试、状态检查、取消和清理功能,适用于应在调用方返回后继续运行的服务器驱动 turn。

Think.chat() RPC turn 现在在对话恢复 fiber 内运行并持久化其流式数据块。中断的子 agent turn 可以恢复部分输出,而不必从头开始。

ChatOptions.tools 已从 TypeScript API 中移除。请在子 agent 上定义持久化工具,或使用 agent 工具进行编排。遗留调用者传入的运行时 options.tools 值将被忽略并产生警告。

Think 消息裁剪行为变更

@cloudflare/think 默认不再对模型上下文应用 pruneMessages({ toolCalls: "before-last-2-messages" })。以前的默认行为可能会从较长的多轮流程中剥离客户端工具结果。

truncateOlderMessages 仍照常运行,因此上下文成本保持有界。依赖旧的激进裁剪行为的子类可以从 beforeTurn 重新启用:

import { Think } from "@cloudflare/think";
import { pruneMessages } from "ai";

export class MyAgent extends Think {
	beforeTurn(ctx) {
		return {
			messages: pruneMessages({
				messages: ctx.messages,
				toolCalls: "before-last-2-messages",
			}),
		};
	}
}
import { Think } from "@cloudflare/think";
import { pruneMessages } from "ai";

export class MyAgent extends Think<Env> {
	beforeTurn(ctx) {
		return {
			messages: pruneMessages({
				messages: ctx.messages,
				toolCalls: "before-last-2-messages",
			}),
		};
	}
}

Voice agent 连接控制

@cloudflare/voiceuseVoiceAgent 添加了 enabled 选项。React 应用现在可以延迟创建和连接 VoiceClient,直到所需条件(如能力令牌)就绪。

const voice = useVoiceAgent({
	agent: "MyVoiceAgent",
	enabled: Boolean(token),
});
const voice = useVoiceAgent({
	agent: "MyVoiceAgent",
	enabled: Boolean(token),
});

此版本还修复了 Workers AI 语音转文字会话的边界情况,以及 AI SDK textStream 响应中 withVoice 文本流的问题。

其他改进

  • Streamable HTTP 路由 — 当没有独立 SSE 流可用时,服务器到客户端的请求现在通过原始 POST 流路由。
  • 结构化工具输出 — 裁剪旧消息或超大持久化行时会保留工具输出的形状。
  • 非对话 Think 工具步骤 — Think agent 工具子项可在不发出助手文本的情况下完成,并可通过 getAgentToolOutput 返回结构化输出。
  • 子 agent 调度 — 当拥有 facet 注册条目不再存在时,过时的子 agent 调度行会被清理。
  • @cloudflare/codemode — 添加了带有 iframe sandbox 执行器的浏览器安全导出,并在 sandbox 内解析 OpenAPI 规范以避免 Worker Loader RPC 大小限制。

升级

升级到最新版本:

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

更多信息请参阅 Agents API 参考对话 agents 文档

/cdn-cgi/rum 端点现在对非 POST 请求返回 405

/cdn-cgi/rum 信标(beacon)端点现在对非 POST 请求返回 405 Method Not Allowed,而不是 404 Not Found。根据 RFC 9110 §15.5.6,响应中包含 Allow: POST, OPTIONS 标头。

以前,向此端点发送 GET 或其他非 POST 请求会返回 404,这具有误导性,因为它表明该端点不存在。新的 405 响应明确指出该端点存在,但仅接受 POST 请求。

Web Analytics 信标(beacon.min.js)已经对所有指标提交使用 POST,因此此更改不会影响信标的正常运行。针对 CORS 预检的 OPTIONS 请求继续照常工作。

欲了解更多信息,请参阅 Web Analytics FAQ

通过 Wrangler 进行 SSH 连接现已为容器默认启用

通过 Wrangler 进行 SSH 连接现已为容器默认启用。此前,您必须在容器配置中将 ssh.enabled 设置为 true 才能连接。

此更改不会在您的容器上暴露任何公开可访问的端口。SSH 服务仅可通过 wrangler containers ssh 访问,该命令会对您的 Cloudflare 账户进行身份验证。您还需要在 authorized_keys 中添加 ssh-ed25519 公钥才能连接,因此仅启用 SSH 并不能授予访问权限。

要连接,请在容器配置中添加公钥并运行 wrangler containers ssh <INSTANCE_ID>

{
	"containers": [
		{
			"authorized_keys": [
				{
					"name": "<NAME>",
					"public_key": "<YOUR_PUBLIC_KEY_HERE>",
				},
			],
		},
	],
}
[[containers]]
[[containers.authorized_keys]]
name = "<NAME>"
public_key = "<YOUR_PUBLIC_KEY_HERE>"

要禁用 SSH,请在容器配置中将 ssh.enabled 设置为 false

{
	"containers": [
		{
			"ssh": {
				"enabled": false,
			},
		},
	],
}
[[containers]]
[containers.ssh]
enabled = false

如需更多信息,请参阅 SSH 文档

R2 Data Catalog 现在通过 GraphQL Analytics API 公开指标

R2 Data Catalog 是直接内置于 R2 存储桶的托管 Apache Iceberg 数据目录,允许您将 R2 SQL、Spark、Snowflake 和 DuckDB 等查询引擎连接到 R2 中的数据。

您现在可以通过 Cloudflare 的 GraphQL Analytics API 查询 R2 Data Catalog 仓库的分析数据。两个新数据集现已可用:

  • r2CatalogDataOperationsAdaptiveGroups 跟踪向目录发出的 Iceberg REST API 请求,包括操作类型、请求时长、HTTP 状态和请求体字节数。使用此数据集可监控跨仓库、命名空间和表的请求量和延迟。
  • r2CatalogTableMaintenanceAdaptiveGroups 跟踪表维护作业,例如压缩和快照过期。使用此数据集可监控作业成功率、处理的文件数、读写字节数和作业时长。

两个数据集均支持按仓库名称、命名空间、表名称和时间范围过滤。它们还包括时长指标的百分位聚合。

有关详细的 Schema 信息和示例查询,请参阅 R2 Data Catalog 指标和分析文档

Workers AI 上计划的模型弃用

我们正在更新 Workers AI 模型目录,以为新发布的版本让出空间。请在弃用日期之前更新您的应用程序,以移除对下列模型的引用。

推荐替代方案

有关定价,请参阅 Workers AI 定价页面

Kimi K2.5

我们最初表示 Kimi K2.5 将于 2026 年 5 月 10 日弃用,但我们已将弃用日期延长至 2026 年 5 月 30 日。请求将于 2026 年 5 月 30 日自动别名(aliased)到价格更高的 Kimi K2.6。请在 2026 年 5 月 30 日之前查看 @cf/moonshotai/kimi-k2.6 的定价和模型能力,以确保该模型满足您的需求。

于 2026 年 5 月 30 日弃用的模型

  • @cf/moonshotai/kimi-k2.5 --> @cf/moonshotai/kimi-k2.6
  • @hf/meta-llama/meta-llama-3-8b-instruct
  • @cf/meta/llama-3-8b-instruct
  • @cf/meta/llama-3-8b-instruct-awq
  • @cf/meta/llama-3.1-8b-instruct
  • @cf/meta/llama-3.1-8b-instruct-awq
  • @cf/meta/llama-3.1-70b-instruct
  • @cf/meta/llama-2-7b-chat-int8
  • @cf/meta/llama-2-7b-chat-fp16
  • @cf/mistral/mistral-7b-instruct-v0.1
  • @hf/mistral/mistral-7b-instruct-v0.2
  • @hf/google/gemma-7b-it
  • @cf/google/gemma-3-12b-it
  • @hf/nousresearch/hermes-2-pro-mistral-7b
  • @cf/microsoft/phi-2
  • @cf/defog/sqlcoder-7b-2
  • @cf/unum/uform-gen2-qwen-500m
  • @cf/facebook/bart-large-cnn

保持活跃的变体

模型的 -fast-lora 变体将保持活跃,包括:

  • @cf/meta/llama-3.3-70b-instruct-fp8-fast
  • @cf/meta/llama-3.1-8b-instruct-fast
  • @cf/google/gemma-7b-it-lora
  • @cf/google/gemma-2b-it-lora
  • @cf/mistral/mistral-7b-instruct-v0.2-lora
  • @cf/meta-llama/llama-2-7b-chat-hf-lora

LoRA 模型在未来可能会被弃用。我们将向目录中添加更多 LoRA 功能,并会在新的 LoRA 模型上线时进行沟通,以便在弃用旧模型之前给用户留出训练新 LoRA 的时间。

如需获取可用模型的完整列表,请参阅 Workers AI 模型目录