1. 概览
本文是对开源项目 agentscope-java(v2.0版本)进行的项目架构分析,以便帮助对该项目进行结构化理解与记忆。
- 项目开源地址:https://github.com/agentscope-ai/agentscope-java
- 项目官网地址:https://java.agentscope.io/v2/zh/docs/index.html
2. 顶层目录结构
1 | agentscope-java/ |
3. 整体分层架构
1 | agentscope-dependencies-bom ← 统一管理所有第三方库版本 |
关键设计原则:
- core 是唯一的基础:所有模块最终依赖
agentscope-core,core 本身零内部依赖 - 扩展模块分组管理:扩展按功能域分组(model / rag / mem / channel / sandbox / scheduler / nacos / skills / protocol),每个分组是一个父 POM
- 扩展声明为 optional:大部分扩展使用
<optional>true</optional>+<scope>provided</scope>,消费者按需引入 - 技术栈:Java 17 + Reactor (响应式) + Jackson + OkHttp + SLF4J
4. 模块职责速览
| 模块 | 定位 | 核心能力 |
|---|---|---|
| agentscope-core | 框架基石 | Agent 模型 (Agent/AgentBase/ReActAgent)、消息系统 (Msg/ContentBlock)、中间件链 (MiddlewareBase)、工具体系 (@Tool/Toolkit)、MCP 协议、权限引擎、RAG 框架、技能系统、AgentState 状态管理、细粒度事件流、链路追踪、凭证管理、优雅停机 |
| agentscope-harness | 增强运行时 | HarnessAgent(生产级 Agent 运行时)、工作区管理 (WorkspaceManager)、沙箱执行 (Docker)、子 Agent 编排 (SubagentDeclaration)、文件系统 (Local/Remote/Sandbox Overlay)、技能策划 (SkillCurator/Promoter/Gate)、内存压缩 (ConversationCompactor)、中间件栈(14 个内置中间件)、Plan Mode 管理 |
| agentscope-extensions | 可选扩展集 | 模型供应商 (5个)、RAG 后端 (5个)、记忆后端 (3个)、通道集成 (6个)、沙箱后端 (4个)、调度器 (2个)、状态存储 (5个)、技能仓库 (3个)、Nacos 集成 (3个)、协议 (A2A/AG-UI/Chat-Web)、Spring Boot Starters (10个)、Micronaut、Quarkus |
| agentscope-distribution | 分发打包 | agentscope (shaded uber-JAR) + agentscope-bom (版本 BOM) |
| agentscope-examples | 示例项目 | Agent 示例 (Builder/Paw/Coding/Data/Claw/BobaTea)、集成示例 (A2A/AG-UI/Micronaut/Quarkus)、多Agent模式 (Handoff/Pipeline/Routing/Skills/Subagent/Supervisor/Workflow) |
5. 核心依赖关系图
1 | agentscope-core (零内部依赖) |
6. 模块详细分析
6.1 agentscope-core — 核心层
内部依赖: 无
核心外部依赖:
| 依赖 | 用途 |
|---|---|
io.projectreactor:reactor-core |
响应式流 (Flux/Mono),用于流式 Agent 响应 |
com.fasterxml.jackson.core:jackson-databind |
JSON 序列化/反序列化 |
com.fasterxml.jackson.datatype:jackson-datatype-jsr310 |
Java 8 日期时间支持 |
com.github.victools:jsonschema-generator |
JSON Schema 生成(工具定义 / 结构化输出) |
com.github.victools:jsonschema-module-jackson |
Jackson 注解的 Schema 生成 |
org.slf4j:slf4j-api |
日志门面 |
com.squareup.okhttp3:okhttp + okhttp-jvm |
HTTP 客户端 |
io.modelcontextprotocol.sdk:mcp |
MCP 协议 SDK |
com.networknt:json-schema-validator |
JSON Schema 校验(工具输入校验) |
org.yaml:snakeyaml |
YAML 解析 |
io.github.bonede:tree-sitter + tree-sitter-bash |
AST 级 Bash 安全检查 |
io.opentelemetry:opentelemetry-api |
链路追踪 |
org.xerial:sqlite-jdbc |
本地工作区索引 |
org.apache.commons:commons-compress |
压缩/解压(沙箱 tar 包) |
redis.clients:jedis (optional) |
Redis 快照后端 |
com.aliyun.oss:aliyun-sdk-oss (optional) |
阿里云 OSS 快照后端 |
包结构 (io.agentscope.core):
1 | agent/ Agent, AgentBase, ReActAgent, CallableAgent, StreamableAgent, ObservableAgent, RuntimeContext |
顶层类 (io.agentscope.core):
ReActAgent— 主 Agent 实现,执行 ReAct 循环(Reasoning → Acting → Summary)Version— 版本信息
v2 核心架构要点
Agent 接口层次:
1 | CallableAgent (interface) — call(Msg) → Mono<Msg> |
ReActAgent 执行循环 (每次迭代: Reasoning → Acting → Summary):
- Reasoning: 通过
onReasoning中间件链 → 调用模型(流式)→ 收集文本/思考/工具调用 - Acting: 通过
onActing中间件链 → 执行工具(并行/串行)→ PermissionEngine 权限检查 - Summary: 构建 AssistantMessage(含工具结果),决定是否继续迭代
循环终止条件:模型停止 / 达 maxIters / 中断 / stopOnReject
中间件系统 (v2 替代旧 Hook 体系):
1 | MiddlewareBase |
细粒度事件系统 (v2,34 种事件类型):
1 | AgentStart / AgentEnd / AgentResult |
状态管理 (v2):
AgentState是核心的运行时状态容器(per-session,per-user 隔离)- 上下文存储在
AgentState.getContext()(List<Msg>),而非独立的 Memory 对象 AgentStateStore负责持久化(InMemory / JsonFile)- 旧
Memory接口标记为@Deprecated
权限系统 (v2 新增):
PermissionEngine— 工具调用权限评估PermissionMode: ALWAYS_ALLOW / EXPLORE / ACCEPT_EDITS / HITL_ONLY / CUSTOMPermissionRule— 允许/拒绝模式匹配- HITL (Human-in-the-Loop) 交互确认
模型解析机制:
ModelRegistry.resolve("openai:gpt-4o")三级解析:已注册实例 → 工厂缓存 → SPI ServiceLoader- 模型供应商模块通过
META-INF/services/io.agentscope.core.model.spi.ModelProvider注册 - 模型 ID 格式:
"provider:model-name"(如openai:gpt-4o,dashscope:qwen-max)
6.2 agentscope-harness — 增强运行时
内部依赖: agentscope-core (compile)
核心外部依赖:
| 依赖 | 用途 |
|---|---|
org.xerial:sqlite-jdbc |
本地工作区索引 |
org.apache.commons:commons-compress |
Tar 解压 (沙箱) |
redis.clients:jedis (optional) |
Redis 快照后端 |
com.aliyun.oss:aliyun-sdk-oss (optional) |
阿里云 OSS 快照后端 |
注意:K8s/Protobuf 等沙箱后端依赖已迁移至
agentscope-extensions-sandbox-*模块。
包结构 (io.agentscope.harness.agent):
1 | HarnessAgent.java # 生产级 Agent 入口,封装 ReActAgent |
HarnessAgent 中间件栈(按执行序):
WorkspaceContextMiddleware— 加载 AGENTS.md / MEMORY.md / KNOWLEDGE.mdInboxMiddleware— 待处理消息收件箱SubagentsMiddleware— 子 Agent 编排HarnessRuntimeMiddleware— 运行时连接HarnessSkillMiddleware— 技能加载与策划AsyncToolMiddleware— 异步工具执行CompactionMiddleware— 上下文溢出压缩ToolResultEvictionMiddleware— 旧工具结果淘汰MemoryFlushMiddleware— 记忆持久化MemoryMaintenanceMiddleware— 定期记忆维护SandboxLifecycleMiddleware— 沙箱生命周期AgentTraceMiddleware— OpenTelemetry 追踪AtPathExpansionMiddleware— @ 路径展开
6.3 agentscope-extensions — 扩展模块
模块组织方式:扩展不再扁平排列,而是按功能域分为 19 个分组父模块,每个父模块可包含若干子模块。
6.3.1 模型供应商 (agentscope-extensions-model/)
| 子模块 | 用途 | 关键依赖 |
|---|---|---|
agentscope-extensions-model-openai |
OpenAI / DeepSeek / GLM 等 | OkHttp(自实现 HTTP 客户端) |
agentscope-extensions-model-dashscope |
阿里云 DashScope (通义千问) | OkHttp |
agentscope-extensions-model-gemini |
Google Gemini | Google GenAI SDK |
agentscope-extensions-model-anthropic |
Anthropic Claude | Anthropic Java SDK |
agentscope-extensions-model-ollama |
Ollama 本地模型 | OkHttp |
agentscope-extensions-model-e2e-tests |
模型端到端测试 | 以上全部 |
模型供应商通过实现
ModelProviderSPI 接口注册到ModelRegistry,使用ServiceLoader机制发现。
6.3.2 协议扩展 (agentscope-extensions-protocol/)
| 子模块 | 用途 |
|---|---|
agentscope-extensions-a2a |
Google Agent-to-Agent 协议父模块 |
agentscope-extensions-a2a-client |
A2A 客户端 |
agentscope-extensions-a2a-server |
A2A 服务端 |
agentscope-extensions-agent-protocol |
Agent 协议(依赖 harness) |
agentscope-extensions-agui |
AG-UI Web 界面协议 |
agentscope-extensions-chat-completions-web |
Chat Completions REST API |
6.3.3 RAG 后端 (agentscope-extensions-rag/)
| 子模块 | 用途 | 关键依赖 |
|---|---|---|
agentscope-extensions-rag-simple |
最完整的本地 RAG 实现 | Qdrant, Milvus, Elasticsearch, PostgreSQL/pgvector, PDFBox, POI, Tika |
agentscope-extensions-rag-bailian |
阿里云百炼知识库 | Bailian SDK |
agentscope-extensions-rag-dify |
Dify 知识库 | OkHttp |
agentscope-extensions-rag-ragflow |
RAGFlow 知识库 | OkHttp |
agentscope-extensions-rag-haystack |
HayStack 知识库 | OkHttp |
6.3.4 记忆扩展 (agentscope-extensions-mem/)
| 子模块 | 用途 |
|---|---|
agentscope-extensions-mem0 |
Mem0 记忆服务 |
agentscope-extensions-memory-bailian |
阿里云百炼长期记忆 |
agentscope-extensions-reme |
ReMe 记忆服务 |
另有
agentscope-extensions-autocontext-memory作为独立的 AutoContext 记忆模块。
6.3.5 通道集成 (agentscope-extensions-channel/)
| 子模块 | 用途 |
|---|---|
agentscope-extensions-channel-common |
通道通用抽象 |
agentscope-extensions-channel-dingtalk |
钉钉集成 |
agentscope-extensions-channel-feishu |
飞书 / Lark 集成 |
agentscope-extensions-channel-wecom |
企业微信集成 |
agentscope-extensions-channel-github |
GitHub Issues/PR 集成 |
agentscope-extensions-channel-gitlab |
GitLab Issues/MR 集成 |
6.3.6 沙箱后端 (agentscope-extensions-sandbox/)
| 子模块 | 用途 |
|---|---|
agentscope-extensions-sandbox-kubernetes |
K8s 沙箱 |
agentscope-extensions-sandbox-agentrun |
AgentRun 沙箱 |
agentscope-extensions-sandbox-daytona |
Daytona 沙箱 |
agentscope-extensions-sandbox-e2b |
E2B 沙箱 |
Docker 沙箱保留在
agentscope-harness中,其他沙箱后端作为扩展。
6.3.7 调度器 (agentscope-extensions-scheduler/)
| 子模块 | 用途 |
|---|---|
agentscope-extensions-scheduler-common |
调度 SPI |
agentscope-extensions-scheduler-quartz |
Quartz 调度器 |
agentscope-extensions-scheduler-xxl-job |
XXL-JOB 调度器 |
6.3.8 状态存储扩展
| 独立模块 | 用途 | 关键依赖 |
|---|---|---|
agentscope-extensions-redis |
Redis AgentState 存储 | Redisson / Jedis / Lettuce |
agentscope-extensions-mysql |
MySQL AgentState 存储 | MySQL Connector |
agentscope-extensions-postgresql |
PostgreSQL AgentState 存储 (含 pgvector) | PostgreSQL JDBC |
agentscope-extensions-oss |
阿里云 OSS 状态存储 | Aliyun OSS SDK |
agentscope-extensions-cos |
腾讯云 COS 状态存储 | COS SDK |
agentscope-extensions-session-redis |
Redis 会话存储 | Redisson / Jedis / Lettuce |
agentscope-extensions-session-mysql |
MySQL 会话存储 | MySQL Connector |
6.3.9 技能仓库 (agentscope-extensions-skills/)
| 子模块 | 用途 |
|---|---|
agentscope-extensions-skill-git-repository |
Git 仓库技能存储 |
agentscope-extensions-skill-mysql-repository |
MySQL 技能存储 |
agentscope-extensions-skill-postgresql-repository |
PostgreSQL 技能存储 |
6.3.10 Nacos 集成 (agentscope-extensions-nacos/)
| 子模块 | 用途 |
|---|---|
agentscope-extensions-nacos-a2a |
Nacos 服务发现 + A2A 注册 |
agentscope-extensions-nacos-prompt |
Nacos Prompt 管理 |
agentscope-extensions-nacos-skill |
Nacos 技能注册 |
6.3.11 其他独立扩展
| 模块 | 用途 |
|---|---|
agentscope-extensions-higress |
Higress AI 网关集成 |
agentscope-extensions-studio |
AgentScope Studio 追踪 |
agentscope-extensions-training |
训练数据生成 |
agentscope-extensions-rocketmq |
RocketMQ + A2A 消息队列集成 |
agentscope-extensions-autocontext-memory |
AutoContext 记忆 |
agentscope-extensions-kotlin |
Kotlin 协程桥接 |
6.3.12 Spring Boot Starters (10 个)
| Starter | 用途 |
|---|---|
agentscope-spring-boot-starter |
核心 Starter — AgentscopeAutoConfiguration, Agent/Model 属性自动配置 |
agentscope-openai-spring-boot-starter |
预注册 OpenAI 模型工厂 |
agentscope-dashscope-spring-boot-starter |
预注册 DashScope 模型工厂 |
agentscope-gemini-spring-boot-starter |
预注册 Gemini 模型工厂 |
agentscope-anthropic-spring-boot-starter |
预注册 Anthropic 模型工厂 |
agentscope-a2a-spring-boot-starter |
A2A 协议自动配置 |
agentscope-agui-spring-boot-starter |
AG-UI Web 界面 |
agentscope-chat-completions-web-starter |
Chat Completions REST API |
agentscope-admin-spring-boot-starter |
Admin 管理界面 |
agentscope-nacos-spring-boot-starter |
Nacos 自动配置 |
6.3.13 框架集成
| 模块 | 框架 | 内部结构 |
|---|---|---|
agentscope-micronaut-extensions |
Micronaut | agentscope-micronaut-extension |
agentscope-quarkus-extensions |
Quarkus | agentscope-quarkus-extension + agentscope-quarkus-extension-deployment |
6.4 agentscope-dependencies-bom — 外部依赖版本管理
集中管理所有第三方库版本的关键依赖:
| 类别 | 核心库 | 版本 |
|---|---|---|
| LLM SDK | DashScope SDK, OpenAI Java, Google GenAI, Anthropic Java, Bailian SDK | 2.22.9 / 4.28.0 / 1.45.0 / 2.14.0 / 2.8.2 |
| AI 协议 | MCP SDK, A2A SDK | 0.17.0 / 0.3.3.Final |
| 响应式 | Reactor BOM | 2025.0.2 |
| 序列化 | Jackson, SnakeYAML | 2.21.1 / 2.6 |
| HTTP | OkHttp | 5.3.2 |
| JSON Schema | victools jsonschema-generator, networknt json-schema-validator | 4.38.0 / 2.0.0 |
| 向量数据库 | Qdrant, Milvus, Elasticsearch, pgvector | 1.17.0 / 2.6.17 / 9.3.3 / 0.1.6 |
| 数据库 | MySQL Connector, PostgreSQL, SQLite | 9.6.0 / 42.7.11 / — |
| 缓存/会话 | Redisson, Jedis, Lettuce | 4.2.0 / 7.4.1 / 6.4.2 |
| 调度 | Quartz, XXL-JOB | 2.5.2 / 3.3.2 |
| Spring | Spring Framework, Spring Boot | 7.0.7 / 4.0.4 |
| 文档处理 | PDFBox, POI, Tika | 3.0.7 / 5.5.1 / 3.3.0 |
| 可观测性 | OpenTelemetry | 1.61.0 |
| 基础设施 | Kubernetes Client, Protobuf, Nacos Client, JGit | 6.13.4 / 4.29.3 / 3.2.1 / 7.6.0 |
| 代码安全 | tree-sitter, tree-sitter-bash | 0.24.4 / — |
6.5 agentscope-distribution — 打包分发
| 子模块 | Artifact ID | 用途 |
|---|---|---|
agentscope-all |
agentscope |
Shaded uber-JAR,通过 maven-shade-plugin 将 core + harness + 全部 extensions 合并为一个 JAR |
agentscope-bom |
agentscope-bom |
BOM POM,列出所有内部模块版本,下游消费者统一管理 |
6.6 agentscope-examples — 示例项目
1 | agentscope-examples/ |
7. 完整依赖图
1 | agentscope-dependencies-bom (外部版本) |
8. 架构设计要点总结
Core 是纯粹的核心抽象:Agent 模型、消息系统、工具体系、中间件链、状态管理、权限引擎,零内部依赖,是整个框架唯一的基础
v2 架构三大支柱:
- Middleware (中间件链) — 替代旧 Hook 体系,提供 onAgent/onReasoning/onActing/onModelCall/onSystemPrompt 五个插入点
- AgentState (状态管理) — per-session per-user 运行时状态容器,统一管理上下文、权限、工具、任务、Plan Mode 状态
- Fine-grained Events (细粒度事件) — 34 种 AgentEvent 类型,完整覆盖 Agent 执行生命周期的每个细节
Harness 提供生产级运行时:HarnessAgent 带有 14 个内置中间件的完整运行时栈,工作区管理、技能策划(curator/promoter/gate)、对话压缩、子 Agent 编排等生产级能力
模型供应商 SPI 插件化:模型供应商从 Core 中完全解耦为独立扩展模块,通过
ModelProviderSPI +ServiceLoader自动发现,支持 5 种 LLM 供应商 + 任意兼容 OpenAI API 的服务Extensions 功能域分组管理:~50 个子模块按功能域分为 19 个分组父 POM(model/rag/mem/channel/sandbox/scheduler/nacos/skills/protocol),结构清晰,按需引入
agentscope-all 提供一站式依赖:Shaded uber-JAR 将 core + harness + 全部 extensions 合并为一个 artifact,简化消费者的依赖管理
多框架集成:Spring Boot 10 个 Starter(含 per-model Starter)、Micronaut 扩展、Quarkus 扩展(runtime + deployment)
多 LLM 厂商支持:OpenAI(兼容 DeepSeek/GLM)、DashScope(通义千问)、Gemini、Anthropic(Claude)、Ollama 本地模型
A2A 协议深度集成:Google Agent-to-Agent 协议全链路支持(客户端/服务端/RocketMQ 传输/Nacos 服务发现/Spring Boot 自动配置)
丰富的协作通道:钉钉、飞书、企业微信、GitHub、GitLab 五大通道集成,支持多 Agent 协作场景
阿里云 + 腾讯云生态:DashScope、百炼(记忆/RAG)、Nacos、OSS、RocketMQ + 腾讯云 COS,覆盖国内两大云厂商