diff --git a/packages/agent-core/src/providers/provider-manager.ts b/packages/agent-core/src/providers/provider-manager.ts index 7c2bc14f1..50f51ea8f 100644 --- a/packages/agent-core/src/providers/provider-manager.ts +++ b/packages/agent-core/src/providers/provider-manager.ts @@ -113,7 +113,10 @@ export class ProviderManager { } resolveThinkingLevel(requestedThinking?: string): ThinkingEffort { - return resolveThinkingEffort(requestedThinking, this.state.config.thinking); + return resolveThinkingEffort( + requestedThinking ?? defaultThinkingToRuntime(this.state.config.defaultThinking), + this.state.config.thinking, + ); } resolveSelectedModel(requestedModel: string | undefined): string | undefined { @@ -137,3 +140,8 @@ function normalizeString(value: string | undefined): string | undefined { const trimmed = value.trim(); return trimmed.length > 0 ? trimmed : undefined; } + +function defaultThinkingToRuntime(defaultThinking: boolean | undefined): string | undefined { + if (defaultThinking === undefined) return undefined; + return defaultThinking ? 'on' : 'off'; +} diff --git a/packages/agent-core/src/rpc/core-impl.ts b/packages/agent-core/src/rpc/core-impl.ts index 0368cdf5b..189ae276d 100644 --- a/packages/agent-core/src/rpc/core-impl.ts +++ b/packages/agent-core/src/rpc/core-impl.ts @@ -143,9 +143,7 @@ export class KimiCore implements PromisableMethods { const config = this.reloadProviderManager(); const id = options.id ?? createSessionId(); const modelName = this.providerManager.resolveSelectedModel(options.model); - const thinkingLevel = this.providerManager.resolveThinkingLevel( - options.thinking ?? defaultThinkingToRuntime(config.defaultThinking), - ); + const thinkingLevel = this.providerManager.resolveThinkingLevel(options.thinking); const permissionMode = options.permission ?? config.defaultPermissionMode; const mcpConfig = await resolveSessionMcpConfig({ cwd: workDir, @@ -682,11 +680,6 @@ function requiredWorkDir(operation: string, value: string): string { return normalizeWorkDir(value); } -function defaultThinkingToRuntime(defaultThinking: boolean | undefined): string | undefined { - if (defaultThinking === undefined) return undefined; - return defaultThinking ? 'on' : 'off'; -} - function createSessionId(): string { return `session_${randomUUID()}`; } diff --git a/packages/agent-core/test/harness/runtime-provider.test.ts b/packages/agent-core/test/harness/runtime-provider.test.ts index 31264e800..4466c9c7d 100644 --- a/packages/agent-core/test/harness/runtime-provider.test.ts +++ b/packages/agent-core/test/harness/runtime-provider.test.ts @@ -585,16 +585,26 @@ describe('ProviderManager thinking level', () => { const manager = new ProviderManager({ config: { providers: {}, + defaultThinking: false, thinking: { effort: 'medium', mode: 'auto' }, }, }); expect(manager.resolveThinkingLevel('on')).toBe('medium'); expect(manager.resolveThinkingLevel('off')).toBe('off'); expect(manager.resolveThinkingLevel('low')).toBe('low'); - expect(manager.resolveThinkingLevel()).toBe('medium'); + expect(manager.resolveThinkingLevel()).toBe('off'); + + const managerOnByDefault = new ProviderManager({ + config: { + providers: {}, + defaultThinking: true, + thinking: { effort: 'medium', mode: 'auto' }, + }, + }); + expect(managerOnByDefault.resolveThinkingLevel()).toBe('medium'); const managerWithoutEffort = new ProviderManager({ - config: { providers: {}, thinking: { mode: 'auto' } }, + config: { providers: {}, defaultThinking: true, thinking: { mode: 'auto' } }, }); expect(managerWithoutEffort.resolveThinkingLevel('on')).toBe('high'); expect(managerWithoutEffort.resolveThinkingLevel()).toBe('high');