MCPcopy Index your code
hub / github.com/erupts/erupt

github.com/erupts/erupt @2.0.3

Chat with this repo
repository ↗ · DeepWiki ↗ · release 2.0.3 ↗ · + Follow
39,270 symbols 183,892 edges 1,020 files 679 documented · 2%
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

中文   |   English


<img src="https://github.com/erupts/erupt/raw/2.0.3/readme/logo.svg" alt="Erupt" height="120">

Erupt · 注解驱动的 Java 管理后台框架

AI Harness · 50+ 大模型 · MCP 原生 · A2A 协议

Java 注解 · Spring Boot 3 · 零前端 · 2~5s 启动


maven-central license Apache 2.0 GitHub stars GitHub forks gitcode Gitee star Gitee fork last-commit latest-release discussions


在线体验   创建项目   阅读文档   官网   Linq.J


Erupt · 注解驱动的 Java 管理后台框架 · AI Harness

[//]: # (

Erupt Engine

)


💡 为什么选 Erupt?

  • 一个类文件 = 一套后台页面。 零 Controller、零前端打包、零脚手架。
  • 极速启动。 Java 17 + Spring Boot 3.x,2~5 秒起一个完整管理后台。
  • 20+ 表单组件开箱即用:日期、滑块、树、代码编辑器、参照表格、自动补全、地图、签名、Markdown……
  • 内置 RBAC、审计日志、Excel 导入导出、OpenAPI —— 每个 @Erupt 实体自动是一个带权限的 REST 接口。
  • AI Native。 50+ 大模型、MCP 原生工具、70 万+ Skills,全部通过管理界面配置。
  • 多数据库支持。 默认 JPA(MySQL · PostgreSQL · Oracle · SQL Server · 达梦),MongoDB 走 erupt-mongodb
  • 完整的生产级生态。 erupt-cloud 分布式配置;商业模块 Chart / Flow / Tenant / Cube 覆盖报表、工作流、多租户、语义层 BI。

⚡ 60 秒上手

根据你的场景选择最适合的方式:


方式一 · 源码启动(探索 / 参与贡献)

克隆仓库并运行内置示例 —— 内嵌 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(零安装体验)

从 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 —— 详见 镜像使用说明 →


方式三 · Maven 依赖(集成到自有项目)

1. 加一个依赖

<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)。

2. 在 JPA 实体上写一个注解 —— 这就是整个 UI

@Erupt(name = "用户")
@Entity
public class User extends BaseModel {

    @EruptField(
        views = @View(title = "姓名"),
        edit  = @Edit(title = "姓名", search = @Search)
    )
    private String name;
}

3. 启动,登录

mvn spring-boot:run
# → http://localhost:8080   登录:erupt / erupt

你已经拿到一个带分页、搜索、导出、行列权限的后台页面,数据来自 User 表。加一个字段、刷新、立刻出现。

不想安装任何东西?直接试 demo.erupt.xyzguest / 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();

更多场景:erupt.xyz/#!/contrast


📦 开箱即用的能力

**🧱 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 Harness · Spring Boot 上的生产级 AI Agent 框架

erupt-ai 模块 —— Spring Boot 的 AI Harness:50+ 大模型 · MCP 原生工具 · 内置 RBAC 角色权限 · 角色级 system prompt · 会话历史 —— 全部通过管理界面配置,零样板代码。

为什么叫「Harness」? 把 AI 推到生产环境,需要的不只是 SDK,而是 治理(RBAC)+ 互操作(MCP)+ 可观测(会话/Token 追踪)+ 运维友好(管理界面配置) 四件事。Erupt AI Harness 一次提供齐全。

支持 50+ 大模型提供商

OpenAI · Claude · Gemini · DeepSeek · 通义千问 · 智谱 GLM · 豆包 · Moonshot · MiniMax · Mistral · Grok · Fireworks · Together · OpenRouter · Requesty · Ollama(本地)—— 管理界面里随时热切换,共 50+ 个。

核心能力

  • 多模型切换 —— 通过管理界面配置多个 LLM,无需修改代码即可切换
  • 流式输出(SSE) —— 实时逐 token 响应,可配置超时时间
  • 思考模型支持 —— 原生支持推理模型(DeepSeek、Kimi-K2)
  • MCP 协议 —— 接入任意 MCP 工具服务器(SSE & STDIO),自动健康检查与重连
  • A2A 协议(Agent-to-Agent) —— Agent 之间通过标准 A2A 协议互相调用,原生支持多 Agent 协作
  • AI Toolbox —— 通过 @AiToolbox + @Tool 注解将任意 Spring Bean 暴露为 AI 工具
  • Tool 安全 · Role 动态管控 —— 每个 AI 工具都受 LLMRole 管控,可按角色白名单或回收单个工具,运行时生效,无需重启
  • Agentic AI 框架 —— 自定义 AI Agent 的系统提示词、提示词列表、动态 Prompt 处理器,原生集成 MCP 工具
  • 会话历史 —— 按用户隔离的对话会话,记录 Token 用量,支持软删除
  • 长期记忆 —— 跨会话记忆持久化,AI 自动将重要决策与上下文写入记忆文件,下次会话自动加载

AI Toolbox 示例

@AiToolbox
@Component
public class MyTools {

    @Tool("根据订单ID查询订单状态")
    public String getOrderStatus(String orderId) {
        return orderService.getStatus(orderId);
    }
}

LLM 提供商、MCP 服务器、Agent 均可通过内置管理界面配置,无需重启服务。


🦞 Erupt AI Claw

通过自然语言直接驱动服务器 —— 像与同事对话一样简单。

Erupt AI Claw 让你通过对话操作注解驱动的数据与业务、执行 Shell 命令、读写文件、扩展自定义 Skills,全程无需编写代码。

Claw 能力

  • Erupt 模型操作 —— 通过对话对任意 @Erupt 实体进行增删改查
  • Shell 执行 —— 用自然语言直接运行系统命令
  • 文件读写 —— 读取和写入服务器文件
  • 浏览器控制 —— 在 MCP 菜单中添加配置即可与浏览器交互
  • Skills(70 万+) —— 兼容 skills.sh 70 万+ Skills;AI 根据提示词自动匹配执行;支持通过对话动态创建 Skill

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 提交 IssuePull Request

感谢以下贡献者对 Erupt 做出的贡献:

Contributors

觉得 Erupt 帮到了你?请到 GitHub 给个 Star —— 开源不易,对项目成长帮助很大!


⭐ Star History

Star History Chart


📄 License

Erupt 遵循 Apache 2.0 许可证 —— 源代码开源免费、可商用、可二次开发。

作者:YuePeng  ·  erupts@126.com

Extension points exported contracts — how you extend this code

EruptModule (Interface)
@author YuePeng date 2022/1/4 20:57 [18 implementers]
erupt-core/src/main/java/xyz/erupt/core/module/EruptModule.java
ChoiceFetchHandler (Interface)
@author YuePeng date 2019-07-25. [18 implementers]
erupt-annotation/src/main/java/xyz/erupt/annotation/fun/ChoiceFetchHandler.java
EruptPromptHandler (Interface)
@author YuePeng date 2025/3/1 19:14 [1 implementers]
erupt-ai/src/main/java/xyz/erupt/ai/handler/EruptPromptHandler.java
EruptJobHandler (Interface)
@author YuePeng date 2019-12-26 [1 implementers]
erupt-extra/erupt-job/src/main/java/xyz/erupt/job/handler/EruptJobHandler.java
LoginProxy (Interface)
@author YuePeng date 2021/2/13 20:11
erupt-upms/src/main/java/xyz/erupt/upms/fun/LoginProxy.java
EruptAppender (Interface)
@author YuePeng date 2024/6/27 21:58 [100 implementers]
erupt-core/src/main/java/xyz/erupt/core/log/EruptAppender.java
RowChoiceFetchHandler (Interface)
@author YuePeng date 2019-07-25. [17 implementers]
erupt-annotation/src/main/java/xyz/erupt/annotation/fun/RowChoiceFetchHandler.java
EruptAiChat (Interface)
(no doc)
erupt-ai/src/main/java/xyz/erupt/ai/ask/EruptAiChat.java

Core symbols most depended-on inside this repo

get
called by 5811
erupt-core/src/main/java/xyz/erupt/core/cache/EruptCache.java
call
called by 4239
erupt-ai/src/main/java/xyz/erupt/ai/controller/McpController.java
push
called by 4037
erupt-web/src/main/resources/public/chunk-J4W3C6TX.js
concat
called by 3920
erupt-web/src/main/resources/public/chunk-2PH6MPQB.js
attr
called by 3658
erupt-tpl-ui/amis/src/main/resources/static/amis/tinymce.js
push
called by 2992
erupt-tpl-ui/amis/src/main/resources/static/amis/thirds/monaco-editor/min/vs/base/worker/workerMain.js
l
called by 2423
erupt-web/src/main/resources/public/chunk-J4W3C6TX.js
indexOf
called by 2374
erupt-web/src/main/resources/public/chunk-OZTEH5Z3.js

Shape

Function 23,292
Method 14,117
Class 1,769
Enum 57
Interface 35

Languages

TypeScript95%
Java5%

Modules by API surface

erupt-web/src/main/resources/public/assets/js/ckeditor.js3,567 symbols
erupt-web/src/main/resources/public/chunk-EGMJSCMZ.js3,068 symbols
erupt-tpl-ui/amis/src/main/resources/static/amis/tinymce.js2,394 symbols
erupt-web/src/main/resources/public/chunk-J4W3C6TX.js2,032 symbols
erupt-web/src/main/resources/public/chunk-OZTEH5Z3.js1,941 symbols
erupt-web/src/main/resources/public/chunk-SOA3424I.js1,939 symbols
erupt-web/src/main/resources/public/chunk-LFL2FEQS.js1,623 symbols
erupt-web/src/main/resources/public/chunk-2PH6MPQB.js1,545 symbols
erupt-web/src/main/resources/public/chunk-HT3LAQ2W.js1,368 symbols
erupt-web/src/main/resources/public/chunk-UQFBDCOA.js1,180 symbols
erupt-web/src/main/resources/public/chunk-KI576HUD.js1,116 symbols
erupt-tpl-ui/amis/src/main/resources/static/amis/exceljs.js837 symbols

Datastores touched

(mysql)Database · 1 repos
eruptDatabase · 1 repos

For agents

$ claude mcp add erupt \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact