fix(models): align minimax and zai defaults (#2445)

Update the coding-agent default model picks for ZAI, Cerebras,
and MiniMax so new sessions prefer the current model lineup.

Add the missing MiniMax-M2.1-highspeed direct provider entries
and normalize MiniMax Anthropic-compatible context limits so the
catalog matches the provider's supported model set.
This commit is contained in:
简简简简
2026-03-20 17:00:57 +08:00
committed by GitHub
parent c2a42e3215
commit 8705fbee54
4 changed files with 89 additions and 8 deletions

View File

@@ -914,6 +914,46 @@ async function generateModels() {
});
}
const minimaxDirectProviders = ["minimax", "minimax-cn"] as const;
const minimaxAnthropicIds = new Set([
"MiniMax-M2",
"MiniMax-M2.1",
"MiniMax-M2.1-highspeed",
"MiniMax-M2.5",
"MiniMax-M2.5-highspeed",
"MiniMax-M2.7",
"MiniMax-M2.7-highspeed",
]);
for (const candidate of allModels) {
if (
(candidate.provider === "minimax" || candidate.provider === "minimax-cn") &&
minimaxAnthropicIds.has(candidate.id)
) {
candidate.contextWindow = 204800;
candidate.maxTokens = 131072;
}
}
for (const provider of minimaxDirectProviders) {
const baseModel = allModels.find((m) => m.provider === provider && m.id === "MiniMax-M2.1");
if (!baseModel) continue;
if (allModels.some((m) => m.provider === provider && m.id === "MiniMax-M2.1-highspeed")) continue;
allModels.push({
...baseModel,
id: "MiniMax-M2.1-highspeed",
name: "MiniMax-M2.1-highspeed",
cost: {
...baseModel.cost,
input: baseModel.cost.input * 2,
output: baseModel.cost.output * 2,
},
contextWindow: 204800,
maxTokens: 131072,
});
}
// OpenAI Codex (ChatGPT OAuth) models
// NOTE: These are not fetched from models.dev; we keep a small, explicit list to avoid aliases.
// Context window is based on observed server limits (400s above ~272k), not marketing numbers.

View File

@@ -4512,8 +4512,8 @@ export const MODELS = {
cacheRead: 0,
cacheWrite: 0,
},
contextWindow: 196608,
maxTokens: 128000,
contextWindow: 204800,
maxTokens: 131072,
} satisfies Model<"anthropic-messages">,
"MiniMax-M2.1": {
id: "MiniMax-M2.1",
@@ -4532,6 +4532,23 @@ export const MODELS = {
contextWindow: 204800,
maxTokens: 131072,
} satisfies Model<"anthropic-messages">,
"MiniMax-M2.1-highspeed": {
id: "MiniMax-M2.1-highspeed",
name: "MiniMax-M2.1-highspeed",
api: "anthropic-messages",
provider: "minimax",
baseUrl: "https://api.minimax.io/anthropic",
reasoning: true,
input: ["text"],
cost: {
input: 0.6,
output: 2.4,
cacheRead: 0,
cacheWrite: 0,
},
contextWindow: 204800,
maxTokens: 131072,
} satisfies Model<"anthropic-messages">,
"MiniMax-M2.5": {
id: "MiniMax-M2.5",
name: "MiniMax-M2.5",
@@ -4616,8 +4633,8 @@ export const MODELS = {
cacheRead: 0,
cacheWrite: 0,
},
contextWindow: 196608,
maxTokens: 128000,
contextWindow: 204800,
maxTokens: 131072,
} satisfies Model<"anthropic-messages">,
"MiniMax-M2.1": {
id: "MiniMax-M2.1",
@@ -4636,6 +4653,23 @@ export const MODELS = {
contextWindow: 204800,
maxTokens: 131072,
} satisfies Model<"anthropic-messages">,
"MiniMax-M2.1-highspeed": {
id: "MiniMax-M2.1-highspeed",
name: "MiniMax-M2.1-highspeed",
api: "anthropic-messages",
provider: "minimax-cn",
baseUrl: "https://api.minimaxi.com/anthropic",
reasoning: true,
input: ["text"],
cost: {
input: 0.6,
output: 2.4,
cacheRead: 0,
cacheWrite: 0,
},
contextWindow: 204800,
maxTokens: 131072,
} satisfies Model<"anthropic-messages">,
"MiniMax-M2.5": {
id: "MiniMax-M2.5",
name: "MiniMax-M2.5",

View File

@@ -26,11 +26,11 @@ export const defaultModelPerProvider: Record<KnownProvider, string> = {
"vercel-ai-gateway": "anthropic/claude-opus-4-6",
xai: "grok-4-fast-non-reasoning",
groq: "openai/gpt-oss-120b",
cerebras: "zai-glm-4.6",
zai: "glm-4.6",
cerebras: "zai-glm-4.7",
zai: "glm-5",
mistral: "devstral-medium-latest",
minimax: "MiniMax-M2.1",
"minimax-cn": "MiniMax-M2.1",
minimax: "MiniMax-M2.7",
"minimax-cn": "MiniMax-M2.7",
huggingface: "moonshotai/Kimi-K2.5",
opencode: "claude-opus-4-6",
"opencode-go": "kimi-k2.5",

View File

@@ -378,6 +378,13 @@ describe("default model selection", () => {
expect(defaultModelPerProvider["openai-codex"]).toBe("gpt-5.4");
});
test("zai, minimax, and cerebras defaults track current models", () => {
expect(defaultModelPerProvider.zai).toBe("glm-5");
expect(defaultModelPerProvider.minimax).toBe("MiniMax-M2.7");
expect(defaultModelPerProvider["minimax-cn"]).toBe("MiniMax-M2.7");
expect(defaultModelPerProvider.cerebras).toBe("zai-glm-4.7");
});
test("ai-gateway default is opus 4.6", () => {
expect(defaultModelPerProvider["vercel-ai-gateway"]).toBe("anthropic/claude-opus-4-6");
});