From 163ae9c08531d31348ee3f59a13c40177fd06c99 Mon Sep 17 00:00:00 2001 From: suyao Date: Mon, 1 Dec 2025 20:43:14 +0800 Subject: [PATCH] fix: properly handle thinking mode switching in qwenThinkingMiddleware MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Fix issue #11612 where Ollama couldn't disable Qwen3 thinking mode. The middleware now properly removes existing /think or /no_think suffixes before adding the correct suffix based on current reasoning_effort setting. Previously, messages with existing suffixes were skipped, causing thinking mode to persist even when user switched back to non-thinking mode. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude --- .../src/aiCore/middleware/qwenThinkingMiddleware.ts | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/renderer/src/aiCore/middleware/qwenThinkingMiddleware.ts b/src/renderer/src/aiCore/middleware/qwenThinkingMiddleware.ts index 931831a1c..6dd1a2bb5 100644 --- a/src/renderer/src/aiCore/middleware/qwenThinkingMiddleware.ts +++ b/src/renderer/src/aiCore/middleware/qwenThinkingMiddleware.ts @@ -23,8 +23,10 @@ export function qwenThinkingMiddleware(enableThinking: boolean): LanguageModelMi // Process content array if (Array.isArray(message.content)) { for (const part of message.content) { - if (part.type === 'text' && !part.text.endsWith('/think') && !part.text.endsWith('/no_think')) { - part.text += suffix + if (part.type === 'text') { + // Remove any existing thinking suffixes first, then add the correct one + const cleanText = part.text.replace(/\s*\/think\s*$/, '').replace(/\s*\/no_think\s*$/, '') + part.text = cleanText + suffix } } }