fix: 修复会话历史丢失工具调用和 LSP 启动错误输出

- 保存完整的响应消息(包括工具调用和结果)到会话历史
- LSP 服务器未安装时静默忽略,不输出错误信息
This commit is contained in:
2025-12-11 00:56:35 +08:00
parent 09839b15a0
commit 924fd7b9c6
2 changed files with 9 additions and 9 deletions
+7 -7
View File
@@ -171,6 +171,7 @@ export class Agent {
const vercelTools = this.getVercelTools(); const vercelTools = this.getVercelTools();
let fullResponse = ''; let fullResponse = '';
let responseMessages: ModelMessage[] = [];
if (onStream) { if (onStream) {
// 流式模式 // 流式模式
@@ -208,8 +209,9 @@ export class Agent {
onStream(chunk); onStream(chunk);
} }
// 等待完成 // 等待完成并获取完整的响应消息(包括工具调用和结果)
await result.response; const response = await result.response;
responseMessages = response.messages as ModelMessage[];
} else { } else {
// 非流式模式 // 非流式模式
const result = await generateText({ const result = await generateText({
@@ -222,13 +224,11 @@ export class Agent {
}); });
fullResponse = result.text; fullResponse = result.text;
responseMessages = result.response.messages as ModelMessage[];
} }
// 保存助手响应到历史 // 将完整的响应消息添加到历史(包括工具调用和结果)
this.conversationHistory.push({ this.conversationHistory.push(...responseMessages);
role: 'assistant',
content: fullResponse,
});
// 持久化会话 // 持久化会话
await this.persistSession(); await this.persistSession();
+2 -2
View File
@@ -86,8 +86,8 @@ export class LSPClientManager {
const client = await this.startServer(languageId, config); const client = await this.startServer(languageId, config);
this.clients.set(languageId, client); this.clients.set(languageId, client);
return client; return client;
} catch (error) { } catch {
console.error(`启动语言服务器失败 (${languageId}):`, error); // 静默忽略启动失败(如语言服务器未安装)
return undefined; return undefined;
} }
} }