ADK-Rust 2.0

Rust 框架高性能,生产就绪人工智能代理。

ADK-Rust 将类型化代理、工具、持久状态、实时媒体和开放协议引入一个异步运行时,以便您可以从专注的代理转变为可以放心操作的系统。

从工作单元开始

ADK-Rust 中的 AI 智能体是什么?

代理是一个异步 Rust 组件。它接收调用上下文,使用模型或工具执行工作,并在处理过程中发出类型化事件。 LLM 代理、工作流、实时代理、编码代理和自定义 Rust 代理都使用此共享合约。

ADK-Rust 的引人注目之处在于,代理仍然是您可以理解和控制的软件系统的一部分。模型调用、工具输入、状态更改、批准和流事件具有显式的 Rust 合约。相同的运行时可以支持专注的助手、持久的多代理工作流程、实时语音体验或跨服务工作的代理,同时保留 Rust 团队期望的性能、并发性、可移植性和操作规范。

如果您了解 LangGraph、Google ADK、OpenAI Agents SDK 或 CrewAI,您就会认识工具、切换、工作流程、内存、护栏和跟踪。 ADK-Rust 将这些想法带入 Rust 原生运行时,并将它们与实时媒体、代码执行、RAG、工件和开放协议(例如 MCP、A2A、ACP 和 AWP)连接起来。版本 2 通过图形、实时、编码和 CodeAct 代理扩展了该基础;提供商感知的工具模式;可组合的项目模板和 货物adk构建;更强的国家和运营控制;以及从第一次模型调用到生产的一致类型化事件跟踪。

ADK-Rust v2 运行时架构产品表面将请求发送到 ADK Runner。运行程序通过类型化事件协调代理形状、模型提供程序、工具、状态服务、开放协议和生产控制。ADK-Rust v2 — 一个请求,整个系统橙色实线:执行 · 灰色虚线:事件、结果、恢复 · 紫色边界:开放协议产品表面网络和移动设备UI / API 客户端语音和视频实时客户端其他代理A2A / ACP / AWPCLI & 职位货物-adk / cronADK执行运行时Runner会话·调用上下文·取消·回调·事件流选择工作所需的代理类型LLM 代理理由+工具工作流程顺序/并行/循环检查点+HITLCodeAct编写+运行代码实时语音+视频定制实施代理类型化事件流模型文本 · 工具调用 · 进度 · 状态增量 · 工件 · 传输 · 错误代理的能力模型提供者Gemini · OpenAI · AnthropicOllama · Bedrock · Azure AI工具和专家#[tool] · skills · browserMCP · ACP · code sandbox状态与知识sessions · memory · RAGartifacts · graph checkpoints媒体和接口audio · video · A2UIREST · SSE · WebSocket代理协议A2A · AWPdiscovery · task contracts商业·不断发展ACP commerce · AP2 alphadurable transaction journals打电话结果发出事件协议和部署边界REST / SSEA2AACPAWPMCPWebSocket协议在系统边界调整运行时;他们不会取代它。授权·工具授权·护栏·沙箱·插件·遥测·评估·重试/取消配套产品Studio · UI · Playground · 企业平台

如何阅读架构

按照图从左到右进行操作。产品表面向Runner发送请求。 Runner 附加会话状态和调用上下文,然后调用选定的代理。模型、工具和状态支持工作,而类型化事件则返回进度和结果。

运行时内部

Runner、代理、类型化事件、模型/工具循环、会话、回调、传输和取消。

在边界处

MCP、A2A、ACP、AWP、HTTP、SSE 和实时传输连接单独的系统和信任区域。

框架之外

Studio,UI、Playground、控制平面消耗ADK-Rust;它们不在 Runner 内部运行。

框架面

架构背后的功能。

ADK-Rust 将完整的代理生命周期引入一个框架中:组合代理行为,为其提供工具,保留上下文,将其连接到其他系统,并在生产中安全地操作它。以下各组显示了这些功能如何组合在一起。

构建LLM、工作流、图形、实时和编码代理;为他们配备类型化工具、MCP、RAG、内存、会话和工件;通过REST、A2A、ACP、AWP连接;然后添加授权、护栏、遥测和生产评估。

撰写

撰写 capability

LlmAgent

The main model-driven agent. Give it instructions, an LLM, tools, callbacks, and optional sub-agents; the Runner streams its work as typed events.

法案

法案 capability

#[tool]

Turns a typed async Rust function into a model-callable tool and derives the argument schema from Rust types.

记住

记住 capability

sessions

Keep conversation events and application state together so a user can continue the same interaction over multiple turns.

连接

连接 capability

REST

Exposes familiar HTTP endpoints for clients that send a request and receive a structured response.

操作

操作 capability

auth

Establishes who is calling the system through API keys, OAuth, OIDC, SSO, and application identity.

构建

构建 capability

12 templates

Generate working starting shapes for focused agents, tools, retrieval, APIs, workflows, realtime sessions, and custom logic.

看看它是如何工作的

在作品发生时展示作品。

Runner 解析会话、构建调用上下文、运行代理、流模型和工具工作、应用状态更改、保留持久事件,并在发生时将进度返回给调用者。

同样的跟踪可以提供给终端、Web UI、API 客户端、评估或实时对话。

遵循真实的要求

客户问:“为什么我的支付失败?” Runner 打开正确的会话,流式传输模型输出和工具活动,记录状态更改,并将每个有用的事件返回到界面。用户看到进度,而操作员则获得完整的执行记录。

通过 ADK-Rust 进行一次调用请求加载会话,进入运行器,循环模型和工具工作,发出类型化事件,并在响应返回之前保留状态和工件。在运行时遵循一个请求没有什么会消失在黑匣子中:每个阶段都会产生类型化的状态或事件。请求内容+身份加载会话历史+状态Runner上下文+生命周期代理决定下一步型号流响应工具对系统采取行动活动用户界面/服务器坚持足迹会话事件 · 状态增量 · 内存 · 工件 · 图形检查点 · 评估跟踪

撰写行为

当工作增长时,在不丢失线程的情况下分割工作。

研究多主体模式

路由器识别必须完成的工作。专家处理他们最了解的部分。顺序和并行工作流程控制执行顺序,而图形检查点则保留附加到同一作业的证据、批准和进度。

先进的ADK-Rust多代理客户操作工作流程客户访问事件将路由至并行账户、支付和平台代理。他们使用 MCP 和 A2A 系统,将证据写入共享检查点状态,并通过重试、批准、操作和审计路径汇聚在主管图中。在不失去控制的情况下解决真实的客户事件用例:“付款成功,但我们的团队工作空间仍然被锁定。”工作流程必须确定事实,选择安全的补救措施,请求批准采取后续行动,并留下证据线索。客户网页·语音·API分诊路由器LLConditionalAgent分类·设定紧急程度·选择专家请求并行调查·ParallelAgent账户代理身份+权利读取客户、团队和访问状态付款代理计费+交易核对费用、发票和计划平台代理运行时+配置检查锁、作业和服务运行状况扇出系统边界客户关系管理+身份MCP 资源/工具ERP+支付MCP + 商业杂志供应服务A2A 远程代理共享事件状态+图检查点customer_id · 付款证据 · 权利状态 · 平台健康状况 · 信心 · 建议采取的行动每个专家都会撰写打印的证据;重试和人为中断从同一检查点恢复。主管图综合证据GraphAgent比较事实·评分置信度证据足够吗?条件边缘准备/调查再调查一下LoopAgent + 反射仅重试丢失的分支审批门图形中断解锁/退款需要专人按顺序行事SequentialAgent失踪简历选定的专家准备好了结果流工作区恢复 · 客户响应 · 证据工件 · 会话事件 · 审计记录 · 遥测跟踪 · 评估样本授权·RBAC·工具确认·护栏·取消·沙箱·遥测·评估围绕整个调用
该图并没有要求一个智能体即兴创作一切。路由缩小了问题范围,专家同时进行调查,共享状态使证据保持一致,而相应的行动则保持在明确的批准边界之后。

LlmAgent

集中推理

模型、指令、工具、回调和流输出——大多数系统的小而有用的中心。

Sequential · Parallel · Loop

确定性工作

直接在Rust程序中表达顺序、并发、重复和退出条件。

GraphAgent

持久的编排

分支、检查点、中断一个人,并在流程或对话继续后恢复。

CodingAgent · CodeActAgent

软件即行动

让代理在您控制的工作区和沙箱边界内检查、编辑和运行代码。

RealtimeAgent

现场对话

通过一次实时会话携带音频、文字记录、视频帧、中断和服务器端工具。

CustomAgent

您自己的运行时逻辑

实现直接用 Rust 编写的产品特定行为的代理合约。

围绕代理的系统

模型是产品的一部分。

有用的代理需要工具、状态、接口、边界和证据。 ADK-Rust 通过您拥有的可组合 Rust 接口公开每个部分。

一种产品,多种责任

在客户支持产品中,模型起草响应,工具检查订单,会话携带客户上下文,授权控制退款,工件存储收据,遥测记录结果。每个职责在运行时都保持可见。

完整的ADK-Rust代理产品架构接口进入 ADK-Rust 运行时,该运行时协调代理逻辑、可替换模型适配器、工具、状态和知识服务。类型化事件在共享控制下产生可见的进度、工件、操作、审计记录和评估证据。一个有用的代理产品是一个完整的系统模型可以改变。合同、状态、工具、控制和证据仍然属于您。人员与界面网络应用程序聊天·表格·工件语音和视频现场媒体会议API & 事件REST · SSE · WebSocket其他代理A2A · ACP · AWPADK-Rust 运行时Runner + 类型化事件流会话·上下文·生命周期·取消代理逻辑原因·路线工作流程图·HITL模型/工具循环致电·观察·批准·重试·继续型号 · 一个可更换适配器提供者托管/本地模式provider-aware工具和外部系统Rust工具#[tool]MCP工具·资源浏览器网络操作专家ACP · A2A状态、知识和持久的工作会议内存RAG文物检查站产品能展示什么实时进展令牌·工具状态·音频有用的文物文件·报告·媒体·UI批准的行动写入·付款·交接持久连续性会议·记忆·简历证据事件·审计·遥测质量信号评估·成本·延迟类型化事件返回到每个接口授权·身份·工具授权·审批·护栏·沙箱·取消·遥测·评估
该模型提供了完整产品内部的智能:人们可以使用的界面、可以行动的工具、生存的状态、限制风险的控制以及解释所发生事件的证据。
型号

更改模型而无需重新设计代理。

托管前沿模型、快速路由模型、本地 Ollama 和本地 Mistra.rs 推理位于通用 Llm 合约的后面。

Gemini · OpenAI · Anthropic · OpenRouter · DeepSeek · Groq · Ollama · Bedrock · Azure AI · 兼容端点

工具

工具使用明确的、可检查的合同。

将类型化的 Rust 函数、MCP 服务器、技能、浏览器会话、编码代理或沙盒进程转换为运行时可以检查和调用的功能。

#[tool] · FunctionTool · MCP · ACP · 技能 · 浏览器 · 代码

状态

保持对话及其产生的成果。

会话保存事件历史记录。记忆检索有用的知识。工件保存文件。图形检查点使长时间的工作可以恢复。

SQLite · PostgreSQL · Redis · MongoDB · Firestore · Neo4j · 加密会话

实时

现场代理不仅仅是一个语音端点。

ADK-Rust 在 Rust 拥有的会话中保留音频、文字记录、视频帧、工具调用、中断和更改上下文。

OpenAI Realtime · Gemini Live · Vertex Live · LiveKit · 可选 WebRTC

知识

将检索带入相同的执行轨迹中。

在模型给出答案之前,对文档进行分块、嵌入、搜索向量存储、对结果重新排序以及按项目隔离内存。

RAG 管道 · 语义记忆 · 知识图 · 五种向量存储实现

控制

将批准放在行动发生的地方。

授权、回调、护栏、沙箱配置文件、取消、遥测和评估构成了生产执行边界。

RBAC · OAuth/OIDC · 工具确认 · PII 护栏 · OpenTelemetry · 评估

选择边界

使用与距离匹配的协议。

从功能运行的地方开始。

当子代理共享部署、状态和信任时,将子代理保留在一个 ADK-Rust 运行时内。当功能、代理、编码工作区或网站具有自己的部署、流程、所有权或信任边界时,引入协议。

相同Rust流程

代理、子代理或工具

外部工具或资源

MCP

独立部署代理

A2A

编码过程或IDE

ACP

代理可读的网站

AWP

MCP

模型上下文协议

赋予代理在其他地方的能力。

What is MCP?

外部服务器发布代理可以调用的工具和它可以读取的资源的标准方法。

Why use this protocol?
您可以避免为每个数据库、SaaS 产品、文件系统或知识源编写定制适配器,而且同一台服务器可以为多个代理提供服务。
How does ADK-Rust use MCP?
McpToolset将服务器连接到ADK-Rust的工具合约。运行时发现其架构,将其规范化为所选模型提供程序,并且可以读取 MCP 资源或管理本地 MCP 服务器进程。
When should I choose MCP?
当该功能属于单独的进程、已有 MCP 服务器或应在多个代理和应用程序之间共享时,请使用 MCP。
What connects through MCP?
The other side is an MCP server: for example a database gateway, business API, document store, developer tool, or internal service.
Explore MCP in ADK-Rust
A2A

代理到代理协议

让独立部署的代理协同工作。

What is A2A?

一种网络协议,用于发现远程代理、向其发送工作、跟踪进度并跨 HTTP 边界接收结果。

Why use this protocol?
专家可以保留自己的模型、工具、状态、发布周期、部署和安全边界。
How does ADK-Rust use A2A?
ADK-Rust 可以通过其 A2A v1 服务器和任务操作公开代理。然后,协调员可以将该远程服务视为专家,同时流式事件保留工作进度。
When should I choose A2A?
当代理单独部署、扩展、拥有或保护时,请使用 A2A。当这些边界都不存在时,使普通子代理保持在进程中。
What connects through A2A?
The other side is another agent service—perhaps a research specialist, finance agent, partner agent, or a system owned by another team.
Explore A2A in ADK-Rust
ACP

代理客户端协议

将软件工作委托给真正的编码代理。

What is ACP?

一种标准化编码代理和托管它们的客户端(包括编辑器、CLI 和编排系统)之间的会话的协议。

Why use this protocol?
编码工作需要工作空间上下文、流式处理进度、取消和整个会话中的权限决策。
How does ADK-Rust use ACP?
AcpAgentTool 和 AcpToolset 让 ADK-Rust 代理启动或连接到 ACP 进程、建立会话、流式传输其工作,并将结果作为工具调用返回。可选的服务器端可以向 ACP 客户端公开 ADK-Rust 代理。
When should I choose ACP?
使用 ACP 进行存储库探索、实施、重构、测试或任何应在受控开发工作空间内发生的委派任务。
What connects through ACP?
The other side is an ACP-compatible coding agent or client, such as Codex, Claude Code, an IDE, or your own ACP implementation.
Explore ACP in ADK-Rust
AWP

代理网络协议

在代理抓取网站之前让网站易于理解。

What is AWP?

一种网络协议,网站通过该协议发布其身份、代理可以做什么、适用哪些策略以及其面向代理的服务是否健康。

Why use this protocol?
HTML 向浏览器解释页面,但很少向自治代理解释业务功能、同意、信任、限制或事件。
How does ADK-Rust use AWP?
adk-awp 加载业务上下文,生成发现和功能清单,并添加版本化的 Axum 路由以实现信任感知速率限制、同意、事件订阅和运行状况监控。
When should I choose AWP?
当代理应该有意发现和使用网站或服务而无需仅依赖脆弱的页面解释时,请使用 AWP。
What connects through AWP?
The other side is a visiting personal agent, enterprise agent, partner system, or agent-aware client that discovers and respects the site's published contract.
Explore AWP in ADK-Rust

开发者快速入门

从终端到工作代理,一次做出一个决定。

从一个小型的、有效的 Rust 项目开始。下面的指导步骤解释了生成器添加的内容、如何在本地编译项目以及随着产品的增长在何处扩展项目。

最后你会得到什么

编译后的 Rust 代理,带有类型化工具、交互式 Launcher 会话、遥测设置、会话和护栏集成点以及终端中的真实模型响应。生成的项目是普通的 Rust 源代码,您可以阅读、更改和扩展。

开始之前

您的机器需要两件事

01

Rust 1.95 或更高版本。
使用 rustup 安装或更新稳定的工具链。

02

API 型号钥匙。
该路径使用 GOOGLE_API_KEY;稍后可以选择另一个提供商。

01

安装 ADK 项目生成器

Cargo-adk 添加了用于创建、检查、构建和部署代理项目的 Cargo adk 命令。

cargo install cargo-adk
02

创建一个有用的启动代理

从可以调用类型化 Rust 工具的代理开始。在生成项目时添加可观察性、会话状态和护栏挂钩。

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

添加您的模型凭据

生成的示例默认使用 Gemini。复制安全示例文件,然后将密钥放入未跟踪的 .env 文件中。

cd support-agent
cp .env.example .env
# set GOOGLE_API_KEY in .env
04

运行前编译

Cargo adk build 检查生成的依赖项、功能组合、Rust 类型并发布二进制文件,而无需部署任何内容。

cargo adk build
05

运行并与代理交谈

启动生成的控制台,输入消息,然后观察相同类型的运行时,该运行时可以稍后为 API、工作流或实时产品提供支持。

cargo run
支持代理 — zsh

安装一次

$ cargo install cargo-adk

生成项目

$ cargo adk new support-agent \
+  --template tools \
+  --addon telemetry \
+  --addon sessions \
+  --addon guardrails
已创建 support-agent/
├── Cargo.toml 依赖项 + 功能标志
├── src/main.rs 代理 + 类型化工具
├── .env.example 所需配置
└── 自述文件.md 项目特定说明

配置模型

$ cd support-agent
  cp .env.example .env
  # Add GOOGLE_API_KEY to .env

验证,然后运行

$ cargo adk build
  cargo run
实际 v2 运行 · 类型化工具调用
  ADK-Rust — support-agent
    Type a message to chat. Type 'exit' to quit.

  You > Greet Ada casually.

  [tool] greet({"name":"Ada","style":"casual"})
  Hey Ada! What's up?

  You > exit

  Goodbye.
✓ 项目已编译·运行时就绪·本地验证完成

了解脚手架

查看命令是如何组装的。

模板提供工作剂形状。每个附加组件都提供所需的包功能、导入、配置以及完成集成的明确位置。

模板

--template 工具

生成具有类型化 #[tool] 函数和模型工具调用所需的模式连接的 LLM 代理。

Add-on

--addon 遥测

启用 OpenTelemetry 集成,以便可以跟踪模型、工具和运行时工作。

Add-on

--addon 会议

添加会话服务连接,以便对话状态可以在一次模型调用之外继续存在。

Add-on

--addon 护栏

添加用于输入验证、输出检查和内容过滤的功能和清除挂钩。

选择不同的起始形状

常见代理架构的十二个实用起点。

选择与第一个有用的作品相匹配的形状。模板生成可编辑的 Rust 源、依赖项、提供程序配置和可运行的入口点。

打开完整的快速入门
llm代理模板

从一个推理代理开始。

生成 LlmAgentBuilder、Gemini 模型设置、说明、会话支持的 Launcher 和交互式终端。

选择它作为助手、提取、分类或集中的模型和工具循环。

生成的起点

一名 LLM 代理 · 流式控制台 · 提供商配置

cargo adk new my-agent --template llm
tools代理模板

向客服人员提供键入 Rust 的操作。

添加 src/tools.rs 以及工作的 #[tool] 函数、类型化参数、JSON 模式生成以及在 LLM 代理上的注册。

当代理需要计算、检索数据、调用业务逻辑或执行操作时选择它。

生成的起点

LlmAgent · Greet 工具 · serde · schemars · adk-tool

cargo adk new my-agent --template tools
rag代理模板

来自文档和索引知识的答案。

使用文档分块、Gemini 嵌入、内存中向量存储、示例文档和 RagTool 创建 RAG 管道。

选择它来获取产品文档、政策、研究集合或基于私人材料的答案。

生成的起点

RagPipeline · 分块器 · 嵌入 · 矢量搜索 · RagTool

cargo adk new my-agent --template rag
api代理模板

通过 HTTP 服务公开代理。

生成一个 Axum 服务器,其中包含 LLM 代理的运行状况、会话创建和流式运行端点。

当 Web 应用程序、移动客户端、后端服务或自动化平台调用代理时选择它。

生成的起点

Axum · REST 路由 · SSE 响应 · 内存中会话

cargo adk new my-agent --template api
a2a模式别名

部署代理作为远程专家。

解析为 a2a 服务器模式,并将 LLM 代理与服务器和会话功能相结合,以实现代理到代理的访问。

当另一个代理必须跨部署或所有权边界发现并调用此代理时选择它。

生成的起点

A2A 服务器·代理身份·任务处理·会话

cargo adk new my-agent --template a2a
graph代理模板

准备一个持久的、分支的工作流程。

启用图形功能并为节点、边、检查点、中断和恢复创建导入和代理起点。

选择它用于具有分支、审批步骤、恢复或持久执行状态的长期运行工作。

生成的起点

图特征·工作流代理·拓扑起点

cargo adk new my-agent --template graph
realtime代理模板

准备现场语音或视频代理。

启用实时支持并通过实时导入和提供程序配置创建简洁的语音代理起点。

选择它来进行自然对话、打断、实时翻译、音频工具或传入视频帧。

生成的起点

实时功能·语音指令·运输起点

cargo adk new my-agent --template realtime
sequential工作流程模板

按固定顺序通过代理传递工作。

在 SequentialAgent 内生成研究员和作家代理,以便每个阶段都会收到前一阶段产生的工作。

当流程具有明确的阶段(例如收集、分析、起草、审查和发布)时选择它。

生成的起点

两个 LLM 代理 · 有序执行 · 共享调用轨迹

cargo adk new my-agent --template sequential
parallel工作流程模板

同时运行独立专家。

在 ParallelAgent 内生成两个专家代理,并通过一个父工作流程收集他们的工作。

当多个调查可以从相同的输入开始并独立完成时选择它。

生成的起点

两个 LLM 代理 · 并发执行 · 聚合结果

cargo adk new my-agent --template parallel
loop工作流程模板

重复有界细化循环。

在 LoopAgent 内创建一个具有明确完成信号和五次迭代安全限制的工作线程。

选择它来进行起草、批评、修复、验证或搜索过程,通过重复进行改进。

生成的起点

LoopAgent 构建器 · 工作代理 · 完成指令 · 最大迭代次数

cargo adk new my-agent --template loop
conditional工作流程模板

将每个请求发送给合适的专家。

在 ConditionalAgent 内生成技术代理和通用代理,从传入请求中选择路径。

当工作类别需要不同的指令、工具、模型或领域专家时选择它。

生成的起点

ConditionalAgent · 两条路线 · 基于 LLM 的选择

cargo adk new my-agent --template conditional
custom代理模板

直接执行代理合同。

使用 Agent 特征方法和运行函数创建一个 MyAgent 类型,为您自己的 Rust 执行逻辑和事件流做好准备。

选择它用于确定性编排、现有状态机、域运行时或需要完全 Rust 控制的行为。

生成的起点

代理特征骨架 · InvocacyContext · EventStream 入口点

cargo adk new my-agent --template custom

CLI 注册表还包括特定于提供商的 openai 模板、五种企业模式、 basica2a 别名和可组合功能附加组件。

cargo adk templatescargo adk addons

编译你需要的东西

从小处开始。当产品需要时添加系统。

首先为项目的执行形状选择一个模板。然后为编译到二进制文件中的功能选择一个功能层。

功能层控制依赖项、编译时间、二进制表面和可用框架 API。持久数据库、MCP、云秘密管理器和特定的实时传输仍然是明确的选择。

01 · 从这里开始

最小的

代理商·Gemini·Runner·会话

具有最小默认表面的聚焦代理。

02 · 构建一个产品

标准

工具·内存·图形·服务器·身份验证·评估·遥测

大多数 API、工作流程系统和内部代理产品。

03 · 拓宽体系

企业

实时基础·浏览器·RAG·支付·AWP

需要更丰富交互和互操作性的产品。

04 · 专业表面

音频·代码执行·沙箱

选择最强大的本地和执行功能。

adk-rust = { version = "2.0.0", features = ["standard"] }

使用 ADK-Rust 构建

创建一个工作代理,了解其运行时间,并充满信心地发展它。

您的第一个有用的里程碑是一个请求、一个可见的工具调用和一个您理解的会话。引导式快速入门构建了该路径。从那里添加您的产品所需的工作流程、状态、协议和操作控制。