From 709a792911f05e14bdb280205dad401fde5c1478 Mon Sep 17 00:00:00 2001 From: octo-patch Date: Mon, 1 Jun 2026 23:28:29 +0800 Subject: [PATCH] feat(provider): upgrade minimax preset to MiniMax-M3 Add MiniMax-M3 as the new default for the minimax provider preset and remove deprecated M2.5/M2.1/M2 entries. MiniMax-M2.7 and the highspeed variant are kept for users who pinned the previous generation. Updated places: - providerPresets.json: default models -> M3, modelContextWindows trimmed - modelContextWindows.ts: built-in window list mirrors the new set - provider-presets / providers-real / thinking tests updated to assert the new default - .env.example and third-party docs (zh + en) recommend M3 - scripts/repro-issue-247-real.ts default model bumped to M3 Co-Authored-By: Octopus --- .env.example | 8 ++++---- docs/en/guide/env-vars.md | 8 ++++---- docs/en/guide/third-party-models.md | 9 +++++---- docs/guide/env-vars.md | 8 ++++---- docs/guide/third-party-models.md | 9 +++++---- scripts/repro-issue-247-real.ts | 2 +- src/server/__tests__/provider-presets.test.ts | 4 ++-- src/server/__tests__/providers-real.test.ts | 16 +++++++++------- src/server/config/providerPresets.json | 16 ++++++---------- src/utils/__tests__/thinking.test.ts | 10 +++++----- src/utils/model/modelContextWindows.ts | 6 +----- 11 files changed, 46 insertions(+), 50 deletions(-) diff --git a/.env.example b/.env.example index ef71e2f5a..d20fd13c9 100644 --- a/.env.example +++ b/.env.example @@ -2,14 +2,14 @@ # MiniMax(直连 Anthropic 兼容接口) # 海外用户: ANTHROPIC_BASE_URL=https://api.minimax.io/anthropic # 国内用户: ANTHROPIC_BASE_URL=https://api.minimaxi.com/anthropic -# 可用模型: MiniMax-M2.7(默认)、MiniMax-M2.7-highspeed(更快) +# 可用模型: MiniMax-M3(默认)、MiniMax-M2.7、MiniMax-M2.7-highspeed(更快) # ============================================================ # ANTHROPIC_AUTH_TOKEN=your_minimax_api_key_here # ANTHROPIC_BASE_URL=https://api.minimax.io/anthropic -# ANTHROPIC_MODEL=MiniMax-M2.7 -# ANTHROPIC_DEFAULT_SONNET_MODEL=MiniMax-M2.7 +# ANTHROPIC_MODEL=MiniMax-M3 +# ANTHROPIC_DEFAULT_SONNET_MODEL=MiniMax-M3 # ANTHROPIC_DEFAULT_HAIKU_MODEL=MiniMax-M2.7-highspeed -# ANTHROPIC_DEFAULT_OPUS_MODEL=MiniMax-M2.7 +# ANTHROPIC_DEFAULT_OPUS_MODEL=MiniMax-M3 # API_TIMEOUT_MS=3000000 # ============================================================ diff --git a/docs/en/guide/env-vars.md b/docs/en/guide/env-vars.md index 8cabf05e6..eace61d4f 100644 --- a/docs/en/guide/env-vars.md +++ b/docs/en/guide/env-vars.md @@ -33,10 +33,10 @@ ANTHROPIC_AUTH_TOKEN=sk-xxx # Bearer token via Authorization header ANTHROPIC_BASE_URL=https://api.minimaxi.com/anthropic # Model configuration -ANTHROPIC_MODEL=MiniMax-M2.7-highspeed -ANTHROPIC_DEFAULT_SONNET_MODEL=MiniMax-M2.7-highspeed +ANTHROPIC_MODEL=MiniMax-M3 +ANTHROPIC_DEFAULT_SONNET_MODEL=MiniMax-M3 ANTHROPIC_DEFAULT_HAIKU_MODEL=MiniMax-M2.7-highspeed -ANTHROPIC_DEFAULT_OPUS_MODEL=MiniMax-M2.7-highspeed +ANTHROPIC_DEFAULT_OPUS_MODEL=MiniMax-M3 # Timeout in milliseconds API_TIMEOUT_MS=3000000 @@ -53,7 +53,7 @@ CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC=1 "env": { "ANTHROPIC_AUTH_TOKEN": "sk-xxx", "ANTHROPIC_BASE_URL": "https://api.minimaxi.com/anthropic", - "ANTHROPIC_MODEL": "MiniMax-M2.7-highspeed" + "ANTHROPIC_MODEL": "MiniMax-M3" } } ``` diff --git a/docs/en/guide/third-party-models.md b/docs/en/guide/third-party-models.md index 64b98e90f..4831155b5 100644 --- a/docs/en/guide/third-party-models.md +++ b/docs/en/guide/third-party-models.md @@ -176,17 +176,18 @@ MiniMax provides an Anthropic-compatible API endpoint and can be connected direc | Model | Description | |-------|-------------| -| `MiniMax-M2.7` | Default recommended, excellent overall performance | +| `MiniMax-M3` | Default recommended, latest generation with excellent overall performance | +| `MiniMax-M2.7` | Previous stable release | | `MiniMax-M2.7-highspeed` | Faster responses, suitable for latency-sensitive use cases | ```bash ANTHROPIC_AUTH_TOKEN=your_minimax_api_key_here # International users: api.minimax.io; China users may use api.minimaxi.com ANTHROPIC_BASE_URL=https://api.minimax.io/anthropic -ANTHROPIC_MODEL=MiniMax-M2.7 -ANTHROPIC_DEFAULT_SONNET_MODEL=MiniMax-M2.7 +ANTHROPIC_MODEL=MiniMax-M3 +ANTHROPIC_DEFAULT_SONNET_MODEL=MiniMax-M3 ANTHROPIC_DEFAULT_HAIKU_MODEL=MiniMax-M2.7-highspeed -ANTHROPIC_DEFAULT_OPUS_MODEL=MiniMax-M2.7 +ANTHROPIC_DEFAULT_OPUS_MODEL=MiniMax-M3 API_TIMEOUT_MS=3000000 DISABLE_TELEMETRY=1 CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC=1 diff --git a/docs/guide/env-vars.md b/docs/guide/env-vars.md index e4190ca75..42da60d40 100644 --- a/docs/guide/env-vars.md +++ b/docs/guide/env-vars.md @@ -33,10 +33,10 @@ ANTHROPIC_AUTH_TOKEN=sk-xxx # Bearer Token(Authorization 头) ANTHROPIC_BASE_URL=https://api.minimaxi.com/anthropic # 模型配置 -ANTHROPIC_MODEL=MiniMax-M2.7-highspeed -ANTHROPIC_DEFAULT_SONNET_MODEL=MiniMax-M2.7-highspeed +ANTHROPIC_MODEL=MiniMax-M3 +ANTHROPIC_DEFAULT_SONNET_MODEL=MiniMax-M3 ANTHROPIC_DEFAULT_HAIKU_MODEL=MiniMax-M2.7-highspeed -ANTHROPIC_DEFAULT_OPUS_MODEL=MiniMax-M2.7-highspeed +ANTHROPIC_DEFAULT_OPUS_MODEL=MiniMax-M3 # 超时(毫秒) API_TIMEOUT_MS=3000000 @@ -53,7 +53,7 @@ CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC=1 "env": { "ANTHROPIC_AUTH_TOKEN": "sk-xxx", "ANTHROPIC_BASE_URL": "https://api.minimaxi.com/anthropic", - "ANTHROPIC_MODEL": "MiniMax-M2.7-highspeed" + "ANTHROPIC_MODEL": "MiniMax-M3" } } ``` diff --git a/docs/guide/third-party-models.md b/docs/guide/third-party-models.md index 940764ffe..69135b25b 100644 --- a/docs/guide/third-party-models.md +++ b/docs/guide/third-party-models.md @@ -176,17 +176,18 @@ MiniMax 提供 Anthropic 兼容接口,支持直接接入,无需代理。可 | 模型 | 说明 | |------|------| -| `MiniMax-M2.7` | 默认推荐,综合性能优秀 | +| `MiniMax-M3` | 默认推荐,最新一代综合性能优秀 | +| `MiniMax-M2.7` | 上一代稳定版本 | | `MiniMax-M2.7-highspeed` | 响应更快,适合对速度有要求的场景 | ```bash ANTHROPIC_AUTH_TOKEN=your_minimax_api_key_here # 海外用户使用 api.minimax.io,国内用户可改为 api.minimaxi.com ANTHROPIC_BASE_URL=https://api.minimax.io/anthropic -ANTHROPIC_MODEL=MiniMax-M2.7 -ANTHROPIC_DEFAULT_SONNET_MODEL=MiniMax-M2.7 +ANTHROPIC_MODEL=MiniMax-M3 +ANTHROPIC_DEFAULT_SONNET_MODEL=MiniMax-M3 ANTHROPIC_DEFAULT_HAIKU_MODEL=MiniMax-M2.7-highspeed -ANTHROPIC_DEFAULT_OPUS_MODEL=MiniMax-M2.7 +ANTHROPIC_DEFAULT_OPUS_MODEL=MiniMax-M3 API_TIMEOUT_MS=3000000 DISABLE_TELEMETRY=1 CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC=1 diff --git a/scripts/repro-issue-247-real.ts b/scripts/repro-issue-247-real.ts index 425c5060e..ab82a4254 100644 --- a/scripts/repro-issue-247-real.ts +++ b/scripts/repro-issue-247-real.ts @@ -8,7 +8,7 @@ type ServerMsg = { [key: string]: unknown } -const modelId = process.env.REPRO_MODEL_ID || 'MiniMax-M2.7-highspeed' +const modelId = process.env.REPRO_MODEL_ID || 'MiniMax-M3' const port = Number(process.env.REPRO_SERVER_PORT || 19747) const baseUrl = `http://127.0.0.1:${port}` const wsUrl = `ws://127.0.0.1:${port}` diff --git a/src/server/__tests__/provider-presets.test.ts b/src/server/__tests__/provider-presets.test.ts index c916c8a2f..e3a8346e0 100644 --- a/src/server/__tests__/provider-presets.test.ts +++ b/src/server/__tests__/provider-presets.test.ts @@ -97,8 +97,8 @@ describe('provider presets API', () => { expect(kimi?.defaultModels.main).toBe('kimi-k2.6') expect(kimi?.defaultEnv?.CC_HAHA_SEND_DISABLED_THINKING).toBe('1') expect(minimax?.authStrategy).toBe('auth_token') - expect(minimax?.defaultModels.main).toBe('MiniMax-M2.7') - expect(minimax?.modelContextWindows?.['MiniMax-M2.7']).toBe(204800) + expect(minimax?.defaultModels.main).toBe('MiniMax-M3') + expect(minimax?.modelContextWindows?.['MiniMax-M3']).toBe(204800) expect(jiekouai?.baseUrl).toBe('https://api.jiekou.ai/anthropic') expect(jiekouai?.authStrategy).toBe('auth_token') expect(jiekouai?.defaultModels.main).toBe('claude-sonnet-4-6') diff --git a/src/server/__tests__/providers-real.test.ts b/src/server/__tests__/providers-real.test.ts index 9efa13a6d..825bf5922 100644 --- a/src/server/__tests__/providers-real.test.ts +++ b/src/server/__tests__/providers-real.test.ts @@ -11,10 +11,10 @@ import * as os from 'os' import { ProviderService } from '../services/providerService.js' const MODEL_MAPPING = { - main: 'MiniMax-M2.7-highspeed', - haiku: 'MiniMax-M2.7-highspeed', - sonnet: 'MiniMax-M2.7-highspeed', - opus: 'MiniMax-M2.7-highspeed', + main: 'MiniMax-M3', + haiku: 'MiniMax-M3', + sonnet: 'MiniMax-M3', + opus: 'MiniMax-M3', } describe('Real Provider Configs', () => { @@ -68,8 +68,9 @@ describe('Real Provider Configs', () => { expect((settings.env as Record).ANTHROPIC_BASE_URL).toBe('https://api.minimaxi.com/anthropic') expect((settings.env as Record).ANTHROPIC_AUTH_TOKEN).toBe('sk-fake-test-key-for-testing-only') expect((settings.env as Record).ANTHROPIC_API_KEY).toBe('') - expect((settings.env as Record).ANTHROPIC_MODEL).toBe('MiniMax-M2.7-highspeed') + expect((settings.env as Record).ANTHROPIC_MODEL).toBe('MiniMax-M3') expect(JSON.parse((settings.env as Record).CLAUDE_CODE_MODEL_CONTEXT_WINDOWS)).toMatchObject({ + 'MiniMax-M3': 204800, 'MiniMax-M2.7': 204800, 'MiniMax-M2.7-highspeed': 204800, }) @@ -107,6 +108,7 @@ describe('Real Provider Configs', () => { let settings = await readCcHahaSettings() expect((settings.env as Record).ANTHROPIC_BASE_URL).toBe('https://api.minimaxi.com/anthropic') expect(JSON.parse((settings.env as Record).CLAUDE_CODE_MODEL_CONTEXT_WINDOWS)).toMatchObject({ + 'MiniMax-M3': 204800, 'MiniMax-M2.7': 204800, 'MiniMax-M2.7-highspeed': 204800, }) @@ -204,14 +206,14 @@ describe('Real Provider Configs', () => { const result = await service.testProviderConfig({ baseUrl: 'https://api.minimaxi.com/anthropic', apiKey: 'sk-fake-test-key', - modelId: 'MiniMax-M2.7-highspeed', + modelId: 'MiniMax-M3', authStrategy: 'auth_token', }) // testProviderConfig 返回 { connectivity: { ... }, proxy?: { ... } } expect(result.connectivity).toBeDefined() expect(result.connectivity.latencyMs).toBeGreaterThanOrEqual(0) - expect(result.connectivity.modelUsed).toBe('MiniMax-M2.7-highspeed') + expect(result.connectivity.modelUsed).toBe('MiniMax-M3') console.log('🔌 MiniMax 连通性测试结果:') console.log(' success:', result.connectivity.success) diff --git a/src/server/config/providerPresets.json b/src/server/config/providerPresets.json index f7abbdffa..d717d9c52 100644 --- a/src/server/config/providerPresets.json +++ b/src/server/config/providerPresets.json @@ -98,23 +98,19 @@ "baseUrl": "https://api.minimaxi.com/anthropic", "apiFormat": "anthropic", "defaultModels": { - "main": "MiniMax-M2.7", - "haiku": "MiniMax-M2.7", - "sonnet": "MiniMax-M2.7", - "opus": "MiniMax-M2.7" + "main": "MiniMax-M3", + "haiku": "MiniMax-M3", + "sonnet": "MiniMax-M3", + "opus": "MiniMax-M3" }, "needsApiKey": true, "websiteUrl": "https://platform.minimaxi.com", "apiKeyUrl": "https://platform.minimaxi.com/subscribe/token-plan?code=1TG2Cseab2&source=link", "authStrategy": "auth_token", "modelContextWindows": { + "MiniMax-M3": 204800, "MiniMax-M2.7": 204800, - "MiniMax-M2.7-highspeed": 204800, - "MiniMax-M2.5": 204800, - "MiniMax-M2.5-highspeed": 204800, - "MiniMax-M2.1": 204800, - "MiniMax-M2.1-highspeed": 204800, - "MiniMax-M2": 204800 + "MiniMax-M2.7-highspeed": 204800 } }, { diff --git a/src/utils/__tests__/thinking.test.ts b/src/utils/__tests__/thinking.test.ts index c8d2679d3..a79f4c257 100644 --- a/src/utils/__tests__/thinking.test.ts +++ b/src/utils/__tests__/thinking.test.ts @@ -95,14 +95,14 @@ describe('provider-aware thinking support', () => { test('MiniMax preset models declare thinking support without effort passthrough', () => { process.env.ANTHROPIC_BASE_URL = 'https://api.minimaxi.com/anthropic' - process.env.ANTHROPIC_DEFAULT_SONNET_MODEL = 'MiniMax-M2.7' + process.env.ANTHROPIC_DEFAULT_SONNET_MODEL = 'MiniMax-M3' delete process.env.ANTHROPIC_DEFAULT_SONNET_MODEL_SUPPORTED_CAPABILITIES clearCapabilityCache() - expect(modelSupportsThinking('MiniMax-M2.7')).toBe(true) - expect(modelSupportsAdaptiveThinking('MiniMax-M2.7')).toBe(false) - expect(modelSupportsEffort('MiniMax-M2.7')).toBe(false) - expect(modelSupportsMaxEffort('MiniMax-M2.7')).toBe(false) + expect(modelSupportsThinking('MiniMax-M3')).toBe(true) + expect(modelSupportsAdaptiveThinking('MiniMax-M3')).toBe(false) + expect(modelSupportsEffort('MiniMax-M3')).toBe(false) + expect(modelSupportsMaxEffort('MiniMax-M3')).toBe(false) }) test('third-party base URLs do not default unknown model names to effort support', () => { diff --git a/src/utils/model/modelContextWindows.ts b/src/utils/model/modelContextWindows.ts index d7494e276..755234fbf 100644 --- a/src/utils/model/modelContextWindows.ts +++ b/src/utils/model/modelContextWindows.ts @@ -16,13 +16,9 @@ const DIRECT_MODEL_CONTEXT_WINDOWS: Record = { 'kimi-k2-turbo-preview': 262_144, 'kimi-k2-thinking': 262_144, 'kimi-k2-thinking-turbo': 262_144, + 'minimax-m3': 204_800, 'minimax-m2.7': 204_800, 'minimax-m2.7-highspeed': 204_800, - 'minimax-m2.5': 204_800, - 'minimax-m2.5-highspeed': 204_800, - 'minimax-m2.1': 204_800, - 'minimax-m2.1-highspeed': 204_800, - 'minimax-m2': 204_800, 'glm-5.1': 200_000, 'glm-5': 200_000, 'glm-5-turbo': 200_000,