v0.9.* agentic-runtime
The theme of V0.9 is agentic-runtime. This release focuses on ADK’s message protocol, Agent execution control, and multi-turn runtime capabilities. While preserving the default *schema.Message path, it introduces AgenticMessage along with generic abstractions, laying the foundation for richer model-native Agent protocols, server-side tool calling, execution interruption and resumption.
1. AgenticMessage and ADK Support
V0.9 introduces schema.AgenticMessage to express a more complete Agentic message structure compared to the traditional schema.Message.
AgenticMessageadopts a content block model, supporting structured fragments such as text, reasoning content, tool calls, tool results, server-side tools, MCP tools, and multimodal content.[]ContentBlockpreserves the block ordering from different model protocol responses more completely; the new block types are also better suited for structures like tool use, reasoning, and streaming metadata in protocols such as OpenAI Responses API, Claude, and Gemini.components/modelintroduces theAgenticModelcomponent for integrating model implementations that useAgenticMessageas input/output.- ADK provides typed agent, typed event, typed runner, and typed
ChatModelAgentsupport for theAgenticMessagepath, enabling AgenticModel to participate in the ADK Agent lifecycle. - Eino: Quick Start: The entire series has been rewritten based on AgenticMessage.
2. ChatModelAgent Capability Enhancements
V0.9 systematically enhances ChatModelAgent’s execution control, model call reliability, and middleware extension points.
Cancel
- Introduces Agent Cancel capability for externally terminating a running Agent.
- Supports safe-point cancellation, recursive cancellation, cancel timeout escalation, and checkpoint persistence during cancellation.
- Interrupts that occur during cancellation are unified under cancel semantics; callers can distinguish active cancellation from normal business failures via
CancelError. - Eino ADK: Agent Cancel and TurnLoop Quick Start
Model Retry
- Retry has been expanded from simple error retry to
ShouldRetry(ctx, RetryContext) -> RetryDecision. - Retry decisions can read model output, reject outputs that don’t meet conditions, modify the next input, append model options, and override backoff.
Model Failover
- Introduces Model Failover capability for switching to backup models after a model call failure.
- Failover decisions can read the failed attempt’s output, error, original input, and attempt number, then select which model to use next.
- Supports rewriting input for backup models; also supports prioritizing the last successfully called model to reduce the cost of starting from the fixed primary model each time.
- ChatModel Failover Guide
Middleware Enhancements
ChatModelAgentMiddlewareaddsAfterAgentfor executing cleanup logic after an Agent completes successfully.- Summarization, reduction, skill, filesystem, plan-task, patch-tool-calls and other middlewares have been genericized to support the
AgenticMessagepath. - Summarization middleware adds
TypedMiddleware.Summarize, transitioning synchronous summarization from a standalone function to a cohesive middleware capability. - Filesystem middleware enhances multimodal reading capabilities and adds PDF pages validation.
- Introduces
agentsmdmiddleware for loading and injectingAGENTS.mdstyle project instructions. ChatModelAgentStateaddsToolInfosandDeferredToolInfosas the primary path for middlewares to adjust the tool set visible to the model.ToolInfosrepresents tools directly visible to the current model call;DeferredToolInfosrepresents candidate tools that can be discovered by the model on demand through tool search mechanisms.- Tool search middleware supports three tool loading approaches: using the model-side native tool search capability to load from deferred tools on demand; providing a fixed-schema
ToolSearchToolper model protocol requirements, allowing the model to search deferred tools through this entry point; without relying on model-side protocol, using Eino’s customtool_searchtool to retrieve tools and append matches to regularToolInfos. - Compose adds
AgenticToolsNode;ToolsNodeadds tool name and argument alias support. - Eino ADK: ChatModelAgentMiddleware
3. TurnLoop
V0.9 introduces TurnLoop to elevate a one-shot Agent run into a continuously running, externally-driven turn-level runtime.
- Designed for multi-turn execution:
TurnLoopcontinuously receives external input, with each turn independently planning input, constructing the Agent, and consuming events—suitable for long-running interactive Agents. - Supports input merging:
GenInputdecides at the turn boundary which inputs to consume in this turn and which to continue waiting for, enabling applications to implement batching, deduplication, merging of consecutive user inputs, and other strategies. - Supports preemption:
Pushwith a preempt option atomically writes new input and requests cancellation of the current turn, allowing high-priority input to interrupt a running Agent. - Supports declarative checkpoint/resume: on recovery, applications don’t need to manually restore the input queue;
TurnLoopdistinguishes between interrupted inputs, unprocessed inputs, and newly arrived inputs after recovery—applications only need to declare how these inputs re-enter subsequent turns. - Eino ADK: Agent Cancel and TurnLoop Quick Start
Upgrade Guide
💡 As of now (5.19), the latest version is v0.9.0-beta.1, with the stable release expected in about one week. Before the stable release, always use the latest beta version; after the stable release, upgrade to the latest stable version.
# Upgrade to the latest beta (use before stable release)
go get github.com/cloudwego/eino@v0.9.0-beta.1
go get github.com/cloudwego/eino-ext/components/model/agenticopenai@v0.2.0-beta.1
go get github.com/cloudwego/eino-ext/components/model/agenticark@v0.2.0-beta.1
go get github.com/cloudwego/eino-ext/components/model/agenticclaude@v0.1.0-beta.1
go get github.com/cloudwego/eino-ext/components/model/agenticgemini@v0.2.0-beta.1
go get github.com/cloudwego/eino-ext/components/model/agenticdeepseek@v0.1.0-beta.1
go get github.com/cloudwego/eino-ext/components/model/agenticqwen@v0.1.0-beta.1
go get github.com/cloudwego/eino-ext/components/model/agenticopenai@v0.2.0-beta.1
go get github.com/cloudwego/eino-ext/callbacks/cozeloop@v0.3.0-beta.1
# After stable release, replace with the latest stable version numbers
go get github.com/cloudwego/eino@v0.9.0
go get github.com/cloudwego/eino-ext/components/model/agenticopenai@v0.2.0
go get github.com/cloudwego/eino-ext/components/model/agenticark@v0.2.0
go get github.com/cloudwego/eino-ext/components/model/agenticclaude@v0.1.0
go get github.com/cloudwego/eino-ext/components/model/agenticgemini@v0.2.0
go get github.com/cloudwego/eino-ext/components/model/agenticdeepseek@v0.1.0
go get github.com/cloudwego/eino-ext/components/model/agenticqwen@v0.1.0
go get github.com/cloudwego/eino-ext/components/model/agenticopenai@v0.2.0
go get github.com/cloudwego/eino-ext/callbacks/cozeloop@v0.3.0
Check the latest version numbers: github.com/cloudwego/eino/tags