2.0.1
发布日期:2026-08-05AgentScope Java 2.0.1 是 2.0.0 GA 之后的首个维护版本,重点补齐模型提供商生态、完善 Harness 子 agent / HITL / 权限与稳定性,并修复一批生产场景中的关键问题。 快速链接: 快速开始 | V1 迁移指南 | 上线指南
新增
核心 / Agent- Middleware 支持执行优先级排序:
MiddlewareBase.order(),数值越高越外层;ReActAgent.Builder.build()会在注册完成后稳定降序排序 (#2532, #2449) - 新增 Session 上下文清理 API:
ReActAgent/HarnessAgent支持在不换 session 的情况下清空模型可见对话上下文 (#2499, #2496) - 暴露
ReActAgent状态缓存清理 API,便于长生命周期实例主动释放缓存 (#2572) - HITL 恢复权限确认时发射
UserConfirmResultEvent,可与前置RequireUserConfirmEvent通过replyId关联 (#2511) - Anthropic 支持配置
disable_parallel_tool_use(#2257)
- 新增 OpenAI 兼容扩展包,为三方兼容厂商提供统一适配基础 (#2208)
- 新增 DeepSeek 一等公民模型提供商(
deepseek:<model>、DEEPSEEK_API_KEY)(#2307, #2211) - 新增 GLM(智谱 AI)提供商与专用 formatter (#2316)
- 新增 Kimi(Moonshot AI)提供商与专用 formatter (#2320, #2213)
- 新增 MiniMax OpenAI 兼容提供商 (#2299)
- 远程子 agent 支持事件流转发与 HITL resume (#2559)
- 异步工具结果等待支持按
taskId精确等待 (#2529) - 支持通过
AGENTSCOPE_WORKSPACE环境变量配置默认工作区,便于镜像打包 (#2310)
重构
- Toolkit 默认执行模式改为并行,并完善相关文档 (#2558, follow-up of #2529)
- 抽象 Session metadata 存储,解耦 builder 与具体存储实现 (#2258, #2068)
- Kubernetes 沙箱存储迁移至 agent-sandbox CRD / 控制器模型,由集群侧负责沙箱生命周期与预热池 (#2308)
修复
核心 / Agent- 防止 pending recovery 误消耗 HITL 审批结果 (#2109, #2534)
onModelCallmiddleware 对文本 delta 的变换会正确应用到最终消息,修复原生结构化输出读到陈旧文本的问题 (#2469, #2385)- 流式工具参数为 null 时,可从完整原始 JSON 修复补全 (#2451, #768)
ReActAgent.close()解绑 state-saver,避免优雅停机注册表堆积导致 OOM (#2322, #2321)ReActAgent.close()解绑ShutdownStateSaver,修复内存泄漏 (#2384)- 用户中断正确标记为 interrupted reason (#2260)
- 写入 agent 状态文件时容错畸形 Unicode,避免
UnmappableCharacterException(#2255, #2204) - 转发 reasoning middleware 事件(如
InboxMiddleware的HintBlockEvent)到streamEvents()(#2179, #2160) ToolResultBlock.error标记为结构化错误 (#2174, #2157, #2111)
- DashScope:将
qwen3.8-max路由到多模态端点 (#2553) - DashScope:保留 SSE 错误响应体,便于读取
request_id(#2278, #2197) - OpenAI:流式分支用
Flux.defer包裹,使重试能重新发起 HTTP 请求 (#2079) - OpenAI:遇到
[DONE]哨兵正确终止流 (#2104) - OpenAI:丢弃非 chunk 的 summary 事件消息,避免内容重复 (#2367)
- OpenAI:
OpenAIMessageConverter规范化name字段 (#2346) - OpenAI AutoConfiguration:api-key 改为可选 (#2175)
- DeepSeek formatter 保留
systemrole (#2189, #2168) - Ollama:正确遵循
stream标志 (#2415) - Anthropic:
ToolChoice.None正确映射为禁止工具调用(此前误映射为强制调用)(#2232, #2221) - 模型提供商优化与兼容性调整 (#2474)
- 远程子 agent 转发事件时正确打上
taskId(#2575) - Memory prompt guidance 受 disable 标志门控 (#2565)
- 子 agent 结束事件在父 agent 完成前发出,避免事件丢失 (#2544)
- 父 agent 取消时正确关闭子 agent 事件流 (#2481, #2480)
- 派生子 agent 强制继承父级 DENY 权限规则 (#2477)
- Skill promotion 过程中保留
RuntimeContext(#2465) - 子 agent 强制执行 Plan Mode (#2377)
- 拒绝 workspace 路径穿越(如
../)(#2358) - Windows 下本地 shell 执行兼容(工作目录命令与字符集解码)(#2304, #2268)
- 静态子 agent 注册表按 runtime context 隔离,避免多租户串扰 (#2371, #2328)
- 链式 compaction 保留先前摘要,避免丢失用户意图 (#2360)
- 保留 skill 隔离与工具结果历史 (#2319)
RemoteFilesystem递归 glob 能匹配搜索根目录下的文件 (#2343)- FilesystemTool 可选参数标记为
required=false(#2227) - 优化 shell-execute 的
working_directory参数与工具使用提示 (#2107) - 声明式子 agent 继承父级
modelExecutionConfig/toolExecutionConfig(#2252) - 修正
sessionId参数描述 (#2195)
- PostgreSQL BaseStore 支持 schema (#2273, #2192)
- 修复 PostgreSQL upsert SQL 语法错误 (#2167, #2166)
- 修复
JdkHttpTransportSSE 长连接被绝对超时切断的问题 (#1322, #1302)
- 修复 Spring Boot starter 包名错误 (#2264)
- 示例改用原始 DashScope 模型名(去掉无效
dashscope:前缀)(#2318) - 修正
RuntimeContextExample中的 DashScope 模型名 (#2228, #2229) - 修正 skill 示例资源路径 (#2250)
- 改进文档与示例 (#2508)
文档
- README 补充 Agent Evolution 到 Java 2.0 特性列表 (#2494)
- Quickstart 澄清 all-in-one 依赖已包含模型提供商 (#2425, #840)
- 文档链接重定向修复 (#2203, #2198)
- 生成按版本拆分的
llms.txt产物(/v1、/v2)(#2188, #2185) - 补充 model builder customizer 文档 (#2092)
- 模型文档更新 (#2100)
- 修正 README 文档链接与 Release Notes URL (#2099)
- 更新 AG-UI 文档 (#2274)
2.0.0 (GA)
发布日期:2026-07-10AgentScope Java 2.0.0 正式发布(General Availability)。这是从 1.x 到 2.0 的首个正式版本,标志着 AgentScope Java 从”透明开发”迈向”系统工程”的里程碑。 快速链接: 快速开始 | V1 迁移指南 | 上线指南
2.0 版本核心设计概要
AgentScope Java 2.0 围绕”让智能体稳定完成任务”这一目标进行了系统性升级,核心设计如下: 双层 Agent 架构- ReActAgent:无状态的推理核心,提供”推理 → 工具调用 → 回复”的 ReAct 循环。2.0 中 Agent 实例完全无状态,所有 per-call 可变状态通过 Reactor Context 透传,同一实例可安全并发服务多个
(userId, sessionId)组合 - HarnessAgent:在 ReActAgent 之上通过 Middleware 与 Toolkit 两个扩展通道,叠加工作区、记忆、沙箱、子 agent、技能与计划模式等工程化基础设施——核心推理循环原样保留,只叠加不替换
streamEvents() 返回的 28 种类型化 AgentEvent,让 Agent 的执行过程可展示、可交互、可干预。前端 UI 可实时跟随文本增量、工具调用、用户确认等全生命周期事件
权限系统
全新的 PermissionEngine 为工具调用建立”允许 / 用户审批 / 拒绝”三态决策机制。根据静态规则、工具类型和输入内容综合判断,敏感操作自动进入 HITL 审批流程
Middleware 扩展机制
五阶段洋葱 + 管道混合模型(onAgent / onReasoning / onActing / onModelCall / onSystemPrompt),在保持核心框架稳定的同时,为日志追踪、安全检查、业务策略、上下文注入等提供灵活的扩展点
上下文工程
结构化压缩保留任务目标、当前状态、关键发现与下一步计划;超大工具结果自动落盘,上下文仅保留占位符;文件读写内置缓存并强制”先读后改”策略
Workspace 执行环境抽象
将”Agent 做什么”与”在哪里执行”解耦。本地文件系统、Docker 容器、Kubernetes、E2B 云沙箱等执行后端统一到同一套接口。内置预热池机制,适配 RL rollout 等并行场景
模型容错
统一的 Credential + ModelRegistry 抽象,覆盖 Qwen / OpenAI / Anthropic / Gemini / DeepSeek / Ollama 等主流模型。可配置最大重试与备用模型,主模型不可用时自动切换
企业级分布式部署
DistributedBackend 一键配置(Redis / OSS / MySQL / PostgreSQL / COS),AgentStateStore 按 (userId, sessionId) 自动分桶持久化。Session 跨副本恢复、沙箱状态快照、子 agent 跨副本路由
协议互通
内置 A2A(Agent-to-Agent)与 MCP(Model Context Protocol)协议支持,以及 AG-UI 协议适配,覆盖智能体间通信与前端展示的标准化需求
多智能体编排
声明式子 agent 规格定义(YAML / Markdown),运行时按需 agent_spawn / agent_send,支持同步阻塞与后台委派两种模式。子 agent 事件流可实时转发到父 agent 的 streamEvents()
技能系统
四层 Skill 合成(Classpath / FileSystem / Nacos / Marketplace)+ SkillFilter 细粒度过滤 + 自学习闭环(propose → curate → promote)
自 RC5 以来的变更
以下为 2.0.0-RC5(2026-07-07)至 GA 版本之间的增量变更。新增
- 当 HITL 拒绝所有工具调用时触发
AllToolsDeniedEventhook,方便应用层监听和处理全拒绝场景 (#2083) wait_async_results增加防护机制,防止反复长时间阻塞等待 (#2093)- 新增
PostgresDistributedStore,支持 PostgreSQL 作为 HarnessAgent 的分布式后端 (#2054) - Spring Boot Starter 新增 OpenAI、DashScope、Anthropic 模型的 builder customizer,简化自动配置 (#2045)
修复
核心 / AgentseedSystemMsg改为 reactive 实现,避免在 NIO 线程上调用block()(#2086)- PERMISSION_ASKING 状态的结果消息中正确包含 ASKING 状态的 ToolUseBlock (#2082)
- 通过
activateOnSkill字段正确激活 SkillToolGroup (#2057) - 用户中断时保存 agent 状态,防止会话丢失 (#1970)
- 外部工具执行现在正确产生 suspended 结果 (#2071)
- Plan Mode 下允许 SkillLoadTool,通过将
isReadOnly提升到 AgentTool 接口实现 (#2067) - 中断孤儿子 agent:当 AgentSpawnTool 的父订阅取消时正确中断子 agent (#2064)
- MemoryFlushMiddleware 移除不必要的 ReActAgent 类型限制 (#2078)
- ROOTED 模式下将以
/开头的路径解析为相对于 workspace (#2049) - workspace projection 前预先部署 marketplace 技能 (#2059)
- Kubernetes
hydrateWithArchive中 null exit code 视为成功 (#1915) - 恢复持久化状态时使用更新后的 WorkspaceSpec (#1928)
- AgentRun MCP 响应支持嵌套 JSON 和 banner 前缀 (#1930)
- Docker workspaceRoot 使用解析后的 workingDir (#2033)
- OutboundAddress 中包含 PeerKind,修复群组消息路由 (#2060)
- 合并流式文本 chunk,避免碎片化 (#2058)
2.0.0-RC5
发布日期:2026-07-07
重大变更
- 模型提供商模块化 —— OpenAI、Gemini、Anthropic、DashScope、Ollama 模型提供商从
agentscope-core拆分为独立的agentscope-extensions-model-*扩展模块。应用需添加对应扩展依赖 (#1890, #1916, #1947, #1972)
新增
- 所有模型提供商(OpenAI、DashScope、Gemini、Anthropic)统一支持
DataBlock多模态内容,覆盖单 agent、多 agent 和工具结果路径 (#1933) - 原生结构化输出(Structured Output)与工具调用协同工作 —— 支持模型原生 JSON Schema 约束 (#1904)
- DashScope 模型支持原生结构化输出 (#1935)
McpClientBuilder新增httpRequestCustomizer,支持动态 token 注入(如 OAuth 刷新)(#1992)AguiEvent对齐 AG-UI 协议规范,补全缺失事件类型 (#1862)- 子 agent 可选技能白名单过滤 (#1873)
NacosSkillRepository支持knownSkillNames(#1853)- 新增
CosAgentStateStore、CosBaseStore、CosDistributedStore,支持腾讯云 COS 状态持久化 (#1857) ChatUsage暴露 cached prompt tokens (#1868)
修复
核心 / Agent- 用户中断恢复时持久化 agent 状态 (#2008)
- 正确连线 fallback model 到
ReActAgent(#1851) - 修复
ReActAgent流式事件 block end 顺序 (#1829) - 在加入 agent 上下文前更新
ToolResultBlock状态 (#1886) - 复用 classpath skill JAR 文件系统,避免资源泄漏 (#1981)
- 修复
serializeOnKey在Flux.create回调中的 gate 泄漏 (#1796)
- 将
thinkingBudget映射到 OpenAI 兼容 API 请求 (#2028) - 修复 Anthropic 流式 thinking event 处理 (#1943)
- 保留
OllamaOptionsfromOptions/toBuilder中的executionConfig(#2011) - DashScope thinking 模式下降级强制 tool choice (#1882)
- 修复远程快照状态反序列化 —— Jackson 往返后重新注入
RemoteSnapshotClient(#2013) - 修复 THROTTLED 记忆保存模式在每次请求新建实例时失效 (#1788)
- 通过 wakeup dispatch 传播
userId(#2001) - message bus 心跳改用
boundedElastic调度器 (#1974) - 避免
fromAgent重复注册GracefulShutdownMiddleware(#1952) - 转义
ShellPathPolicy返回路径中的空格 (#2031) - YAML 解析失败时回退到简单键值提取 (#2027)
ls命令报告沙箱文件大小 (#1838)- 归一化 Windows
list_files路径 (#1892) LocalFilesystem.edit()将\r\n归一化为\n(#2020)CompositeFilesystem将"."视为根路径 (#1830)- 校验
working_directory防止命名空间逃逸 (#1834) - 未配置分布式
AgentStateStore时回退到LocalFilesystemSpec(#1841) - 修复 Kubernetes
hydrateWithArchiveWebSocket 竞态导致exit=null(#1903) - 容忍 wrapped sandbox base64 下载 (#1866)
- 移除
AgentRunsandbox API 版本前缀 (#1891) - E2B sandbox 新增 connect JSON codec 支持 (#1844)
- 从 Reactor
ContextView读取父 OTel Context,修复OtelTracingMiddleware孤立 span (#1940) - 修复
OtelTracingMiddleware子 span 看不到正确父 span (#1909) - 将 Reactor context 传播到 chunk event hooks (#1923)
- 传播 run input 和 frontend tools (#1895)
- Middleware
doFlush包装Mono.defer防止提前求值 (#1880) - Nacos auto-configurations 改为 opt-in(
matchIfMissing=false)并修复 A2A server-addr 覆盖 (#1709) - DataAgent 补充
ObjectMapperbean (#1993)
文档
- 明确流式事件
blockId语义 (#2016) - 改进模型提供商文档 (#1986)
- 移除无效的
ChatResponse.isLast引用 (#1921) - 修复多副本 Redis 示例 —— 声明 jedis 依赖并补充
stateStore(#1869) - 修复
MemoryCompactionExample展示 memory 文件并触发 compaction (#1978)
2.0.0-RC4
发布日期:2026-06-18
新增
- Agent harness 支持异步工具执行和通知,包括 message bus、async tool registry 和 scheduled wakeup dispatching (#1802)
- Agent 调用新增 String/Message 便捷重载;所有 formatter 支持
HintBlock(#1802) - 持久化 spawn registry 支持子 agent 跨副本路由和 session 恢复 (#1817)
DynamicSkillMiddleware实现ToolkitAware,支持动态接收解析后的 toolkit (#1828)- Kubernetes sandbox 支持向 Pod 注入环境变量 (#1789)
修复
- 修复 Kubernetes 文件上传中的 SIGKILL 竞态条件,使用两阶段 archive 策略 (#1826)
- 修复超时子 agent 未在重试时中断导致的资源泄漏 (#1784)
- 修复复制
RuntimeContext时丢失 typed attributes (#1813) - 修复 MySQL utf8mb4 字符集下
JdbcStore表初始化失败 (#1781) - Session JSONL offload 改为幂等,防止重复写入 (#1774)
- 修复
TelemetryTracer中 OpenTelemetry context 传播 (#1799) - 修复
OllamaChatModel获取 tool choice 时 options 为 null 导致 NPE (#1803) - 补充
LocalSandboxSnapshot缺失的 Jackson 注解 (#1825) - 修复 sandbox glob 不支持
**/递归模式 (#1684) - 修复
SkillFilter使用 composite ID 而非 skill name 匹配 (#1771) - 允许
MultiModalTool使用自定义默认视觉模型 (#1701)
文档
- 修复 middleware 文档中错误的 hook 签名 (#1835)
- 修复文档示例中引用不存在的
.sandboxContext()(#1792) - 修复 v2 文档中
getToolName()→getToolCallName()(#1760) - 文档站点新增 AI 上下文菜单
2.0.0-RC3
发布日期:2026-06-11
新增
AgentResultEvent—— 新增事件类型,在 agent 调用完成后、AgentEndEvent之前发出,携带最终Msg结果。streamEvents()的消费方可直接从事件流中获取最终结果,无需额外订阅Mono<Msg>返回值CustomEvent—— 通用可扩展事件,用于中间件向前端推送应用级通知(状态变更、团队变更等),无需为每种业务场景新增AgentEventType。内置 well-known name:state_updated、team_updatedHintBlockEvent—— 一次性 hint block 事件,用于传递团队消息、后台工具结果、用户中断等完整内容,区别于需要流式拼接的 text/thinking blockWorkspacePathNormalizer—— 文件路径归一化工具,将绝对路径转换为 workspace 相对路径。根据当前文件系统模式(本地 / 沙箱)注册前缀,避免跨模式误匹配- 工具事件携带
toolCallName——ToolCallDeltaEvent、ToolCallEndEvent、ToolResultDataDeltaEvent、ToolResultEndEvent、ToolResultTextDeltaEvent均新增toolCallName字段,消费端不再需要缓存 start 事件的名称映射
变更
call()与streamEvents()共享执行核心 —— 新增内部buildAgentStream方法作为call()和streamEvents()的统一实现,确保onAgentmiddleware 链在所有调用路径上一致触发。call()从事件流中提取AgentResultEvent获得结果,移除了旧的独立agentImpl逻辑- 分布式部署下 session 状态始终从 store 加载 ——
activateSlotForContext在配置了AgentStateStore时,每次调用开头从 store 重新加载状态和权限引擎,避免分布式环境中同一 sessionId 漂移到不同机器时读到过期本地缓存 ToolResultEvictionMiddleware时机修正 —— 从onActing(此时状态尚未写入,导致空操作)迁移到onReasoning,确保工具结果已持久化后再执行淘汰LocalFilesystem路径解析简化 —— 重构路径解析逻辑,减少冗余代码
修复
- 修复
RuntimeContext在测试中未设置userId导致用户隔离不准确的问题
2.0.0-RC2
发布日期:2026-06-09
新增
projectWritable模式(LocalFilesystemSpec)—— 开启后,agent 的文件写入按路径自动路由:工作区元数据(MEMORY.md、agents/、skills/等)写到 workspace,其余文件(代码、配置等)直接落到项目目录。适合代码生成类 agent。详见 文件系统 · 项目可写模式- Permission 系统运行时切换 —— 新增
HarnessAgent.setPermissionMode()/getPermissionMode(),支持在运行时按 session 动态调整权限模式 - 子 agent 事件流转发 ——
streamEvents()现在实时转发子 agent 的中间事件(TextBlockDelta、ToolCallStart等),每个事件携带source路径标识来源 AgentEvent.source来源标识 —— 所有AgentEvent新增source字段,在同一事件流中区分 main agent 事件(source = null)和 sub agent 事件(source = "main/researcher"等路径格式),消费端无需额外状态即可分流处理- Compaction / Memory 定制 prompt 和 model ——
CompactionConfig和MemoryConfig新增.model()和.prompt()builder 方法,允许为上下文压缩和记忆提取指定独立的轻量模型和自定义 prompt,不再强制使用 agent 主模型 - Qwen 3.7 模型支持 ——
ModelRegistry新增dashscope:qwen3.7-plus等 Qwen 3.7 系列模型的解析支持 - 直接与子 agent 对话 —— 支持通过
agent_send直接向已声明的子 agent 发送消息并获取响应,无需经过父 agent 的推理循环 - Channel 模块 —— 新增
agentscope-extensions-channel系列模块,实现 IM 平台接入(钉钉、飞书、企业微信、GitHub、GitLab),内置 ChatUI 提供开箱即用的对话界面 DistributedBackend统一接口 —— 新增DistributedBackend抽象,收敛分布式部署所需的所有存储组件(AgentStateStore、BaseStore、SandboxSnapshotSpec)为一键配置。内置RedisDistributedBackend、OssDistributedBackend、MysqlDistributedBackend等实现,通过HarnessAgent.builder().distributedBackend(backend)一行完成分布式后端接入,不再需要分别配置 stateStore、baseStore、snapshotSpec
变更
- Agent 完全无状态改造 ——
ReActAgent不再持有任何可变的 per-session 状态,所有可变状态封装在内部CallExecution中通过 Reactor Context 透传。同一 agent 实例可安全并发服务多个(userId, sessionId)组合 - Session 接口全面改为
AgentStateStore—— 移除SessionManager、StatePersistence等旧接口,统一使用AgentStateStore(内置InMemoryAgentStateStore、JsonFileAgentStateStore、RedisAgentStateStore、MysqlAgentStateStore),按(userId, sessionId)二元组自动分桶持久化 BaseStore接口包名迁移 ——BaseStore及相关接口从旧包迁移到新包路径,使用旧 import 的代码需要更新- Extension 模块坐标整合 —— 部分扩展包 Maven 坐标调整,按职能重新归类。例如
agentscope-extensions-session-redis合并为agentscope-extensions-redis(同时包含RedisAgentStateStore、RedisStore、RedisSnapshotSpec等)。使用旧坐标的 pom 需要更新<artifactId> - Sandbox 实现从 harness 内核拆出 —— Docker、Kubernetes、E2B、Daytona、AgentRun 等沙箱后端的实现从
agentscope-harness内核移至独立扩展包(agentscope-extensions-sandbox-*)。harness 内核仅保留SandboxFilesystemSpec等抽象接口,不再传递具体实现依赖。如需使用沙箱需额外引入对应扩展包,例如 Docker 沙箱需添加agentscope-extensions-sandbox-docker - Plan Mode 优化增强 —— 改进计划文件持久化与恢复机制,优化
plan_enter/plan_write/plan_exit工具链的交互体验,增强 HITL 审批流程的稳定性 - Skill 自进化增强 —— 优化技能提案(
ProposeSkillTool)、审批(SkillCurator)与晋升(SkillPromoter)闭环,改进技能匹配精度与跨会话复用效果 DashScopeHttpClient请求超时与重试策略调整ModelRegistry模型解析逻辑优化AgentState序列化格式更新
修复
- 修复
PermissionContextState在跨 session 恢复时的状态丢失问题 - 修复
agentscope-all中缺失 4 个 sandbox 扩展模块(sandbox-kubernetes、sandbox-agentrun、sandbox-daytona、sandbox-e2b)的问题
2.0.0-RC1
发布日期:2025-05-28首个 2.0 Release Candidate。包含从 1.x 的全部架构升级:
- Harness 工程化(workspace、记忆、技能、子 agent、Plan Mode、上下文压缩)
- 企业级分布式部署(多租户隔离、沙箱执行、权限管控、会话恢复)
- 底层框架重构(事件流、消息模型、Middleware、HITL)