# CodePilot AI与Agentic Systems **Repository Path**: bu-jianwu/agent ## Basic Information - **Project Name**: CodePilot AI与Agentic Systems - **Description**: 基于LangChain4j开发的代码编程助手及多智能体协作案例 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-04-22 - **Last Updated**: 2026-05-21 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # CodePilot AI & Agentic Systems 基于 Spring Boot 4.0.5 和 LangChain4j 1.8.0 构建的多智能体系统,集成了代码审查、多种工作流模式实例和AI辅助开发能力。 ## 技术栈 - **Java**: 21 - **Spring Boot**: 4.0.5 - **LangChain4j**: 1.8.0 - **AI 模型**: 阿里云通义千问 (qwen-max/qwen-turbo) - **Maven**: 依赖管理 ## 核心功能模块 ### 1. CodePilot AI - 智能代码助手 提供全方位的代码审查、生成、修复和管理能力。 **核心特性**: - 📝 **代码审查**: 分析代码质量,识别潜在问题 - 🔧 **代码修复**: 自动修复常见代码问题 - ✨ **代码生成**: 根据需求生成完整代码 - 📚 **RAG 知识库**: 基于编码规范的检索增强生成 - 🛠️ **MCP 工具集成**: 支持联网搜索等外部工具 - 🔄 **流式对话**: 支持 SSE 实时响应 - 🛡️ **输入防护**: Guardrail 安全校验机制 **可用工具**: - `listAllJavaFiles()` - 列出所有 Java 文件 - `readFileContent(fileName)` - 读取文件内容 - `analyzeCode(fileName)` - 分析代码问题 - `writeFileContent(fileName, content)` - 写入文件 - `createJavaFile(packageName, className, content)` - 创建 Java 类 - `deleteJavaFile(fileName)` - 删除文件 - `generateUnitTest(className)` - 生成单元测试 - `smartFixCode(fileName)` - 智能修复代码 - `gitCommit(message)` - Git 提交 - `addMavenDependency()` / `upgradeDependency()` / `removeMavenDependency()` - Maven 依赖管理 **API 接口**: ``` GET /api/ai/chat?memoryId={id}&message={msg} ``` 返回 SSE 流式响应 ### 2. Multi-Agent Workflow System - 多智能体工作流系统 #### 2.1 Sequential Workflow (顺序工作流) 多个 Agent 按顺序执行,前一个的输出作为后一个的输入。 **应用场景**: 小说创作流程 - CreativeWriter → AudienceEditor → StyleEditor **服务类**: `SequentialService` ```java public String generateFinalStory(String topic, String audience, String style) ``` #### 2.2 Parallel Workflow (并行工作流) 多个 Agent 并行执行,最后汇总结果。 **应用场景**: 晚间活动规划 - FoodExpert + MovieExpert → EveningPlannerAgent **服务类**: `ParallelService` ```java public List generatePlan(String mood) ``` #### 2.3 Conditional Workflow (条件工作流) 根据用户请求类型,动态路由到不同的专家 Agent。 **支持的类别**: - 医疗咨询 → MedicalExpert - 法律咨询 → LegalExpert - 技术咨询 → TechnicalExpert - 其他 → 通用处理 **服务类**: `ConditionalService` ```java public String askingQuestion(String memoryId, String request) public void clearMemory(String memoryId) ``` #### 2.4 Loop Workflow (循环工作流) 通过迭代优化,直到满足质量标准。 **应用场景**: 风格化写作 - StyledWriter → StyleScorer → StyleEditor (循环) → 最终输出 **服务类**: `LoopService` ```java public String generateFinalStory(String topic, String style) ``` #### 2.5 Supervisor Agent (监督者模式) 由 Supervisor Agent 协调多个子 Agent 完成任务。 **应用场景**: 银行服务系统 - SupervisorAgent 调度: AccountAgent, LoanAgent, InvestmentAgent **服务类**: `SupervisorService` ```java public String giveService(String request, String supervisorContext) ``` #### 2.6 Human-in-the-Loop (人机协同) 在关键决策点引入人工审核。 **应用场景**: 占星咨询服务 - AstrologyAgent 生成建议 → 人工确认 → 最终输出 **服务类**: `HumanInTheLoopService` ```java public String giveService(String request) ``` ## 项目结构 ``` agent/ ├── src/main/java/com/project/agent/ │ ├── CodePilot_AI/ # 智能代码助手模块 │ │ ├── ai/ │ │ │ ├── guardrail/ # 输入防护 │ │ │ ├── listener/ # 监听器配置 │ │ │ ├── mcp/ # MCP 工具配置 │ │ │ ├── model/ # 聊天模型配置 │ │ │ ├── rag/ # RAG 配置 │ │ │ ├── tools/ # 自定义工具 │ │ │ ├── AiCodeReviewService.java │ │ │ └── CodeReviewAgent.java │ │ ├── controller/ │ │ │ └── AiController.java │ │ ├── config/ │ │ │ └── CorsConfig.java │ │ ├── fount/ # 前端页面 │ │ └── test/ │ ├── Muti_Agent/ # 多智能体工作流模块 │ │ ├── conditional_workflow/ # 条件工作流 │ │ ├── human_in_the_loop/ # 人机协同 │ │ ├── loop_workflow/ # 循环工作流 │ │ ├── parallel_workflow/ # 并行工作流 │ │ ├── sequential_workflow/ # 顺序工作流 │ │ └── supervisor_agent/ # 监督者模式 │ └── AgentApplication.java # 启动类 ├── src/main/resources/ │ ├── docs/ │ │ └── coding-standards.md # 编码规范知识库 │ ├── application.yml # 主配置文件 │ ├── application-dev.yml # 开发环境配置 │ └── system-prompt.txt # 系统提示词 └── src/test/java/ # 测试类 ├── ConditionalServiceTest.java ├── LoopServiceTest.java ├── ParallelServiceTest.java ├── SequentialServiceTest.java └── SupervisorServiceTest.java ``` ## 快速开始 ### 前置要求 - JDK 21+ - Maven 3.6+ - 阿里云 DashScope API Key ### 配置说明 编辑 `src/main/resources/application-dev.yml`: ```yaml langchain4j: community: dashscope: chat-model: api-key: your-api-key-here model-name: qwen-turbo embedding-model: api-key: your-api-key-here model-name: text-embedding-v4 streaming-chat-model: api-key: your-api-key-here model-name: qwen-turbo ``` ### 运行项目 ```bash # 编译项目 mvn clean package # 运行应用 mvn spring-boot:run # 或直接运行 JAR java -jar target/agent-0.0.1-SNAPSHOT.jar ``` 应用将在 `http://localhost:8080/api` 启动 ### 测试示例 访问前端界面: ``` http://localhost:8080/api/ai/fount/codeReviewAI.html ``` 调用 API: ```bash curl "http://localhost:8080/api/ai/chat?memoryId=1&message=检查我的代码" ``` ## 使用示例 ### CodePilot AI 代码审查 ```java @Resource private AiCodeReviewService aiCodeReviewService; // 流式对话 Flux response = aiCodeReviewService.chatStream(1, "分析 BadCodeExample.java"); // 结构化报告 Report report = aiCodeReviewService.chatForReport("审查代码并给出建议"); ``` ### 顺序工作流 - 小说创作 ```java @Resource private SequentialService sequentialService; String story = sequentialService.generateFinalStory( "科幻冒险", // 主题 "青少年", // 目标读者 "幽默风趣" // 写作风格 ); ``` ### 并行工作流 - 晚间规划 ```java @Resource private ParallelService parallelService; List plans = parallelService.generatePlan("放松"); // 返回美食推荐 + 电影推荐的综合方案 ``` ### 条件工作流 - 专家问答 ```java @Resource private ConditionalService conditionalService; // 自动路由到医疗专家 String answer = conditionalService.askingQuestion("mem1", "头痛怎么办?"); // 自动路由到法律专家 String answer = conditionalService.askingQuestion("mem2", "劳动合同纠纷怎么处理?"); ``` ### 循环工作流 - 风格化写作 ```java @Resource private LoopService loopService; String story = loopService.generateFinalStory("春天的故事", "诗意浪漫"); // 自动迭代优化直到风格评分达标 ``` ## 核心设计模式 ### 1. AI Services 模式 使用 LangChain4j 的 `@AiService` 注解或手动构建方式创建 AI 服务: ```java AiServices.builder(AiCodeReviewService.class) .chatModel(chatModel) .streamingChatModel(streamingModel) .chatMemoryProvider(memoryId -> MessageWindowChatMemory.withMaxMessages(30)) .contentRetriever(contentRetriever) // RAG .tools(codeTool) // 工具调用 .toolProvider(mcpToolProvider) // MCP 工具 .build(); ``` ### 2. 记忆管理 每个会话独立维护上下文: ```java .chatMemoryProvider(memoryId -> MessageWindowChatMemory.withMaxMessages(30)) ``` ### 3. RAG 检索增强 基于 `coding-standards.md` 知识库,提供准确的编码规范建议。 ### 4. 工具调用 Agent 可以自主选择合适的工具完成任务,支持: - 文件系统操作 - Git 版本控制 - Maven 依赖管理 - 代码分析与修复 - 联网搜索 (MCP) ## 安全与最佳实践 ### 全局安全规则 1. ❌ 禁止删除用户未明确要求删除的文件 2. ❌ 禁止修改与当前任务无关的文件 3. ❌ 生成文档/搜索/问答任务不得修改任何源代码 4. ❌ 禁止删除 Application 启动类、配置文件 5. ✅ 修改/删除文件前必须先 Git 提交备份 6. ✅ 调用工具后必须继续生成最终回答 7. ✅ 危险操作前需明确告知用户 ### 编码规范 项目内置完整的 Java 编码规范知识库 (`coding-standards.md`),涵盖: - 命名规范 - 代码格式 - 常见问题解决方案 (NPE、资源泄漏、并发安全等) - Spring Boot 最佳实践 - 并发编程规范 - 数据库与性能优化 - 安全规范 - 测试规范 - 日志规范 - 异常处理规范 ## 测试 运行单元测试: ```bash mvn test ``` 各工作流模式的测试类位于 `src/test/java/com/project/agent/`: - `SequentialServiceTest.java` - `ParallelServiceTest.java` - `ConditionalServiceTest.java` - `LoopServiceTest.java` - `SupervisorServiceTest.java` ## 配置文件说明 ### application.yml ```yaml server: port: 8080 servlet: context-path: /api langchain4j: community: dashscope: chat-model: model-name: qwen-max temperature: 0.1 streaming-chat-model: model-name: qwen-max embedding-model: model-name: text-embedding-v4 ``` ### system-prompt.txt 定义了 CodePilot AI 的行为准则、工具选择策略和安全规则。 ## 扩展开发 ### 添加新的 Agent 1. 在对应工作流目录下创建 Agent 类 2. 使用 `@AiService` 或手动构建方式定义 AI 服务 3. 配置 ChatModel、Tools、Memory 等 4. 在 Service 层注入并使用 ### 添加工具 在 `CodePilot_AI/ai/tools/` 下创建工具类: ```java @Component public class CustomTool { @Tool("工具描述") public String customOperation(String param) { // 实现逻辑 } } ``` ### 自定义工作流 参考现有工作流模式,在 `Muti_Agent/` 下创建新的工作流模块。 ## 常见问题 ### Q: 如何切换 AI 模型? 修改 `application-dev.yml` 中的 `model-name` 配置项。 ### Q: 如何清除会话记忆? 调用 `conditionalService.clearMemory(memoryId)`。 ### Q: RAG 知识库如何更新? 编辑 `src/main/resources/docs/coding-standards.md`,重启应用即可。 ### Q: 如何禁用某些工具? 在 `CodeReviewAgent` 配置中移除对应的 `.tools()` 或 `.toolProvider()`。 ## 许可证 本项目仅供学习和研究使用。 ## 贡献 欢迎提交 Issue 和 Pull Request! --- **注意**: 请勿将包含 API Key 的配置文件提交到版本控制系统。建议使用环境变量或密钥管理服务。