本节摘要:本节回答"AgentScope Java 是什么、凭什么值得精读"。它是阿里巴巴开源的生产级分布式企业 Agent 框架(Apache-2.0,JDK 17+,Maven 多模块,2.0.0 GA 于 2026-07 发布,文档站 java.agentscope.io),定位是"面向企业级、分布式、生产环境的智能体框架"。README_zh 用三大主题概括 2.0 的跃迁:Harness 工程化、企业级分布式部署、底层核心抽象升级。本节逐条拆解这三大主题,并跑通 README 里的第一个 Hello 示例。
内容来源:原项目源码
README_zh.md、pom.xml与docs/v2/zh/官方原生中文文档。
⚠️ 注意:本教程对照源码为 2.0.3-SNAPSHOT(2026-09 快照,GA 版本 2.0.1),个别行号与接口在后续版本可能微调;阅读时以类名/方法名定位为准,不要死记行号。
阅读完本节,你应当能够:
call() 与 streamEvents() 两种消费模式。README_zh.md 开篇一句话给出身份:
"AgentScope Java 2.0 是面向企业级、分布式、生产环境的智能体框架,提供与模型能力相匹配的核心 Harness 抽象,可支持长期、稳定、安全可控的智能体任务执行。"
这句话里的四个关键词,每个都对应可验证的工程事实:
| 关键词 | 工程事实 |
|---|---|
| 企业级 | 多租户隔离(session/user/agent/org)、权限三态决策、审计观测 |
| 分布式 | 状态外置到 Redis/MySQL/PostgreSQL/OSS/COS,跨副本 session 恢复 |
| 生产环境 | 优雅停机(shutdown 包 10 文件)、检查点恢复、滚动发布零停机 |
| 长期运行 | 上下文自动压缩、分层记忆、技能沉淀、maxIters 与 failover 兜底 |
基础参数:Apache-2.0 协议、JDK 17+(README 明示"需要 JDK 17 及以上版本")、Maven 多模块(io.agentscope groupId 发布到 Maven Central)、版本线 2.0.x。根 pom.xml 聚合了 agentscope-core、agentscope-harness、agentscope-service、agentscope-extensions、agentscope-examples 等模块,合计约 57 万行 Java。
版本时间线(README 新闻区)能看出 2.0 的打磨节奏,每条都对应本教程的一章:
| 时间 | 版本 | 关键内容 | 对应章 |
|---|---|---|---|
| 2026-05 | v2.0.0-RC1 | Harness 工程化、事件流/消息模型/Middleware/HITL 全面重构 | 第 2/3/6 章 |
| 2026-06 | RC2 | Agent 完全无状态改造、子 agent 事件流转发、Channel(钉钉/飞书/企微) | 第 8 章 |
| 2026-06 | RC3 | call()/streamEvents() 共享执行核心、CustomEvent/HintBlockEvent 新事件 |
第 2 章 |
| 2026-06 | RC4 | 异步工具执行与定时唤醒调度、子 agent 跨副本路由 | 第 5/8 章 |
| 2026-07 | RC5 | 模型提供商模块化拆分、统一 DataBlock 多模态、原生结构化输出 | 第 3/9 章 |
| 2026-07 | v2.0.0 GA | 双层 Agent 架构全面就绪 | 全书 |
| 2026-08 | Service | Agent 控制面与 Dashboard(兼容 LangChain/ADK/Claude 等) | 第 10 章 |
注意"RC2:Agent 完全无状态改造"与"RC3:共享执行核心"两条——它们是第 2 章两大主题(多会话并发、一次实现两种消费)的版本化石,说明这不是设计稿上的漂亮话,而是真实演进出来的能力。
与 Python 版 agentscope 的关系:同属 agentscope-ai 组织(GitHub agentscope-ai/agentscope-java),共享品牌与核心理念(消息驱动的多 Agent 系统),但 Java 版不是移植——它以 Project Reactor 反应式全栈重新实现,并率先落地了 2.0 的 Harness/权限/事件流抽象。Python 版是"构建一个智能体的工具箱",Java 版 2.0 明确转向"面向生产环境运行智能体的完整平台"(README_zh"核心设计"一节原话)。对 Java 团队还有一层实际意义:它与 Spring 生态原生兼容(11 个 Spring Boot starter,第 9 章),可以像引入一个普通中间件那样把 Agent 能力嵌进既有企业系统。
一个容易忽略的宝藏:README_zh.md 与 docs/v2/zh/(约 115 篇)都是原生中文(非机翻),质量极高,是 API 层面的最佳参考;本教程的差异化在源码剖析与企业落地主线。
README_zh"核心设计"一节把 2.0 的升级组织为三大主题,这也是全书章节地图的骨架。
README_zh 的原话是理解双子星架构的钥匙:"裸的 ReAct 循环只解决'一次推理'。HarnessAgent 在 ReActAgent 之上通过 Middleware 与 Toolkit 叠加工程基础设施,核心推理循环原样保留,能力按需叠加"。叠加的内容包括:
MEMORY.md + 磁盘事实流水账,自动压缩控制 prompt 体量。agent_spawn / agent_send 按需启动。注意"核心推理循环原样保留"九个字——工程星不重写内核星,这是第 8 章精读 HarnessAgent 时反复验证的事实。
"生产环境的智能体要服务多租户、安全执行不可信代码、滚动发布不丢上下文",对应四组能力:
RuntimeContext 的 (userId, sessionId) 键贯穿工作区、KV 命名空间、沙箱状态槽。AgentStateStore(内存/JSON 文件/MySQL/Redis/PostgreSQL)支撑零停机滚动发布。"消息、事件、扩展机制更小、更正交;HITL 与事件流式是框架运行的一部分,不是外挂层":
ContentBlock,按 role 严格校验。onAgent/onReasoning/onActing/onModelCall/onSystemPrompt 五阶段取代 v1 扁平 hook。💡 双星要点:三大主题其实就是"内核星怎么变纯(主题三)、工程星怎么变厚(主题一)、两颗星怎么协作着上生产(主题二)"。全书每讲一个能力,都会回到这条主线:它在 core 里是一个纯抽象,在 harness 里是一次工程加固。
README_zh 的快速开始示例(节选):
// README_zh.md「Hello AgentScope!」 import io.agentscope.core.agent.RuntimeContext; import io.agentscope.core.message.UserMessage; import io.agentscope.harness.agent.HarnessAgent; HarnessAgent agent = HarnessAgent.builder() .name("assistant") .sysPrompt("你是一个有用的 AI 助手。") .model("dashscope:qwen-plus") // ModelRegistry 按字符串解析,自动读环境变量 .workspace(Paths.get(".agentscope/workspace")) .build(); RuntimeContext ctx = RuntimeContext.builder() .sessionId("demo").userId("alice").build(); // 阻塞式调用 agent.call(new UserMessage("你好!"), ctx).block(); // 或者流式获取事件,用于实时 UI 渲染 agent.streamEvents(new UserMessage("帮我把今天的关键点列三条。"), ctx) .doOnNext(event -> { /* 按 event.getType() 分发 */ }) .blockLast();
这个 30 行的示例浓缩了全书要拆的四件事:
ModelRegistry 解析并自动读 DASHSCOPE_API_KEY 等环境变量),也可以传入显式 ChatModel。模型字符串支持 "openai:gpt-4.1"、"deepseek:deepseek-v4-flash"、"dashscope:qwen-plus"、"anthropic:claude-sonnet-4-7"、"ollama:llama3" 等——换厂商只改一个字符串。call() 与 streamEvents() 是同一执行核心的两个消费入口——前者阻塞等最终 Msg(.block() 只允许出现在 main()/测试里),后者流式消费 AgentEvent,switch (event.getType()) 按类型分发:TEXT_BLOCK_DELTA 打印文本增量、TOOL_CALL_START 显示工具调用。这是第 2 章的重点。RuntimeContext 携带 (userId, sessionId) 多租户键,是分布式部署的最小单元;.workspace(Paths.get(...)) 则是工程星的工作区目录(第 8 章)。agentscope-core 即可"——双子星从依赖关系上就是可分的。依赖侧:2.0 把模型提供商拆成了独立扩展模块(agentscope-extensions-model-dashscope 等),核心包不捆绑任何厂商 SDK。Maven 坐标:
<dependency> <groupId>io.agentscope</groupId> <artifactId>agentscope-harness</artifactId> <version>2.0.1</version> </dependency> <!-- 再按需加一个模型扩展,如 agentscope-extensions-model-dashscope -->

上图是官方 landscape 全景图:左侧是模型与工具生态,中间是 ReAct 循环与消息/事件/权限核心抽象,右侧是 Workspace/沙箱/多 Agent 编排的 Harness 层,底层是分布式 session 与状态存储。第 2 章起我们就钻进中间那颗最亮的星。
call()/streamEvents() 双入口、RuntimeContext 多租户键、core 与 harness 依赖可分。README_zh.md 与 docs/v2/zh/ 是原生中文高质量参考,本教程专注源码剖析,两者互补。下一节,我们给 57 万行代码画一张四层体量地图(core 11.7 万 / harness 8.6 万 / service 3.1 万 / extensions 27.3 万行),并正式引出贯穿全书的双子星:5459 行的 ReActAgent 对照 2989 行 + 20 工程包的 HarnessAgent。