Release Notes¶
This page tracks per-version changes for AgentScope Java 2.0. For the overall migration guide from 1.x, see the V1 Migration Guide.
2.0.0-RC3¶
Released: 2026-06-11
Added¶
AgentResultEvent— new event type emitted when an agent finishes processing, immediately beforeAgentEndEvent, carrying the finalMsgresult. Consumers ofstreamEvents()can obtain the result directly from the event stream without separately subscribing to theMono<Msg>return valueCustomEvent— generic extensible event for middleware to push application-level notifications (state changes, team updates, etc.) to front-end subscribers without adding per-use-caseAgentEventTypeentries. Built-in well-known names:state_updated,team_updatedHintBlockEvent— one-shot hint block event for delivering complete content such as team messages, background tool results, and user interruptions, as opposed to streamed text/thinking blocksWorkspacePathNormalizer— file path normalization utility that converts absolute paths to workspace-relative form. Registers prefixes based on the active filesystem mode (local / sandbox) to prevent cross-mode prefix collisionstoolCallNameon tool events —ToolCallDeltaEvent,ToolCallEndEvent,ToolResultDataDeltaEvent,ToolResultEndEvent, andToolResultTextDeltaEventnow carry atoolCallNamefield, so consumers no longer need to cache the name mapping from the start event
Changed¶
Unified
call()/streamEvents()core — introduced an internalbuildAgentStreammethod as the shared implementation for bothcall()andstreamEvents(), ensuring theonAgentmiddleware chain fires consistently on all invocation paths.call()now extracts the result fromAgentResultEventin the event stream; the legacy standaloneagentImpllogic has been removedSession state always reloaded from store in distributed deployments — when an
AgentStateStoreis configured,activateSlotForContextnow reloads the agent state and permission engine from the store at the start of every call, preventing stale local cache reads when the same sessionId drifts across machinesToolResultEvictionMiddlewaretiming fix — moved fromonActing(where state had not yet been written, making eviction a no-op) toonReasoning, ensuring tool results are persisted before eviction runsSimplified
LocalFilesystempath resolution — refactored path resolution logic to reduce redundant code
Fixed¶
Fixed
RuntimeContextnot settinguserIdin tests, causing inaccurate user isolation
2.0.0-RC2¶
Released: 2026-06-09
Added¶
projectWritablemode (LocalFilesystemSpec) — when enabled, the agent’s file writes are routed by path: workspace metadata (MEMORY.md,agents/,skills/, etc.) goes to workspace; everything else (code, configs) lands in the project directory. Designed for code-generation agents. See Filesystem · Project-writable modeRuntime permission mode switching — new
HarnessAgent.setPermissionMode()/getPermissionMode()for dynamically adjusting the permission mode per session at runtimeSubagent event stream forwarding —
streamEvents()now forwards child agent intermediate events (TextBlockDelta,ToolCallStart, etc.) in real time, each carrying asourcepath identifying the originating agentAgentEvent.sourcefield — allAgentEventinstances now carry asourcefield to distinguish main agent events (source = null) from sub agent events (source = "main/researcher"path format) within the same event stream, enabling consumer-side demuxing without extra stateCustom prompt and model for Compaction / Memory —
CompactionConfigandMemoryConfiggain.model()and.prompt()builder methods, allowing a dedicated lightweight model and custom prompt for context compaction and memory extraction instead of the agent’s primary modelQwen 3.7 model support —
ModelRegistrynow resolvesdashscope:qwen3.7-plusand other Qwen 3.7 series modelsDirect subagent messaging —
agent_sendlets callers send messages directly to a declared subagent and receive its response without going through the parent agent’s reasoning loopChannel module — new
agentscope-extensions-channelmodule family for IM platform integration (DingTalk, Feishu/Lark, WeCom, GitHub, GitLab), with a built-in ChatUI for an out-of-the-box conversational interfaceDistributedBackendunified interface — newDistributedBackendabstraction that consolidates all distributed storage components (AgentStateStore,BaseStore,SandboxSnapshotSpec) into a single configuration point. Built-in implementations includeRedisDistributedBackend,OssDistributedBackend, andMysqlDistributedBackend. One call toHarnessAgent.builder().distributedBackend(backend)wires up the entire distributed backend — no more separate stateStore, baseStore, and snapshotSpec configuration
Changed¶
Agent fully stateless —
ReActAgentno longer holds any mutable per-session state; all mutable state is encapsulated in an internalCallExecutionand propagated via Reactor Context. A single agent instance can safely serve multiple(userId, sessionId)combinations concurrentlySession interface replaced by
AgentStateStore— removedSessionManager,StatePersistence, and related legacy interfaces; unified onAgentStateStore(built-in:InMemoryAgentStateStore,JsonFileAgentStateStore,RedisAgentStateStore,MysqlAgentStateStore), auto-partitioned by(userId, sessionId)BaseStoreinterface package renamed —BaseStoreand related interfaces moved to a new package; code using the old import path needs updatingExtension module coordinates consolidated — several extension Maven coordinates have been reorganized by capability. For example,
agentscope-extensions-session-redisis nowagentscope-extensions-redis(bundlingRedisAgentStateStore,RedisStore,RedisSnapshotSpec, etc.). Update<artifactId>in your pom if you were using the old coordinatesSandbox implementations extracted from harness core — Docker, Kubernetes, E2B, Daytona, AgentRun sandbox backends have been moved out of
agentscope-harnessinto standalone extension modules (agentscope-extensions-sandbox-*). The harness core retains only the abstract interfaces (SandboxFilesystemSpec, etc.) and no longer transitively pulls in any concrete sandbox dependency. Add the corresponding extension explicitly if you need sandbox support, e.g.agentscope-extensions-sandbox-dockerfor DockerPlan Mode improvements — improved plan file persistence and recovery, smoother
plan_enter/plan_write/plan_exittool-chain interaction, more robust HITL approval flowSkill self-evolution enhancements — refined the propose (
ProposeSkillTool) → curate (SkillCurator) → promote (SkillPromoter) closed loop, improved skill matching accuracy and cross-session reuseDashScopeHttpClientrequest timeout and retry policy adjustmentsModelRegistrymodel resolution logic improvementsAgentStateserialization format updates
Fixed¶
Fixed
PermissionContextStatelosing state during cross-session restorationFixed
agentscope-allmissing 4 sandbox extension modules (sandbox-kubernetes,sandbox-agentrun,sandbox-daytona,sandbox-e2b)
2.0.0-RC1¶
Released: 2025-05-28
First 2.0 Release Candidate. Contains the full architectural upgrade from 1.x:
Harness engineering (workspace, memory, skills, subagents, Plan Mode, context compaction)
Enterprise-grade distributed deployment (multi-tenant isolation, sandbox execution, permission system, session recovery)
Core framework redesign (event stream, message model, Middleware, HITL)
For the complete 1.x → 2.0 change list, see the V1 Migration Guide.