# nebula
**Repository Path**: forwardable/nebula
## Basic Information
- **Project Name**: nebula
- **Description**: No description available
- **Primary Language**: Java
- **License**: MPL-2.0
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 2
- **Forks**: 0
- **Created**: 2026-04-30
- **Last Updated**: 2026-10-14
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# Nebula
Nebula 是一个基于 Java 21、Spring Boot 4 和 Vue 3 的模块化全栈平台。项目从后台权限脚手架逐步演进为包含统一管理、AI 流程与 Agent、内容发布、个人空间、插件生态和多端前端的应用集合。
本文档只承担仓库总览和开发入口职责。具体部署参数、架构决策和专题设计分别维护在 [`deploy/`](./deploy/README.md) 与 [`docs/`](./docs/) 中。
## 项目状态
| 项目 | 当前状态 |
|---|---|
| 当前版本 | `1.0.3`,以根目录 [`pom.xml`](./pom.xml) 的 `revision` 为准 |
| 最新发布标签 | `release-v1.0.3`(2026-09-19) |
| Java 基线 | Java 21 / Spring Boot 4.0.6 / Spring Cloud 2025.1.1 |
| 默认统一入口 | `http://localhost:19000` |
| 核心部署范围 | Gateway、Manager、Blog;Space 与 Forge 作为扩展服务启用 |
前端应用拥有各自的 `package.json` 版本,不与后端 `revision` 强制保持一致,因此不再使用“后端 / 前端 / 博客同版本”的旧式版本声明。
## 核心能力
- **统一管理**:认证、用户、角色、菜单、权限和文件管理。
- **AI 工作台**:模型档案、Prompt、Tool、Skill、MCP、知识库、对话、流程编排、Agent 运行和跨实例迭代。
- **内容与旅行**:文章、分类、标签、系列目录、旅行目的地与行程管理,并提供独立内容站。
- **个人空间**:书签、文件夹、标签以及书签导入、导出任务。
- **插件生态**:插件、分类、版本、审核、评论、收藏、安装和下载记录。
- **AI 基础组件**:OpenAI 兼容模型接入、Flow、Harness、RAG、Milvus 向量检索和长期记忆。
- **多形态部署**:支持业务服务独立运行,也支持 `manager / blog / space / forge` 单 JVM 聚合运行。
## 系统架构
```mermaid
flowchart LR
Admin["管理端
nebula-ui"] --> Gateway["Gateway :19000"]
BlogUI["内容站
nebula-blog-ui"] --> Gateway
ForgeUI["插件站
nebula-forge"] --> Gateway
Gateway --> Manager["Manager :8081
/manager"]
Gateway --> Blog["Blog :8082
/blog"]
Gateway --> Space["Space :8083
/space"]
Gateway --> Forge["Forge :8884
/forge"]
Manager --> MySQL[(MySQL)]
Blog --> MySQL
Space --> MySQL
Forge --> MySQL
Gateway --> Redis[(Redis)]
Manager --> Redis
Blog --> Redis
Space --> Redis
Forge --> Redis
Manager --> MinIO[(MinIO)]
Blog --> MinIO
Space --> MinIO
Forge --> MinIO
Blog --> Meilisearch[(Meilisearch)]
Forge --> Meilisearch
Manager --> Milvus[(Milvus)]
Manager --> LLM["OpenAI 兼容模型 API"]
Blog --> LLM
```
管理端、内容站与插件站均通过相对路径 `/api` 访问后端。开发环境由 Vite 将 `/api` 代理到 Gateway;生产环境需要由 Nginx 或其他入口服务完成同源反向代理。
`nebula-scribe` 当前默认使用 Mock 数据,Gateway 暂无 `/scribe/**` 路由,因此它不在上面的已接通链路中。
## 仓库导航
| 路径 | 职责 |
|---|---|
| `nebula-parent/` | Java 版本、Spring 生态和 Maven 插件的统一父配置 |
| `nebula-bom/` | Nebula 内部 SDK、Starter 和 API 的依赖版本管理 |
| `nebula-sdk/` | 通用领域模型、Web、Redis、MyBatis、OSS、搜索及 AI 基础能力 |
| `nebula-starters/` | Web、安全、Redis、MyBatis、文件等 Spring Boot Starter |
| `nebula-apis/` | Manager、Blog、Forge 的 DTO、VO 和枚举契约 |
| `nebula-services/` | Gateway 与各业务服务实现,以及单进程聚合启动器 |
| `nebula-agents/` | Agent 扩展聚合模块;当前尚未包含子模块 |
| `ui/` | 管理端、内容站、插件站、写作端和布局设计稿 |
| `script/mysql/` | 合并后的 MySQL 初始化脚本 |
| `deploy/` | Docker Compose、镜像、环境模板和部署脚本 |
| `docs/` | AI、流程、Agent、向量检索、写作与部署设计文档 |
### 后端服务
| 模块 | 端口 | 路由前缀 | 主要职责 |
|---|---:|---|---|
| `nebula-service-gateway` | `19000` | - | 统一入口、路由转发和登录态校验 |
| `nebula-service-manager` | `8081` | `/manager` | 系统管理、AI 配置、流程、Agent、知识库和文件 |
| `nebula-service-blog` | `8082` | `/blog` | 文章、系列、旅行内容和 AI 中转信息 |
| `nebula-service-space` | `8083` | `/space` | 书签、文件夹、标签及导入导出 |
| `nebula-service-forge` | `8884` | `/forge` | 插件市场、版本、审核、评论和安装下载 |
| `nebula-service-all` | 多端口 | 保持原前缀 | 在一个 JVM 中启动四个业务服务,不包含 Gateway |
### 前端应用
| 路径 | 用途 | 开发命令 | 默认端口 | 状态 |
|---|---|---|---:|---|
| `ui/nebula-ui` | 统一管理端,pnpm + Turbo Monorepo | `pnpm dev:ele` | `5777` | 已接入 Gateway |
| `ui/nebula-blog-ui` | 内容、系列与旅行前台 | `npm run dev` | `28256` | 已接入 Gateway |
| `ui/nebula-forge` | 插件市场与插件开发文档 | `npm run dev` | `28257`,文档 `5174` | 已接入 Gateway |
| `ui/nebula-scribe` | AI 辅助写作端 | `npm run dev` | `28259` | 开发中,默认 Mock |
| `ui/nebula-ui-layout` | 管理端布局方案归档 | 直接打开 HTML | - | 静态设计稿,不参与构建 |
## 环境要求
| 工具或服务 | 建议版本 / 说明 |
|---|---|
| JDK | 21 |
| Maven | 3.9+ |
| Node.js | 推荐 `22.22.0`;管理端同时支持 `20.19+`、`22.18+`、`24+` |
| pnpm | 管理端使用 `10.33.0`,最低 `10.0.0` |
| npm | Blog 与 Forge 已提交 `package-lock.json`;Scribe 暂未锁定包管理器 |
| Docker | Docker 23+ 与 Docker Compose v2,用于中间件和部署 |
| 基础设施 | MySQL、Redis、MinIO、Meilisearch |
| AI 与向量能力 | OpenAI 兼容模型服务;按需接入 Embedding 服务与 Milvus |
生产编排当前使用 MySQL 8.4、Redis 7.4、MinIO 和 Meilisearch 1.11。确切镜像与资源限制以 [`deploy/docker-compose.yml`](./deploy/docker-compose.yml) 为准。
## 快速开始
### 1. 准备本地基础设施
本地配置默认连接以下地址:
| 服务 | 默认地址 |
|---|---|
| MySQL | `127.0.0.1:13306` |
| Redis | `127.0.0.1:16379` |
| MinIO | `127.0.0.1:9000` |
| Meilisearch | `127.0.0.1:7700` |
1. 创建 MySQL 数据库 `nebula`,导入 [`script/mysql/nebula.sql`](./script/mysql/nebula.sql)。
2. 准备 MySQL 和 Redis,或通过环境变量覆盖服务配置中的默认连接地址。
3. MinIO 与 Meilisearch 可使用本地开发编排启动:
```bash
docker compose -f deploy/docker-compose.dev.yml up -d
```
4. 如需 AI、Embedding 或向量检索,再配置相应 API 与 Milvus;配置项可参考 [`deploy/.env.example`](./deploy/.env.example)。Manager 当前默认启用 Milvus,本地没有可用实例时,启动前应设置 `MILVUS_ENABLED=false`。
### 2. 构建并启动后端
```bash
# 在仓库根目录构建全部后端模块
mvn clean install -DskipTests
# 终端 1:启动系统管理服务
mvn -f nebula-services/nebula-service-manager/pom.xml spring-boot:run
# 终端 2:启动网关
mvn -f nebula-services/nebula-service-gateway/pom.xml spring-boot:run
```
Blog、Space 和 Forge 可按同样方式从各自的 `pom.xml` 启动。Gateway 路由到尚未启动的服务时,对应路由不可用,但不影响其他服务。
各业务服务使用独立配置名:`nebula-manager.yml`、`nebula-blog.yml`、`nebula-space.yml` 和 `nebula-forge.yml`;Gateway 使用 `application.yml` 与 `gateway-routes.yml`。
### 3. 启动管理端
```bash
cd ui/nebula-ui
pnpm install
pnpm dev:ele
```
访问 `http://localhost:5777`。`pnpm dev` 是应用选择器,并不是同时启动全部应用;当前可运行应用为 `web-ele`。
### 4. 启动独立前端
以下项目依赖彼此隔离,需要分别安装:
```bash
# 内容站
cd ui/nebula-blog-ui
npm ci
npm run dev
# 插件站和 VitePress 文档站
cd ../nebula-forge
npm ci
npm run dev
# 写作端(当前无 lockfile,默认使用 Mock 数据)
cd ../nebula-scribe
npm install
npm run dev
```
## 构建与检查
| 工作目录 | 命令 | 用途 |
|---|---|---|
| 仓库根目录 | `mvn test` | 运行全部后端测试 |
| 仓库根目录 | `mvn -pl nebula-services/nebula-service-manager -am clean package -DskipTests` | 构建指定服务及其内部依赖 |
| `ui/nebula-ui` | `pnpm check` | 循环依赖、依赖、类型和拼写检查 |
| `ui/nebula-ui` | `pnpm test:unit` | 管理端单元测试 |
| `ui/nebula-ui` | `pnpm build:ele` | 构建管理端应用 |
| `ui/nebula-blog-ui` | `npm run build` | 构建内容站 |
| `ui/nebula-forge` | `npm run build` | 构建插件站及其文档 |
| `ui/nebula-scribe` | `npm run build` | 构建写作端 |
管理端还提供 `pnpm lint`、`pnpm format`、`pnpm test:e2e` 和 `pnpm commit` 等命令,完整列表以 [`ui/nebula-ui/package.json`](./ui/nebula-ui/package.json) 为准。
## 配置约定
- 根目录 `pom.xml` 的 `revision` 是后端模块的统一版本源。
- 后端环境差异通过环境变量覆盖各服务 YAML 中的属性,不复制多套配置文件。
- Gateway 路由统一维护在 `nebula-service-gateway/src/main/resources/gateway-routes.yml`。
- 生产部署从 `deploy/.env.example` 复制配置,真实的 `deploy/.env` 不应提交到仓库。
- `AI_PROFILE_SECRET` 用于加密模型档案中的 API Key;产生数据后不可随意更换。
- Embedding 维度必须与 Milvus Collection 一致,变更前阅读 [向量检索迁移 Runbook](./docs/设计文档/向量检索迁移runbook.md)。
- 独立前端生产构建仍请求相对路径 `/api`,部署时必须配置同源反向代理;不要依赖尚未接线的 `VITE_API_BASE_URL` 占位值。
## 部署
部署目录提供拆分核心服务、拆分全量服务(`--extra`)和单 JVM 聚合(`--all-in-one`)三种运行方式,详细说明见 [`deploy/README.md`](./deploy/README.md) 和 [当前部署架构](./docs/部署方式/当前部署架构.md)。
> **当前注意事项**:数据库脚本已合并为 `script/mysql/nebula.sql`,但 `deploy/scripts/init-db.sh` 仍引用合并前的多文件列表,导致 `deploy.sh` 在数据库初始化阶段退出。在初始化脚本同步之前,不要直接将其用作一键部署;临时部署需要绕过该生成脚本并手动导入合并 SQL。
## 文档索引
| 主题 | 文档 |
|---|---|
| 智能体运行模型 | [智能体设计](./docs/设计文档/智能体设计.md) |
| Agent Harness | [Agent Harness 设计](./docs/设计文档/AgentHarness设计.md) |
| 对话式流程生成 | [对话式流程生成与 Agent 派生设计](./docs/设计文档/对话式流程生成与Agent派生设计.md) |
| 多智能体协作 | [多智能体协作层设计](./docs/设计文档/多智能体协作层设计.md) |
| 计划与执行 | [计划-执行节点设计](./docs/设计文档/计划-执行节点设计.md) |
| 向量检索 | [Milvus 基建设计](./docs/设计文档/向量检索基建(Milvus)设计.md) |
| 写作 Agent | [写作 Agent 设计](./docs/设计文档/写作Agent设计.md) |
| 部署 | [部署套件](./deploy/README.md) / [部署架构](./docs/部署方式/当前部署架构.md) |
## 版本演进
| 版本 | 日期 | 主要里程碑 |
|---|---|---|
| `release-v1.0.0` | 2026-05-13 | 用户、角色、菜单与权限管理基础能力 |
| `release-v1.0.1` | 2026-05-30 | 新增博客功能 |
| `release-v1.0.2` | 2026-07-09 | 新增 AI 驱动、Agent 编辑与插件管理后台 |
| `release-v1.0.3` | 2026-09-19 | 完成本阶段 AI Flow、Harness、RAG、内容站、Space、Forge、Scribe 与部署体系建设,补充 Milvus URI 配置 |
发布新版本时,应同步根 `pom.xml`、部署镜像版本默认值和 Git 标签;详细变更以 Git 提交和发布标签为准。
## 许可证与致谢
本项目基于 [Mozilla Public License 2.0](./LICENSE) 发布。
管理端基于 [Vben Admin](https://github.com/vbenjs/vue-vben-admin) 的工程体系演进,感谢原项目及其贡献者。