From 924fd7b9c68fbb982f7ad3f8dc0b4adde1b336d0 Mon Sep 17 00:00:00 2001 From: kurihada Date: Thu, 11 Dec 2025 00:56:35 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8D=E4=BC=9A=E8=AF=9D?= =?UTF-8?q?=E5=8E=86=E5=8F=B2=E4=B8=A2=E5=A4=B1=E5=B7=A5=E5=85=B7=E8=B0=83?= =?UTF-8?q?=E7=94=A8=E5=92=8C=20LSP=20=E5=90=AF=E5=8A=A8=E9=94=99=E8=AF=AF?= =?UTF-8?q?=E8=BE=93=E5=87=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 保存完整的响应消息(包括工具调用和结果)到会话历史 - LSP 服务器未安装时静默忽略,不输出错误信息 --- src/core/agent.ts | 14 +++++++------- src/lsp/client.ts | 4 ++-- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/src/core/agent.ts b/src/core/agent.ts index 9535217..c2b236e 100644 --- a/src/core/agent.ts +++ b/src/core/agent.ts @@ -171,6 +171,7 @@ export class Agent { const vercelTools = this.getVercelTools(); let fullResponse = ''; + let responseMessages: ModelMessage[] = []; if (onStream) { // 流式模式 @@ -208,8 +209,9 @@ export class Agent { onStream(chunk); } - // 等待完成 - await result.response; + // 等待完成并获取完整的响应消息(包括工具调用和结果) + const response = await result.response; + responseMessages = response.messages as ModelMessage[]; } else { // 非流式模式 const result = await generateText({ @@ -222,13 +224,11 @@ export class Agent { }); fullResponse = result.text; + responseMessages = result.response.messages as ModelMessage[]; } - // 保存助手响应到历史 - this.conversationHistory.push({ - role: 'assistant', - content: fullResponse, - }); + // 将完整的响应消息添加到历史(包括工具调用和结果) + this.conversationHistory.push(...responseMessages); // 持久化会话 await this.persistSession(); diff --git a/src/lsp/client.ts b/src/lsp/client.ts index e1d2fb9..2bfdbdc 100644 --- a/src/lsp/client.ts +++ b/src/lsp/client.ts @@ -86,8 +86,8 @@ export class LSPClientManager { const client = await this.startServer(languageId, config); this.clients.set(languageId, client); return client; - } catch (error) { - console.error(`启动语言服务器失败 (${languageId}):`, error); + } catch { + // 静默忽略启动失败(如语言服务器未安装) return undefined; } }