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")); }