From 5d834d924af06075040ad2c85583c0783f989f4f Mon Sep 17 00:00:00 2001 From: "ageerle@163.com" Date: Fri, 17 Jul 2026 14:47:18 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E7=BC=96=E7=A8=8B=E5=8A=A9=E6=89=8B?= =?UTF-8?q?=E6=8C=89=E8=81=8A=E5=A4=A9=E6=A8=A1=E5=9E=8B=E8=BF=87=E6=BB=A4?= =?UTF-8?q?=E5=B9=B6=E8=A1=A5=E5=85=85=20MCP=20=E5=B7=A5=E5=85=B7=20thinki?= =?UTF-8?q?ng=20=E4=BA=8B=E4=BB=B6=EF=BC=8CREADME=20=E8=A1=A5=E5=85=85=20c?= =?UTF-8?q?opilot/uniapp=20=E4=BB=93=E5=BA=93?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - CodingController.models 按 category=chat 过滤,编程对话只展示聊天模型 - 各 MCP 文件/命令工具在执行前推送 thinking 提示事件 - README/README_EN 项目源码表新增 ruoyi-copilot、ruoyi-uniapp 三端链接 Co-Authored-By: Claude --- README.md | 2 ++ README_EN.md | 2 ++ .../java/org/ruoyi/controller/coding/CodingController.java | 7 +++++-- .../src/main/java/org/ruoyi/mcp/tools/DeleteFileTool.java | 1 + .../src/main/java/org/ruoyi/mcp/tools/EditFileTool.java | 1 + .../main/java/org/ruoyi/mcp/tools/ExecuteCommandTool.java | 1 + .../main/java/org/ruoyi/mcp/tools/ListDirectoryTool.java | 1 + .../src/main/java/org/ruoyi/mcp/tools/ReadFileTool.java | 1 + .../src/main/java/org/ruoyi/mcp/tools/WriteFileTool.java | 1 + 9 files changed, 15 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 26f77a4f..1b981147 100644 --- a/README.md +++ b/README.md @@ -46,6 +46,8 @@ | 🎨 用户前端 | [ruoyi-web](https://github.com/ageerle/ruoyi-web) | [ruoyi-web](https://gitee.com/ageerle/ruoyi-web) | [ruoyi-web](https://gitcode.com/ageerle/ruoyi-web) | | 🛠️ 管理后台 | [ruoyi-admin](https://github.com/ageerle/ruoyi-admin) | [ruoyi-admin](https://gitee.com/ageerle/ruoyi-admin) | [ruoyi-admin](https://gitcode.com/ageerle/ruoyi-admin) | | 🎬 短剧平台 | [ruoyi-drama](https://github.com/ageerle/ruoyi-drama) | [ruoyi-drama](https://gitee.com/ageerle/ruoyi-drama) | [ruoyi-drama](https://gitcode.com/ageerle/ruoyi-drama) | +| 🤖 编程助手 | [ruoyi-copilot](https://github.com/ageerle/ruoyi-copilot) | [ruoyi-copilot](https://gitee.com/ageerle/ruoyi-copilot) | [ruoyi-copilot](https://gitcode.com/ageerle/ruoyi-copilot) | +| 📱 小程序端 | [ruoyi-uniapp](https://github.com/ageerle/ruoyi-uniapp) | [ruoyi-uniapp](https://gitee.com/ageerle/ruoyi-uniapp) | [ruoyi-uniapp](https://gitcode.com/ageerle/ruoyi-uniapp) | ### 合作项目 | 项目名称 | GitHub 仓库 | Gitee 仓库 diff --git a/README_EN.md b/README_EN.md index 7f193a9d..5c68afa3 100644 --- a/README_EN.md +++ b/README_EN.md @@ -48,6 +48,8 @@ | 🎨 User Frontend | [ruoyi-web](https://github.com/ageerle/ruoyi-web) | [ruoyi-web](https://gitee.com/ageerle/ruoyi-web) | [ruoyi-web](https://gitcode.com/ageerle/ruoyi-web) | | 🛠️ Admin Panel | [ruoyi-admin](https://github.com/ageerle/ruoyi-admin) | [ruoyi-admin](https://gitee.com/ageerle/ruoyi-admin) | [ruoyi-admin](https://gitcode.com/ageerle/ruoyi-admin) | | 🎬 Drama | [ruoyi-drama](https://github.com/ageerle/ruoyi-drama) | [ruoyi-drama](https://gitee.com/ageerle/ruoyi-drama) | | +| 🤖 Copilot | [ruoyi-copilot](https://github.com/ageerle/ruoyi-copilot) | [ruoyi-copilot](https://gitee.com/ageerle/ruoyi-copilot) | [ruoyi-copilot](https://gitcode.com/ageerle/ruoyi-copilot) | +| 📱 Mini-App | [ruoyi-uniapp](https://github.com/ageerle/ruoyi-uniapp) | [ruoyi-uniapp](https://gitee.com/ageerle/ruoyi-uniapp) | [ruoyi-uniapp](https://gitcode.com/ageerle/ruoyi-uniapp) | ### Partner Projects | Project Name | GitHub Repository | Gitee Repository | diff --git a/ruoyi-modules/ruoyi-chat/src/main/java/org/ruoyi/controller/coding/CodingController.java b/ruoyi-modules/ruoyi-chat/src/main/java/org/ruoyi/controller/coding/CodingController.java index 759cb592..dc7d1bdf 100644 --- a/ruoyi-modules/ruoyi-chat/src/main/java/org/ruoyi/controller/coding/CodingController.java +++ b/ruoyi-modules/ruoyi-chat/src/main/java/org/ruoyi/controller/coding/CodingController.java @@ -7,6 +7,7 @@ import org.ruoyi.common.core.domain.R; import org.ruoyi.common.chat.domain.bo.chat.ChatModelBo; import org.ruoyi.common.chat.service.chat.IChatModelService; import org.ruoyi.domain.bo.coding.CodingRequestBo; +import org.ruoyi.enums.ModelType; import org.ruoyi.service.coding.CodingWorkspaceService; import org.ruoyi.service.coding.ICodingService; import org.springframework.http.MediaType; @@ -62,8 +63,10 @@ public class CodingController { @GetMapping("/models") public R> models() { - List models = chatModelService.queryList(new ChatModelBo()).stream() - .filter(model -> "1".equals(model.getModelShow())) + // 编程对话只能用聊天模型,按 category=chat 过滤 + ChatModelBo bo = new ChatModelBo(); + bo.setCategory(ModelType.CHAT.getKey()); + List models = chatModelService.queryList(bo).stream() .map(model -> new ModelOption(model.getId(), model.getModelName(), model.getProviderCode())) .toList(); return R.ok(models); diff --git a/ruoyi-modules/ruoyi-chat/src/main/java/org/ruoyi/mcp/tools/DeleteFileTool.java b/ruoyi-modules/ruoyi-chat/src/main/java/org/ruoyi/mcp/tools/DeleteFileTool.java index 78b467a8..b7d16ff7 100644 --- a/ruoyi-modules/ruoyi-chat/src/main/java/org/ruoyi/mcp/tools/DeleteFileTool.java +++ b/ruoyi-modules/ruoyi-chat/src/main/java/org/ruoyi/mcp/tools/DeleteFileTool.java @@ -77,6 +77,7 @@ public class DeleteFileTool implements BuiltinToolProvider { } if (channel != null) { + channel.send(CodingSseEvent.thinking("正在删除:" + filePath)); channel.send(CodingSseEvent.of("delete-start", filePath, null, null, "running")); } diff --git a/ruoyi-modules/ruoyi-chat/src/main/java/org/ruoyi/mcp/tools/EditFileTool.java b/ruoyi-modules/ruoyi-chat/src/main/java/org/ruoyi/mcp/tools/EditFileTool.java index 7f74205c..d78bdf6d 100644 --- a/ruoyi-modules/ruoyi-chat/src/main/java/org/ruoyi/mcp/tools/EditFileTool.java +++ b/ruoyi-modules/ruoyi-chat/src/main/java/org/ruoyi/mcp/tools/EditFileTool.java @@ -87,6 +87,7 @@ public class EditFileTool implements BuiltinToolProvider { // 推送编辑开始事件 String relativePath = getRelativePath(path); if (channel != null) { + channel.send(CodingSseEvent.thinking("正在编辑文件:" + filePath)); channel.send(CodingSseEvent.of("edit-start", filePath, null, null, "running")); } diff --git a/ruoyi-modules/ruoyi-chat/src/main/java/org/ruoyi/mcp/tools/ExecuteCommandTool.java b/ruoyi-modules/ruoyi-chat/src/main/java/org/ruoyi/mcp/tools/ExecuteCommandTool.java index 7c7d3e19..2169ab49 100644 --- a/ruoyi-modules/ruoyi-chat/src/main/java/org/ruoyi/mcp/tools/ExecuteCommandTool.java +++ b/ruoyi-modules/ruoyi-chat/src/main/java/org/ruoyi/mcp/tools/ExecuteCommandTool.java @@ -113,6 +113,7 @@ public class ExecuteCommandTool implements BuiltinToolProvider { cmdList.set(0, resolvedCmd); if (channel != null) { + channel.send(CodingSseEvent.thinking("正在执行命令:" + command)); channel.send(CodingSseEvent.of("cmd", null, command, null, "running")); } diff --git a/ruoyi-modules/ruoyi-chat/src/main/java/org/ruoyi/mcp/tools/ListDirectoryTool.java b/ruoyi-modules/ruoyi-chat/src/main/java/org/ruoyi/mcp/tools/ListDirectoryTool.java index 3104029b..43b2216c 100644 --- a/ruoyi-modules/ruoyi-chat/src/main/java/org/ruoyi/mcp/tools/ListDirectoryTool.java +++ b/ruoyi-modules/ruoyi-chat/src/main/java/org/ruoyi/mcp/tools/ListDirectoryTool.java @@ -90,6 +90,7 @@ public class ListDirectoryTool implements BuiltinToolProvider { // 推送列目录开始事件 if (channel != null) { + channel.send(CodingSseEvent.thinking("正在扫描目录结构:" + getRelativePath(dirPath))); channel.send(CodingSseEvent.of("list-progress", null, null, "扫描 " + getRelativePath(dirPath), "running")); } diff --git a/ruoyi-modules/ruoyi-chat/src/main/java/org/ruoyi/mcp/tools/ReadFileTool.java b/ruoyi-modules/ruoyi-chat/src/main/java/org/ruoyi/mcp/tools/ReadFileTool.java index 369c330b..5fcae5b2 100644 --- a/ruoyi-modules/ruoyi-chat/src/main/java/org/ruoyi/mcp/tools/ReadFileTool.java +++ b/ruoyi-modules/ruoyi-chat/src/main/java/org/ruoyi/mcp/tools/ReadFileTool.java @@ -86,6 +86,7 @@ public class ReadFileTool implements BuiltinToolProvider { // 推送读取开始事件(前端展示为正在读取) String relativePath = getRelativePath(path); if (channel != null) { + channel.send(CodingSseEvent.thinking("正在读取文件:" + filePath)); channel.send(CodingSseEvent.of("edit-start", filePath, null, null, "running")); } diff --git a/ruoyi-modules/ruoyi-chat/src/main/java/org/ruoyi/mcp/tools/WriteFileTool.java b/ruoyi-modules/ruoyi-chat/src/main/java/org/ruoyi/mcp/tools/WriteFileTool.java index 615c4aa3..272bb9e4 100644 --- a/ruoyi-modules/ruoyi-chat/src/main/java/org/ruoyi/mcp/tools/WriteFileTool.java +++ b/ruoyi-modules/ruoyi-chat/src/main/java/org/ruoyi/mcp/tools/WriteFileTool.java @@ -75,6 +75,7 @@ public class WriteFileTool implements BuiltinToolProvider { } if (channel != null) { + channel.send(CodingSseEvent.thinking("正在新建/写入文件:" + filePath)); channel.send(CodingSseEvent.of("add-start", filePath, null, null, "running")); }