agentscope-harness vs solon-ai-harness:Java 智能体「马具引擎」的双雄对决

2026 年,Java AI 智能体开发领域正在经历一场「运行时层」的竞赛。阿里系的 AgentScope Java 和杭州无耳的 Solon AI 框架,分别交出了各自对「AI Agent Harness」的理解答卷。本文从架构设计、功能覆盖、开发者体验三个维度,对两者进行深度对比分析。

一、背景:什么是「Harness」?

在 AI Agent 开发中,Harness(马具/套件) 是一个承上启下的概念。业界目前有两个极具启发性的定义:

  • 公式定义Agent = Model + Harness。模型提供推理,而 Harness 提供落地执行的实体。
  • 硬件类比:Model 是 CPU(计算核心),Context 是内存(瞬时寻址),而 Harness 则是操作系统(资源调度与环境隔离)。

没有 Harness 的 Agent 就像一个漂浮在大脑中的灵魂------虽然能思考,但无法稳定地感知物理世界、无法受控地操作工具,更无法在复杂的长程任务中保持状态。

框架 所属生态 Harness 模块名 底层框架要求
AgentScope Java 阿里巴巴 / AgentScope AI agentscope-harness JDK 17+,独立运行
Solon AI 无耳科技 / OpenSolon solon-ai-harness JDK 8+,可嵌入任意框架

二、架构设计对比

2.1 agentscope-harness:单体式「全副武装」运行时

AgentScope 的 Harness 模块定位非常清晰------一个功能完备的智能体增强运行时 。核心类 HarnessAgent 实现了 AgentStateModule 双接口,通过委托模式包装底层的 ReActAgent

模块结构(9 大子系统):

bash 复制代码
io.agentscope.harness.agent/
├── filesystem/        # 文件系统抽象(本地/远程/沙箱三种模式)
├── hook/              # 生命周期钩子(8+ 内置 Hook)
├── memory/            # 记忆管理(刷盘、压缩、合并)
├── sandbox/           # 沙箱运行环境(Docker 隔离)
├── session/           # 会话持久化
├── store/             # 命名空间存储
├── subagent/          # 子智能体编排
├── tool/              # 内置工具集(文件/Shell/记忆)
└── workspace/         # 工作区管理

设计哲学: 「大而全,开箱即用」。HarnessAgent 的 Builder 模式暴露了 30+ 配置项,从文件系统到子智能体编排,从记忆压缩到沙箱管理,一应俱全。开发者可以用最少的代码构建一个生产级的智能体。

java 复制代码
HarnessAgent agent = HarnessAgent.builder()
    .name("MyAgent")
    .model("openai:gpt-5.5")          // 字符串模型 ID
    .workspace("/path/to/workspace")  // 工作区路径
    .enablePlan()                     // 启用计划本
    .compaction(CompactionConfig.builder().triggerMessages(20).build())
    .filesystem(SandboxFilesystemSpec.builder()  // 沙箱文件系统
        .client(dockerClient).build())
    .subagent(SubagentSpec.builder()  // 子智能体
        .name("researcher").build())
    .build();

2.2 solon-ai-harness:引擎式「克制而有力」运行时

Solon 的 Harness 模块同样是一个完整自包含的智能体编排与执行引擎 ,核心类 HarnessEngine 以 Builder 模式构建,整合了主代理、子代理、技能池、MCP 网关、REST API、HITL 安全审计等全套能力。

模块结构与依赖包能力全图:

perl 复制代码
solon-ai-harness 核心模块
│
├── HarnessEngine.java          # 马具引擎核心(Builder 模式,组装主代理/子代理)
├── HarnessProperties.java      # 统一配置属性(models/tools/skillPools/mcpServers...)
├── HarnessExtension.java       # 扩展接口(自由定制代理行为)
├── agent/
│   ├── AgentDefinition.java    # 代理定义(支持 Markdown YAML Frontmatter 解析)
│   ├── AgentFactory.java       # 代理工厂(权限矩阵 + 工具装配)
│   ├── AgentManager.java       # 代理管理器(注册/加载/扫描 agents 目录)
│   ├── TaskSkill.java          # 子代理技能(task/multitask 工具)
│   └── GenerateTool.java       # 动态代理生成工具
├── code/
│   └── CodeSkill.java          # 代码工程规约技能(技术栈识别)
├── hitl/
│   └── HitlStrategy.java       # 人工介入策略(bash 安全审计规则)
└── permission/
    └── ToolPermission.java     # 工具权限枚举(18+ 细粒度权限)

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Maven 依赖包及其提供的能力:
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

┌─ solon-lib(Solon 基础运行时)
│  └── 依赖注入、配置、AOP 等核心能力
│
├─ solon-ai-agent(传递引入 solon-ai-core)
│  ├── ReActAgent / SimpleAgent / TeamAgent(推理-行动代理体系)
│  ├── ChatModel / ChatConfig(LLM 调用核心接口)
│  ├── @ToolMapping / @Param(工具声明注解)
│  ├── Skill / AbsSkill(技能抽象体系)
│  ├── SummarizationInterceptor(上下文摘要拦截器)
│  └── AgentSession 会话管理
│
├─ solon-ai-skill-cli(终端操作技能包)
│  ├── TerminalSkill:bash, read, write, edit, glob, grep, ls
│  └── ExpertSkill:skill 技能调用、技能发现
│
├─ solon-ai-skill-web(联网技能包)
│  ├── WebsearchTool(联网搜索)
│  ├── WebfetchTool(网页内容抓取)
│  └── CodeSearchTool(代码仓库搜索)
│
├─ solon-ai-skill-lsp(语言服务协议技能包)
│  ├── LspManager(LSP 服务器生命周期管理)
│  └── LspSkill(代码诊断、符号导航等 IDE 级能力)
│
├─ solon-ai-skill-restapi(REST API 技能包)
│  └── RestApiSkill(解析 OpenAPI 文档,动态生成 REST 调用工具)
│
├─ solon-ai-skill-toolgateway(工具网关技能包)
│  └── ToolGatewaySkill(MCP Server 能力桥接为 Agent 工具)
│
└─ solon-serialization-snack4(JSON 序列化)

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
可选扩展模块(按需引入,不内嵌于 harness):
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

┌─ solon-ai-skill-memory(长期记忆 + 心智模型)  ← 重点
│  ├── MemSkill(5 大核心操作:提取/搜索/召回/巩固/修剪)
│  ├── RedisClient KV 存储 + Lucene 语义索引
│  ├── 基于重要性的动态 TTL 过期策略
│  └── 心智模型自动注入(作为 Agent "前意识")
│
├─ solon-ai-skill-diff(文本差异对比)
├─ solon-ai-skill-lucene(Lucene 搜索技能)
├─ solon-ai-skill-mail / pdf / data / file / ...(更多生态技能)
└─ HarnessExtension SPI 插件(~/.soloncode/extensions/ 目录)

设计哲学: 「克制而有力」。不追求一个大而全的 Builder 类堆砌 30+ 配置项,而是通过 HarnessProperties 统一配置 + HarnessEngine 核心编排 + 各专能模块协作的方式,保持每个类的职责单一。依赖包按能力域清晰拆分(cli / web / lsp / restapi / toolgateway / memory),开发者可按需引入。同时,通过 HarnessExtension 扩展点和 CommandRegistry 命令注册表,提供极强的可定制性。

java 复制代码
// 配置属性
HarnessProperties props = new HarnessProperties(".solon/");
props.addTools(ToolPermission.TOOL_ALL_FULL);
props.setWorkspace("/path/to/workspace");
props.setSandboxMode(true);
props.setHitlEnabled(true);

// 构建引擎
HarnessEngine engine = HarnessEngine.of(props)
        .sessionProvider(sessionProvider)
        .build();

// 使用主代理
engine.prompt("分析当前项目的技术栈")
        .session(session)
        .options(o -> {
            o.toolContextPut(HarnessEngine.ATTR_CWD, "/path/to/project");
        })
        .call();

2.3 架构哲学对比

维度 agentscope-harness solon-ai-harness
设计理念 单体式增强运行时,单一 Builder 类 引擎式编排框架,Properties + Engine + 模块协作
最低 JDK 17+(使用 sealed class、record 等新语法) 8+(兼容性更广,覆盖信创国产化场景)
核心抽象 HarnessAgent(30+ Builder 配置项) HarnessEngine(引擎核心)+ HarnessProperties(配置)
文件系统 内置 3 种模式(本地/远程/沙箱) 本地文件系统 + 沙箱模式(sandboxMode 开关)
响应式 基于 Project Reactor(Mono/Flux) 基于 Project Reactor(stream() 流式输出)
学习曲线 较陡(30+ Builder 配置项) 中等(配置驱动 + 清晰的模块边界)
核心依赖 agentscope-core solon-ai-agent、solon-ai-skill-* 系列模块

三、核心功能深度对比

3.1 工作区管理(Workspace)

agentscope-harness 的工作区管理极为丰富:

  • 自动加载 AGENTS.mdMEMORY.mdKNOWLEDGE.md 等上下文文件
  • 支持自定义额外上下文文件(如 SOUL.mdPREFERENCE.md
  • WorkspaceManager 统一管理文件系统的所有读写操作
  • Token 预算控制(maxContextTokens,默认 8000)
  • 三种文件系统后端:本地、远程、Docker 沙箱

solon-ai-harness 的工作区管理有完整的目录结构约定:

bash 复制代码
{harnessHome}/
├── sessions/     # 会话存储(支持 FileAgentSession 持久化)
├── skills/       # 技能定义(Markdown 格式)
├── agents/       # 子代理定义(Markdown + YAML Frontmatter)
├── memory/       # 主代理记忆
├── commands/     # 自定义命令
├── download/     # 下载缓存
└── channels/     # 连接通道
  • 配置加载有明确的优先级链:资源文件 → 工作区配置 → 用户目录配置 → 程序旁边配置
  • 系统提示词通过 AGENTS.md 文件定义,支持工作区和用户目录两级配置
  • 会话支持 FileAgentSession 持久化,可在 ~/.soloncode/sessions/ 下跨会话恢复

3.2 安全机制(Sandbox & HITL)

agentscope-harness 在沙箱方面投入巨大:

  • 完整的 Docker 沙箱生命周期管理(SandboxManagerSandboxLifecycleHook
  • 分布式沙箱支持(SandboxDistributedOptions),跨实例的状态恢复
  • 基于 Redis 的执行守卫(RedisSandboxExecutionGuard
  • 工作区快照(SandboxSnapshotSpec),支持归档提取和恢复

solon-ai-harness 采用了「沙箱模式 + HITL 安全审计」的双重安全策略:

  • 沙箱模式sandboxMode):终端操作在受限模式下运行,禁止绝对路径、系统目录删除、网络配置修改等危险操作
  • HITL 人工介入HitlStrategy):对 bash 命令进行多层安全审计------
    • 命令注入防御(拦截反引号、$(...)、设备重定向)
    • 系统级安全(拦截 sudo/chown/chmod/kill/reboot)
    • 路径边界(禁止 ../ 回溯和敏感目录访问)
    • 包管理变更拦截(install/remove/commit)
    • 网络行为拦截(curl/wget/ssh)
    • 管道安全限制(只允许只读工具链)
    • 文件操作拦截(递归删除 rm -rf 和文件移动 mv)
  • 通过 HITLInterceptor 拦截器实现,可在引擎构建时自定义拦截规则

3.3 上下文摘要与会话管理(Context Engineering)

agentscope-harness 的记忆系统是一大亮点:

  • 三层记忆架构 :短期记忆 + 长期记忆 + 工作区记忆(MEMORY.md
  • 自动刷盘MemoryFlushHook 在模型调用前后自动将记忆持久化到工作区
  • 智能压缩CompactionHook 在上下文溢出时自动触发对话压缩
  • 紧急恢复:上下文溢出时自动降低阈值强制压缩并重试
  • 工具结果驱逐ToolResultEvictionHook 将超大工具输出卸载到文件系统

solon-ai-harness 的上下文工程体系同样完善:

  • SummarizationInterceptor (摘要拦截器):当 Token 接近上限时自动触发摘要压缩
    • 采用 CompositeSummarizationStrategy 组合策略:
      • KeyInfoExtractionStrategy:提取关键信息("去水")
      • HierarchicalSummarizationStrategy:分层滚动更新摘要
    • 可配置 summaryWindowSize(默认 30)和 summaryWindowToken(默认 30000)
    • 支持独立的摘要模型(summaryModel),可使用更便宜的模型执行摘要任务
  • AgentSessionProvider :会话持久化接口,支持自定义实现
    • 内置 InMemoryAgentSession(内存会话)
    • 内置 FileAgentSession(文件持久化会话,支持断点续传)
  • sessionWindowSize(默认 8):控制短期工作记忆窗口大小
  • autoRethink(自我反思):Agent 在达到步数上限时可自动反思并扩展

此外,solon-ai-harness 还可通过引入 solon-ai-skill-memory 模块获得长期记忆与心智模型能力,形成"短期摘要 + 长期心智"的双层记忆架构。详见第 3.8 节。

3.4 子智能体编排(Subagent)

agentscope-harness 的子智能体系统非常成熟:

  • 声明式子智能体(通过 subagents/*.md 文件定义)
  • 叶子节点保护(子智能体不能递归生成子智能体)
  • 后台执行和会话持久化
  • 模型覆盖(子智能体可独立指定模型)

solon-ai-harness 的子智能体编排同样功能完备:

  • TaskSkill :内置 taskmultitask 两个工具

    • task:委派单一任务给专项子代理(串行执行)
    • multitask:并行执行多个互不依赖的子任务
  • AgentDefinition :支持 Markdown + YAML Frontmatter 格式定义子代理

    markdown 复制代码
    ---
    name: code_reviewer
    description: 代码审查专家
    tools:
      - read
      - grep
      - bash
    maxTurns: 10
    ---
    你是一个资深的代码审查专家...
  • AgentManager :代理管理器,支持多级代理池(全局 ~/.soloncode/agents/ + 本地 {workspace}/.soloncode/agents/

  • GenerateTool:运行时动态创建子代理并持久化到文件

  • AgentFactory :根据 AgentDefinition 自动构建 ReActAgent,独立配置工具权限和步数

  • 子代理支持独立的工具权限隔离(上下文隔离)

3.5 工具体系(Tools)

agentscope-harness 的内置工具:

  • 文件操作工具(读/写/搜索)
  • Shell 执行工具
  • 记忆搜索/获取工具
  • 会话搜索工具

solon-ai-harness 拥有极为丰富的工具体系,18+ 细粒度权限控制:

权限 说明
read 读取文件完整内容
write 写入文件完整内容
edit 修改文件内容(含 read+write+edit)
bash 运行 Shell 命令
glob 使用模式匹配查找文件
grep 基于正则表达式的全文检索
ls/list 列出目录内容
webfetch 抓取网页内容
websearch 互联网搜索
codesearch 代码仓库搜索
skill 调用预定义的专家技能模块
code 编码指导模块
todo 任务清单管理
mcp MCP 服务工具
restapi REST API 工具
task 调度子代理
generate 动态创建子代理
hitl 人工介入拦截
lsp LSP 语言服务协议集成
* 全部公开工具
** 全部工具(含私有)

此外还具备:

  • CliSkillProvider :技能池管理器,支持多级技能池(@global@local@skills@skillhub
  • CodeSkill:代码工程规约技能,自动识别技术栈(Maven/Node),生成构建与测试指令
  • LspSkill:LSP 语言服务协议集成,支持代码诊断、类型信息等 IDE 级别的能力
  • ToolGatewaySkill(MCP 网关):动态加载 MCP Server 工具
  • RestApiSkill:将 REST API 作为 Agent 工具调用
  • CommandRegistry:自定义命令注册表

3.6 生命周期与拦截器

agentscope-harness 内置 8+ 个生产级钩子(Hooks):

Hook 功能
AgentTraceHook 智能体推理和工具执行的链路追踪
CompactionHook 对话上下文自动压缩
MemoryFlushHook 记忆自动刷盘
MemoryMaintenanceHook 记忆维护和合并
SandboxLifecycleHook 沙箱生命周期管理
SessionPersistenceHook 会话自动持久化
SubagentsHook 子智能体编排调度
ToolResultEvictionHook 工具结果自动驱逐
WorkspaceContextHook 工作区上下文注入

所有钩子都可以通过 disable*() 方法独立禁用。

solon-ai-harness 采用「内置拦截器 + 自由扩展」双层架构:

  • SummarizationInterceptor:上下文摘要拦截器,基于组合策略自动压缩
  • HITLInterceptor:人工介入拦截器,对高危工具调用进行安全审计
  • 拦截器可在引擎构建时通过 Builder 注入自定义实现
  • HarnessExtension 扩展点 :通过 addExtension() 自由扩展引擎行为(详见第 3.9 节)

3.7 协议支持

协议 agentscope-harness solon-ai-harness
MCP(工具集成) ✅ 通过 agentscope-core ToolGatewaySkill(MCP 网关)
ACP(Agent 协作协议) ❌ 未内置 ✅ 支持 stdio/WebSocket 传输
REST API 集成 ❌ 未内置 RestApiSkill
LSP(语言服务协议) ❌ 未内置 LspSkill + LspManager
A2A(多智能体协作) ✅ agentscope-extensions-nacos-a2a 通过 ACP 协议实现
OpenTelemetry ✅ 可插拔 Tracer SPI ✅ 通过 Solon 可观测插件

3.8 长期记忆与心智模型:solon-ai-skill-memory

前面提到 agentscope-harness 拥有令人印象深刻的三层记忆架构。solon-ai-harness 虽然没有将记忆模块内嵌为必须依赖,但通过可选引入 solon-ai-skill-memoryorg.noear:solon-ai-skill-memory,v3.9.5+),提供了另一种更具启发性的记忆范式------心智模型(Mental Model)

核心设计理念:不是简单地「存储和检索」,而是模拟人类认知过程,让 Agent 拥有「提取 → 搜索 → 召回 → 巩固 → 修剪」的完整认知循环。

五大核心操作(通过 @ToolMapping 暴露为 Agent 工具):

操作 方法名 说明
提取 mem_extract 将事实、偏好或进度存入心智模型。若同名 Key 已存在,返回旧记录触发"认知对比"反思
语义搜索 mem_search 通过自然语言描述在心智模型中寻找相关记忆碎片
精确召回 mem_recall 通过 Key 获取该认知条目的完整细节
认知巩固 mem_consolidate 将多个低层事实碎片整合为高层偏好模型(importance 自动设为 10,永久存储)
认知修剪 mem_prune 删除错误、重复或过时的认知

基于重要性的动态 TTL 过期策略

重要性评分(importance) TTL 说明
≥ 10 永久存储(-1) 生命周期关键点
5 ~ 9 30 天 核心规约、行为偏好
1 ~ 4 7 天 琐碎事实、临时细节

两层存储架构

层级 技术 职责
KV 存储 RedisClient 主存储,结构化记忆数据,基于 importance 的 TTL 物理过期
语义索引 Lucene(或向量数据库) 多租户隔离的语义检索,支持模糊/自然语言搜索

心智模型自动注入 :这是最精妙的设计。MemSkill 覆写了 AbsSkill.getInstruction(Prompt) 方法,在每次对话开始前自动注入高价值"热记忆"作为 Agent 的"前意识"------不需要 Agent 主动调用工具检索,心智模型已经在它的"潜意识"中了。

java 复制代码
// 集成示例(solon-ai-skill-memory 为可选依赖)
MemSearchProvider memSearch = new MemSearchProviderLuceneImpl();
MemSkill memSkill = new MemSkill(redisClient, memSearch);

// 通过 HarnessExtension 注入到引擎
props.addExtension((agentName, builder) -> {
    builder.defaultSkillAdd(memSkill);
});

对比 agentscope-harness 的记忆系统

维度 agentscope-harness solon-ai-skill-memory
架构方式 内嵌必须依赖 可选引入,按需加载
存储后端 文件系统(MEMORY.md)+ 可选长期记忆 Redis + Lucene 双层
记忆生命周期 刷盘 + 压缩 + 合并 提取 + 搜索 + 召回 + 巩固 + 修剪
过期策略 无自动过期 基于重要性的动态 TTL
认知模型 有(心智模型 + 自动注入前意识)
多租户 有(userId 隔离)

3.9 自由扩展:addExtension 机制

如果说 agentscope-harness 的扩展方式是「在 Builder 中预设所有选项」,那么 solon-ai-harness 的 addExtension 则提供了编程式的无限扩展可能

HarnessExtension 接口定义 (v3.10.4+,@Preview):

java 复制代码
@Preview("3.10")
public interface HarnessExtension {
    /**
     * 配置代理
     * @param agentName 当前代理名称(主代理为 "__main__")
     * @param agentBuilder ReActAgent.Builder 实例,可自由定制
     */
    void configure(String agentName, ReActAgent.Builder agentBuilder);
}

这个接口极为简洁------只有一个方法。但正是这种简洁,赋予了它无限的组合可能。

三种注册方式

java 复制代码
// 方式一:编程式注册(最直接)
HarnessProperties props = new HarnessProperties(".solon/");
props.addExtension((agentName, builder) -> {
    // 添加自定义工具
    builder.defaultToolAdd(myCustomTool);
    // 添加自定义技能
    builder.defaultSkillAdd(mySkill);
    // 添加生命周期拦截器
    builder.defaultInterceptorAdd(new ReActInterceptor() {
        @Override
        public void onAgentStart(ReActTrace trace) {
            System.out.println("任务要开始了...");
        }
        @Override
        public void onReason(ReActTrace trace, AssistantMessage message) {
            System.out.println("又思考了...");
        }
        @Override
        public ChatResponse interceptCall(ChatRequest req, CallChain chain) throws IOException {
            System.out.println("要调用工具了...");
            return chain.doIntercept(req);
        }
    });
});

// 方式二:YAML 配置声明
// config.yml:
// soloncode:
//   extensions:
//     - "com.example.MyExtension"

// 方式三:Solon SPI 自动装配(推荐,即插即用)
// 1. 实现 HarnessExtension 接口
// 2. 创建 Plugin 类注册到 Solon 容器
// 3. 在 META-INF/solon/ 下声明 SPI
// 4. JAR 包放入 ~/.soloncode/extensions/ 目录

通过 Extension 可操作的 Agent Builder 能力

方法 能力
defaultToolAdd(Tool) 添加自定义工具
defaultSkillAdd(Skill) 添加自定义技能
defaultInterceptorAdd(ReActInterceptor) 添加生命周期拦截器
systemPrompt(Function) 设置/覆盖系统提示词
maxSteps(int) 设置最大推理步数
autoRethink(boolean) 启用/禁用自我反思
sessionWindowSize(int) 设置会话窗口大小
defaultToolContextPut(String, Object) 注入工具上下文变量

关键设计细节:每个代理创建时(包括主代理和所有子代理),所有注册的 Extension 都会被逐一调用。这意味着你可以:

  • 为所有代理统一注入日志/审计拦截器
  • 为特定代理注入专项工具
  • 动态调整不同代理的行为参数

与 agentscope-harness 的对比

维度 agentscope-harness solon-ai-harness
扩展方式 Builder 预设选项 + Hook SPI HarnessExtension 接口 + SPI 自动装配
扩展粒度 Agent 级别 代理级 + 全局级(按 agentName 区分)
工具注入 构建时固定 运行时动态
第三方插件 需手动集成 JAR 包放入 extensions/ 即插即用

四、模型管理与多模型支持

agentscope-harness

  • 通过字符串模型 ID 指定模型(如 "openai:gpt-5.5"
  • 子智能体可独立指定模型

solon-ai-harness 的模型管理更加灵活:

  • HarnessProperties 支持配置多个 ChatConfigList<ChatConfig> models
  • 支持运行时动态切换主模型:engine.switchMainModel("gpt-5.5")
  • 通过 getModelOrMain(name) 方法按名称获取模型
  • 支持独立的摘要模型(summaryModel),可用更便宜的模型执行摘要任务
  • 模型支持重试配置(modelRetries)、API 重试(apiRetries)、MCP 重试(mcpRetries
  • 支持 UserAgent 统一配置

五、开发者体验对比

5.1 上手难度

agentscope-harness

  • 优势:一个 Builder 搞定所有配置,文档齐全
  • 挑战:30+ 配置项的选择困难,概念较多(IsolationScope、NamespaceFactory 等)
  • 适合:需要快速搭建复杂 Agent 的团队,阿里云生态用户

solon-ai-harness

  • 优势:配置驱动(HarnessProperties),API 直觉化(engine.prompt("...").call()
  • 挑战:需了解 Solon 框架基础概念
  • 适合:需要定制化 Agent 的团队,企业级开发场景

5.2 部署与兼容性

维度 agentscope-harness solon-ai-harness
JDK 版本 17+(强制) 8 ~ 25(全兼容)
GraalVM 原生镜像 支持 支持(Solon 原生支持)
信创国产化 需适配 天然支持(国产框架)
启动速度 一般(Reactor 依赖链) 极快(Solon 内核 0.3m)
内存占用 中等 低(Solon 节省 50%)
代码体积 大(9 大子系统) 中等(引擎式精简)

5.3 实战验证

agentscope-harness:阿里巴巴内部大规模使用,经过 AgentScope 生态的实战打磨。

solon-ai-harness :已在 SolonCode CLI 项目中经过了三个月的深度打磨与实战验证。SolonCode CLI 完全基于 solon-ai-harness 构建,是框架能力的最佳实战证明------支持 CLI 交互、Web 界面、ACP 协议三种运行模式。

六、代码风格对比:同一场景的不同写法

场景:创建一个带工作区、会话和安全的智能体

agentscope-harness 写法:

java 复制代码
HarnessAgent agent = HarnessAgent.builder()
    .name("CodeReviewer")
    .model("openai:gpt-5.5")
    .sysPrompt("你是一个代码审查专家。")
    .workspace("/project/code-review")
    .compaction(CompactionConfig.builder()
        .triggerMessages(20).build())
    .longTermMemory(redisLongTermMemory)
    .longTermMemoryMode(LongTermMemoryMode.BOTH)
    .enablePlan()
    .build();

Msg response = agent.call(
    Msg.userMsg("请审查这个 PR"),
    RuntimeContext.builder()
        .sessionId("review-001")
        .userId("user-123")
        .build()
).block();

solon-ai-harness 写法:

java 复制代码
// 1. 配置属性
HarnessProperties props = new HarnessProperties(".solon/");
props.addTools(ToolPermission.TOOL_READ, ToolPermission.TOOL_GREP, 
               ToolPermission.TOOL_BASH);
props.setWorkspace("/project/code-review");
props.setSystemPrompt("你是一个代码审查专家。");
props.setSessionWindowSize(8);
props.setSummaryWindowSize(30);
props.setSandboxMode(true);
props.setHitlEnabled(true);
props.addModel(ChatConfig.of("openai:gpt-5.5").build());

// 2. 会话提供者
AgentSessionProvider sessionProvider = 
    sessionId -> new FileAgentSession(sessionId, "/project/.solon/sessions/" + sessionId);

// 3. 构建引擎
HarnessEngine engine = HarnessEngine.of(props)
        .sessionProvider(sessionProvider)
        .build();

// 4. 执行任务
AgentSession session = engine.getSession("review-001");
engine.getMainAgent().prompt("请审查这个 PR")
        .session(session)
        .call();

场景:动态创建一个代码审查子代理

agentscope-harness 写法:

java 复制代码
// 通过配置在 subagents/ 目录下定义,或通过 Builder 添加
HarnessAgent agent = HarnessAgent.builder()
    .subagent(SubagentSpec.builder()
        .name("code_reviewer")
        .model("openai:gpt-4o-mini")
        .build())
    .build();

solon-ai-harness 写法:

java 复制代码
// 方式一:代码动态创建
AgentDefinition definition = new AgentDefinition();
definition.setSystemPrompt("你是一个代码审查专家。");
definition.getMetadata().addTools(ToolPermission.TOOL_READ, ToolPermission.TOOL_GREP);
definition.getMetadata().setMaxSteps(10);

ReActAgent subagent = engine.createSubagent(definition).build();
subagent.prompt("审查 src/main/java 目录下的代码")
        .session(session)
        .call();

// 方式二:通过 Markdown 文件定义(agents/code_reviewer.md)
// 方式三:通过 GenerateTool 让 AI 动态创建

七、选型建议

选 agentscope-harness 的场景:

  1. 重度 Docker 隔离需求:需要完整的容器化沙箱、分布式会话管理
  2. 阿里云生态用户:与 DashScope、百炼等服务深度集成
  3. 三层记忆架构:需要短期/长期/工作区三层记忆管理和语义搜索
  4. 快速原型验证:一个 Builder 搞定所有,适合快速验证想法

选 solon-ai-harness 的场景:

  1. 信创国产化项目:需要国产框架,兼容 JDK 8 老系统
  2. 已有 Solon 项目:零迁移成本,无缝集成
  3. 追求轻量与高性能:对启动速度和内存有严格要求(微服务、Serverless)
  4. 需要 REST API/LSP/ACP 集成:框架内置这些能力,无需额外开发
  5. 多模型动态切换:运行时灵活切换不同模型
  6. 细粒度工具权限控制:18+ 权限项,精确控制 Agent 能力边界
  7. 定制化 CLI/Web/协议智能体:已有 SolonCode CLI 作为实战参考

共存场景:

对于大型企业,两者并不冲突:

  • 新项目(JDK 17+,阿里云部署,Docker 隔离需求强)可用 agentscope-harness
  • 老项目改造(JDK 8,信创要求,轻量级需求)可用 solon-ai-harness
  • 通过 ACP/A2A 等协议,两个框架的 Agent 可以互相发现和调用

八、总结

维度 agentscope-harness solon-ai-harness
功能完备性 ⭐⭐⭐⭐⭐ ⭐⭐⭐⭐⭐
架构复杂度
上手难度 中高
JDK 兼容性 17+ 8 ~ 25
沙箱隔离 ⭐⭐⭐⭐⭐(Docker 级) ⭐⭐⭐⭐(策略级)
工具丰富度 ⭐⭐⭐⭐ ⭐⭐⭐⭐⭐(18+ 权限)
上下文工程 ⭐⭐⭐⭐⭐(三层记忆) ⭐⭐⭐⭐⭐(组合策略摘要 + 可选心智模型)
长期记忆 ⭐⭐⭐⭐(内置) ⭐⭐⭐⭐⭐(solon-ai-skill-memory,动态 TTL + 认知巩固)
协议支持 ⭐⭐⭐⭐ ⭐⭐⭐⭐⭐(MCP/ACP/REST/LSP)
模型管理 ⭐⭐⭐ ⭐⭐⭐⭐⭐(多模型动态切换)
可扩展性 ⭐⭐⭐⭐(Hook SPI) ⭐⭐⭐⭐⭐(addExtension + SPI 即插即用)
生产就绪度 高(大厂背书) 高(SolonCode CLI 验证)

一句话总结:

agentscope-harness 是一座装备齐全的军事堡垒------Docker 沙箱、三层记忆、分布式会话,重型场景一应俱全。solon-ai-harness 是一台精密的组合机床------18+ 工具权限、MCP/ACP/REST/LSP 四协议集成、多模型动态切换、心智模型可选加载、addExtension 无限扩展,灵活而强大。

两者代表了 Java AI 智能体运行时的两种哲学:深度防护 vs 广度赋能。选择哪个,取决于你的场景------需要 Docker 级隔离选 agentscope,需要协议广覆盖和工具细粒度控制选 solon。但无论如何,Java 开发者在 AI Agent 时代,终于有了真正强大的选择。


本文基于 agentscope-java main 分支和 Solon AI v3.10.5 的公开源码进行分析。

相关推荐
RainCity1 小时前
Java Swing 自定义组件库分享(四)
java·笔记·后端
带刺的坐椅1 小时前
agentscope-harness vs solon-ai-harness:Java 智能体「马具引擎」的双雄对决
java·ai·llm·solon·agentscope·harness
Seven971 小时前
Paxos算法:如何解决分布式系统中的共识问题?
java
铁皮哥2 小时前
【力扣题解】LeetCode 25. K 个一组翻转链表
java·数据结构·windows·python·算法·leetcode·链表
小新同学^O^2 小时前
简单学习 --> 单例模式
java·学习·多线程
Henray20242 小时前
LRU缓存设计与实现
java·面试
爱吃的小肥羊2 小时前
wildAI :全球AI一键直达
aigc·openai·ai编程
甲方大人请饶命2 小时前
SSM-基础
java·数据库·spring
谷雨不太卷3 小时前
Linux基础IO
java·开发语言