中文 | English
<img src="https://github.com/erupts/erupt/raw/2.0.3/readme/logo.svg" alt="Erupt" height="120">
Java 注解 · Spring Boot 3 · 零前端 · 2~5s 启动
[//]: # (
)
@Erupt 实体自动是一个带权限的 REST 接口。erupt-mongodb。erupt-cloud 分布式配置;商业模块 Chart / Flow / Tenant / Cube 覆盖报表、工作流、多租户、语义层 BI。根据你的场景选择最适合的方式:
克隆仓库并运行内置示例 —— 内嵌 H2 数据库,无需额外配置。
git clone https://github.com/erupts/erupt.git
cd erupt
mvn spring-boot:run -pl erupt-sample -am
# → http://localhost:8080 登录:erupt / erupt
从 Docker Hub 拉取全家桶镜像 —— hub.docker.com/r/erupts/erupt。镜像基于 erupt-spring-boot-starter-all 构建,内置全部特性模块(designer、job、monitor、magic-api、notice、AI、cloud-server 等),默认使用内嵌 H2 数据库,零配置即可启动。
docker run -p 8080:8080 erupts/erupt
# → http://localhost:8080 登录:erupt / erupt
生产环境可通过 -e 环境变量切换 MySQL / Redis —— 详见 镜像使用说明 →
<dependency>
<groupId>xyz.erupt</groupId>
<artifactId>erupt-spring-boot-starter</artifactId>
<version>${erupt.version}</version>
</dependency>
这一个 starter 就已包含跑起来一个 admin 所需的全部依赖(erupt-admin + erupt-web)。想要开箱即全家桶?改用 erupt-spring-boot-starter-all,它额外打包了所有可选特性模块(designer、job、generator、monitor、magic-api、websocket、notice、print、terminal、AI、cloud-server)。
@Erupt(name = "用户")
@Entity
public class User extends BaseModel {
@EruptField(
views = @View(title = "姓名"),
edit = @Edit(title = "姓名", search = @Search)
)
private String name;
}
mvn spring-boot:run
# → http://localhost:8080 登录:erupt / erupt
你已经拿到一个带分页、搜索、导出、行列权限的后台页面,数据来自 User 表。加一个字段、刷新、立刻出现。
不想安装任何东西?直接试 demo.erupt.xyz(
guest / guest)。 想生成一个起手项目?start.erupt.xyz 在浏览器里就能生成。 需要完整说明?详细使用步骤 →
📦 看一个更完整的注解示例 —— 滑块、Choice、自定义按钮、LambdaQuery
@Erupt(
name = "Simple",
power = @Power(importable = true, export = true),
rowOperation = @RowOperation(
title = "自定义操作",
mode = RowOperation.Mode.SINGLE,
operationHandler = OperationHandlerImpl.class
)
)
@Table(name = "t_simple")
@Entity
public class Simple extends BaseModel {
@EruptField(
views = @View(title = "文本"),
edit = @Edit(title = "文本", notNull = true, search = @Search)
)
private String input;
@EruptField(
views = @View(title = "日期"),
edit = @Edit(title = "日期", search = @Search)
)
private Date date;
@EruptField(
views = @View(title = "滑块"),
edit = @Edit(title = "滑块", type = EditType.SLIDER, search = @Search,
sliderType = @SliderType(max = 90, markPoints = {0, 30, 60, 90}, dots = true))
)
private Integer slide;
@EruptField(
views = @View(title = "选择项"),
edit = @Edit(title = "选择项", type = EditType.CHOICE, search = @Search,
choiceType = @ChoiceType(
fetchHandler = SqlChoiceFetchHandler.class,
fetchHandlerParams = "select id, name from e_upms_menu"
))
)
private Long choice;
}
类型安全的 LambdaQuery 链式查询:
List<EruptUser> list = eruptDao.lambdaQuery(EruptUser.class)
.like(EruptUser::getName, "e")
.isNull(EruptUser::getWhiteIp)
.in(EruptUser::getId, 1, 2, 3, 4)
.ge(EruptUser::getCreateTime, "2023-01-01")
.list();
| **🧱 UI 自动生成** 表格、表单、搜索、分页、树视图、甘特图、卡片视图、20+ 表单组件 —— 全部由字段上的 `@View`、`@Edit`、`@Search` 驱动。 **🔐 权限管控(UPMS)** 用户、角色、菜单、行级筛选、列级可见性。`@Filter` 注解里写 SpEL 即可实现动态规则。支持 OAuth2 / LDAP / SSO。 **🌐 OpenAPI 自动暴露** 每个 `@Erupt` 实体自动成为 REST 接口,权限规则与界面完全一致。 **🗄️ 多数据库** 默认 JPA(MySQL · PostgreSQL · Oracle · SQL Server · 达梦……);MongoDB 通过 `erupt-mongodb` 支持。 | **📊 Excel 导入导出** 通过 `erupt-excel` 开箱即用。需要自定义就覆盖 `DataProxy` 的 `excelImport` / `excelExport` 方法。 **🐴 AI Harness(`erupt-ai`)** 50+ 大模型、MCP 原生工具,全部通过管理界面配置,内置 RBAC。[→ 详情见下方](#-erupt-ai-harness--spring-boot-上的生产级-ai-agent-框架) **🦞 AI Claw(`erupt-ai-claw`)** 用自然语言驱动 Erupt 实体、Shell、文件、浏览器。[→ 详情见下方](#-erupt-ai-claw) > **该引入哪个?** 要原生 LLM / MCP 能力、自己写 agent,选 **`erupt-ai`**;想直接给 admin 装个开箱即用的 AI 助手,选 **`erupt-ai-claw`**(已传递依赖 `erupt-ai`,只需引这一个)。 **☁️ 集群与多租户** `erupt-cloud` 提供分布式配置;商业模块 `erupt-tenant` 提供完整 SaaS 能力。 |
完整模块列表:erupt.xyz/#!/module · API 文档:javadoc.erupt.xyz
erupt-ai模块 —— Spring Boot 的 AI Harness:50+ 大模型 · MCP 原生工具 · 内置 RBAC 角色权限 · 角色级 system prompt · 会话历史 —— 全部通过管理界面配置,零样板代码。
为什么叫「Harness」? 把 AI 推到生产环境,需要的不只是 SDK,而是 治理(RBAC)+ 互操作(MCP)+ 可观测(会话/Token 追踪)+ 运维友好(管理界面配置) 四件事。Erupt AI Harness 一次提供齐全。
OpenAI · Claude · Gemini · DeepSeek · 通义千问 · 智谱 GLM · 豆包 · Moonshot · MiniMax · Mistral · Grok · Fireworks · Together · OpenRouter · Requesty · Ollama(本地)—— 管理界面里随时热切换,共 50+ 个。
@AiToolbox + @Tool 注解将任意 Spring Bean 暴露为 AI 工具LLMRole 管控,可按角色白名单或回收单个工具,运行时生效,无需重启@AiToolbox
@Component
public class MyTools {
@Tool("根据订单ID查询订单状态")
public String getOrderStatus(String orderId) {
return orderService.getStatus(orderId);
}
}
LLM 提供商、MCP 服务器、Agent 均可通过内置管理界面配置,无需重启服务。
通过自然语言直接驱动服务器 —— 像与同事对话一样简单。
Erupt AI Claw 让你通过对话操作注解驱动的数据与业务、执行 Shell 命令、读写文件、扩展自定义 Skills,全程无需编写代码。
@Erupt 实体进行增删改查Claw 与 AI Harness 共享同一套基于 Role 的 Tool 安全机制 —— 非管理员账号只能调用被白名单的工具。Skills 存放于 ~/.erupt/skills/,也可在对话中动态创建。
📌 核心模块永久免费、永久开源 ——
erupt-core/erupt-annotation/erupt-web/erupt-jpa/erupt-upms/erupt-ai等核心模块永久遵循 Apache 2.0 协议,无 License 限制 · 无项目数限制 · 无商用限制(详见 官方治理承诺 →)。下方是核心之外可选的企业级商业模块,与开源核心独立演进、互不影响。
在开源核心之外,提供 4 个企业级商业模块(源码交付 · 一次买断 · 无 License / 项目数 / 商用限制):
| 模块 | 用途 | 文档 |
|---|---|---|
| Erupt Chart | 报表图表 / 数据可视化 | 📖 文档 |
| Erupt Flow | 流程引擎 / 审批工作流 | 📖 文档 |
| Erupt SaaS | 多租户基建 | 📖 文档 |
| Erupt Cube | BI 平台(语义层 + 拖拽分析) | 📖 文档 |
源码交付 · 一次买断 · 永久使用 · 与开源核心独立演进。
Erupt 是一个免费且开源的项目。我们欢迎任何人为 Erupt 做出贡献,包括但不限于:提交代码、反馈缺陷、交流想法,或分享你基于 Erupt 的使用案例。同时也欢迎用户在个人博客或社交媒体上分享 Erupt。
如果你想要贡献代码,请先阅读我们的贡献指南,然后在 GitHub 提交 Issue 或 Pull Request。
感谢以下贡献者对 Erupt 做出的贡献:
⭐ 觉得 Erupt 帮到了你?请到 GitHub 给个 Star —— 开源不易,对项目成长帮助很大!
Erupt 遵循 Apache 2.0 许可证 —— 源代码开源免费、可商用、可二次开发。
作者:YuePeng · erupts@126.com
$ claude mcp add erupt \
-- python -m otcore.mcp_server <graph>