From b17bbf3bd71d756450b17eeb0239e4f421cacfba Mon Sep 17 00:00:00 2001 From: yesung Date: Fri, 24 Apr 2026 11:20:26 +0900 Subject: [PATCH] =?UTF-8?q?fix:=20LM=20Studio=20Jinja=20=ED=85=9C=ED=94=8C?= =?UTF-8?q?=EB=A6=BF=20=EC=98=A4=EB=A5=98=20=EB=B0=A9=EC=A7=80=EB=A5=BC=20?= =?UTF-8?q?=EC=9C=84=ED=95=B4=20System=20=EB=A9=94=EC=8B=9C=EC=A7=80?= =?UTF-8?q?=EB=A5=BC=20User=20=EB=A9=94=EC=8B=9C=EC=A7=80=EB=A1=9C=20?= =?UTF-8?q?=EB=B3=91=ED=95=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/extension.ts | 28 ++++++++++++++++++++-------- 1 file changed, 20 insertions(+), 8 deletions(-) diff --git a/src/extension.ts b/src/extension.ts index e47cca3..fd9a4d0 100644 --- a/src/extension.ts +++ b/src/extension.ts @@ -1475,10 +1475,16 @@ class SidebarChatProvider implements vscode.WebviewViewProvider { const internetCtx = internetEnabled ? `\n\n[CRITICAL DIRECTIVE: INTERNET ACCESS IS ENABLED]\nCurrent Time: ${new Date().toLocaleString('ko-KR')}\nYou have FULL internet access via the tool. You MUST NEVER say you cannot search, or that your capabilities are limited. To search, ALWAYS output:\nhttps://html.duckduckgo.com/html/?q=YOUR+SEARCH+TERM\nIf the user asks to search, or asks for recent info, DO NOT apologize. Just use the tag.` : ''; - reqMessages[0] = { - role: 'system', - content: `${this._systemPrompt}\n\n[BACKGROUND CONTEXT]\n${contextBlock}\n${workspaceCtx}\n${brainCtx}${internetCtx}` - }; + const systemContent = `${this._systemPrompt}\n\n[BACKGROUND CONTEXT]\n${contextBlock}\n${workspaceCtx}\n${brainCtx}${internetCtx}`; + reqMessages.shift(); // Remove system message to avoid Jinja template issues in some models + + const firstUserIdx = reqMessages.findIndex(m => m.role === 'user'); + if (firstUserIdx >= 0) { + reqMessages[firstUserIdx] = { + ...reqMessages[firstUserIdx], + content: `${systemContent}\n\n[USER QUERY]\n${reqMessages[firstUserIdx].content}` + }; + } } // Build image payload for vision models @@ -1657,10 +1663,16 @@ class SidebarChatProvider implements vscode.WebviewViewProvider { const internetCtx = internetEnabled ? `\n\n[CRITICAL DIRECTIVE: INTERNET ACCESS IS ENABLED]\nCurrent Time: ${new Date().toLocaleString('ko-KR')}\nYou have FULL internet access via the tool. You MUST NEVER say you cannot search, or that your capabilities are limited. To search, ALWAYS output:\nhttps://html.duckduckgo.com/html/?q=YOUR+SEARCH+TERM\nIf the user asks to search, or asks for recent info, DO NOT apologize. Just use the tag.` : ''; - reqMessages[0] = { - role: 'system', - content: `${SYSTEM_PROMPT}\n\n[BACKGROUND CONTEXT - DO NOT EXPLAIN THIS TO THE USER UNLESS ASKED]\n${contextBlock}\n${workspaceCtx}\n${brainCtx}${internetCtx}` - }; + const systemContent = `${SYSTEM_PROMPT}\n\n[BACKGROUND CONTEXT - DO NOT EXPLAIN THIS TO THE USER UNLESS ASKED]\n${contextBlock}\n${workspaceCtx}\n${brainCtx}${internetCtx}`; + reqMessages.shift(); // Remove system message to avoid Jinja template issues in some models + + const firstUserIdx = reqMessages.findIndex(m => m.role === 'user'); + if (firstUserIdx >= 0) { + reqMessages[firstUserIdx] = { + ...reqMessages[firstUserIdx], + content: `${systemContent}\n\n[USER QUERY]\n${reqMessages[firstUserIdx].content}` + }; + } } let isLMStudio = ollamaBase.includes('1234') || ollamaBase.includes('v1');