# Agent Management > 智能体管理和编排平台 —— Skill 文件管理、标签分类、可视化工作流编排、DAG 调度执行、知识库与知识图谱一站式平台。 基于 Spring Boot + Vue 3 的全栈应用,前后端合并打包为单一 JAR 同端口部署。支持拖拽式工作流画布、多种节点类型、节点流式输出、运行历史回放,并集成知识库向量化检索、结构化数据源 SQL 控制台与 Neo4j 知识图谱。 ## ✨ 核心功能 - **智能体(Skill)管理** — 上传、在线编辑(Monaco Editor)、删除 Skill;元数据表单 + Markdown 正文双轨编辑;目录级文件树浏览与多语言高亮;`SKILL.md` 智能保存自动合并 frontmatter。 - **技能版本管理** — 版本列表查看、内容对比、备注编辑、一键回滚。 - **标签系统** — 树形标签分类(标签组 / 子标签 / 移动 / 删除);技能与工作流实体多标签关联;标签选择器与导入导出。 - **分类管理** — 技能分类与工作流分类两套独立树形体系,支持增删改查与拖拽移动。 - **可视化工作流编排** — 拖拽式画布编辑器,支持 9 种节点:用户输入、LLM、智能体、技能、条件分支、输出、智能动作(SmartAction)、HermesAgent、HermesSmartAction;节点 IO 变量智能推断与连线类型匹配。 - **DAG 调度引擎** — 拓扑排序执行、循环依赖检测、模板变量渲染、上下文透传与快照、节点结构化输出(三级降级解析)、流式输出(SSE)、节点失败策略(abort/skip)、变量覆盖检测。 - **运行历史与回放** — 每次运行持久化节点状态、输出、日志与上下文快照;前端节点级展开查看;思考过程折叠展示。 - **工作流版本管理** — 版本快照、版本对比、一键回滚。 - **知识库** — 文档上传与解析(Tika 支持 PDF/Word/Excel/PPT/HTML/TXT);三级层次化分块(L1/L2/L3);语义分块器自适应识别话题边界;Milvus 向量存储 + 本地 bge-m3 稠密向量 + 原生 BM25 稀疏检索;Leaf-only 向量化策略。 - **SQL Console(结构化数据源)** — 动态 JDBC 数据源管理(MySQL / PostgreSQL / 达梦 / SQLite);表结构与数据浏览;SQL 守卫;Jasypt 凭据加密入库。 - **知识图谱** — Neo4j 图源管理;Cypher 守卫;标签与关系查询。 - **AI 模型管理** — 多模型配置、连接测试、可用模型列表拉取、默认模型切换与优先级。 - **智能体模板** — 创建智能体时选择工作流编辑 / 自然语言 / 空白等模式;TemplatePicker 组件。 - **自动翻译** — Skill 描述英文→中文,SSE 实时推送进度;长文本按段落自动分段翻译。 - **外部 API** — 第三方系统通过 `X-API-Key` 鉴权调用工作流,支持工作流 ID 白名单。 - **`.agentignore` 过滤** — 仿 `.gitignore` 的工作目录过滤机制,输出节点与运行目录 zip 下载按规则过滤。 ## 🏗️ 技术栈 | 层级 | 技术 | |------|------| | 后端框架 | Java 17 + Spring Boot 3.3.6 + Spring AI 1.0.0 | | 数据访问 | Spring Data JPA + H2(嵌入式文件模式,存储运行日志) | | WebSocket | spring-boot-starter-websocket | | 文档解析 | Apache Tika 2.9.2(PDF/Word/Excel/PPT/HTML/TXT) | | 向量库 | Spring AI Milvus Starter(Milvus 2.5+) | | 知识图谱 | Neo4j Java Driver 5.27 | | 数据库驱动 | MySQL 8.4 / PostgreSQL 42.7 / 达梦 8.1 / SQLite 3.45 | | 安全 | Jasypt 3.0.5(凭据加密)+ Bean Validation | | 工具库 | Lombok、commons-io 2.18、commons-compress 1.26 | | 前端框架 | Vue 3.5 + Vue Router 4.6 + Pinia 3.0 | | 前端 UI | Naive UI 2.44 + @vicons/ionicons5 | | 画布编辑 | @vue-flow/core 1.48 + @vue-flow/background | | 代码编辑 | Monaco Editor 0.55 | | 图谱可视化 | Cytoscape 3.34 + cytoscape-cose-bilkent | | HTTP / 构建 | Axios + Vite 8 | | AI 服务 | Spring AI OpenAI 兼容接口(默认智谱 GLM) | | 本地嵌入 | Embedding Bridge(Python 子进程,BAAI/bge-m3) | | 智能体引擎 | Hermes Bridge(Python AIAgent 子进程,40+ 工具) | | 构建 | Maven + Vite,前端产物嵌入 Spring Boot,单一 JAR | ## 📁 项目结构 ``` ├── backend/ # Spring Boot 后端 │ ├── embedding-bridge/ # 本地 Embedding Bridge(Python,bge-m3 向量与分块) │ ├── src/main/java/com/agent/management/ │ │ ├── controller/ # REST API 控制器(15 个) │ │ ├── service/ # 业务逻辑层 │ │ ├── engine/ # 工作流 DAG 调度引擎 │ │ │ └── executor/ # 节点执行器(9 种节点类型) │ │ ├── model/ # 实体、DTO、VO │ │ ├── repository/ # JPA 数据访问层 │ │ ├── parser/ # SKILL.md 解析器 │ │ ├── external/ # 外部 API(/api/v1/**) │ │ ├── config/ # 配置类(CORS、SPA Fallback、Milvus 等) │ │ └── common/ # 通用工具(统一响应、异常处理) │ └── src/main/resources/ │ ├── application.yml # 后端配置(需从 .example 复制) │ ├── application.yml.example # 配置示例(已脱敏) │ └── static/ # 前端构建产物(Vite 直出) ├── frontend/ # Vue 3 前端 │ └── src/ │ ├── views/ # 页面(knowledge/skill/workflow/模型/标签/编排) │ ├── components/ # 组件(knowledge/skill/tag/workflow/layout) │ ├── composables/ # 组合式函数(工作流运行/版本/字段) │ ├── api/ # API 请求封装 │ ├── stores/ # Pinia 状态管理 │ ├── router/ # 路由配置 │ └── utils/ # 工具函数(request、SSE) ├── hermes-bridge/ # Hermes Agent 执行桥(Python 子进程) ├── docs/ # 设计文档 ├── run.sh / run.bat # 前后端合并构建部署脚本 └── pom.xml ``` ## 🚀 快速开始 ### 环境要求 - **Java** 17+ - **Maven** 3.6+ - **Node.js** 18+(仅构建前端时需要) - **Python** 3.10+(启用 Embedding Bridge / Hermes Bridge 时需要) ### 配置 复制示例配置文件并填入真实值: ```bash cp backend/src/main/resources/application.yml.example backend/src/main/resources/application.yml ``` 编辑 `application.yml`,按需填入 AI 服务 API Key、Milvus / Neo4j / 数据库连接信息(参见文件内注释)。敏感配置建议通过环境变量注入。 ### 构建 & 运行 **Windows:** ```bash run.bat ``` **Linux / macOS:** ```bash chmod +x run.sh ./run.sh ``` **仅构建(不启动):** ```bash run.bat build # Windows ./run.sh build # Linux/macOS ``` **单独运行已构建的 JAR:** ```bash java -jar backend/target/agent-management-1.0.0.jar ``` 启动后访问 `http://localhost:2438`。 ### 可选依赖(按功能启用) ```bash # Embedding Bridge(知识库向量化,首次运行自动下载 bge-m3 约 2GB) pip install -r backend/embedding-bridge/requirements.txt # Hermes Bridge(智能体节点工具执行能力) pip install -r hermes-bridge/requirements.txt ``` ## ⚙️ 配置项 | 配置项 | 环境变量 | 默认值 | 说明 | |--------|---------|--------|------| | 服务端口 | — | `2438` | Spring Boot 监听端口 | | Skill 存储目录 | `SKILL_BASE_PATH` | `./uploads/skills` | Skill 文件根目录 | | JSON 存储目录 | `JSON_STORE_DIR` | `./data/json` | 配置类数据存储 | | 工作流运行目录 | `WORKFLOW_RUN_DIR` | `./data/workflow-runs` | 每次运行的文件永久保留 | | LLM API Key | `OPENAI_API_KEY` | — | 智谱 AI Key,同时供 Hermes Bridge 回退使用 | | LLM 服务地址 | — | 智谱 OpenAI 兼容地址 | 可改为 DeepSeek / Moonshot 等 | | 知识库开关 | `KB_ENABLED` | `true` | false 时所有 kb 接口返回 503 | | Milvus 地址 | `MILVUS_HOST` / `MILVUS_PORT` | `127.0.0.1` / `19530` | gRPC 连接地址 | | Milvus 开关 | `MILVUS_ENABLED` | `true` | 文档向量化总开关 | | Embedding Bridge | `EMBEDDING_BRIDGE_ENABLED` | `true` | 本地 bge-m3 嵌入服务 | | Embedding Bridge 端口 | `EMBEDDING_BRIDGE_PORT` | `18732` | Python 子进程端口 | | 嵌入模型 | `EMBEDDING_MODEL` | `BAAI/bge-m3` | HuggingFace 模型 | | Hermes Bridge | `HERMES_ENABLED` | `true` | 关闭后 agent 节点退化为纯 LLM 对话 | | Hermes Bridge 端口 | `HERMES_BRIDGE_PORT` | `18731` | Python 子进程端口 | | Hermes LLM Key | `HERMES_BRIDGE_LLM_API_KEY` | — | 为空时回退到 `OPENAI_API_KEY` | | Neo4j 连接 | `NEO4J_URI` / `NEO4J_USER` / `NEO4J_PASSWORD` | 本地默认 | 实际凭据存 GraphSource 表(Jasypt 加密) | | Jasypt 密钥 | `JASYPT_KEY` | `dev-only-key-...` | ⚠️ 生产环境务必设置强随机密钥 | | 外部 API 开关 | `EXTERNAL_API_ENABLED` | `true` | 第三方调用工作流接口 | | 外部 API Key | `EXTERNAL_API_KEY` | — | X-API-Key 鉴权 | ## 📡 API 概览 | 模块 | 前缀 | 主要功能 | |------|------|---------| | Skill 管理 | `/api/skills` | 上传、编辑、删除、详情、文件树、版本管理、回滚 | | 标签 | `/api/tags` | 标签组与标签的增删改查 | | 技能分类 | `/api/categories` | 树形分类管理、移动 | | 工作流分类 | `/api/wf-categories` | 工作流独立树形分类 | | 智能体模板 | `/api/agent-templates` | 模板 CRUD | | AI 模型 | `/api/models` | 多模型配置、测试、拉取、默认切换、优先级 | | 工作流 | `/api/workflows` | 工作流编排、保存、执行(SSE) | | 运行历史 | `/api/run-history` | 工作流与单次运行记录查看 / 删除 | | 知识库文档 | `/api/kb/documents` | 上传、分块、向量化、移动、依赖检查 | | 知识库分类 | `/api/kb/categories` | 知识库树形分类 | | 知识库搜索 | `/api/kb/search` | 向量 + BM25 混合检索 | | 数据源 | `/api/kb/datasources` | 动态数据源管理、连接测试 | | SQL 查询 | `/api/kb/datasources/{id}` | 表结构、列、数据、查询、历史 | | 知识图谱 | `/api/kb/graphs` | Neo4j 图源管理、查询、标签 | | 翻译 SSE | `/api/translation` | 实时翻译进度推送 | | 外部 API | `/api/v1/**` | 第三方 X-API-Key 鉴权调用工作流 | ## 📦 部署 - **打包方式**:前端 Vite 构建产物直接输出到 `backend/src/main/resources/static/`,后端 Maven 打包为单一 JAR。 - **单端口部署**:Spring Boot 同时托管前端静态资源与后端 API,同端口(2438)访问。 - **SPA Fallback**:后端配置将非 API 路由回退到 `index.html`,支持前端路由刷新。 - **运行时数据**:`data/` 目录保存 JSON 配置、工作流运行文件与 H2 数据库,部署时注意持久化。 ## 📄 许可证 私有项目,未指定开源许可证。