relationCodes);
-}
diff --git a/ruoyi-modules/ruoyi-chat/src/main/java/org/ruoyi/service/chat/handler/AgentChatHandler.java b/ruoyi-modules/ruoyi-chat/src/main/java/org/ruoyi/service/chat/handler/AgentChatHandler.java
new file mode 100644
index 00000000..98c0b3d1
--- /dev/null
+++ b/ruoyi-modules/ruoyi-chat/src/main/java/org/ruoyi/service/chat/handler/AgentChatHandler.java
@@ -0,0 +1,158 @@
+package org.ruoyi.service.chat.handler;
+
+import dev.langchain4j.agentic.AgenticServices;
+import dev.langchain4j.community.model.dashscope.QwenChatModel;
+import dev.langchain4j.service.tool.ToolProvider;
+import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.ruoyi.agent.McpAgent;
+import org.ruoyi.common.chat.domain.bo.chat.ChatMessageBo;
+import org.ruoyi.common.chat.domain.vo.chat.ChatModelVo;
+import org.ruoyi.common.chat.entity.chat.ChatContext;
+import org.ruoyi.common.chat.enums.RoleType;
+import org.ruoyi.common.chat.service.chatMessage.IChatMessageService;
+import org.ruoyi.common.sse.utils.SseMessageUtils;
+import org.ruoyi.mcp.service.core.ToolProviderFactory;
+import org.springframework.core.annotation.Order;
+import org.springframework.stereotype.Component;
+import org.springframework.web.servlet.mvc.method.annotation.SseEmitter;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * Agent 深度思考处理器
+ *
+ * 处理 enableThinking=true 的场景,使用 Agent 进行深度思考和工具调用
+ *
+ * @author ageerle@163.com
+ * @date 2025/12/13
+ */
+@Slf4j
+@Component
+@Order(3)
+@RequiredArgsConstructor
+public class AgentChatHandler implements ChatHandler {
+
+ private final ToolProviderFactory toolProviderFactory;
+ private final IChatMessageService chatMessageService;
+
+ @Override
+ public boolean supports(ChatContext context) {
+ Boolean enableThinking = context.getChatRequest().getEnableThinking();
+ return enableThinking != null && enableThinking;
+ }
+
+ @Override
+ public SseEmitter handle(ChatContext context) {
+ log.info("处理 Agent 深度思考,用户: {}", context.getUserId());
+
+ Long userId = context.getUserId();
+ String tokenValue = context.getTokenValue();
+ ChatModelVo chatModelVo = context.getChatModelVo();
+
+ try {
+ // 1. 保存用户消息
+ String content = extractUserContent(context);
+ saveChatMessage(context.getChatRequest(), userId, content,
+ RoleType.USER.getName(), chatModelVo);
+
+ // 2. 执行 Agent 任务
+ String result = doAgent(content, chatModelVo);
+
+ // 3. 发送结果并保存
+ SseMessageUtils.sendMessage(userId, result);
+ SseMessageUtils.completeConnection(userId, tokenValue);
+ saveChatMessage(context.getChatRequest(), userId, result,
+ RoleType.ASSISTANT.getName(), chatModelVo);
+
+ } catch (Exception e) {
+ log.error("Agent 执行失败: {}", e.getMessage(), e);
+ SseMessageUtils.sendMessage(userId, "Agent 执行失败:" + e.getMessage());
+ SseMessageUtils.completeConnection(userId, tokenValue);
+ }
+
+ return context.getEmitter();
+ }
+
+ /**
+ * 执行 Agent 任务
+ */
+ private String doAgent(String userMessage, ChatModelVo chatModelVo) {
+ log.info("执行 Agent 任务,消息: {}", userMessage);
+
+ try {
+ // 1. 加载 LLM 模型
+ QwenChatModel qwenChatModel = QwenChatModel.builder()
+ .apiKey(chatModelVo.getApiKey())
+ .modelName(chatModelVo.getModelName())
+ .build();
+
+ // 2. 获取内置工具
+ List