Skip to content

Java SDK (superagent-base-java)

基于 AgentScope Java 2.0 的 Java Agent 基座,API 与 Go/Python 基座完全对等。

快速开始

前置条件

  • JDK 17+
  • Maven 3.9+

启动

bash
cd java
mvn spring-boot:run

Docker

bash
docker build -t superagent-java -f java/Dockerfile java/
docker run -p 8890:8890 superagent-java

核心能力

Agent 类型

类型说明类名
chat_model_agentReAct AgentChatModelAgent
supervisor多 Agent 协调者SupervisorAgent
sequential顺序流水线SequentialAgent
parallel并发执行ParallelAgent
workflowDAG 工作流WorkflowAgent
agentloop自主循环AgentLoopAgent

Harness 架构

Java 基座完整实现了 AgentScope Harness 架构:

java
// 使用 HarnessAgentBuilder 构建生产级 Agent
var agent = new HarnessAgentBuilder()
    .name("coder")
    .workspace(Paths.get(".agentscope/workspace"))
    .stateStore(new FileAgentStateStore())
    .memory(new HarnessMemory())
    .compaction(new CompactionManager(80000))
    .skillRepository(new SkillRepository())
    .enablePlanMode()
    .build();

核心组件

组件功能
WorkspaceAGENTS.md + MEMORY.md + tools.json + skills/ + subagents/
AgentStateStore状态持久化(File / Redis)
SessionManager.log.jsonl 会话日志
HarnessMemory双层记忆:短期对话 + 长期 MEMORY.md
CompactionManager上下文压缩 + 溢出检测
ToolResultEviction大结果卸载(>80K)
SubagentManager子 agent 声明 + 同步/后台委派
SandboxManagerDocker 沙箱隔离执行
SkillRepository四层技能加载
PlanModeManager只读思考 + HITL 退出
Channel会话路由 + 并发控制 + SSE 流式

MCP 集成

java
@Autowired
MCPRegistry mcpRegistry;

// 连接 MCP 服务器
mcpRegistry.connect(MCPRegistry.ServerConfig.builder()
    .name("filesystem")
    .endpoint("http://localhost:3000")
    .build());

// 获取客户端
MCPClient client = mcpRegistry.getClient("filesystem");

// 列出工具
List<MCPClient.ToolDefinition> tools = client.listTools();

// 调用工具
MCPClient.ToolCallResult result = client.callTool("read_file", 
    Map.of("path", "/tmp/test.txt"));

Skills 系统

java
@Autowired
SkillManager skillManager;

// 注册本地技能
skillManager.registerLocal("datetime", input -> 
    Map.of("date", LocalDate.now().toString()));

// 从 Hub 安装
skillManager.install("web-search", "1.0.0");

// 调用技能
Map<String, Object> result = skillManager.invoke("datetime", Map.of());

Tool 中间件链

java
import io.superagent.tools.ToolMiddleware;

// 创建中间件
ToolMiddleware.Middleware retry = ToolMiddleware.retry(3, Duration.ofSeconds(1));
ToolMiddleware.Middleware timeout = ToolMiddleware.timeout(Duration.ofSeconds(30));
ToolMiddleware.Middleware cache = ToolMiddleware.cache(Duration.ofMinutes(5));
ToolMiddleware.Middleware log = ToolMiddleware.log(logger);

// 组合中间件
ToolMiddleware.Middleware pipeline = ToolMiddleware.chain(retry, timeout, cache, log);

// 应用到工具调用
ToolMiddleware.ToolInvoker wrapped = pipeline.apply(invoker);

流式事件

java
@Autowired
ChatController chatController;

// SSE 流式对话
Flux<Map<String, Object>> events = chatController.chatStream(
    Map.of("agent_id", "my-agent", "message", "Hello"));

events.subscribe(event -> {
    String type = (String) event.get("type");
    switch (type) {
        case "text" -> System.out.print(event.get("delta"));
        case "tool_call" -> System.out.println("[Calling " + event.get("name") + "]");
        case "done" -> System.out.println("[Done]");
    }
});

上下文注入

java
import io.superagent.context.ContextInjectionMiddleware;

ContextInjectionMiddleware middleware = new ContextInjectionMiddleware(
    true,   // injectTimestamp
    true,   // injectSessionMetadata
    "You are a helpful assistant."  // staticContext
);

// 注入上下文
List<ChatMessage> injected = middleware.inject(messages);

AgentLoop

java
import io.superagent.agents.AgentLoopAgent;

AgentLoopAgent loopAgent = new AgentLoopAgent(
    "loop-1",
    "autonomous-agent",
    chatAgent,
    25  // maxTurns
);

// 自主循环执行
Map<String, Object> result = loopAgent.run(Map.of("message", "Research quantum computing"));

API 端点

所有端点与 Go/Python 基座完全对等:

方法路径说明
POST/api/v2/chat/streamSSE 流式对话
POST/api/v2/chat/resume恢复中断对话
GET/api/v2/chat/interrupt_state查询中断状态
POST/api/v2/chat/abort中止对话
GET/api/v2/agentsAgent 列表
GET/api/v2/conversations会话列表
POST/api/v2/conversations创建会话
GET/api/v2/tools工具列表
GET/api/v2/skills技能列表
GET/api/v2/mcp/serversMCP 服务器列表
GET/health健康检查
GET/ready就绪检查
GET/metricsPrometheus 指标

配置

application.yml

yaml
server:
  port: 8890

superagent:
  agents-dir: configs/agents
  agent:
    max-steps: 10
    timeout-seconds: 120

spring:
  redis:
    url: redis://localhost:6379

Agent YAML

yaml
apiVersion: superagent/v1
kind: Agent
metadata:
  name: my-agent
spec:
  type: chat_model_agent
  model:
    primary: gpt-4o
  system_prompt: "You are a helpful assistant."
  tools:
    - ref: builtin/web_search
    - ref: mcp://filesystem/read_file

依赖

xml
<dependencies>
    <dependency>
        <groupId>io.agentscope</groupId>
        <artifactId>agentscope-harness</artifactId>
        <version>2.0.0-RC3</version>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-webflux</artifactId>
    </dependency>
    <dependency>
        <groupId>io.micrometer</groupId>
        <artifactId>micrometer-registry-prometheus</artifactId>
    </dependency>
</dependencies>

技术栈

组件技术
框架Spring Boot 3.3 + WebFlux
Agent 框架AgentScope Java 2.0.0-RC3
SSE 流式Reactor Flux
RedisSpring Data Redis Reactive
监控Micrometer + Prometheus
构建Maven

Released under the Apache 2.0 License.