fix: 修复会话历史丢失工具调用和 LSP 启动错误输出
- 保存完整的响应消息(包括工具调用和结果)到会话历史 - LSP 服务器未安装时静默忽略,不输出错误信息
This commit is contained in:
+7
-7
@@ -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
@@ -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;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user