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 <liyuan851277048@icloud.com>
This commit is contained in:
octo-patch 2026-06-01 23:28:29 +08:00
parent ebc78befbe
commit 709a792911
11 changed files with 46 additions and 50 deletions

View File

@ -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
# ============================================================

View File

@ -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"
}
}
```

View File

@ -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

View File

@ -33,10 +33,10 @@ ANTHROPIC_AUTH_TOKEN=sk-xxx # Bearer TokenAuthorization 头)
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"
}
}
```

View File

@ -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

View File

@ -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}`

View File

@ -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')

View File

@ -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<string, string>).ANTHROPIC_BASE_URL).toBe('https://api.minimaxi.com/anthropic')
expect((settings.env as Record<string, string>).ANTHROPIC_AUTH_TOKEN).toBe('sk-fake-test-key-for-testing-only')
expect((settings.env as Record<string, string>).ANTHROPIC_API_KEY).toBe('')
expect((settings.env as Record<string, string>).ANTHROPIC_MODEL).toBe('MiniMax-M2.7-highspeed')
expect((settings.env as Record<string, string>).ANTHROPIC_MODEL).toBe('MiniMax-M3')
expect(JSON.parse((settings.env as Record<string, string>).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<string, string>).ANTHROPIC_BASE_URL).toBe('https://api.minimaxi.com/anthropic')
expect(JSON.parse((settings.env as Record<string, string>).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)

View File

@ -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
}
},
{

View File

@ -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', () => {

View File

@ -16,13 +16,9 @@ const DIRECT_MODEL_CONTEXT_WINDOWS: Record<string, number> = {
'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,