Vercel News

AI SDK 7

8.5内容质量

TL;DR · AI 摘要

AI SDK 7 提供了更强大的功能,支持构建更复杂的 AI 应用,包括推理控制、工具上下文、运行时上下文等。

核心要点

  • AI SDK 7 支持推理控制,通过一个选项即可设置推理努力程度。
  • 工具上下文功能允许为每个工具指定类型化的上下文,提高安全性。
  • 运行时上下文支持在准备步骤中访问和修改变量,增强灵活性。

结构提纲

按章节快速跳转。

  1. §AI SDK 7 的发布

    AI SDK 7 是一个用于构建 AI 应用的 TypeScript SDK,具有超过 1600 万次每周下载。

  2. AI SDK 7 在五个领域增加了生产深度,包括开发、运行、集成、观察和超越文本代理。

  3. AI SDK 7 提供了推理控制功能,允许通过一个选项设置推理努力程度。

  4. AI SDK 7 添加了类型化的工具上下文,允许为每个工具指定上下文。

  5. AI SDK 7 引入了运行时上下文,支持在准备步骤中访问和修改变量。

思维导图

用一张图看清主题之间的关系。

查看大纲文本(无障碍 / 无 JS 友好)
  • AI SDK 7
    • 新功能
      • 推理控制
      • 工具上下文
      • 运行时上下文
      • 集成支持
      • 观察功能

金句 / Highlights

值得收藏与分享的关键句。

#AI SDK#TypeScript#Vercel#Agent Framework
打开原文

AI SDK 7 现已发布 - Vercel

AI SDK 每周下载量超过 1600 万次,是用于构建 AI 应用程序、功能、框架和代理的 TypeScript SDK,适用于任何模型提供商。它也是 Vercel 开源代理框架 eve 所基于的同一层。

AI SDK 7 在五个领域为代理工作提供了生产级深度:

  • 使用推理控制、工具和运行时上下文、提供商文件和技能支持、MCP 应用和终端 UI 开发代理。
  • 使用工具批准、持久性(WorkflowAgent)、超时和沙箱支持运行代理。
  • 集成任何代理框架,如 CodexClaude Code、Deep Agents、OpenCode 或 Pi。
  • 使用遥测、Node.js 跟踪通道、生命周期事件和性能统计来观察代理。
  • 通过提供商无关的实时语音支持和视频生成超越文本代理。
code
pnpm
add
ai@latest

安装 AI SDK 7

从 AI SDK 6 升级?运行 npx @ai-sdk/codemod v7 自动迁移,只需进行最小的代码更改,或者使用迁移技能:npx skills add vercel/ai --skill migrate-ai-sdk-v6-to-v7

链接到标题 开发代理

构建行为良好的代理需要对模型推理、工具上下文和文件处理进行精细控制。

链接到标题 推理控制

大多数前沿模型都支持可配置的推理,但每个提供商的 API 都以不同的方式暴露它。

AI SDK 7 通过 generateText 和 streamText 的推理选项标准化了这一点。它映射到提供商原生的推理设置,让您在一行代码中控制推理努力。您仍然可以在需要更详细的提供商特定推理配置时回退到提供商选项。

agent.ts

code
1
import
{
generateText
}
from
'ai'
;
2
3
const
result
=
await
generateText
(
{
4
model
,
5
prompt
,
6
reasoning
:
'high'
,
7
}
)
;

通过单个选项设置推理努力

了解推理文档的更多信息。

链接到标题 工具上下文

工具越来越多地独立于特定代理或应用程序开发。例如,第三方公司提供工具,使代理能够使用它们的 API。因此,工具需要额外的输入,这些输入不是由 LLM 生成的,例如 API 密钥或配置设置。

AI SDK 7 添加了一个完全类型化的工具上下文,可以通过模式为每个工具指定。上下文限制在工具内,以防止第三方工具访问不需要的上下文。

code
1
const
agent
=
new
ToolLoopAgent
(
{
2
model
,
3
tools
:
{
4
weather
:
tool
(
{
5
description
,
6
inputSchema
,
7
contextSchema
:
z
.
object
(
{
8
apiKey
:
z
.
string
(
)
,
9
}
)
,
10
execute
:
async
(
input
,
{
context
:
{
apiKey
}
}
)
=>
{
11
// ...
12
}
,
13
}
)
,
14
}
,
15
toolsContext
:
{
16
weather
:
{
apiKey
:
process
.
env
.
WEATHER_API_KEY
!
}
,
17
}
,
18
}
)
;

将 API 密钥限制在需要它的工具中

了解更多关于工具上下文的内容。

code
1
const
agent
=
new
ToolLoopAgent
(
{
2
// 设置运行时上下文
3
runtimeContext
:
{
4
var1
:
"something"
,
5
}
,
6
prepareStep
:
async
(
{
runtimeContext
,
steps
}
)
=>
{
7
// 使用运行时上下文
8
// 返回更新后的运行时上下文
9
}
,
10
}
)
;

跨步骤访问和更新类型化的变量

了解更多关于运行时上下文的内容。

链接到标题 提供者文件上传

许多代理工作流需要处理大输入,例如 PDF、图像、数据集或其他工件。将这些文件内联发送速度慢且浪费资源,尤其是在无状态推理中,它们会被反复发送。

AI SDK 7 增加了一个顶级的 uploadFile API,允许您一次上传文件,然后在后续模型调用中传递一个轻量级的引用。这避免了重复上传相同的字节,使推理更快,并在重复或多步骤运行期间节省带宽。

uploadFile 可以与任何提供文件上传端点的提供者一起使用。该函数返回一个可在提供者之间传输的提供者引用对象。

upload.ts

code
1
const
{
providerReference
}
=
await
uploadFile
(
{
2
api
:
openai
.
files
(
)
,
3
data
:
readFileSync
(
'./photo.png'
)
,
4
filename
:
'photo.png'
,
5
}
)
;
6
7
const
result
=
await
streamText
(
{
8
model
:
openai
.
responses
(
'gpt-5.5'
)
,
9
messages
:
[
10
{
11
role
:
'user'
,
12
content
:
[
13
{
type
:
'text'
,
text
:
'Describe what you see in this image.'
}
,
14
{
type
:
'file'
,
mediaType
:
'image'
,
data
:
providerReference
}
,
15
]
,
16
}
,
17
]
,
18
}
)
;

一次上传文件,将引用传递给后续模型调用

了解更多关于提供者文件上传的内容。

链接到标题 提供者技能上传

在每次请求中内联发送技能到提供者管理的容器环境,与内联发送文件一样存在相同的开销问题。

AI SDK 7 增加了一个顶级的 uploadSkill API,允许您一次上传技能,然后在后续推理调用中使用对该技能的引用。与 uploadFile 类似,该函数返回一个提供者引用对象。

code
1
const
{
providerReference
}
=
await
uploadSkill
(
{
2
api
:
anthropic
.
skills
(
)
,
3
files
:
[
4
{
5
path
:
'my-skill/SKILL.md'
,
6
content
:
readFileSync
(
'./SKILL.md'
)
,
7
}
,
8
]
,
9
displayTitle
:
'My Skill'
,
10
}
)
;
11
12
const
result
=
await
streamText
(
{
13
model
:
anthropic
(
'claude-sonnet-4-6'
)
,
14
tools
:
{
15
code_execution
:
anthropic
.
tools
.
codeExecution_20260120
(
)
,
16
}
,
17
prompt
:
'Use the my-skill skill to complete the task.'
,
18
providerOptions
:
{
19
anthropic
:
{
20
container
:
{
21
skills
:
[
{
type
:
'custom'
,
providerReference
}
]
,
22
}
,
23
}
satisfies AnthropicLanguageModelOptions
,
24
}
,
25
}
)
;

一次上传技能,在推理调用中引用它

了解更多关于提供者技能上传的内容。

链接到标题 MCP 应用

MCP 已成为连接代理到工具和资源的常用方式。但并非每个工具都应对模型可见,一些 MCP 服务器需要在其工具旁边暴露专用的 UI。

AI SDK 7 增加了对 MCP 应用的支持。MCP 服务器现在可以将模型可见的工具与仅应用的工具分开,保留应用元数据,并在沙箱化的 iframe 中渲染应用 UI。一个 JSON-RPC 桥接连接工具、资源和显示交互。

这使您可以构建更丰富的代理体验,模型可以使用其所需的工具,而用户可以看到特定于应用的界面用于审查、配置或交互。

与代理并行渲染 MCP App 的 UI

components/chat.tsx

code
1
import
{
experimental_MCPAppRenderer
as
MCPAppRenderer
}
from
'@ai-sdk/react'
;
2
import
{
isToolUIPart
}
from
'ai'
;
3
4
{
5
messages
.
map
(
message
=>
6
message
.
parts
.
map
(
part
=>
7
isToolUIPart
(
part
)
?
(
8
<
MCPAppRenderer
9
key
=
{
part
.
toolCallId
}
10
part
=
{
part
}
11
sandbox
=
{
{
url
:
'/mcp-app-sandbox'
,
className
:
'h-96 w-full'
}
}
12
loadResource
=
{
app
=>
fetch
(
`
/api/mcp-apps?uri=
${
app
.
resourceUri
}
`
)
}
13
handlers
=
{
{
allowedTools
:
[
'refreshDashboard'
]
}
}
14
/
>
15
)
:
null
,
16
)
,
17
)
;
18
}

与模型输出并行渲染 MCP App 的 UI

立即使用 AI SDK 开始构建你的第一个 MCP App。

链接到标题 TUI

在开发代理时,你需要能够快速测试它们,而无需编写完整的应用程序。AI SDK 7 添加了一个终端 UI(TUI)包,只需几行代码即可运行代理:

TUI 是交互式的,支持推理和工具,并将 Markdown 渲染为格式化文本。

在终端 UI 中运行的代理

dev.ts

code
1
import
{
runAgentTUI
}
from
'@ai-sdk/tui'
;
2
3
await
runAgentTUI
(
{
agent
}
)
;

在终端中运行代理

了解如何创建自己的终端代理。

链接到标题 运行代理

随着代理变得更加自主和运行时间更长,对批准、持久性、沙箱化和健壮性的需求也随之增加。

链接到标题 工具批准

AI SDK 7 支持代理级别的工具批准,可以是自动的,也可以涉及人工参与,支持以下批准类型:

  • 对特定工具的简单用户批准。
  • 对特定工具的工具批准函数,可以自动批准、自动拒绝或转发到用户批准。
  • 通用的“万能”工具批准函数。

工具批准在 ToolLoopAgent、generateText 和 streamText 上定义,因为特定工具的使用场景决定了对批准的需求。

code
1
const
agent
=
new
ToolLoopAgent
(
{
2
model
,
3
tools
:
{
weather
:
weatherTool
}
,
4
toolApproval
:
{
5
weather
:
'user-approval'
,
6
}
,
7
}
)
;

在工具执行之前需要用户批准

对于高风险的工作流程,AI SDK 7 引入了可选的 HMAC 签名工具批准,以防止伪造的批准。SDK 还通过在继续执行之前重新验证工具输入和策略来加强重放行为。

了解工具批准是如何工作的。

链接到标题 WorkflowAgent(持久性)

当代理的运行跨越多个步骤或等待人工批准时,运行过程中出现进程重启或部署意味着需要重新开始。AI SDK 7 引入了 @ai-sdk/workflow 和 WorkflowAgent,用于实现持久且可恢复的代理执行,能够抵御进程重启、部署、中断和延迟批准。

WorkflowAgent 支持基于工作流的流式传输、工具、批准、回调、prepareCall 和提供者模型序列化,跨越工作流步骤边界。它还支持类型化的运行时上下文,用于共享代理状态和稳定的遥测数据。

回调现在包括更丰富的执行数据,如步骤编号、先前结果、持续时间以及成功或失败信息。无效的工具调用将被保留,而不会执行无效的工具,并且工具到 ModelOutput 的转换可以保留原始输出,用于 UI 和回调。

了解如何使用 WorkflowAgent 构建代理。

链接到标题 超时

代理可能会因多种原因而停滞,而不仅仅是简单的请求:提供者可以打开一个流并停止发送数据块,工具可能会挂起,或者多步骤运行可能会超出其总预算。

AI SDK 7 在文本生成和代理 API 中新增了第一类超时配置,包括总超时、每步超时、每个数据块超时和每个工具的限制。超时中止使用 TimeoutError,并且中止原因会通过流和 UI 协议传播。

code
1
const
result
=
await
generateText
(
{
2
model
,
3
tools
:
{
weather
:
weatherTool
,
slowApi
:
slowApiTool
}
,
4
timeout
:
{
5
totalMs
:
60000
,
// 60 seconds total
6
stepMs
:
10000
,
// 10 seconds per step
7
chunkMs
:
2000
,
// abort if no chunk received for 2 seconds
8
toolMs
:
5000
,
// default for all tools
9
tools
:
{
10
weatherMs
:
3000
,
// 3 seconds for weather tool
11
slowApiMs
:
10000
,
// 10 seconds for slow API tool
12
}
,
13
}
,
14
prompt
:
'What is the weather in San Francisco?'
,
15
}
)
;

配置总超时、每步超时和每个工具的超时限制

了解有关超时的更多信息。

链接到标题 沙箱支持

运行 shell 命令、读写文件或执行生成代码的代理需要一致的执行环境,但底层沙箱在本地开发、CI 和生产环境中通常会有所不同。AI SDK 7 新增了第一类的 SandboxSession 抽象,用于在工具和代理中实现可移植的命令执行。工具可以独立于任何特定的沙箱进行开发,并且您可以使用任何沙箱感知的工具与任何沙箱提供商配合使用。

像 Vercel Sandbox 这样的沙箱环境非常适合这个目的。

链接到标题 集成任何代理框架

代理运行时正在超越单一的应用服务器。团队希望在编码环境、托管沙箱、本地会话和第三方框架中运行相同的代理逻辑。

链接到标题 HarnessAgent

AI SDK 7 引入了实验性的框架抽象和 HarnessAgent:一个 API,用于运行完全配置和已建立的代理框架,如 Claude Code、Codex 和 Pi。框架可以配置为在特定的沙箱中运行,自定义指令、技能和工具。通过一致的接口运行已建立的框架,可以独立配置每个框架,并且可以在不更改集成层的情况下替换其中一个框架。

在底层,该抽象包括一个 v1 适配器规范、桥接支持以及扩展的沙箱会话原语,用于创建和恢复会话。框架会话可以暂停并恢复,甚至单个回合也可以在中途被中断并恢复。

HarnessAgent 实现了 AI SDK 的 Agent 接口,因此其 generate 和 stream 返回值与现有的 AI SDK 集成完全兼容,并且 useChat() 和新的 TUI 可以在不进行任何额外连接的情况下使用。

code
1
const
agent
=
new
HarnessAgent
(
{
2
harness
:
claudeCode
,
3
sandbox
:
createVercelSandbox
(
{
4
runtime
:
'node24'
,
5
ports
:
[
4000
]
,
6
}
)
,
7
instructions
:
8
'You are a careful coding assistant. Prefer small changes and explain tradeoffs.'
,
9
skills
:
[
10
{
11
name
:
'review-github-pr'
,
12
description
:
'Review a GitHub pull request. Use when asked to review a pull request.'
,
13
content
:
14
'Use the `readGitHubPullRequest` tool to fetch the context about the relevant pull request the user has asked you to review. '
+
15
'If the pull request refers to an issue, fetch the relevant issue context as well using the `readGitHubIssue` tool.'
,
16
}
,
17
]
,
18
tools
:
{
readGitHubIssue
,
readGitHubPullRequest
}
,
19
}
)
;

将 Claude Code 配置为带有沙箱和自定义技能的 HarnessAgent

了解更多关于 AI SDK Harnesses 的信息。

链接到标题 Observe agents

理解你的代理在生产环境中的行为具有挑战性。AI SDK 7 将可观测性作为构建代理过程中的首要部分。

链接到标题 Telemetry

AI SDK 7 通过一个单一的、可扩展的集成系统重新设计了遥测功能。不再需要将生命周期回调连接到每个 generateText 或 streamText 调用,而是在应用程序启动时注册一次遥测:

instrumentation.ts

code
1
import
{
registerTelemetry
,
generateText
}
from
'ai'
;
2
import
{
OpenTelemetry
}
from
'@ai-sdk/otel'
;
3
4
registerTelemetry
(
new
OpenTelemetry
(
)
)
;
5
6
const
result
=
await
generateText
(
{
7
model
:
"google/gemini-3.5-flash"
,
8
prompt
:
'Write a short story about a cat.'
,
9
telemetry
:
{
10
functionId
:
`
story-agent
`
,
11
}
,
12
}
)
;

在应用程序启动时注册一次 OpenTelemetry

重新设计包括:

  • 为第三方提供商集成提供专用的遥测接口
  • 通过一次注册实现对所有 AI SDK 函数的全局覆盖
  • 使用最新的 GenAI 语义约定进行可选的 OpenTelemetry 集成
  • Node.js 跟踪通道支持

可观测性集成:Datadog、Langfuse、Braintrust、Raindrop、Sentry、Laminar、Langsmith。

现在,跟踪可以捕获 AI 操作的完整形状,包括根生成、每个模型调用、各个步骤、工具执行、嵌入、重新排序、使用情况、错误以及所选的运行时或工具上下文。

Langfuse 中一个具有多个步骤和工具调用的代理的可观测跟踪

你可以在 AI SDK 遥测文档中找到更多详细信息。

链接到标题 Node.js 跟踪通道

AI SDK 7 通过 node:diagnostics_channel 添加了对 Node.js 跟踪通道的支持。SDK 在 ai:telemetry 通道上发出结构化遥测事件,用于 generateText、streamText、模型调用、工具执行、嵌入和重新排序。

可观测性提供者可以通过其仪器包一次性订阅,并自动将 AI SDK 活动转换为跟踪,同时在流式响应和工具调用之间保留异步上下文。

code
1
import
{
tracingChannel
}
from
'node:diagnostics_channel'
;
2
import
{
3
AI_SDK_TELEMETRY_TRACING_CHANNEL
,
4
type
TelemetryTracingChannelMessage
,
5
}
from
'ai'
;
6
7
tracingChannel
(
AI_SDK_TELEMETRY_TRACING_CHANNEL
)
.
subscribe
(
{
8
start
(
message
)
{
9
const
{
type
,
event
}
=
message
as
TelemetryTracingChannelMessage
;
10
console
.
log
(
`
AI SDK
${
type
}
started
`
,
event
)
;
11
}
,
12
asyncEnd
(
message
)
{
13
const
{
type
}
=
message
as
TelemetryTracingChannelMessage
;
14
console
.
log
(
`
AI SDK
${
type
}
completed
`
)
;
15
}
,
16
}
)
;

通过 Node.js 跟踪通道订阅 AI SDK 的遥测事件

你可以在跟踪通道文档中了解更多内容。

链接到标题 性能统计

AI SDK 7 为模型输出、流式行为和工具执行添加了每一步的性能统计。你可以回答诸如以下问题:模型开始响应需要多长时间?令牌到达的速度如何?哪个工具花费的时间最多?

app.ts

code
1
import
{
streamText
}
from
'ai'
;
2
3
const
result
=
streamText
(
{
4
model
:
'openai/gpt-5'
,
5
prompt
:
'Write a short product announcement.'
,
6
}
)
;
7
8
for
await
(
const
chunk
of
result
.
textStream
)
{
9
process
.
stdout
.
write
(
chunk
)
;
10
}
11
12
const
{
performance
}
=
await
result
.
finalStep
;
13
14
console
.
log
(
{
15
responseTimeMs
:
performance
.
responseTimeMs
,
16
outputTokensPerSecond
:
performance
.
outputTokensPerSecond
,
17
timeToFirstOutputMs
:
performance
.
timeToFirstOutputMs
,
18
}
)
;

从流式响应中获取每一步的延迟和吞吐量

了解更多关于性能统计的信息。

链接到标题 生命周期事件

生产代理需要生命周期钩子,因为记录状态、计费和调试都依赖于准确知道运行、步骤和工具何时开始和结束。AI SDK 7 使回调在模型调用、代理、工具和其他函数之间保持一致,因此你可以观察每个事件何时开始,哪个模型运行,使用了多少令牌,以及它是如何结束的。

code
1
import
{
generateText
}
from
'ai'
;
2
3
const
result
=
await
generateText
(
{
4
model
:
'openai/gpt-5'
,
5
prompt
:
'What is the meaning of life'
,
6
runtimeContext
:
{
7
userId
:
'user_123'
,
8
feature
:
'launch-copy'
,
9
}
,
10
onStart
(
{
callId
,
modelId
,
runtimeContext
}
)
{
11
console
.
log
(
'Request started'
,
{
12
callId
,
13
modelId
,
14
userId
:
runtimeContext
.
userId
,
15
}
)
;
16
}
,
17
onEnd
(
{
callId
,
usage
,
finishReason
}
)
{
18
console
.
log
(
'Request finished'
,
{
19
callId
,
20
finishReason
,
21
totalTokens
:
usage
.
totalTokens
,
22
}
)
;
23
}
,
24
}
)
;

观察请求何时开始和结束

你可以在生命周期回调文档中找到更多详细信息。

链接到标题 与提供者无关的实时支持

实时模型 API 功能强大,但每个提供者都以不同的方式暴露会话、音频、工具和浏览器认证。

AI SDK 7 为直接浏览器 WebSocket 会话添加了实验性的与提供者无关的实时支持。SDK 支持服务器创建的临时令牌,OpenAI、Google 和 xAI 的提供者实现,以及返回 UIMessage[] 的 React 实时钩子。

实时会话支持音频转录和客户端驱动的工具调用,因此你可以构建语音代理、协作助手和低延迟交互界面,而无需将 UI 绑定到一个提供者的事件格式。

AI 网关还通过 gateway.experimental_realtime() 支持标准化的实时会话,包括 WebSocket 子协议认证、模型查询选择和验证的提供者选项。

components/realtime.tsx

code
1
const
realtime
=
experimental_useRealtime
(
{
2
model
:
gateway
.
experimental_realtime
(
'openai/gpt-realtime-2'
)
,
3
api
:
{
4
token
:
'/api/realtime/setup'
,
5
}
,
6
onToolCall
:
async
(
{
toolCall
}
)
=>
{
7
// handle client side or sent server requests
8
}
,
9
}
)
;

从浏览器连接到实时会话

了解更多关于实时的信息。

链接到标题 视频生成

AI 应用正逐步扩展到文本和图像之外。AI SDK 7 引入了实验性的 generateVideo 功能,并为 fal、Google AI Studio、Google Vertex 和 Replicate 提供了实现支持。

AI SDK 7 中的视频生成使用特定于视频的模型分辨率,支持通过默认提供者进行基于字符串的模型查找,并包括更安全的有界下载处理,支持可配置的大小限制和中止功能。

code
1
import
{
experimental_generateVideo
as
generateVideo
}
from
'ai'
;
2
3
const
{
videos
}
=
await
generateVideo
(
{
4
model
:
"google/veo-3.1-generate-001"
,
5
prompt
:
'A cat walking on a treadmill'
,
6
aspectRatio
:
'16:9'
,
7
}
)
;

通过一次 API 调用生成视频

了解更多关于生成视频的内容。

链接到标题 开始使用

使用一条命令安装 AI SDK 7。

  • 开始使用 AI SDK 7
  • 查看完整的更新日志
  • 迁移到 v7
  • 加入社区

链接到标题 贡献者

AI SDK 7 是 Vercel 核心团队(Gregor、Lars、Felix、Aayush、Josh、Nico)和我们杰出的贡献者社区共同努力的成果:

0xr3ngar , 31Carlton7 , A-Vamshi , Abdulwadood-zawity , abhicris , adithya-tako , AhmadYasser1 , ahmedrowaihi , allenzhou101 , anaclumos , arnaugomez , auscaster , AVtheking , B-Step62 , bb220 , ben-vargas , benyebai , bittere , blurrah , bolaabanjo , boylec , BrianHung , BrianP8701 , chenxin-yan , christian-bromann , Christian-Sidak , cipher416 , CloudFaye , codewarnab , codicecustode , codylittle , cristiandrei1234 , csidak , ctate , cyphercodes , defrex , dflynn15 , dinmukhamedm , dnukumamras , DongSeonYoo , dukex , edawerd , EdwardIrby , edwardwc , ellis-driscoll , embedder-dev , etairl , EurFelux , eyueldk , fahe1em1 , Falven , fran3cc , gdborton , genmin , geraint0923 , Ghitahouir , GidianB , grant0417 , gsdv , guillemwilly , hank9999 , harpreetarora , haydenbleasel , he-yufeng , heiwen , hkd987 , hntrl , http-samc , i5d6 , ismaelrumzan , Jaaneek , jaderiverstokes , jakobhoeg , Jaksenc , jarod , jaydeep-pipaliya , jeremyphilemon , jerilynzheng , jerome-benoit , jferrettiboke , jlsandri , JoanLaRosa , joaopedroassad , JohnnyHBon , josh-williams , jovanwongzixi , JulesGuesnon , Kage18 , kagura-agent , kairosci , kaizen403 , karthik-idikuda , kimchnn , kkawamu1 , kkdawkins , leog25 , leothorp , liaoliaojun , lihuimingxs , Mahendradeokar , MarcACard , marcusschiesser , markmcd , max-programming , MaxwellCalkin , mclenhard , MehediH , Melkeydev , michael-han-dev , michaelcummings12 , Mmartinrusso , monadoid , montyanderson , more-by-more , mrpaaradox , msullivan , muniter , muraliavarma , murataslan1 , mvanhorn , myprototypewhat , Nezz , nicoloboschi , nielskaspers , Nutlope , nwalters512 , ohansFavour , ousugo , pablof7z , Pash10g , patrikdevlin , paulelliotco , pavel-y-ivanov , PierreLeGuen , posva , Pranav-Wadhwa , privatenumber , quuu , R-Taneja , raphaeleidus , reynkonig , Ricardo-M-L , richardsolomou , robechun , rubdos , samjbobb , SamyPesse , seojcarlos , shaper , shrey150 , shubham-021 , shujanislam , ShyamSathish005 , sleitor , Subr1ata , syeddhasnainn , sylviezhang37 , szymonrybczak , t-mdo , techwraith , theQuert , thestonechat , timvucina-soniox , tomdale , tresorama , tsuzaki430 , turisanapo , Und3rf10w , undo76 , ushiromiya-lion , visyat , wong2 , Xiang-CH , xlianghang , zapagenrevdale , Zawwarsami16 , zirkelc , zxuhan .

您在 GitHub 上的反馈、错误报告和拉取请求对本次发布起到了至关重要的作用。我们很期待看到您将如何利用这些新功能进行构建!