feat: support SDK#122
Open
FliPPeDround wants to merge 2 commits intoMiniMax-AI:mainfrom
Open
Conversation
Collaborator
|
很不错的重构,可以邮箱联系我下 给你提供账号 yuanhe@minimaxi.com |
raylanlin
reviewed
May 6, 2026
Collaborator
raylanlin
left a comment
There was a problem hiding this comment.
测试报告
测试环境:Bun 1.3.11 / WSL2
✅ 通过项
| 检查项 | 结果 |
|---|---|
| 单元测试(137 个) | ✅ 全部通过 |
| 构建(build) | ✅ CLI 133KB + SDK 77KB |
| 真实 API 冒烟 | ✅ quota / text / search 正常 |
| 架构设计 | ✅ Client 基类 + 8 模块结构清晰,流式覆盖到位 |
🔴 阻塞项(合并前需修复)
- ESLint 报错 —
src/sdk/client.ts:2:18导入了Region但未使用,CI lint 会挂 - TypeScript 报错 —
src/types/api.ts中SpeechRequest.voice_setting标记为 required,但 SDK 内部有默认值填充,类型应改为 optional。导致tsc --noEmit和test/sdk/speech.test.ts类型不匹配 - Merge Conflict — 当前和 main 有冲突,git 层面无法直接合并
💡 建议项
- 风格一致性 —
src/sdk/video/index.ts:58的download方法用了new Error(...),其他模块统一用SDKError,建议统一
📝 作者已知问题
PR 描述里提到的三个设计层面问题(参数校验共享、安装体积、视频模块未实测)属于后续迭代方向,本次不作阻塞。
结论
架构和测试覆盖都不错,修掉上述 1+2 两项 CI 问题 + 解 conflict 后即可合并。
raylanlin
reviewed
May 6, 2026
Collaborator
raylanlin
left a comment
There was a problem hiding this comment.
全模块真实 API 测试报告(补充)
补充测了 SDK 全部 8 个模块的真实 API 调用,结果如下:
| 模块 | 测试 | 结果 |
|---|---|---|
| quota | info() | ✅ 11 models |
| text | chat + chat(stream) | ✅ 均正常 |
| search | query() | ✅ 7 results |
| vision | describe() | ✅ 正常返回描述 |
| image | generate() | ✅ 正常返回图片 URL( |
| speech | synthesize() + voices() | ✅ 均正常,332 个音色 |
| video | generate(async) | ✅ 正常返回 task_id |
| music | generate(stream) / generate(sync) | ✅ 流式/同步均可,但音乐生成耗时 >2min(API 特性,非 bug) |
额外发现
- image.generate 缺少客户端校验 — SDK 未对 width/height 做范围校验(API 要求 512-2048),传入 256 直接被 API 拒绝。建议在 SDK 层加参数校验,提前报给用户。
综上,阻塞项仍是之前提到的 1+2(lint + tsc),建议作者一并修掉。
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
关联issue #83
1. PR简介
MiniMaxSDK主类,提供文本、图像、视频、语音、音乐、搜索、视觉、配额 8 大功能模块Client基类,封装配置加载和 HTTP 请求逻辑2. 可视化架构图
SDK 整体架构
graph TD subgraph "SDK 入口层" A["MiniMaxSDK<br/>src/sdk/index.ts"] end subgraph "核心基础设施" B["Client<br/>src/sdk/client.ts"] C["MiniMaxSDKOptions<br/>src/sdk/types.ts"] end subgraph "AI 能力模块" D["TextSDK<br/>文本对话"] E["SpeechSDK<br/>语音合成"] F["ImageSDK<br/>图像生成"] G["VideoSDK<br/>视频生成"] H["MusicSDK<br/>音乐生成"] I["SearchSDK<br/>网络搜索"] J["VisionSDK<br/>图像理解"] K["QuotaSDK<br/>配额查询"] end subgraph "底层服务" L["loadConfig<br/>配置加载"] M["request/requestJson<br/>HTTP 客户端"] N["parseSSE<br/>流式解析"] O["poll<br/>任务轮询"] end A -->|继承| B A -->|使用| C B -->|调用| L B -->|调用| M B -->|调用| N B -->|调用| O A -->|聚合| D A -->|聚合| E A -->|聚合| F A -->|聚合| G A -->|聚合| H A -->|聚合| I A -->|聚合| J A -->|聚合| K D -->|继承| B E -->|继承| B F -->|继承| B G -->|继承| B H -->|继承| B I -->|继承| B J -->|继承| B K -->|继承| B style A fill:#bbdefb,color:#0d47a1 style B fill:#c8e6c9,color:#1a5e20 style D fill:#fff3e0,color:#e65100 style E fill:#fff3e0,color:#e65100 style F fill:#fff3e0,color:#e65100 style G fill:#fff3e0,color:#e65100 style H fill:#fff3e0,color:#e65100 style I fill:#fff3e0,color:#e65100 style J fill:#fff3e0,color:#e65100 style K fill:#fff3e0,color:#e651003. 详细变更分析
3.1 核心基础设施
Client 基类 (
src/sdk/client.ts)MiniMaxSDKOptions,调用loadConfig加载配置request()方法处理流式请求requestJson<T>()方法处理 JSON 响应类型定义 (
src/sdk/types.ts)ModelPartial<T>- 可选化model字段的工具类型主 SDK 类 (
src/sdk/index.ts)MiniMaxSDK主入口类Client基类readonly属性3.2 构建配置
构建脚本 (
build.ts)src/main.tsdist/mmx.mjssrc/sdk/index.tsdist/sdk.mjs.d.tsbun-plugin-dts- 生成 TypeScript 类型声明文件包配置 (
package.json)filesdist/mmx.mjsdist/mmx.mjs,dist/sdk.mjs,dist/index.d.tsexports./sdk路径导出dependencies——bun-plugin-dts,es-toolkit3.3 文档更新
README.md & README_CN.md
3.4 测试覆盖
新增测试文件
test/sdk/text.test.tstest/sdk/speech.test.tstest/sdk/music.test.tstest/sdk/video.test.tstest/sdk/image.test.tstest/sdk/vision.test.tstest/sdk/search.test.tstest/sdk/quota.test.tscreateMockServer创建模拟服务器4. 影响与风险评估
✅ 兼容性
exports字段支持import { MiniMaxSDK } from 'mmx-cli/sdk'🧪 测试建议
📦 依赖项变更
bun-plugin-dts^0.4.0es-toolkit^1.46.1toMerged)5. 使用示例
快速开始
6. 总结
7. 问题&解决方向
参数校验
defineCommand内部,迁移成本较高,因此本次实现的参数校验功能并未与 CLI 复用。这会增加后续的维护负担。分包
问题:为遵循最小改动原则,仓库未进行 monorepo 改造。当前 SDK 通过
import { MiniMaxSDK } from 'mmx-cli/sdk'的方式引用,导致安装时附带了 CLI 相关功能,引入了非必要的依赖,增加了安装体积。当前构建产物大小如下:dist/mmx.mjsdist/sdk.mjsdist/index.d.ts方案(建议):monorepo 改造,抽离核心公共代码为
mmx,分别对外提供能力的代码采用mmx-sdk,mmx-cli,mmx-mcp,架构如下(改动较大)视频生成SDK