From 5b225126f166c399f605a042f84dd2a71b68fabf Mon Sep 17 00:00:00 2001 From: XiaoFeng <117837368+Fzhiyu1@users.noreply.github.com> Date: Sat, 10 Jan 2026 21:15:39 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20Plan=20=E6=A8=A1=E5=BC=8F=E6=89=A7?= =?UTF-8?q?=E8=A1=8C=E6=97=B6=E4=BC=A0=E9=80=92=E6=9C=8D=E5=8A=A1=E7=AD=89?= =?UTF-8?q?=E7=BA=A7=E5=8F=82=E6=95=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - planCard.ts: 计划操作时传递 model 参数 - ICHelperPanel.ts: 传递服务等级到 setPendingPlanExecution - messageHandler.ts: 保存并传递服务等级,确保 Plan->Agent 切换时使用相同模型 --- src/panels/ICHelperPanel.ts | 3 ++- src/utils/messageHandler.ts | 27 ++++++++++++++++++--------- src/views/planCard.ts | 6 ++++-- 3 files changed, 24 insertions(+), 12 deletions(-) diff --git a/src/panels/ICHelperPanel.ts b/src/panels/ICHelperPanel.ts index fae17a5..92800d1 100644 --- a/src/panels/ICHelperPanel.ts +++ b/src/panels/ICHelperPanel.ts @@ -341,7 +341,8 @@ export async function showICHelperPanel( panel, message.planTitle || "计划", context.extensionPath, - taskId + taskId, + message.model // 传递服务等级 ); } else { console.warn( diff --git a/src/utils/messageHandler.ts b/src/utils/messageHandler.ts index 4f34c90..b916a8d 100644 --- a/src/utils/messageHandler.ts +++ b/src/utils/messageHandler.ts @@ -36,6 +36,7 @@ let pendingPlanExecution: { planTitle: string; extensionPath: string; taskId: string; // 保存 taskId 以便复用 + serviceTier?: ServiceTier; // 保存服务等级 } | null = null; /** @@ -45,10 +46,11 @@ export function setPendingPlanExecution( panel: vscode.WebviewPanel, planTitle: string, extensionPath: string, - taskId: string + taskId: string, + serviceTier?: ServiceTier ): void { - pendingPlanExecution = { panel, planTitle, extensionPath, taskId }; - console.log("[MessageHandler] 设置待执行计划:", planTitle, "taskId:", taskId); + pendingPlanExecution = { panel, planTitle, extensionPath, taskId, serviceTier }; + console.log("[MessageHandler] 设置待执行计划:", planTitle, "taskId:", taskId, "serviceTier:", serviceTier); } /** @@ -229,13 +231,16 @@ async function handleUserMessageWithBackend( planTitle, extensionPath: execPath, taskId: reuseTaskId, + serviceTier: savedServiceTier, } = pendingPlanExecution; pendingPlanExecution = null; console.log( "[MessageHandler] 自动执行计划:", planTitle, "复用 taskId:", - reuseTaskId + reuseTaskId, + "serviceTier:", + savedServiceTier ); // 延迟一小段时间确保当前对话完全结束 @@ -247,7 +252,8 @@ async function handleUserMessageWithBackend( `请按照刚才的计划执行:${planTitle}`, execPath, "agent", - reuseTaskId // 复用 Plan 模式的 taskId + reuseTaskId, // 复用 Plan 模式的 taskId + savedServiceTier // 传递保存的服务等级 ); } catch (err) { console.error("[MessageHandler] 自动执行计划失败:", err); @@ -400,9 +406,10 @@ export async function handlePlanAction( panel: vscode.WebviewPanel, action: string, planTitle: string, - extensionPath: string + extensionPath: string, + serviceTier?: ServiceTier ): Promise { - console.log("[handlePlanAction] action:", action, "planTitle:", planTitle); + console.log("[handlePlanAction] action:", action, "planTitle:", planTitle, "serviceTier:", serviceTier); switch (action) { case "confirm": @@ -416,7 +423,8 @@ export async function handlePlanAction( panel, `请按照刚才的计划执行:${planTitle}`, extensionPath, - "agent" + "agent", + serviceTier ); break; @@ -432,7 +440,8 @@ export async function handlePlanAction( panel, `请根据以下建议修改计划:${modification}`, extensionPath, - "plan" + "plan", + serviceTier ); } break; diff --git a/src/views/planCard.ts b/src/views/planCard.ts index 3aea4ff..c061e08 100644 --- a/src/views/planCard.ts +++ b/src/views/planCard.ts @@ -646,7 +646,8 @@ export function getPlanCardScript(): string { vscode.postMessage({ command: 'planAction', action: actionMap[option] || option, - planTitle: segment.planTitle + planTitle: segment.planTitle, + model: getCurrentModel() }); }); }); @@ -720,7 +721,8 @@ export function getPlanCardScript(): string { vscode.postMessage({ command: 'planAction', action: action, - planTitle: segment.planTitle + planTitle: segment.planTitle, + model: getCurrentModel() }); }); });