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/soloncodehttps://gitcode.com/opensolon/soloncodehttps://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)等能力。
ChatModel chatModel = ChatModel.of( "https://api.deepseek.com/v1" ) .standard(ChatDialects.OPENAI_CHAT) //指定供接口规范(也称为方言) .model( "deepseek-v4-flash" ) .defaultTalentAdd( new ToolGatewayTalent ()) .build(); //同步调用,并打印响应消息 AssistantMessage result = ChatchatModel.prompt( "今天杭州的天气情况?" ) .options(op->op.toolAdd( new WeatherTools ())) //添加助手 .call() .getMessage(); System.out.println(result); //响应式调用 chatModel.prompt( "hello" ).stream(); //Publisher
Talents(Solon AI Talents 才能)
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();
提供从加载(DocumentLoader)、切分(DocumentSplitter)、向量化(EmbeddingModel)到检索重排(RerankingModel)的全链路适配。
//构建知识库 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
MCP (Model Context Protocol)
深度集成 MCP 协议(MCP_2025_11_25),支持跨平台的助手、资源与提示语共享。
//服务端 @McpServerEndpoint(channel = McpChannel.STREAMABLE, mcpEndpoint = "/mcp") public class MyMcpServer implements ServerTransportSecurityValidator { @Override public void validateHeaders (Map
Agent (基于计算流图的智能体体验)
Solon AI Agent 将推理逻辑转化为图驱动的协作流,适配 ReAct 自省推理和多智能体 Team 协作。
//自省智能体: 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 方案中经过了三个月的深度打磨与实战验证。
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-aigitcode:https://gitcode.com/opensolon/solon-aigithub:https://github.com/opensolon/solon-ai
https://solon.noear.org/article/learn-solon-ai

