又一个项级的 Java Multi Agent 开源项目

你好,我是阿香。

前几天,技术群里的小伙伴一直在安利 Solon AI。起初我还在想,Java 生态里不是已经有 Spring AI 了吗?出于好奇,我抽空深入研究了一波,结果真香了!

这不仅是一个 AI 框架,它更像是为 Java 开发者量身定制的 “智能体指挥部”。今天就来聊聊这个让我眼前一亮的顶级 Java Multi-Agent 开源项目。


什么是 Solon AI?

简单来说,Solon AI 是 Solon 生态中专注 AI 应用开发的轻量级框架。如果说大语言模型(LLM)是 AI 的大脑,那么 Solon AI 就是它的 “神经中枢” 和 “拓扑指挥官”。

它不仅仅提供了多智能体协作的架构,其核心竞争力在于:极致的轻量化、多协议编排能力以及天然的微服务基因。


Solon AI 与 Spring AI 有哪些不同?

很多小伙伴会问:“既然有了 Spring AI,我为什么要看 Solon AI?”

两者的设计哲学完全不同:

  • Spring AI:更像是一个“集成商”,侧重于把 LLM 包装成一种资源(如 Data Source 一样)融入 Spring 业务流。它擅长的是简单的 RAG 和聊天。
  • Solon AI:原生为 Agentic(智能体)范式 而生。它强调的是“协议(Protocol)”,通过多种团队协议(TeamProtocols)决定任务如何在 Agent 间流转。它更适合构建像“自动化软件公司”、“复杂风控博弈”这种需要多智能体深度协作的应用。

就像我常说的:“没有银弹,选适合自己的”。如果你追求毫秒级启动、追求对协作逻辑的精细控制,Solon AI 会让你爽到飞起。


Solon AI 为什么强?

  1. 八大协作协议(TeamProtocols):这是它的杀手锏。从顺序流(Sequential)、层级制(Hierarchical)到去中心化的点对点(A2A)和模拟生物逻辑的蜂群协议(Swarm),它把多智能体协作玩出了花。
  2. 死循环熔断机制:独创的“信息素惩罚”机制,能自动发现并拦截智能体之间的“踢皮球”行为,防止 Token 在死循环中白白燃烧。
  3. 确定性保障:内置 TeamTrace 溯源。Agent 之间怎么沟通的、谁在摸鱼、谁在胡言乱语,路径回放得清清楚楚。
  4. Java 原生友好:利用 @ToolMapping 注解,直接把你的 Java 方法变成 Agent 的技能,配合 ONode 进行结构化数据处理,对 Java 开发者极其友好。
  5. 极致性能:延续了 Solon 框架的基因,包体积极小,冷启动飞快。

快速入门

1) 引入依赖

在你的 pom.xml 中引入 Solon AI 的智能体核心包:

<dependency>
    <groupId>org.noear</groupId>
    <artifactId>solon-ai-agent</artifactId>
</dependency>

2) 基础智能体创建

只需几行代码,就能创建一个具备身份意识的 Agent。

// 初始化模型(支持 OpenAI, DeepSeek, Qwen 等)
ChatModel chatModel = LlmUtil.getChatModel();

// 创建一个专业助手
SimpleAgent assistant = SimpleAgent.of(chatModel)
                .systemPrompt(SimpleSystemPrompt.builder()
                        .role("Java专家")
                        .instruction("你是一个精通 Solon 框架的 Java 专家。")
                        .build())
                .build();

// 对话
String result = assistant.prompt("Solon AI 怎么选协作协议?").call().getContent();
System.out.println(result);

3) 巅峰对决:多智能体协作(TeamAgent)

这是 Solon AI 最迷人的地方。我们可以轻易编排一个智能体协作的梦之队。

public void testA2AFlowWithRole() {
    ChatModel chatModel = LlmUtil.getChatModel();

    // 1. 前端开发者:负责编写代码并“移交”
    Agent webDeveloper = SimpleAgent.of(chatModel).name("WebDeveloper")
            .systemPrompt(SimpleSystemPrompt.builder()
                    .role("资深前端开发者")
                    .instruction("任务:根据用户需求编写完整的 HTML/JS 代码。\n" +
                                 "协作:写完后请交给 Reviewer 审查代码质量。直接输出代码,不要用 Markdown 格式。")
                    .build())
            .build();

    // 2. 审查者:负责质量把关
    Agent reviewer = SimpleAgent.of(chatModel).name("Reviewer")
            .systemPrompt(SimpleSystemPrompt.builder()
                    .role("首席架构师")
                    .instruction("任务:审查 WebDeveloper 提交的代码,查找安全隐患和性能瓶颈。\n" +
                                 "协作:如果代码合格,请交给 Archiver 归档;如果不合格,请打回给 WebDeveloper。")
                    .build())
            .build();

    // 3. 归档员:负责总结
    Agent archiver = SimpleAgent.of(chatModel).name("Archiver")
            .systemPrompt(SimpleSystemPrompt.builder()
                    .role("文档管理员")
                    .instruction("任务:总结最终通过审查的代码功能,并生成唯一的版本快照编号。")
                    .build())
            .build();

    // 编排 A2A 团队
    TeamAgent devTeam = TeamAgent.of(chatModel)
            .protocol(TeamProtocols.A2A) // 核心:开启点对点直连协议
            .agentAdd(webDeveloper, reviewer, archiver)
            .maxTurns(6) // 兜底:防止 Reviewer 和 Developer 陷入无限改 Bug 循环
            .build();

    // 执行任务
    AgentSession session = InMemoryAgentSession.of("project_v1");
    String result = devTeam.call(Prompt.of("帮我写一个实现点击按钮换背景颜色的网页"), session).getContent();

    // 溯源:你会看到 WebDeveloper -> Reviewer -> Archiver 的闪电接力
    TeamTrace trace = devTeam.getTrace(session);
    System.out.println("博弈链路: " + trace.getRecords().stream().map(r -> r.getSource()).toList());
    System.out.println("最终交付成果:\n" + result);
}

进阶能力:不只是协作

  • A2A(Agent-to-Agent)协议:支持 Agent 之间的“直接移交”。当 A 处理不了时,它可以直接把任务“甩”给 B,响应速度极快。
  • 结构化输出控制:通过 ONode 配合 Prompt 约束,Solon AI 能把 AI 那些天马行空的回复,精准解析成你 Java 里的 POJO 对象。
  • 路径断言单测:你可以像写 JUnit 一样写 Agent 测试。不只是断言结果字符串,而是断言执行记录:
assert team.getTrace(session).getRecords().stream()
                .anyMatch(s -> ContractNetProtocol.ID_BIDDING.equals(s.getSource()))。

总结

研究完 Solon AI 后,我最大的感受是:AI 应用开发正在从“单兵作战”转向“兵团作战”。

Solon AI 的出现,给了 Java 开发者一个强大的武器库:

  1. 不再需要羡慕 Python 生态:Java 同样能优雅地玩转 Multi-Agent。
  2. 工程化程度极高:它解决了 AI 输出不可控、协作过程黑盒等生产痛点。
  3. 微服务天然集成:每一个 Team 都可以是一个微服务,这太符合企业级架构的演进方向了。

如果你正准备在 Java 项目里接入 Agent,Solon AI 绝对值得你加入 Star 列表。

Github 地址:https://github.com/noear/solon-ai

posted @ 2026-01-19 14:55  带刺的坐椅  阅读(62)  评论(0)    收藏  举报