🔥 Solon AI v4.0.4 发布(智能体开发框架,支持 Java8 到 Java26)

发布于

## Solon AI

Solon AI 是一款面向 Java 开发者的全栈智能体(Agent)应用开发框架。它秉承 Solon 家族一贯的“克制、高效、开放”理念,向上抽象统一接口屏蔽模型差异,向下深度集成向量库、MCP 协议与复杂流控制。

### 核心理念:
* 一份代码,跨模型运行;极致轻量,从 Java 8 纵跳至 Java 26。

### 核心架构图谱:
| 维度 | 核心能力 | 支持生态 |
| -------- | ---------------------------------------- | ------------------------------------ |
| 接入层 | 统一 Chat / Generate / Embedding 模型接口 | OpenAI, Claude, Gemini, DeepSeek, GLM, Ollama, 豆包等... |
| 感知层 | 全链路 RAG、多格式文档加载、多向量库适配 | Chroma, Milvus, ES, Redis, Qdrant... |
| 执行层 | MCP 协议、ACP协议、Function Call、Skills 技能包 | 实时天气、数据库操作、本地 CLI、自定义 Skill |
| 大脑层 | ReAct 自省推理、多智能体(Team)协作、Harness | 自动任务拆解、层级式协作、YAML 工作流 |

### 能用来开发什么应用?
* 通用自主智能体应用(比如:Manus、OpenOperator、Claude Code、OpenClaw)
* 智能助理与 RAG 知识库应用(比如:Dify、Coze)
* 多 Agent 协作的任务编排应用(比如:AutoGPT、MetaGPT)
* 业务驱动的受控流程审批应用(比如:智能版钉钉审批流、SAP 智能模块)
* 结构化数据处理与 ETL 应用(比如:Instabase、Unstructured.io)
* 实时数据智能看板应用(比如:Text-to-SQL 类应用)
* 自动化测试与质量保障应用(比如:GitHub Copilot Workspace)
* 低代码/可视化 AI 工作流平台(比如:LangFlow、Flowise)
* 等等...

## 智能体综合示例项目(可直接用于生产或定制)
SolonCode(基于 Java8 实现的 Coding Agent。类似 "Claude Code" 或 "OpenCode"):
* [https://gitee.com/opensolon/soloncode](https://gitee.com/opensolon/soloncode)
* [https://gitcode.com/opensolon/soloncode](https://gitcode.com/opensolon/soloncode)
* [https://github.com/opensolon/soloncode](https://github.com/opensolon/soloncode)

## 最近更新
* 添加 solon-ai-core ModelOptionsAmend.reasoning_effort 统一选项 API
* 添加 solon-ai-core ModelOptionsAmend.thinking 思考模式开关统一选项 API
* 添加 solon-ai-core Prompt.copy 方法
* 添加 solon-ai-core ChatRequestDesc.role, instruction, systemPrompt 方法
* 添加 solon-ai-core AssistantMessage 多模态支持
* 添加 solon-ai-agent HITLStrategy 接口,替代 HITLInterceptor.InterventionStrategy(后者标为弃用)
* 添加 solon-ai-agent ActionChunk, ObservationChunk, ToolExchanger callId 属性
* 添加 solon-ai-agent 新流块 RunStartEvent, RunEndEvent, ReasonStartEvent, ReasonEndEvent 事件块
* 添加 solon-ai-agent 新流块 ToolStartEvent、ToolEndEvent
* 添加 solon-ai-agent 新流块 HITLPendingEvent、HITLDecidedEvent
* 添加 solon-ai-agent 新流块 ActionStartEvent、ActionEndEvent、ReasonDeltaEvent(替代 ReasonChunk)
* 添加 solon-ai-agent 新流块 TeamStartEvent、TeamEndEvent(替代 TeamChunk)
* 添加 solon-ai-agent 新流块 SimpleStartEvent、SimpleEndEvent(替代 SimpleChunk)
* 添加 solon-ai-agent ReActInterceptor onActionStart, onActionEnd 事件
* 添加 solon-ai-agent ReActInterceptor onToolCallStart, onToolCallEnd 事件
* 添加 solon-ai-harness 新的工具权限体系
* 添加 solon-ai-harness ToolName 类,替代 ToolPermission(后者标为弃用)
* 添加 solon-ai-harness AgentDefinition 链式构造方法
* 添加 solon-ai-harness TaskWrapChuck 类,包装子代理的流块,提高子代理调用的透明度
* 优化 solon-ai-core AbstractChatDialect 方言适配
* 优化 solon-ai-agent TeamAgent 相关实现代码
* 优化 solon-ai-agent hitl 实现(以支持多工具批量)
* 优化 solon-ai-agent ContextCompressionInterceptor 压缩算法
* 优化 solon-ai-talent-cli bash 脚本处理
* 优化 solon-ai-dialect-anthropic 方言适配
* 优化 solon-ai-dialect-openai Responses 方言适配
* 优化 solon-ai-dialect-dashscope 方言适配
* 优化 solon-ai-dialect-gemini 方言适配
* 优化 solon-ai-harness 增加 skills 和 agents 局部(分组)动态刷新能力
* 调整 solon-ai-agent ToolCallEndEvent 替代 ObservationChunk, ToolCallStartEvent 替代 ActionChunk(后者标为弃用)
* 调整 solon-ai-agent ReActInterceptor onToolCallEnd 替代 onObservation,onToolCallStart 替代 onAction(后者标为弃用)
* 调整 solon-ai-agent ContextCompressionInterceptor 取消 maxTokens,由 maxContextLengthRatio 替代
* 调整 solon-ai-agent ContextCompressionInterceptor 取消 chatModelSupplier 参数(标为弃用)
* 调整 solon-ai-agent AgentChunk 更名为 AgentEvent
* 调整 solon-ai-harness 重构 hitl 实现
* 调整 solon-ai-harness getModelOrMain 标为弃用,由 getModelOrDefInstance 替代
* 调整 solon-ai-harness 取消 compressionMaxTokens,由 compressionMaxContextRatio 替代
* 修复 solon-ai-core ChatModel.stream 内部多次请求可能卡死的问题
* acp-sdk 升为 0.14

## 核心模块体验
* ChatModel(通用大语言模型 LLM 调用接口)

支持同步、流式(Reactive)调用,内置方言适配,工具(Tool),技能(Skill),会话记忆(ChatSession)等能力。

```java
ChatModel chatModel = ChatModel.of("https://api.deepseek.com/v1")
.standard(ChatDialects.OPENAI_CHAT) //指定供接口规范(也称为方言)
.model("deepseek-v4-flash")
.defaultTalentAdd(new ToolGatewayTalent())
.build();

//同步调用,并打印响应消息
AssistantMessage result = chatModel.prompt("今天杭州的天气情况?")
.options(op->op.toolAdd(new WeatherTools())) //添加工具
.call()
.getMessage();
System.out.println(result);

//响应式调用
chatModel.prompt("hello").stream(); //Publisher<ChatResponse>
```

* Talents(Solon AI Talents 才能)

```java
Talent talent = new TalentDesc("order_expert")
.description("订单助手")
// 动态准入:只有提到“订单”时才激活
.isSupported(prompt -> prompt.getUserMessageContent().contains("订单"))
// 动态指令:根据用户是否是 VIP 注入不同 SOP
.instruction(prompt -> {
if ("VIP".equals(prompt.getMeta("user_level"))) {
return "这是尊贵的 VIP 客户,请优先调用 fast_track_tool。";
}
return "按常规流程处理订单查询。";
})
.toolAdd(new OrderTools());

chatModel.prompt("我昨天的订单到哪了?")
.options(o->o.talentAdd(talent))
.call();
```

* RAG(知识库)
提供从加载(DocumentLoader)、切分(DocumentSplitter)、向量化(EmbeddingModel)到检索重排(RerankingModel)的全链路支持。

```java
//构建知识库
EmbeddingModel embeddingModel = EmbeddingModel.of(apiUrl).apiKey(apiKey).provider(provider).model(model).batchSize(10).build();
RerankingModel rerankingModel = RerankingModel.of(apiUrl).apiKey(apiKey).provider(provider).model(model).build();
InMemoryRepository repository = new InMemoryRepository(TestUtils.getEmbeddingModel()); //3.初始化知识库

repository.insert(new PdfLoader(pdfUri).load());

//检索
List<Document> docs = repository.search(query);

//如果有需要,可以重排一下
docs = rerankingModel.rerank(query, docs);

//提示语增强是
ChatMessage message = ChatMessage.ofUserAugment(query, docs);

//调用大模型
chatModel.prompt(message).call();
```

* MCP (Model Context Protocol)
深度集成 MCP 协议(MCP_2025_11_25),支持跨平台的工具、资源与提示语共享。

```java
//服务端
@McpServerEndpoint(channel = McpChannel.STREAMABLE, mcpEndpoint = "/mcp")
public class MyMcpServer implements ServerTransportSecurityValidator {
@Override
public void validateHeaders(Map<String, List<String>> headers) throws ServerTransportSecurityException {
if (headers.containsKey("role")) { //新的鉴权接口
if ("1".equals(headers.get("role").get(0))) {
return;
}
}

throw new ServerTransportSecurityException(401, "没有权限");
}

@ToolMapping(description = "查询天气")
public String getWeather(@Param(description = "城市") String location) {
return "晴,25度";
}
}

//客户端
McpClientProvider clientProvider = McpClientProvider.builder()
.channel(McpChannel.STREAMABLE)
.url("http://localhost:8080/mcp")
.header("role", "1")
.build();
```

* Agent (基于计算流图的智能体体验)
Solon AI Agent 将推理逻辑转化为图驱动的协作流,支持 ReAct 自省推理和多智能体 Team 协作。

```java
//自省智能体:
ReActAgent agent = ReActAgent.of(chatModel) // 或者用 SimpleAgent.of(chatModel)
.name("weather_expert")
.description("查询天气并提供建议")
.defaultToolAdd(weatherTool) // 注入 MCP 或本地工具
.build();

agent.prompt("今天北京适合穿什么?").call(); // 自动完成:思考 -> 调用工具 -> 观察 -> 总结

// 组建团队智能体:通过协议(Protocol)自动编排成员角色
TeamAgent team = TeamAgent.of(chatModel)
.name("marketing_team")
.protocol(TeamProtocols.HIERARCHICAL) // 层级式协作(6种预置协议)
.agentAdd(copywriterAgent) // 文案专家
.agentAdd(illustratorAgent) // 视觉专家
.build();

team.prompt("策划一个深海矿泉水的推广方案").call(); // Supervisor 自动拆解任务并分发给对应专家 .defaultToolAdd(weatherTool) // 注入 MCP 或本地工具
```

* Agent Harness
Solon AI Harness 是一个高性能的智能体“马具(Harness)”框架。作为底层核心,它已在 SolonCode CLI 项目中经过了三个月的深度打磨与实战验证。

```java
import org.noear.solon.ai.agent.AgentSession;
import org.noear.solon.ai.agent.session.InMemoryAgentSession;
import org.noear.solon.ai.chat.ChatConfig;
import org.noear.solon.ai.harness.HarnessEngine;
import org.noear.solon.ai.talents.mount.MountDir;
import org.noear.solon.ai.harness.permission.ToolPermission;
import org.noear.solon.ai.talents.mount.MountType;

public class DemoApp {
public static void main(String[] arg) throws Throwable {
//--- 1. 初始化
HarnessEngine engine = HarnessEngine.of("/data/work/", ".tmp")
.systemPrompt("xxx")
.sessionProvider(InMemoryAgentSession::of)
.toolsAdd(ToolPermission.TOOL_ALL_FULL) //设定工具权限
.disallowedToolsAdd(ToolPermission.TOOL_ALL_FULL)
.mountAdd(MountDir.builder()
.alias("@global-skills")
.type(MountType.SKILLS)
.path("~/.soloncode/skills/")
.primary(true)
.build())
.modelAdd(new ChatConfig().then(slf -> {
slf.setApiUrl("https://api.deepseek.com");
slf.setApiKey("sk-***");
slf.setModel("deepseek-v4-flash");
}))
.build();

AgentSession session = engine.getSession("demo");

//--- 用主代理模式
engine.prompt("hello")
.session(session) //没有,则为临时会话
.options(o -> {
//切换大模型
//o.chatModel(engine.getMainModel());

//按需,动态指定工作区(没有,则为默认工作区)
o.toolContextPut(HarnessEngine.ATTR_CWD, "xxx");
})
.call();

}
}
```

## 项目仓库地址?
* gitee:[https://gitee.com/opensolon/solon-ai](https://gitee.com/opensolon/solon-ai)
* gitcode:[https://gitcode.com/opensolon/solon-ai](https://gitcode.com/opensolon/solon-ai)
* github:[https://github.com/opensolon/solon-ai](https://github.com/opensolon/solon-ai)

## 官网?
* [https://solon.noear.org/article/learn-solon-ai](https://solon.noear.org/article/learn-solon-ai)

---

原文链接:[点击查看](https://www.oschina.net/news/483694)

评论

暂无评论。

0.069978s