用途
该技能用于配置已存在的 Speakeasy SDK,而不是首次生成 SDK。适用于设置各语言的 gen.yaml 选项、SDK 钩子、异步模式或发布方式,以及配置应用代码中的运行时行为(重试、超时、服务器选择)。当用户提到 "configure SDK"、"gen.yaml options"、"SDK config"、"runtime override"、"per-call config",或询问 Zod、Pydantic、NuGet、PyPI、npm、Maven Central、Packagist、RubyGems 时使用。
若为新的 SDK 项目,应改用 start-new-sdk-project 技能。
前置条件
需要已有 SDK,且已创建 .speakeasy/workflow.yaml。若没有,可运行:
speakeasy quickstart --skip-interactive --output console \
-s openapi.yaml -t <language> -n "MySDK" -p "<package-name>"
输入要求:已有 SDK(必需)、目标语言(TypeScript、Python、Go、Java、C#、PHP 或 Ruby,必需)。输出为更新后的 gen.yaml、各语言配置以及启用时的自定义钩子文件。
主要能力
通用配置(所有语言)
适用于 gen.yaml 中所有 SDK 目标:版本、包名、方法签名(maxMethodParams、flatteningOrder)、错误处理(responseFormat、clientServerStatusCodesAsErrors)。
TypeScript
支持模块格式(esm、commonjs、dual)、Zod 版本(v3、v4、v4-mini)、自定义代码区域、React Query 钩子。支持 JSR 和 npm 发布;可用 moduleFormat: dual + standalone functions 实现 tree-shaking。
Python
支持 Pydantic 模型、异步模式(both 或 split)、包管理器(uv 或 poetry)、环境变量前缀。both 模式下同时提供同步与异步方法,split 模式提供 SDK() 与 AsyncSDK()。
Go
支持响应格式、接口生成(ifacemaker)、Mock(mockery)、K8s 集成。
Java
支持 Builder 模式、通过 build-extras.gradle 自定义构建、发布到 Maven Central。
C#
支持 async/await、SSE 流式(EventStream<T>)、取消令牌、DI 集成、NuGet 发布。
PHP
要求 PHP 8.2+,使用 Guzzle HTTP 客户端(可配置超时),支持 Packagist 发布,以及用于令牌刷新的安全回调。
Ruby
支持可选 Sorbet 类型(typingStrategy: sorbet)、Faraday HTTP 客户端、RubyGems 发布。
SDK Hooks(所有语言)
通过 enableCustomCodeRegions: true 启用自定义钩子,钩子文件在重新生成时会被保留。
运行时覆盖
可在 SDK 实例化时或每次调用时覆盖 gen.yaml 默认值:服务器选择(在 OpenAPI 规范中用 x-speakeasy-server-id 定义,运行时选择)、重试覆盖、超时覆盖。
分页
当规范中设置 x-speakeasy-pagination 时,SDK 自动生成分页辅助方法,支持自动遍历与手动分页。
使用方式
根据语言在 gen.yaml 中配置相应选项,修改后需提示用户重新生成 SDK:
speakeasy run --output console
gen.yaml 的更改仅在重新生成后生效。
适用场景与限制
已存在 .speakeasy/workflow.yaml 的 SDK 配置,涵盖各语言选项、钩子、异步模式、发布和运行时行为调整。不适用于首次 SDK 生成;不要编辑自定义代码区域之外的生成文件;不要修改 src/ 中非保留目录(hooks、extra)下的文件。
该技能还提供各语言故障排查建议(如 TypeScript 包过大用独立函数、Python 异步分页阻塞需启用 fixFlags.asyncPaginationSep2025、PHP 需 8.2+ 等),并关联 start-new-sdk-project、customize-sdk-hooks、manage-openapi-overlays 等相关技能。