Solon AI

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

核心理念:

  • 一份代码,跨模型运行;极致轻量,从 Java 8 纵跳至 Java 26。

核心架构图谱:

维度 核心能力 支持生态
接入层 统一 Chat / Generate / Embedding 模型接口 OpenAI, Claude, Gemini, DeepSeek, QWen, Ollama, 豆包等…
感知层 全链路 RAG、多格式文档加载、多向量库适配 Chroma, Milvus, ES, Redis, Qdrant…
执行层 MCP 协议、ACP协议、Function Call、Skills 技能包 实时天气、数据库操作、本地 CLI、自定义 Skill
大脑层 ReAct 自省推理、多智能体(Team)协作、AI-Flow 自动任务拆解、层级式协作、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 实现的 “Claude Code” 或 “OpenCode”):

  • https://gitee.com/opensolon/soloncode
  • https://gitcode.com/opensolon/soloncode
  • https://github.com/opensolon/soloncode

SolonClaw(基于 Java8 实现的 “OpenClaw” 或 “Moltbot”):

  • https://gitee.com/opensolon/solonclaw
  • https://gitcode.com/opensolon/solonclaw
  • https://github.com/opensolon/solonclaw

最近更新

  • 添加 solon-ai-agent 动态切换 llm 支持(支持不同会话,在各自请求时切换)
  • 添加 solon-ai-harness 重试次数配置支持
  • 添加 solon-ai-harness lsp 功能
  • 添加 solon-ai-harness HarnessProperties.disallowedTools 配置支持(全局禁用工具配置)
  • 添加 solon-ai-harness HarnessProperties.agentPools(子代理池) 配置支持
  • 添加 solon-ai-harness HarnessProperties.systemPrompt 配置支持(替代之前的 AGENT.md 预设处理,由外部定制)
  • 优化 solon-ai-core embedding 配置默认选项的能力(之前只能在请求时添加)
  • 优化 solon-ai-core ChatRequestDesc.internalStream 添加流接收超时处理(避免因 llm 服务原因一直卡着)
  • 优化 solon-ai-dialect-anthropic anthropic 方言的异常兼容处理
  • 优化 solon-ai-dialect-openai openai-response 方言的异常兼容处理
  • 优化 solon-ai-agent 中断传递处理
  • 优化 solon-ai-agent ActionTask onAction 日志
  • 优化 solon-ai-agent retrying 中断处理(这前的 task 内部的 stream 可能会中断传递)
  • 优化 solon-ai-agent AgentSession.updateSnapshot 添加锁机制
  • 优化 solon-ai-skill-lsp 重构 LspSkill 实现(之前名为 LspTool)
  • 优化 solon-ai-skill-cli ExpertSkill 引导词
  • 优化 solon-ai-skill-cli TerminalSkill 安全引导词
  • 优化 solon-ai-skill-sys 从 cli 同步 ProcessExecutor
  • 优化 solon-ai-harness HarnessEngine 扩展机制(支持为子代理扩展,通过名字识别)
  • 调整 solon-ai-harness ReActAgentExtension 更名为 ReActAgentExtension
  • 调整 solon-ai-harness 切换 llm 的机制,并取消 switchMainModel 方法(有自由的机制了)
  • 调整 solon-ai-harness TerminalSkillProxy 转到 solon-ai-skill-cli
  • 修复 solon-ai-skill-toolgateway ToolGatewaySkill call_tool 不能传递 toolContext 的问题
  • 修复 solon-ai-core AbstractChatDialect reasoning_field_name 可能传递中断的问题

核心模块体验

  • ChatModel(通用大语言模型 LLM 调用接口)

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

ChatModel chatModel = ChatModel.of("http://127.0.0.1:11434/api/chat")
                .provider("ollama") //需要指定供应商,用于识别接口风格(也称为方言)
                .model("qwen2.5:1.5b")
                .defaultSkillAdd(new ToolGatewaySkill())
                .build();

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

//响应式调用
chatModel.prompt("hello").stream(); //Publisher<ChatResponse>
  • Skills(Solon AI Skills 技能)
Skill skill = new SkillDesc("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.skillAdd(skill))
         .call();
  • RAG(知识库)

提供从加载(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<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_06_18),支持跨平台的工具、资源与提示语共享。

//服务端
@McpServerEndpoint(channel = McpChannel.STREAMABLE, mcpEndpoint = "/mcp") 
public class MyMcpServer {
    @ToolMapping(description = "查询天气")
    public String getWeather(@Param(description = "城市") String location) {
        return "晴,25度";
    }
}

//客户端
McpClientProvider clientProvider = McpClientProvider.builder()
        .channel(McpChannel.STREAMABLE)
        .url("http://localhost:8080/mcp")
        .build();
  • 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 项目中经过了三个月的深度打磨与实战验证。

HarnessProperties harnessProps = new HarnessProperties(".tmp/");
harnessProps.addTools(ToolPermission.TOOL_PI); //设定工具权限
harnessProps.addModel( null); //设定大模型配置

ChatModel chatModel = ChatModel.of(harnessProps.getChatModel()).build();
AgentSessionProvider sessionProvider = new AgentSessionProvider() {
    private Map<String, AgentSession> sessionMap = new ConcurrentHashMap<>();

    @Override
    public AgentSession getSession(String instanceId) {
        return sessionMap.computeIfAbsent(instanceId, k -> InMemoryAgentSession.of(k));
    }
};

HarnessEngine engine = HarnessEngine.builder()
        .properties(harnessProps)
        .chatModel(chatModel)
        .sessionProvider(sessionProvider)
        .build();

AgentSession session = engine.getSession(HarnessEngine.SESSION_DEFAULT);

//--- 用主代理模式
engine.getMainAgent().prompt(prompt)
        .session(session) //没有,则为临时会话
        .options(o -> {
            //按需,动态指定工作区(没有,则为默认工作区)
            o.toolContextPut(HarnessEngine.ATTR_CWD, "xxx");
        })
        .call();
  • Ai Flow(流程编排体验)

模拟 Dify 的低代码流式应用,将 RAG、提示词增强、模型调用等环节 YAML 化编排。

id: demo1
layout:
  - type: "start"
  - task: "@VarInput"
    meta:
      message: "Solon 是谁开发的?"
  - task: "@EmbeddingModel"
    meta:
      embeddingConfig: # "@type": "org.noear.solon.ai.embedding.EmbeddingConfig"
        provider: "ollama"
        model: "bge-m3"
        apiUrl: "http://127.0.0.1:11434/api/embed"
  - task: "@InMemoryRepository"
    meta:
      documentSources:
        - "https://solon.noear.org/article/about?format=md"
      splitPipeline:
        - "org.noear.solon.ai.rag.splitter.RegexTextSplitter"
        - "org.noear.solon.ai.rag.splitter.TokenSizeTextSplitter"
  - task: "@ChatModel"
    meta:
      systemPrompt: "你是个知识库"
      stream: false
      chatConfig: # "@type": "org.noear.solon.ai.chat.ChatConfig"
        provider: "ollama"
        model: "qwen2.5:1.5b"
        apiUrl: "http://127.0.0.1:11434/api/chat"
  - task: "@ConsoleOutput"

# FlowEngine flowEngine = FlowEngine.newInstance();
# ...
# flowEngine.eval("demo1");

项目仓库地址?

官网?

Logo

小龙虾开发者社区是 CSDN 旗下专注 OpenClaw 生态的官方阵地,聚焦技能开发、插件实践与部署教程,为开发者提供可直接落地的方案、工具与交流平台,助力高效构建与落地 AI 应用

更多推荐