在 Java AI 智能体框架的竞争中,无耳科技的 Solon AI Harness 走了一条完全不同的路。不同于 AgentScope Java 的"大而全"企业级方案,Solon 选择了"引擎式 + 可插拔技能包"的轻量架构。

本文将深入剖析 Solon AI Harness 如何通过克制而有力的设计,实现灵活定制的极致体验。
一、设计哲学:克制而有力

▪ 1.1 核心理念对比
维度 | AgentScope Java | Solon AI Harness |
|---|---|---|
架构风格 | 单体式"大而全" | 引擎式"模块化" |
JDK 要求 | 17+ | 8+ |
设计理念 | 功能完备、开箱即用 | 核心引擎、按需组装 |
编程模型 | 响应式必须 | 响应式可选 |
配置复杂度 | 高(功能多) | 低(简洁) |
学习曲线 | 陡 | 平缓 |
核心优势 | 工程化完备 | 灵活定制 |
关键洞察:Solon 的"克制"体现在:
▪ 1.2 为什么选择克制?
在企业级开发中,"开箱即用"往往是双刃剑:
❌ 功能完备的代价:
✅ 克制的价值:
二、核心架构:引擎 + 技能包
▪ 2.1 AI Core Engine
Solon 的核心引擎极其精简:
// 核心只需要三步 // 1. 定义模型 ChatModel model = ChatModel.of( ModelConfig.of() .type("openai") .apiKey("sk-xxx") .model("gpt-4") ); // 2. 定义工具 @Component public class MyTools { @ToolMapping(name="calculate") public double calculate(String expr) { return eval(expr); } } // 3. 使用 String response = model.chat("计算 1+1");
核心引擎提供:
ChatModel:统一的大模型接口@ToolMapping:工具定义注解AiContext:上下文管理▪ 2.2 可插拔技能包
Solon 的能力通过模块化技能包提供:
solon-ai-core #核心引擎(必须) ├── solon-ai-rag #RAG知识库(可选) ├── solon-ai-flow #工作流编排(可选) ├── solon-ai-skills #技能包系统(可选) ├── solon-ai-agent #智能体(可选) ├── solon-ai-mcp #MCP协议(可选) └── solon-ai-acp #ACP协议(可选)
按需引入示例:
<!-- 只需要基础 LLM 调用 -->
<dependency>
<groupId>org.noear</groupId>
<artifactId>solon-ai</artifactId>
</dependency>
<!-- 需要智能体 -->
<dependency>
<groupId>org.noear</groupId>
<artifactId>solon-ai-agent</artifactId>
</dependency>
<!-- 需要 RAG -->
<dependency>
<groupId>org.noear</groupId>
<artifactId>solon-ai-rag</artifactId>
</dependency>
▪ 2.3 技能包系统
Solon 的"技能"概念与 LangChain 或 Claude Skill 不同:
Solon Skill:
@Component public class DataAnalysisSkills { @ToolMapping(name="analyze_numbers") public Map analyzeNumbers(List numbers) { // 分析逻辑 return result; } @ToolMapping(name="sort_numbers") public List sortNumbers(List numbers, boolean asc) { // 排序逻辑 return sorted; } } // 智能体自动继承所有 @ToolMapping 方法
三、核心特性深度剖析

▪ 3.1 极简的 ReAct Agent
@Component public class MyAgent { @Inject private ChatModel chatModel; @ToolMapping(name="calculate") public double calculate(String expr) { return eval(expr); } public String runReActAgent(String query) { AiContext context = new AiContext(); context.systemPrompt("你是使用 ReAct 模式的助手"); context.addUserMessage(query); // Solon 自动处理工具调用 return chatModel.chat(context); } }

对比 AgentScope Java:
// AgentScope Java 需要更多配置 ReActAgent agent = ReActAgent.builder() .name("助手") .sysPrompt("...") .model(new QwenConfig("qwen-plus")) .tools(Arrays.asList("tool1", "tool2")) .build();
Solon 的简洁性:
▪ 3.2 灵活的工具定义
@Component public class CustomTools { // 基础工具 @ToolMapping(name="get_time") public String getTime() { return LocalDateTime.now().toString(); } // 带参数的工具 @ToolMapping(name="search", description="搜索网络") public String search(@Param("query") String query) { return searchEngine.search(query); } // 复杂返回类型 @ToolMapping(name="analyze", description="数据分析") public Map analyze(String data) { Map result = new HashMap<>(); result.put("length", data.length()); result.put("words", data.split("\\s+").length); return result; } }
工具权限控制(Solon 的强项):
# application.yml solon: ai: tools: permissions: calculate: # 工具名 enabled: true max-usage: 100 # 最多调用 100 次 timeout: 5000 # 超时 5 秒 file-read: enabled: true allowed-paths: # 白名单 - /home/user/docs/* - /tmp/* denied-paths: # 黑名单 - /etc/* - /root/*
Solon 提供了 18+ 细粒度权限控制,这在生产环境至关重要。
▪ 3.3 流式响应
public void streamResponse(String query) { AiContext context = new AiContext(); context.addUserMessage(query); ChatRequest request = ChatRequest.of(context); // 流式处理 chatModel.chatStream(request, (chunk) -> { System.out.print(chunk.getContent()); }); }
▪ 3.4 Team 智能体协作
TeamAgent team = new TeamAgent(); team.addMember(researcher); team.addMember(coder); team.setCoordinator(moderator); // 团队协作 team.solve("研究 React 并创建示例");
与 AgentScope Java 的对比:
特性 | AgentScope Java | Solon AI Harness |
|---|---|---|
多智能体模式 | Supervisor 模式 | Team 模式 |
配置方式 | 声明式(Markdown) | 编程式(Java) |
协作模式 | Blocking/Non-blocking | 统一编程模型 |
▪ 3.5 嵌入能力
这是 Solon 最大的优势:
// 无需启动 Solon 应用,直接使用 public class MyService { private ChatModel aiModel = ChatModel.of(config); public String analyze(String text) { return aiModel.chat("分析: " + text); } }
可以嵌入:
四、JDK 8+ 的价值
▪ 4.1 为什么 JDK 8 很重要?
企业现实:
Solon 的优势:
// Solon 在 JDK 8 上完美运行 // 无需升级 JDK // 同时也支持新特性 // - JDK 11: 模块化 // - JDK 17: Records // - JDK 21: Virtual Threads
▪ 4.2 广泛的兼容性
JDK 版本 | Solon 支持 | AgentScope Java |
|---|---|---|
8 | ✅ | ❌ |
11 | ✅ | ❌ |
17 | ✅ | ✅ |
21 | ✅ | ✅ |
25/26 | ✅ | ⚠️ |
五、适用场景
▪ 5.1 最佳场景
✅ 嵌入现有 Java 应用
✅ 传统 Java 项目
✅ 追求灵活定制
✅ JDK 8-15 环境
▪ 5.2 需要权衡的场景
⚠️ 纯 Serverless
⚠️ 需要可视化监控
⚠️ 复杂的工程化需求
六、与 AgentScope Java 的选择
▪ 6.1 决策树
JDK 版本? ↓ < 17? → Solon AI Harness ↓ ≥ 17? ↓ 需要 GraalVM? ↓ 是 → AgentScope Java ↓ 否 ↓ 追求灵活定制? ↓ 是 → Solon AI Harness ↓ 否 → AgentScope Java
▪ 6.2 场景化选择
场景 | 推荐 | 理由 |
|---|---|---|
嵌入现有 Spring Boot | Solon | 轻量、兼容性好 |
Serverless 部署 | AgentScope Java | GraalVM 支持 |
JDK 8 环境 | Solon | 唯一选择 |
需要完整工程化 | AgentScope Java | Hook 系统完备 |
追求灵活定制 | Solon | 按需组装 |
响应式团队 | AgentScope Java | Reactor 必须 |
传统 Java 团队 | Solon | 学习曲线平缓 |
七、总结
Solon AI Harness 的核心价值:
不是功能最全的,而是最灵活的
核心优势:
设计权衡:
适用定位: 轻量灵活可嵌入的引擎式框架
如果你的场景是嵌入现有 Java 应用、JDK 8 环境、或者追求极致的灵活定制,Solon AI Harness 是理想选择。但如果你需要开箱即用的企业级能力或 GraalVM 支持,AgentScope Java 可能更合适。
我最近在一个 JDK 8 的 Spring Boot 项目里嵌入 Solon AI,从添加依赖到第一个 AI 功能上线只花了半天,完全不用改造现有架构。
https://github.com/opensolon/solon-ai
https://github.com/helloworldtang/harness-framework-tutorials