












@@ -144,6 +144,7 @@ describe("resolvePdfModelConfigForTool", () => {
144144145145expect(resolvePdfModelConfigForTool({ cfg, agentDir: TEST_AGENT_DIR })).toEqual({
146146primary: "minimax/MiniMax-M2.7",
147+fallbacks: ["minimax-portal/MiniMax-M2.7"],
147148});
148149});
149150@@ -174,7 +175,77 @@ describe("resolvePdfModelConfigForTool", () => {
174175175176expect(resolvePdfModelConfigForTool({ cfg, agentDir: TEST_AGENT_DIR })).toEqual({
176177primary: "openai/gpt-5.4-mini",
177-fallbacks: ["minimax/MiniMax-M2.7"],
178+fallbacks: ["minimax/MiniMax-M2.7", "minimax-portal/MiniMax-M2.7"],
179+});
180+});
181+182+it("preserves explicit MiniMax text models for PDF text extraction fallback", () => {
183+vi.stubEnv("MINIMAX_API_KEY", "minimax-test");
184+const cfg = {
185+ ...withDefaultModel("minimax/MiniMax-M2.7-highspeed"),
186+models: {
187+providers: {
188+minimax: {
189+baseUrl: "https://api.minimax.io/anthropic",
190+models: [
191+{
192+id: "MiniMax-M2.7-highspeed",
193+name: "MiniMax M2.7 Highspeed",
194+reasoning: false,
195+input: ["text"],
196+cost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 },
197+contextWindow: 128_000,
198+maxTokens: 8_192,
199+},
200+],
201+},
202+},
203+},
204+} as OpenClawConfig;
205+206+expect(resolvePdfModelConfigForTool({ cfg, agentDir: TEST_AGENT_DIR })).toEqual({
207+primary: "minimax/MiniMax-M2.7-highspeed",
208+fallbacks: ["minimax-portal/MiniMax-M2.7"],
209+});
210+});
211+212+it("preserves explicit MiniMax text models from normalized provider keys", () => {
213+vi.stubEnv("MINIMAX_API_KEY", "minimax-test");
214+const cfg = {
215+ ...withDefaultModel("openai/gpt-5.4"),
216+models: {
217+providers: {
218+Minimax: {
219+baseUrl: "https://api.minimax.io/anthropic",
220+models: [
221+{
222+id: "MiniMax-M2.7-highspeed",
223+name: "MiniMax M2.7 Highspeed",
224+reasoning: false,
225+input: ["text"],
226+cost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 },
227+contextWindow: 128_000,
228+maxTokens: 8_192,
229+},
230+],
231+},
232+},
233+},
234+} as OpenClawConfig;
235+236+expect(resolvePdfModelConfigForTool({ cfg, agentDir: TEST_AGENT_DIR })).toEqual({
237+primary: "minimax/MiniMax-M2.7-highspeed",
238+fallbacks: ["minimax-portal/MiniMax-M2.7"],
239+});
240+});
241+242+it("does not use MiniMax VLM primaries for PDF text extraction fallback", () => {
243+vi.stubEnv("MINIMAX_API_KEY", "minimax-test");
244+const cfg = withDefaultModel("minimax/MiniMax-VL-01");
245+246+expect(resolvePdfModelConfigForTool({ cfg, agentDir: TEST_AGENT_DIR })).toEqual({
247+primary: "minimax/MiniMax-M2.7",
248+fallbacks: ["minimax-portal/MiniMax-M2.7"],
178249});
179250});
180251@@ -195,6 +266,7 @@ describe("resolvePdfModelConfigForTool", () => {
195266196267expect(resolvePdfModelConfigForTool({ cfg, agentDir: TEST_AGENT_DIR })).toEqual({
197268primary: "minimax-portal/MiniMax-M2.7",
269+fallbacks: ["minimax/MiniMax-M2.7"],
198270});
199271});
200272此內容由慣性聚合(RSS閱讀器)自動聚合整理,僅供閱讀參考。 原文來自 — 版權歸原作者所有。