docs: tighten subscription guidance and update MiniMax M2.5 refs

This commit is contained in:
Peter Steinberger
2026-03-03 00:02:25 +00:00
parent 3e1ec5ad8b
commit 6b85ec3022
54 changed files with 272 additions and 245 deletions

View File

@@ -22,7 +22,7 @@ const CODEX_MODELS = [
];
const GOOGLE_PREFIXES = ["gemini-3"];
const ZAI_PREFIXES = ["glm-5", "glm-4.7", "glm-4.7-flash", "glm-4.7-flashx"];
const MINIMAX_PREFIXES = ["minimax-m2.1", "minimax-m2.5"];
const MINIMAX_PREFIXES = ["minimax-m2.5", "minimax-m2.5"];
const XAI_PREFIXES = ["grok-4"];
function matchesPrefix(id: string, prefixes: string[]): boolean {

View File

@@ -4,7 +4,7 @@ import { isTruthyEnvValue } from "../infra/env.js";
const MINIMAX_KEY = process.env.MINIMAX_API_KEY ?? "";
const MINIMAX_BASE_URL = process.env.MINIMAX_BASE_URL?.trim() || "https://api.minimax.io/anthropic";
const MINIMAX_MODEL = process.env.MINIMAX_MODEL?.trim() || "MiniMax-M2.1";
const MINIMAX_MODEL = process.env.MINIMAX_MODEL?.trim() || "MiniMax-M2.5";
const LIVE = isTruthyEnvValue(process.env.MINIMAX_LIVE_TEST) || isTruthyEnvValue(process.env.LIVE);
const describeLive = LIVE && MINIMAX_KEY ? describe : describe.skip;

View File

@@ -185,7 +185,7 @@ describe("normalizeModelCompat", () => {
describe("isModernModelRef", () => {
it("excludes opencode minimax variants from modern selection", () => {
expect(isModernModelRef({ provider: "opencode", id: "minimax-m2.1" })).toBe(false);
expect(isModernModelRef({ provider: "opencode", id: "minimax-m2.5" })).toBe(false);
expect(isModernModelRef({ provider: "opencode", id: "minimax-m2.5" })).toBe(false);
});

View File

@@ -147,8 +147,8 @@ describe("models-config", () => {
api: "anthropic-messages",
models: [
{
id: "MiniMax-M2.1",
name: "MiniMax M2.1",
id: "MiniMax-M2.5",
name: "MiniMax M2.5",
reasoning: false,
input: ["text"],
cost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 },

View File

@@ -58,7 +58,7 @@ type ModelsConfig = NonNullable<OpenClawConfig["models"]>;
export type ProviderConfig = NonNullable<ModelsConfig["providers"]>[string];
const MINIMAX_PORTAL_BASE_URL = "https://api.minimax.io/anthropic";
const MINIMAX_DEFAULT_MODEL_ID = "MiniMax-M2.1";
const MINIMAX_DEFAULT_MODEL_ID = "MiniMax-M2.5";
const MINIMAX_DEFAULT_VISION_MODEL_ID = "MiniMax-VL-01";
const MINIMAX_DEFAULT_CONTEXT_WINDOW = 200000;
const MINIMAX_DEFAULT_MAX_TOKENS = 8192;
@@ -585,16 +585,6 @@ function buildMinimaxProvider(): ProviderConfig {
api: "anthropic-messages",
authHeader: true,
models: [
buildMinimaxTextModel({
id: MINIMAX_DEFAULT_MODEL_ID,
name: "MiniMax M2.1",
reasoning: false,
}),
buildMinimaxTextModel({
id: "MiniMax-M2.1-lightning",
name: "MiniMax M2.1 Lightning",
reasoning: false,
}),
buildMinimaxModel({
id: MINIMAX_DEFAULT_VISION_MODEL_ID,
name: "MiniMax VL 01",
@@ -623,12 +613,12 @@ function buildMinimaxPortalProvider(): ProviderConfig {
models: [
buildMinimaxTextModel({
id: MINIMAX_DEFAULT_MODEL_ID,
name: "MiniMax M2.1",
reasoning: false,
name: "MiniMax M2.5",
reasoning: true,
}),
buildMinimaxTextModel({
id: "MiniMax-M2.5",
name: "MiniMax M2.5",
id: "MiniMax-M2.5-Lightning",
name: "MiniMax M2.5 Lightning",
reasoning: true,
}),
],

View File

@@ -98,7 +98,7 @@ describe("models-config", () => {
providerKey: "minimax",
expectedBaseUrl: "https://api.minimax.io/anthropic",
expectedApiKeyRef: "MINIMAX_API_KEY",
expectedModelIds: ["MiniMax-M2.1", "MiniMax-VL-01"],
expectedModelIds: ["MiniMax-M2.5", "MiniMax-VL-01"],
});
});
});
@@ -111,7 +111,7 @@ describe("models-config", () => {
providerKey: "synthetic",
expectedBaseUrl: "https://api.synthetic.new/anthropic",
expectedApiKeyRef: "SYNTHETIC_API_KEY",
expectedModelIds: ["hf:MiniMaxAI/MiniMax-M2.1"],
expectedModelIds: ["hf:MiniMaxAI/MiniMax-M2.5"],
});
});
});

View File

@@ -199,11 +199,11 @@ describe("openclaw-tools: subagents (sessions_spawn model + thinking)", () => {
await expectSpawnUsesConfiguredModel({
config: {
session: { mainKey: "main", scope: "per-sender" },
agents: { defaults: { subagents: { model: "minimax/MiniMax-M2.1" } } },
agents: { defaults: { subagents: { model: "minimax/MiniMax-M2.5" } } },
},
runId: "run-default-model",
callId: "call-default-model",
expectedModel: "minimax/MiniMax-M2.1",
expectedModel: "minimax/MiniMax-M2.5",
});
});
@@ -220,7 +220,7 @@ describe("openclaw-tools: subagents (sessions_spawn model + thinking)", () => {
config: {
session: { mainKey: "main", scope: "per-sender" },
agents: {
defaults: { subagents: { model: "minimax/MiniMax-M2.1" } },
defaults: { subagents: { model: "minimax/MiniMax-M2.5" } },
list: [{ id: "research", subagents: { model: "opencode/claude" } }],
},
},
@@ -235,7 +235,7 @@ describe("openclaw-tools: subagents (sessions_spawn model + thinking)", () => {
config: {
session: { mainKey: "main", scope: "per-sender" },
agents: {
defaults: { model: { primary: "minimax/MiniMax-M2.1" } },
defaults: { model: { primary: "minimax/MiniMax-M2.5" } },
list: [{ id: "research", model: { primary: "opencode/claude" } }],
},
},

View File

@@ -363,7 +363,7 @@ describe("applyExtraParamsToAgent", () => {
agent,
undefined,
"siliconflow",
"Pro/MiniMaxAI/MiniMax-M2.1",
"Pro/MiniMaxAI/MiniMax-M2.5",
undefined,
"off",
);
@@ -371,7 +371,7 @@ describe("applyExtraParamsToAgent", () => {
const model = {
api: "openai-completions",
provider: "siliconflow",
id: "Pro/MiniMaxAI/MiniMax-M2.1",
id: "Pro/MiniMaxAI/MiniMax-M2.5",
} as Model<"openai-completions">;
const context: Context = { messages: [] };
void agent.streamFn?.(model, context, {});

View File

@@ -1,7 +1,7 @@
import type { ModelDefinitionConfig } from "../config/types.js";
export const SYNTHETIC_BASE_URL = "https://api.synthetic.new/anthropic";
export const SYNTHETIC_DEFAULT_MODEL_ID = "hf:MiniMaxAI/MiniMax-M2.1";
export const SYNTHETIC_DEFAULT_MODEL_ID = "hf:MiniMaxAI/MiniMax-M2.5";
export const SYNTHETIC_DEFAULT_MODEL_REF = `synthetic/${SYNTHETIC_DEFAULT_MODEL_ID}`;
export const SYNTHETIC_DEFAULT_COST = {
input: 0,
@@ -13,7 +13,7 @@ export const SYNTHETIC_DEFAULT_COST = {
export const SYNTHETIC_MODEL_CATALOG = [
{
id: SYNTHETIC_DEFAULT_MODEL_ID,
name: "MiniMax M2.1",
name: "MiniMax M2.5",
reasoning: false,
input: ["text"],
contextWindow: 192000,

View File

@@ -113,7 +113,7 @@ function createMinimaxImageConfig(): OpenClawConfig {
return {
agents: {
defaults: {
model: { primary: "minimax/MiniMax-M2.1" },
model: { primary: "minimax/MiniMax-M2.5" },
imageModel: { primary: "minimax/MiniMax-VL-01" },
},
},
@@ -212,7 +212,7 @@ describe("image tool implicit imageModel config", () => {
vi.stubEnv("OPENAI_API_KEY", "openai-test");
vi.stubEnv("ANTHROPIC_API_KEY", "anthropic-test");
const cfg: OpenClawConfig = {
agents: { defaults: { model: { primary: "minimax/MiniMax-M2.1" } } },
agents: { defaults: { model: { primary: "minimax/MiniMax-M2.5" } } },
};
expect(resolveImageModelConfigForTool({ cfg, agentDir })).toEqual({
primary: "minimax/MiniMax-VL-01",
@@ -272,7 +272,7 @@ describe("image tool implicit imageModel config", () => {
const cfg: OpenClawConfig = {
agents: {
defaults: {
model: { primary: "minimax/MiniMax-M2.1" },
model: { primary: "minimax/MiniMax-M2.5" },
imageModel: { primary: "openai/gpt-5-mini" },
},
},
@@ -529,7 +529,7 @@ describe("image tool implicit imageModel config", () => {
vi.stubEnv("OPENAI_API_KEY", "openai-test");
const cfg: OpenClawConfig = {
agents: { defaults: { model: { primary: "minimax/MiniMax-M2.1" } } },
agents: { defaults: { model: { primary: "minimax/MiniMax-M2.5" } } },
};
const tool = requireImageTool(createImageTool({ config: cfg, agentDir, sandbox }));
@@ -605,7 +605,7 @@ describe("image tool implicit imageModel config", () => {
const cfg: OpenClawConfig = {
agents: {
defaults: {
model: { primary: "minimax/MiniMax-M2.1" },
model: { primary: "minimax/MiniMax-M2.5" },
imageModel: { primary: "minimax/MiniMax-VL-01" },
},
},
@@ -673,7 +673,7 @@ describe("image tool MiniMax VLM routing", () => {
const agentDir = await fs.mkdtemp(path.join(os.tmpdir(), "openclaw-minimax-vlm-"));
vi.stubEnv("MINIMAX_API_KEY", "minimax-test");
const cfg: OpenClawConfig = {
agents: { defaults: { model: { primary: "minimax/MiniMax-M2.1" } } },
agents: { defaults: { model: { primary: "minimax/MiniMax-M2.5" } } },
};
const tool = requireImageTool(createImageTool({ config: cfg, agentDir }));
return { fetch, tool };

View File

@@ -276,7 +276,7 @@ export const VENICE_MODEL_CATALOG = [
},
{
id: "minimax-m21",
name: "MiniMax M2.1 (via Venice)",
name: "MiniMax M2.5 (via Venice)",
reasoning: true,
input: ["text"],
contextWindow: 202752,