DynamicToolCall(命名陷阱)
名称易与 MCP 动态发现混淆,实际语义是 tool call 解析失败的降级路径,AI SDK 6 计划重命名为 InvalidToolCall。
命名陷阱
DynamicToolCall 这个名字极易产生误解——字面意思让人联想到"运行时动态注册的工具调用",实际上它是 tool call 解析失败时的降级路径,与 MCP 动态工具发现没有任何关系。
真实语义(基于 tool-call.ts:L33-L52)
DynamicToolCall 在以下情况产生:
toolName在编译时无法解析到TOOLS泛型(工具名不在已知工具集中)input无法通过工具的 schema 校验- 工具不存在
本质上是 TypedToolCall<TOOLS> 联合类型的降级分支——解析成功用 TypedToolCall,失败降级为 DynamicToolCall。
与 providerExecuted 的区别
dynamic: true→ 解析失败降级路径providerExecuted: true→ Provider 服务端执行的工具(如code_execution)
两个字段独立,可同时为 true(server-side 工具调用解析失败的情况)。
演化状态
tool-call.ts:L44 有明确 TODO:AI SDK 6 计划重命名为 InvalidToolCall,语义将更清晰。
引用本术语的文章