Skip to content

Commit 0599a3a

Browse files
committed
fix(auto-reply): honor disabled model thinking params
1 parent 45824cb commit 0599a3a

2 files changed

Lines changed: 45 additions & 0 deletions

File tree

src/auto-reply/reply/model-selection.test.ts

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -145,6 +145,43 @@ describe("createModelSelectionState catalog loading", () => {
145145
expect(loadModelCatalog).not.toHaveBeenCalled();
146146
});
147147

148+
it("keeps per-model disabled params.thinking ahead of global thinkingDefault", async () => {
149+
vi.mocked(loadModelCatalog).mockClear();
150+
const cfg = {
151+
agents: {
152+
defaults: {
153+
thinkingDefault: "low",
154+
models: {
155+
"deepseek/deepseek-v4-pro": {
156+
params: { thinking: false },
157+
},
158+
},
159+
},
160+
},
161+
models: {
162+
providers: {
163+
deepseek: {
164+
baseUrl: "https://api.deepseek.com/v1",
165+
models: [makeConfiguredModel({ id: "deepseek-v4-pro", name: "DeepSeek V4 Pro" })],
166+
},
167+
},
168+
},
169+
} as OpenClawConfig;
170+
171+
const state = await createModelSelectionState({
172+
cfg,
173+
agentCfg: cfg.agents?.defaults,
174+
defaultProvider: "deepseek",
175+
defaultModel: "deepseek-v4-pro",
176+
provider: "deepseek",
177+
model: "deepseek-v4-pro",
178+
hasModelDirective: false,
179+
});
180+
181+
await expect(state.resolveDefaultThinkingLevel()).resolves.toBe("off");
182+
expect(loadModelCatalog).not.toHaveBeenCalled();
183+
});
184+
148185
it("uses the implicit model default when no global thinking default is configured", async () => {
149186
vi.mocked(loadModelCatalog).mockClear();
150187
const cfg = {

src/auto-reply/reply/model-selection.ts

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -469,6 +469,14 @@ export async function createModelSelectionState(params: {
469469
const configuredModelThinkingDefault =
470470
configuredModels?.[canonicalKey]?.params?.thinking ??
471471
(legacyKey ? configuredModels?.[legacyKey]?.params?.thinking : undefined);
472+
if (
473+
configuredModelThinkingDefault === false ||
474+
configuredModelThinkingDefault === "disabled" ||
475+
configuredModelThinkingDefault === "none"
476+
) {
477+
defaultThinkingLevel = "off";
478+
return defaultThinkingLevel;
479+
}
472480
if (
473481
configuredModelThinkingDefault === "off" ||
474482
configuredModelThinkingDefault === "minimal" ||

0 commit comments

Comments
 (0)