ADK-Rust 博客
发布历程ADK-Rust v2架构

ADK-Rust v2:从代理框架到生产运行时。

工具、工作流、状态、实时媒体、编码代理、开放协议和操作控制如何融合成一个可组合的 Rust 系统的故事。

阅读时长 14 分钟

今年三月,我们发布了 ADK-Rust v0.5 的故事。该版本使框架具备了更多能力:检索、代码执行、额外的模型提供商、持久图、加密会话以及一个可以创建实用起始项目的 CLI。

下一个问题更难了。这些能力能否成为一个开发者可以组合、观察、保护、部署并持续运行的生产系统?通往 v2 的旅程就是答案。它将 ADK-Rust 从一个不断发展的代理工具包转变为一个 Rust 运行时,用于构建其代理能够对话、使用工具、协调工作、创建工件并跨开放协议协作的产品。

阅读上一章:ADK-Rust v0.5

通往 v2 之路

六个月将代理功能转化为系统。

每个版本都解决了生产问题的不同部分。它们共同改变了开发者围绕一个 Rust 运行时可以合理构建的内容。

v0.52026 年 3 月

框架学会了更多类型的工作

RAG、代码执行、提供商改进、持久图、加密会话和 cargo-adk 扩展了一个 Rust 代理的能力。

v0.6–0.72026 年 4 月

代理跨越了真实的系统边界

A2A 实现了完整的远程任务流。AWP 为网站提供了代理接口。MCP 服务器获得了托管生命周期,同时内存和共享状态对于大型产品变得更安全。

v0.8–0.92026 年 5 月

组合成为一种开发者体验

功能层级减少了默认的依赖面。ACP 问世,模式适应了每个模型提供商,模板和附加组件使架构成为一种选择,而非复制练习。

v1.02026 年 6 月

基础变得稳定

三十九个 crate 达到了稳定层级,并承诺了语义版本控制、更强的文档门禁、安全工作、评估、托管运行时和企业部署 API。

v2.02026 年 6 月至 7 月

运行时成为产品骨干

CodingAgent 和 CodeAct 加入了代理家族。工具调用、进度、结果、取消、实时媒体、知识图谱记忆和开放协议现在都通过明确的运行时契约进行传输。

转折点

生产级代理远不止一次模型调用。

早期的代理示例自然地围绕着提示、模型和响应。实际产品很快就暴露了其余的工作:决定谁可以调用工具、保存状态、显示进度、在批准后恢复、移动生成的文件、追踪故障以及与属于另一个团队的服务进行通信。

v2 将这些职责视为框架关注点,并使用 Rust 契约。模型仍然很重要,但它在包含工具、会话、事件、回调、边界和操作策略的调用中运行。您可以在不重新设计产品的情况下替换模型。

这就是主要版本背后的架构转变:代理行为和产品基础设施现在在同一个运行时中汇合,同时又足够分离以进行组合和测试。

v2 架构

追踪一项工作在整个产品中的流转。

请求可以通过人工界面或代理协议到达。Runner 为其提供上下文,调用正确的代理形态,并流式传输类型化事件,同时工具、状态和操作控制支持该工作。

人员与系统

产品界面

Web 和移动端
语音和视频
REST · SSE · WebSocket
A2A · ACP · AWP

一个执行契约

Runner 和类型化事件流

调用上下文
工具调用和结果
实时进度
重试 · 取消 · 恢复

选择工作形态

可组合代理

LLM 和自定义
顺序 · 并行 · 循环
图和条件
实时 · 编码 · CodeAct

赋予代理有用的能力范围

工具、知识和状态

类型化 Rust 工具和 MCP
RAG 和浏览器
会话和工件
语义和图记忆

保持生产环境可理解

操作控制

认证和授权
护栏和审批
遥测和评估
检查点和审计证据
正向路径: 意图转化为工作、事件和结果。返回路径: 进度、结果、工件和证据到达调用者。

进程内部

代理、工具、会话、回调、事件和取消共享 Rust trait 和类型。

跨越边界

MCP、A2A、ACP、AWP、HTTP 和实时传输连接不同所有者的系统。

产品可见

相同的事件流可以驱动 CLI、Web UI、API 客户端、追踪查看器或远程代理。

查看工作原理

执行轨迹是产品界面。

一个有用的代理需要展示的不仅仅是它的最终语句。v2 为每个有意义的步骤在事件流中提供了一个位置,因此开发者可以围绕正在进行的工作构建界面。

01

请求

人员、服务或代理启动工作。

02

决策

代理或工作流选择下一个有意义的动作。

03

执行

工具、专家、模型或远程系统执行该步骤。

04

流式传输

类型化事件承载调用、进度、结果和状态变化。

05

继续

运行时响应、暂停等待输入、重试或稍后恢复。

想象一个编码代理正在运行测试套件。UI 通过一个关联流接收工具调用、逐行标准输出和标准错误、类型化结果、任何状态或工件更改以及代理的下一个决策。如果任务需要审批或进程中断,会话和检查点提供了明确的继续位置。

v2 为开发者带来什么

代理生命周期的一站式框架。

您可以从一个对话代理开始,并仅在产品需要时添加结构。随着系统的增长,相同的核心契约保持不变。

01

代理可以以不同方式工作

使用 LLM 代理进行灵活推理,使用确定性工作流代理处理已知序列,使用图进行分支和持久工作,使用实时代理处理语音和视频,使用 CodingAgent 进行仓库工作,或者当模型应将多步操作表达为可执行代码时使用 CodeAct。

02

进度是 API 的一部分

工具调用和工具结果是类型化事件。长时间运行的工具可以将进度发送到与代理响应相同的流中,调用 ID 将请求、实时输出和最终结果关联起来。UI 无需抓取日志即可渲染工作。

03

状态可以超越一次模型轮次

会话保留对话,工件保存生成的文件,图检查点恢复工作流,以及语义或双时态知识图谱记忆为代理提供在后续会话中仍然有用的上下文。

04

开放协议有明确的职责

MCP 连接工具和资源,A2A 连接独立部署的代理,ACP 连接编码代理客户端和服务器,AWP 为网站提供了一个结构化的代理接口,与其人工界面并行。

05

自主性有操作边界

授权回调、范围工具、护栏、审批、沙盒策略、取消、遥测、评估和审计证据让团队可以决定代理可以做什么,并检查事后发生的情况。

06

您编译所需的产品

最小层级使第一个代理保持精简。标准层级添加了常见的生产堆栈;企业层级添加了实时、浏览器、RAG、支付和 AWP;完整层级添加了最重的音频和执行能力。当预设范围过广时,单个功能仍然可用。

入门体验

选择一个工作形态,然后将其定制化。

v2 CLI 可以搭建执行形态并添加周围的功能。生成的项目仍然看起来像您自己会编写和审查的 Rust 代码。

创建并验证

cargo install cargo-adk

cargo adk new support-agent \
  --template tools \
  --addon sessions \
  --addon telemetry \
  --addon guardrails

cd support-agent
cargo adk build
cargo run

组合代理

let agent = LlmAgentBuilder::new("support")
    .description("Resolves customer issues")
    .instruction("Use the reviewed tools and cite evidence.")
    .model(Arc::new(model))
    .tool(Arc::new(LookUpOrder))
    .before_tool(approval_gate)
    .build()?;

Launcher::new(Arc::new(agent))
    .run()
    .await?;

十二个模板涵盖了常见的起始架构。九个附加组件组合了会话、遥测、MCP、认证、浏览器工具和护栏等功能。五个企业模式提供了更大的部署形态。 cargo adk build 在部署前检查生成的项目。

根据 v2 源代码验证

故事背后的细节。

工作区版本 2.0.0,Rust 2024 版,Rust 1.95 MSRV
cargo-adk 中包含 12 个项目模板、9 个附加组件和 5 种企业模式
一流的流式工具调用、进度和结果事件
LLM、工作流、图、实时、编码、CodeAct 和自定义代理
MCP、A2A v1、ACP v1、AWP、REST、SSE 和 WebSocket 边界
六种向量存储后端以及语义和知识图谱记忆
2026 年 7 月 15 日发布状态: 仓库工作区和文档目标为 2.0.0。公共 crates.io 包仍为 1.0.0,v2 发布正在完成中,因此评估当前 v2 API 的开发者应使用源代码检出并遵循仓库发布说明。

下一章从一个真实的代理开始

构建第一个工作流。保持通往生产环境的道路畅通。

从一个请求、一个可见的工具调用和一个您理解的会话开始。当产品准备就绪时,ADK-Rust v2 为这个小型代理提供了通往工作流、记忆、开放协议、实时接口、安全和部署的直接路径。