From c050f0e167ecc7e75825e35973654cf91ff8db62 Mon Sep 17 00:00:00 2001 From: Roe-xin Date: Sun, 28 Dec 2025 19:39:49 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=B7=BB=E5=8A=A0=E4=B8=8A=E4=B8=8B?= =?UTF-8?q?=E6=96=87=E6=8C=89=E9=92=AE=E5=92=8C=E8=87=AA=E5=AE=9A=E4=B9=89?= =?UTF-8?q?=E4=B8=8B=E6=8B=89=E6=A1=86=EF=BC=8C=E4=BC=98=E5=8C=96=E8=BE=93?= =?UTF-8?q?=E5=85=A5=E5=8C=BA=E5=9F=9F=E6=A0=B7=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/panels/ICHelperPanel.ts | 34 ++--- src/views/inputArea.ts | 278 ++++++++++++++++++++++++++++++++---- 2 files changed, 267 insertions(+), 45 deletions(-) diff --git a/src/panels/ICHelperPanel.ts b/src/panels/ICHelperPanel.ts index 6f80e9b..2a23347 100644 --- a/src/panels/ICHelperPanel.ts +++ b/src/panels/ICHelperPanel.ts @@ -58,25 +58,25 @@ export async function showICHelperPanel( const historyManager = ChatHistoryManager.getInstance(); const panelId = (panel as any).__uniqueId; - // 在处理消息前,确保面板有任务上下文 - // 如果没有,则创建新任务(仅在首次发送消息时) - if (!historyManager.getPanelTask(panelId)) { - const workspacePath = vscode.workspace.workspaceFolders?.[0]?.uri.fsPath; - if (workspacePath) { - try { - const taskMeta = await historyManager.createTask(workspacePath, "新对话"); - historyManager.setPanelTask(panelId, taskMeta.taskId, workspacePath); - } catch (error) { - console.error("创建任务失败:", error); - } - } - } - - // 切换到当前面板的任务上下文 - historyManager.switchToPanelTask(panelId); - switch (message.command) { case "sendMessage": + // 仅在用户发送消息时,确保面板有任务上下文 + // 如果没有,则创建新任务(仅在首次发送消息时) + if (!historyManager.getPanelTask(panelId)) { + const workspacePath = vscode.workspace.workspaceFolders?.[0]?.uri.fsPath; + if (workspacePath) { + try { + const taskMeta = await historyManager.createTask(workspacePath, "新对话"); + historyManager.setPanelTask(panelId, taskMeta.taskId, workspacePath); + } catch (error) { + console.error("创建任务失败:", error); + } + } + } + + // 切换到当前面板的任务上下文 + historyManager.switchToPanelTask(panelId); + handleUserMessage(panel, message.text, context.extensionPath); break; case "readFile": diff --git a/src/views/inputArea.ts b/src/views/inputArea.ts index 5bf2ee1..1665e5f 100644 --- a/src/views/inputArea.ts +++ b/src/views/inputArea.ts @@ -8,8 +8,18 @@ export function getInputAreaContent(): string {
- -
+ +
+ +
+ + 添加文件或代码片段作为上下文 +
+ +