# Agent Management 一个 AI 智能体管理与可视化编排平台。支持 Skill 文件管理、标签分类、可视化工作流编排和 DAG 调度执行。 ## 技术栈 | 层级 | 技术 | |------|------| | 后端 | Java 17 + Spring Boot 3.3 + Spring AI 1.0 + JPA | | 前端 | Vue 3 + Vue Flow + Naive UI + Pinia | | 数据库 | H2(嵌入式文件模式) | | AI | 智谱 AI (GLM) — 翻译 + 条件分支判断 | | 构建 | Maven + Vite,前后端合并打包为单一 JAR | ## 功能特性 - **智能体管理** — 上传、编辑、删除 Skill(基于文件系统中的 SKILL.md) - **自动翻译** — Skill 描述的英文→中文翻译,SSE 实时推送翻译进度 - **标签管理** — 树形标签分类,支持创建标签组、子标签、标签移动和删除 - **可视化工作流编排** — 拖拽式画布编辑器,支持 5 种节点类型(用户输入、LLM、智能体、条件分支、输出) - **DAG 调度引擎** — 拓扑排序执行、循环依赖检测、模板变量渲染、SSE 实时状态推送 - **统一部署** — 前端构建产物直接嵌入 Spring Boot,单一 JAR 同端口部署 ## 快速开始 ### 环境要求 - **Java** 17+ - **Maven** 3.6+ - **Node.js** 18+(仅构建前端时需要) ### 配置 复制示例配置文件并填入真实值: ```bash cp backend/src/main/resources/application.yml.example backend/src/main/resources/application.yml ``` 编辑 `application.yml`,填入你的 AI 服务 API Key(参见文件中注释)。 ### 构建 & 运行 **Windows:** ```bash run.bat ``` **Linux / macOS:** ```bash chmod +x run.sh ./run.sh ``` **仅构建(不启动):** ```bash run.bat build # Windows ./run.sh build # Linux/macOS ``` ### 单独运行 ```bash java -jar backend/target/agent-management-1.0.0.jar ``` 启动后访问 `http://localhost:2438`。 ## 项目结构 ``` ├── backend/ # Spring Boot 后端 │ ├── src/main/java/com/agent/management/ │ │ ├── controller/ # REST API 控制器 │ │ ├── service/ # 业务逻辑层 │ │ ├── engine/ # 工作流 DAG 调度引擎 │ │ │ └── executor/ # 节点执行器(LLM、Agent、Condition 等) │ │ ├── model/ # 实体、DTO、VO │ │ ├── repository/ # JPA 数据访问层 │ │ ├── parser/ # SKILL.md 解析器 │ │ ├── config/ # 配置类(CORS、SPA Fallback) │ │ └── common/ # 通用工具(统一响应、异常处理) │ └── src/main/resources/ │ ├── application.yml # 后端配置(需从 .example 复制) │ └── static/ # 前端构建产物(Vite 直出) ├── frontend/ # Vue 3 前端 │ ├── src/ │ │ ├── views/ # 页面组件 │ │ │ ├── SkillManagement.vue # 智能体管理页 │ │ │ ├── TagManagement.vue # 标签管理页 │ │ │ └── workflow/ # 工作流页面 │ │ │ ├── WorkflowList.vue # 工作流列表 │ │ │ └── WorkflowEditor.vue # 工作流画布编辑器 │ │ ├── components/ # 组件 │ │ │ ├── layout/ # 布局组件 │ │ │ ├── skill/ # 智能体组件 │ │ │ ├── tag/ # 标签组件 │ │ │ └── workflow/nodes/ # 工作流节点组件(6 种) │ │ ├── api/ # API 请求封装 │ │ ├── stores/ # Pinia 状态管理 │ │ ├── router/ # 路由配置 │ │ └── utils/ # 工具函数(request、SSE) │ └── vite.config.js ├── docs/ # 项目文档 ├── run.bat # Windows 构建运行脚本 └── run.sh # Linux/macOS 构建运行脚本 ``` ## API 接口 ### 智能体管理 | 方法 | 路径 | 说明 | |------|------|------| | `GET` | `/api/skills` | 获取所有 Skill 列表 | | `POST` | `/api/skills/upload` | 上传 Skill 压缩包 | | `POST` | `/api/skills/{folderName}/edit` | 编辑 Skill 名称和描述 | | `POST` | `/api/skills/{folderName}/delete` | 删除 Skill | ### 标签管理 | 方法 | 路径 | 说明 | |------|------|------| | `GET` | `/api/tags/groups` | 获取所有标签组 | | `POST` | `/api/tags/groups` | 创建标签组 | | `POST` | `/api/tags/groups/{id}/edit` | 编辑标签组 | | `POST` | `/api/tags/groups/{id}/delete` | 删除标签组 | | `GET` | `/api/tags/groups/{groupId}/tags` | 获取标签组的全部标签 | | `POST` | `/api/tags/groups/{groupId}/tags` | 创建子标签 | | `POST` | `/api/tags/{id}/edit` | 修改标签名称 | | `POST` | `/api/tags/{id}/delete` | 删除标签(递归) | | `POST` | `/api/tags/{id}/move` | 移动标签到新父节点 | ### 翻译服务 | 方法 | 路径 | 说明 | |------|------|------| | `GET` | `/api/translations/stream` | SSE 翻译推送流 | | `POST` | `/api/translations/translate` | 同步翻译(编辑时使用) | ### 工作流 | 方法 | 路径 | 说明 | |------|------|------| | `GET` | `/api/workflows` | 获取所有工作流 | | `GET` | `/api/workflows/{id}` | 获取工作流详情 | | `POST` | `/api/workflows` | 创建工作流 | | `POST` | `/api/workflows/{id}/save` | 保存工作流(含画布数据) | | `POST` | `/api/workflows/{id}/delete` | 删除工作流 | | `POST` | `/api/workflows/{id}/run` | 运行工作流(SSE 实时推送) | ## 配置说明 | 配置项 | 文件 | 说明 | |--------|------|------| | `server.port` | `application.yml` | 后端服务端口,默认 `2438` | | `skill.base-path` | `application.yml` | Skill 文件存放目录 | | `spring.ai.openai.base-url` | `application.yml` | AI 服务接口地址 | | `spring.ai.openai.api-key` | `application.yml` | AI 服务 API Key(⚠️ 需配置) | ## License 请查看 LICENSE 文件。