Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 4 additions & 4 deletions .env.example
Original file line number Diff line number Diff line change
Expand Up @@ -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

# ============================================================
Expand Down
8 changes: 4 additions & 4 deletions docs/en/guide/env-vars.md
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand All @@ -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"
}
}
```
Expand Down
9 changes: 5 additions & 4 deletions docs/en/guide/third-party-models.md
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
8 changes: 4 additions & 4 deletions docs/guide/env-vars.md
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand All @@ -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"
}
}
```
Expand Down
9 changes: 5 additions & 4 deletions docs/guide/third-party-models.md
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
2 changes: 1 addition & 1 deletion scripts/repro-issue-247-real.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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}`
Expand Down
4 changes: 2 additions & 2 deletions src/server/__tests__/provider-presets.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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')
Expand Down
16 changes: 9 additions & 7 deletions src/server/__tests__/providers-real.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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', () => {
Expand Down Expand Up @@ -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,
})
Expand Down Expand Up @@ -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,
})
Expand Down Expand Up @@ -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)
Expand Down
16 changes: 6 additions & 10 deletions src/server/config/providerPresets.json
Original file line number Diff line number Diff line change
Expand Up @@ -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
}
},
{
Expand Down
10 changes: 5 additions & 5 deletions src/utils/__tests__/thinking.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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', () => {
Expand Down
6 changes: 1 addition & 5 deletions src/utils/model/modelContextWindows.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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,
Expand Down
Loading