过去一年,你大概见过无数个这样的"AI 功能":产品右下角挂一个聊天气泡,点开,问它"帮我把这批订单导出来",它回你一段热情洋溢的、正确的废话——然后你关掉气泡,自己去点导出按钮。

这类 AI 有个统一的名字:装饰性 AI。它能聊,但碰不到系统里任何一个真实的按钮。原因也简单:让 AI"能说话"只要接个 API,让 AI"能动手"却要打通工具调用、权限、上下文、审计——一整套脏活。

这篇讲讲 erupt(开源低代码后台框架)是怎么把这套脏活做成开箱即用的:AI 不挂在角落里,而是嵌在表格旁边;不只会聊天,而是能查数据、调业务方法;不裸奔,而是按角色管权限。

一、AI 长在你每天看数据的地方

erupt 2.0 前端重构后,表格视图和树形视图右侧可以直接展开一个 AI 侧边面板。你在看订单列表,不用切窗口、不用复制粘贴数据到某个聊天页面——就在当前页问:

“这个月退款订单比上月多了多少?集中在哪个渠道?”

AI 面板就着你正在看的这张表开始干活。这个交互细节比它看起来重要得多:AI 助手的使用率,几乎完全取决于它离你的工作现场有多近。 挂在全局角落的 AI 是摆设,长在数据旁边的 AI 才会被真的用起来。

面板背后是 erupt-ai 模块的完整底座:17 个内置 LLM 适配器(ChatGPT、Claude、DeepSeek、Gemini、Qwen、GLM、Ollama 本地模型……),配置存在后台、支持热切换——今天用 DeepSeek,明天想换 Claude,改个配置就行,不用动一行代码。

二、两个注解,把你的业务方法交给 AI

光能"看"还不够。erupt-ai 真正的分水岭是 @AiToolbox

@AiToolbox
@Service
public class OrderTools {

    @Resource
    private EruptDao eruptDao;

    @Tool("Query orders by status, return order count and total amount")
    public String orderStats(@P("order status") String status) {
        List<Order> list = eruptDao.lambdaQuery(Order.class)
                .eq(Order::getStatus, status).list();
        double total = list.stream().mapToDouble(Order::getAmount).sum();
        return "count=" + list.size() + ", total=" + total;
    }

    @Tool("Close an order that has not been paid")
    public String closeOrder(@P("order id") Long id) {
        // your business logic here
        return "order " + id + " closed";
    }
}

类上加 @AiToolbox,方法上加 @Tool 描述用途——完事。框架启动时自动扫描所有带 @AiToolbox 的 Spring Bean,把 @Tool 方法注册进 AI 的工具箱。之后用户在对话里说"帮我把 1024 号订单关了",AI 自动识别意图 → 调用 closeOrder(1024L) → 把结果说给用户听。

没有中间层、没有胶水代码、不用学什么 Agent 编排 DSL。你的 Spring Bean 就是 AI 的手。

而且工具箱不是从零开始的——erupt-ai 内置了一批系统级工具:查当前用户、列模块、拿实体 Schema、执行 HQL 查询。也就是说,哪怕你一个 @Tool 都没写,AI 已经能回答"系统里有哪些模型""帮我统计下用户表"这类问题了。

三、给 AI 发工牌之前,先想好它能碰哪些按钮

看到"AI 能调业务方法",你的第一反应如果是兴奋,那第二反应应该是后背发凉:运营账号问一句话,AI 就能去调关闭订单的方法?

erupt 的答案是把 AI 纳入后台本来就有的那套权限体系:按角色精细管控每个 AI 工具的可用性和系统提示词。管理员角色的 AI 可以查库、调用业务操作;客服角色的 AI 只能做数据问答;对外演示账号的 AI 连 HQL 查询都摸不到。同一个 AI 面板,不同的人打开,手里的工具不一样。

再往上一层还有 erupt-ai-claw——开箱即用的后台管理 Agent,连 Shell 执行能力都做成了显式开关(enableExecShell),默认关闭。这些设计传递同一个态度:AI 进入生产系统,不是"接上就跑",而是"先发工牌、再上岗"。 这也是很多自己拿 LangChain 攒 Agent 的团队最后才补的课——而在这里它是默认项。

四、半小时上手路线

如果想亲手试,路径是这样的:

<dependency>
    <groupId>xyz.erupt</groupId>
    <artifactId>erupt-ai</artifactId>
    <version>2.0.2</version>
</dependency>

第一步,引依赖启动,在后台 AI 模块里配一个 LLM(有 Ollama 的话本地模型也行);第二步,打开任意表格,展开 AI 面板问几个数据问题;第三步,写你的第一个 @AiToolbox 工具类,让 AI 调一次你自己的业务方法;第四步,去角色管理里把工具权限按岗位收一收。到这一步,你拥有的已经不是一个聊天框,而是一个有工牌、有工具、守权限的 AI 同事。

顺带一提:erupt 本身是"一个 Java 类 + 注解 = 完整管理后台"的开源低代码框架,AI 只是它 2.0 时代的新器官。如果你还没用过 erupt,可以从 docs.erupt.xyz 的五分钟上手开始。


如果这篇对你有启发:

⭐ GitHub 搜 erupts/erupt 点个 Star——开源项目的燃料就是这个
📖 文档与更新日志:docs.erupt.xyz
💬 关注本公众号,回复「加群」进交流群,聊聊你们的 AI 到底是"装饰性"还是"生产力"

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐