From 6ac67a7e4187a3d04e62842b8335e7ae4a8262a8 Mon Sep 17 00:00:00 2001 From: rainv123 <2148537152@qq.com> Date: Fri, 19 Dec 2025 09:55:18 +0800 Subject: [PATCH] =?UTF-8?q?fix:=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../agent/controller/AgentController.java | 39 +++++++------------ .../agent/dto/AgentChatSummaryDTO.java | 5 +-- .../service/AgentChatSummaryService.java | 10 ----- .../impl/AgentChatSummaryServiceImpl.java | 3 +- .../config/manage_api_client.py | 12 ------ 5 files changed, 17 insertions(+), 52 deletions(-) diff --git a/main/manager-api/src/main/java/xiaozhi/modules/agent/controller/AgentController.java b/main/manager-api/src/main/java/xiaozhi/modules/agent/controller/AgentController.java index ac1852a5..0052c7cc 100644 --- a/main/manager-api/src/main/java/xiaozhi/modules/agent/controller/AgentController.java +++ b/main/manager-api/src/main/java/xiaozhi/modules/agent/controller/AgentController.java @@ -36,7 +36,6 @@ import xiaozhi.common.utils.Result; import xiaozhi.common.utils.ResultUtils; import xiaozhi.modules.agent.dto.AgentChatHistoryDTO; import xiaozhi.modules.agent.dto.AgentChatSessionDTO; -import xiaozhi.modules.agent.dto.AgentChatSummaryDTO; import xiaozhi.modules.agent.dto.AgentCreateDTO; import xiaozhi.modules.agent.dto.AgentDTO; import xiaozhi.modules.agent.dto.AgentMemoryDTO; @@ -122,33 +121,24 @@ public class AgentController { return new Result<>(); } - @PostMapping("/chat-summary/{sessionId}") - @Operation(summary = "根据会话ID生成聊天记录总结") - public Result generateChatSummary(@PathVariable String sessionId) { - try { - AgentChatSummaryDTO summary = agentChatSummaryService.generateChatSummary(sessionId); - if (summary.isSuccess()) { - return new Result().ok(summary); - } else { - return new Result().error(summary.getErrorMessage()); - } - } catch (Exception e) { - return new Result().error("生成聊天记录总结失败: " + e.getMessage()); - } - } - @PostMapping("/chat-summary/{sessionId}/save") - @Operation(summary = "根据会话ID生成聊天记录总结并保存") + @Operation(summary = "根据会话ID生成聊天记录总结并保存(异步执行)") public Result generateAndSaveChatSummary(@PathVariable String sessionId) { try { - boolean success = agentChatSummaryService.generateAndSaveChatSummary(sessionId); - if (success) { - return new Result().ok(null); - } else { - return new Result().error("保存聊天记录总结失败"); - } + // 异步执行总结生成任务,立即返回成功响应 + new Thread(() -> { + try { + agentChatSummaryService.generateAndSaveChatSummary(sessionId); + System.out.println("异步执行会话 " + sessionId + " 的聊天记录总结完成"); + } catch (Exception e) { + System.err.println("异步执行会话 " + sessionId + " 的聊天记录总结失败: " + e.getMessage()); + } + }).start(); + + // 立即返回成功响应,不等待总结生成完成 + return new Result().ok(null); } catch (Exception e) { - return new Result().error("生成并保存聊天记录总结失败: " + e.getMessage()); + return new Result().error("启动异步总结生成任务失败: " + e.getMessage()); } } @@ -219,6 +209,7 @@ public class AgentController { List result = agentChatHistoryService.getChatHistoryBySessionId(id, sessionId); return new Result>().ok(result); } + @GetMapping("/{id}/chat-history/user") @Operation(summary = "获取智能体聊天记录(用户)") @RequiresPermissions("sys:role:normal") diff --git a/main/manager-api/src/main/java/xiaozhi/modules/agent/dto/AgentChatSummaryDTO.java b/main/manager-api/src/main/java/xiaozhi/modules/agent/dto/AgentChatSummaryDTO.java index e0bf12a7..f6fbe660 100644 --- a/main/manager-api/src/main/java/xiaozhi/modules/agent/dto/AgentChatSummaryDTO.java +++ b/main/manager-api/src/main/java/xiaozhi/modules/agent/dto/AgentChatSummaryDTO.java @@ -3,15 +3,12 @@ package xiaozhi.modules.agent.dto; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; -import java.io.Serializable; - /** * 智能体聊天记录总结DTO */ @Data @Schema(description = "智能体聊天记录总结对象") -public class AgentChatSummaryDTO implements Serializable { - private static final long serialVersionUID = 1L; +public class AgentChatSummaryDTO { @Schema(description = "会话ID") private String sessionId; diff --git a/main/manager-api/src/main/java/xiaozhi/modules/agent/service/AgentChatSummaryService.java b/main/manager-api/src/main/java/xiaozhi/modules/agent/service/AgentChatSummaryService.java index c442deb8..418ee9a0 100644 --- a/main/manager-api/src/main/java/xiaozhi/modules/agent/service/AgentChatSummaryService.java +++ b/main/manager-api/src/main/java/xiaozhi/modules/agent/service/AgentChatSummaryService.java @@ -1,20 +1,10 @@ package xiaozhi.modules.agent.service; -import xiaozhi.modules.agent.dto.AgentChatSummaryDTO; - /** * 智能体聊天记录总结服务接口 */ public interface AgentChatSummaryService { - /** - * 根据会话ID生成聊天记录总结 - * - * @param sessionId 会话ID - * @return 总结结果 - */ - AgentChatSummaryDTO generateChatSummary(String sessionId); - /** * 根据会话ID生成聊天记录总结并保存到智能体记忆 * diff --git a/main/manager-api/src/main/java/xiaozhi/modules/agent/service/impl/AgentChatSummaryServiceImpl.java b/main/manager-api/src/main/java/xiaozhi/modules/agent/service/impl/AgentChatSummaryServiceImpl.java index 80ad03d6..5e855be6 100644 --- a/main/manager-api/src/main/java/xiaozhi/modules/agent/service/impl/AgentChatSummaryServiceImpl.java +++ b/main/manager-api/src/main/java/xiaozhi/modules/agent/service/impl/AgentChatSummaryServiceImpl.java @@ -53,8 +53,7 @@ public class AgentChatSummaryServiceImpl implements AgentChatSummaryService { private static final Pattern WEATHER_PATTERN = Pattern.compile("天气|温度|湿度|降雨|气象", Pattern.CASE_INSENSITIVE); private static final Pattern DATE_PATTERN = Pattern.compile("日期|时间|星期|月份|年份", Pattern.CASE_INSENSITIVE); - @Override - public AgentChatSummaryDTO generateChatSummary(String sessionId) { + private AgentChatSummaryDTO generateChatSummary(String sessionId) { try { System.out.println("开始生成会话 " + sessionId + " 的聊天记录总结"); diff --git a/main/xiaozhi-server/config/manage_api_client.py b/main/xiaozhi-server/config/manage_api_client.py index ae703815..70d9dbf0 100644 --- a/main/xiaozhi-server/config/manage_api_client.py +++ b/main/xiaozhi-server/config/manage_api_client.py @@ -186,18 +186,6 @@ async def save_mem_local_short(mac_address: str, short_momery: str) -> Optional[ return None -async def generate_chat_summary(session_id: str) -> Optional[Dict]: - """生成聊天记录总结""" - try: - return await ManageApiClient._instance._execute_async_request( - "POST", - f"/agent/chat-summary/{session_id}", - ) - except Exception as e: - print(f"生成聊天记录总结失败: {e}") - return None - - async def generate_and_save_chat_summary(session_id: str) -> Optional[Dict]: """生成并保存聊天记录总结""" try: