上周 Erupt 把 Claude 嵌进 Spring Boot 后台的操作刚刷屏,1.14.3 版本就带着更猛的东西来了——A2A 多智能体协作、跨会话记忆、浏览器直连服务器终端。企业级 AI Agent 不再是单兵作战,而是真正在后台里"组团打工"。
A2A 协作:Agent 之间不再是孤岛
A2A(Agent-to-Agent)协议是这次更新的核心。以前在后台管理系统里调 AI,本质上是一个 Agent 单独响应请求——你问它答,答完就散。1.14.3 让多个 Agent 可以互相发现、互相委托任务。
具体场景:一个"数据查询 Agent"接到用户的自然语言请求,发现需要先做权限校验,就把校验环节委托给"权限 Agent";权限 Agent 返回结果后,数据查询 Agent 再继续执行。整个过程用户只看到最终答案,中间的协作是 Agent 之间自动完成的。
Erupt 在框架层做了两件事: - Agent 注册中心:每个 Agent 启动时声明自己的能力(skill)和接口地址,其他 Agent 可以按能力查找。 - 任务委托链路:支持异步委托 + 结果回传,委托方可以设置超时和回退策略。
跨会话记忆:Agent 终于"记住你了"
之前的 AI 对话是无状态的——每次打开新会话,Agent 对你之前的操作一无所知。1.14.3 引入了跨会话记忆机制:
- 用户画像持久化:Agent 自动提取用户的历史操作偏好、常用查询模式,存入向量数据库。
- 上下文窗口拼接:新会话启动时,自动从记忆库拉取相关上下文,拼进 prompt,避免重复解释。
- 记忆衰减策略:太久或太低频的记忆会被降权,防止无关信息污染当前对话。
这意味着你在后台管理系统里跟 Agent 说"帮我查上个月那个报表",它真的能知道"那个报表"是哪个。
浏览器直连服务器终端:运维 Agent 的最后一公里
1.14.3 把浏览器终端嵌进了后台管理界面。不是简单的 web shell,而是和 Agent 联动的:
- Agent 可以直接在服务器终端执行命令,用户在浏览器里实时看到输出。
- 用户也可以手动接管终端,Agent 观察操作并提供建议。
- 终端会话有完整的审计日志,谁执行了什么命令一目了然。
这对运维场景的价值很直接——Agent 发现磁盘告警,自动登录服务器排查,把诊断过程实时展示给你,你确认后再让它执行修复命令。
实操:在 Spring Boot 项目里接入 Erupt 1.14.3 的 AI Agent
下面是一个最小可运行的接入示例。假设你有一个已有的 Spring Boot 项目,想加上 Erupt 的 AI Agent 能力。
第一步:添加依赖
<!-- pom.xml -->
<dependency>
<groupId>xyz.erupt</groupId>
<artifactId>erupt-upms</artifactId>
<version>1.14.3</version>
</dependency>
<dependency>
<groupId>xyz.erupt</groupId>
<artifactId>erupt-ai</artifactId>
<version>1.14.3</version>
</dependency>
<!-- 如果需要浏览器终端 -->
<dependency>
<groupId>xyz.erupt</groupId>
<artifactId>erupt-tpl</artifactId>
<version>1.14.3</version>
</dependency>
第二步:配置 AI Agent
# application.yml
erupt:
ai:
# 主模型配置,这里用 Claude(也支持 OpenAI、DeepSeek 等)
model:
provider: claude
api-key: ${CLAUDE_API_KEY} # 建议用环境变量,不要硬编码
model-name: claude-sonnet-4-20250514
max-tokens: 4096
# 跨会话记忆
memory:
enable: true
store: vector # 可选 vector / redis / local
decay-days: 30 # 超过 30 天的记忆降权
# A2A 协作
a2a:
enable: true
registry: local # 本地注册中心,生产环境可切换为 redis
timeout-ms: 60000 # 委托任务超时 60 秒
# 浏览器终端
terminal:
enable: true
audit-log: true # 开启命令审计日志
第三步:定义一个带 AI 能力的 Erupt 模型
// Product.java — 商品管理模型,Agent 可以自然语言查询和操作
@Erupt(
name = "商品管理",
desc = "支持 AI Agent 自然语言交互的商品数据管理"
)
@EruptAI(
enable = true,
skills = {
"查询商品库存",
"修改商品价格",
"生成销售报表"
}
)
@Table(name = "t_product")
public class Product {
@EruptField(
views = @View(title = "商品名称"),
edit = @Edit(title = "商品名称", notNull = true)
)
private String name;
@EruptField(
views = @View(title = "价格"),
edit = @Edit(title = "价格", notNull = true)
)
private Double price;
@EruptField(
views = @View(title = "库存"),
edit = @Edit(title = "库存")
)
private Integer stock;
@EruptField(
views = @View(title = "状态"),
edit = @Edit(
title = "状态",
type = EditType.SELECT,
select = @Select(
options = @Option(
options = {
@OptionItem(label = "在售", value = "ON"),
@OptionItem(label = "下架", value = "OFF")
}
)
)
)
)
private String status;
}
@EruptAI 注解的 skills 字段声明了这个模型上 Agent 能做什么。A2A 协作时,其他 Agent 会根据 skills 列表判断是否要委托任务给这个模型的 Agent。
第四步:启动并验证
# 设置 API Key 环境变量
export CLAUDE_API_KEY=sk-ant-xxxxx
# 启动 Spring Boot
mvn spring-boot:run
# 打开后台管理界面,在 AI 对话面板输入:
# "帮我查库存低于 10 的商品"
# Agent 会自动翻译为 SQL 查询并返回结果
启动后,后台管理界面的右侧会出现 AI 对话面板。输入自然语言,Agent 会根据你声明的 skills 自动路由到对应的模型和操作。如果涉及权限校验,A2A 会自动委托给权限 Agent。
上手之前想清楚这几件事
- API Key 安全:生产环境务必用环境变量或密钥管理服务,不要写进配置文件提交到 Git。
- Agent 权限边界:
skills声明的是 Agent 的能力范围,但实际执行权限仍然受 Erupt UPMS 的角色控制。Agent 不能绕过权限体系做事。 - 记忆存储选型:
local模式只适合单机开发,生产环境用vector(需要部署向量数据库如 Milvus)或redis(牺牲语义检索能力但部署简单)。 - 终端审计:浏览器终端开启
audit-log是合规刚需,尤其是金融和政务场景,别为了"方便"关掉它。 - A2A 超时策略:委托任务 60 秒超时是保守值。如果你的 Agent 需要调用外部 API(比如第三方数据源),考虑适当放大,同时设置回退逻辑——超时后 Agent 应该告诉用户"没查到,建议手动操作"而不是静默失败。
Erupt 1.14.3 把 AI Agent 从"聊天机器人"推进到了"后台管理系统里的协作员工"。多 Agent 组队、记忆延续、终端联动,这三个能力组合起来,企业级后台的 AI 化不再是概念,而是可以落地的工程选择。