ADK Studio
用于通过拖放构建 AI 智能体的可视化开发环境。
概览
ADK Studio 提供了一个低代码界面,用于设计、测试和部署使用 ADK-Rust 构建的 AI 智能体。通过可视化方式创建复杂的多智能体工作流,然后将其编译为生产就绪的 Rust 代码。

安装
# 从 crates.io 安装(独立二进制文件)
cargo install adk-studio
# 或从源代码构建
cargo build --release -p adk-studio
快速开始
# 启动 studio 服务器
adk-studio
# 在浏览器中打开
open http://localhost:3000
CLI 选项
| 选项 | 描述 | 默认值 |
|---|---|---|
--port, -p | 服务器端口 | 3000 |
--host, -h | 绑定地址 | 127.0.0.1 |
--dir, -d | 项目目录 | ~/.local/share/adk-studio/projects |
--static, -s | 覆盖静态文件目录 | (嵌入式) |
# 绑定到所有接口以进行远程访问
adk-studio --host 0.0.0.0 --port 8080
# 自定义项目目录
adk-studio --dir ./my-projects
分步教程
按照此教程在 ADK Studio 中构建您的第一个 AI 智能体。
步骤 1:创建新项目
点击右上角的 + 新建项目 按钮。

输入您的项目名称(例如,“演示项目”)并点击 创建。
步骤 2:向画布添加智能体
左侧边栏包含 智能体调色板,其中有可用的智能体类型:
- LLM 智能体 - 由语言模型驱动的单一 AI 智能体
- 顺序 - 按顺序执行子智能体
- 并行 - 并发执行子智能体
- 循环 - 迭代直到满足退出条件
- 路由器 - 根据输入路由到子智能体
点击 LLM 智能体 将其添加到画布。

步骤 3:配置智能体
当您选择一个智能体时,右侧会出现 属性面板。您可以在这里配置:
- 名称 - 智能体的标识符
- 模型 - LLM 提供商和模型 (Gemini, OpenAI, 等)
- 指令 - 智能体的系统提示

步骤 4:向智能体添加工具
向下滚动左侧边栏找到 工具调色板:
- 函数 - 带有代码编辑器的自定义 Rust 函数
- MCP - Model Context Protocol 服务器
- 浏览器 - 46 种 WebDriver 自动化操作
- Google 搜索 - 基于网络的搜索
- 加载工件 - 将文件加载到上下文中
点击一个工具以将其添加到您的智能体。

步骤 5:构建和测试
点击 构建项目 以编译您的智能体。构建完成后,使用底部的 聊天面板 通过真实的对话测试您的智能体。

聊天支持:
- 实时 SSE 流式响应
- 智能体执行动画
- 用于调试的事件跟踪面板
步骤 6:查看生成的代码
点击 查看代码 查看从您的可视化设计生成的生产就绪的 Rust 代码。

您可以复制此代码或使用 编译 生成一个完整的 Rust 项目。
功能
Agent 类型
| Agent | 描述 |
|---|---|
| LLM Agent | 由 LLM 驱动的单个 Agent |
| Sequential | 按顺序执行子 Agent |
| Parallel | 并行执行子 Agent |
| Loop | 迭代直到退出条件 |
| Router | 根据输入路由到子 Agent |
Tool 类型
| Tool | 描述 |
|---|---|
| Function | 带有代码编辑器的自定义 Rust 函数 |
| MCP | Model Context Protocol 服务器 |
| Browser | 46 种 WebDriver 自动化操作 |
| Google Search | 基于事实的网络搜索 |
| Load Artifact | 将文件加载到上下文中 |
实时聊天
直接在工作室中测试 Agent:
- 实时 SSE 流式响应
- Agent 执行动画
- 用于调试的事件追踪面板
- 会话内存持久化
代码生成
将可视化设计转换为生产代码:
- 查看代码 - 预览生成带语法高亮的 Rust 代码
- 编译 - 生成完整的 Rust 项目
- 构建 - 编译为可执行文件,并提供实时输出
- 运行 - 执行构建好的 Agent
架构
┌─────────────────────────────────────────────────────────────┐
│ ADK Studio UI │
│ ┌─────────────┐ ┌─────────────┐ ┌─────────────────────┐ │
│ │ Palette │ │ Canvas │ │ Properties │ │
│ │ - Agents │ │ ReactFlow │ │ - Name │ │
│ │ - Tools │ │ Workflow │ │ - Model │ │
│ │ │ │ Designer │ │ - Instructions │ │
│ └─────────────┘ └─────────────┘ └─────────────────────┘ │
└─────────────────────────────────────────────────────────────┘
│
▼ HTTP/SSE
┌─────────────────────────────────────────────────────────────┐
│ ADK Studio Server │
│ ┌─────────────┐ ┌─────────────┐ ┌─────────────────────┐ │
│ │ Routes │ │ Codegen │ │ Storage │ │
│ │ /api/* │ │ Rust code │ │ Projects │ │
│ │ /chat │ │ generation │ │ File-based │ │
│ └─────────────┘ └─────────────┘ └─────────────────────┘ │
└─────────────────────────────────────────────────────────────┘
│
▼ Build
┌─────────────────────────────────────────────────────────────┐
│ Generated Rust Project │
│ ┌─────────────────────────────────────────────────────┐ │
│ │ Cargo.toml + src/main.rs │ │
│ │ Uses: adk-rust, adk-agent, adk-model, etc. │ │
│ └─────────────────────────────────────────────────────┘ │
└─────────────────────────────────────────────────────────────┘
API 端点
项目
| 端点 | 方法 | 描述 |
|---|---|---|
/api/projects | GET | 列出所有项目 |
/api/projects | POST | 创建新项目 |
/api/projects/:id | GET | 获取项目详情 |
/api/projects/:id | PUT | 更新项目 |
/api/projects/:id | DELETE | 删除项目 |
代码生成
| 端点 | 方法 | 描述 |
|---|---|---|
/api/projects/:id/codegen | POST | 生成 Rust 代码 |
/api/projects/:id/build | POST | 编译项目 |
/api/projects/:id/run | POST | 运行已构建的可执行文件 |
聊天
| 端点 | 方法 | 描述 |
|---|---|---|
/api/chat | POST | 发送消息 (SSE 流) |
环境变量
| 变量 | 描述 | 必需 |
|---|---|---|
GOOGLE_API_KEY | Gemini API 密钥 | 是(针对 Gemini) |
OPENAI_API_KEY | OpenAI API 密钥 | 是(针对 OpenAI) |
ADK_DEV_MODE | 使用本地工作区依赖 | 否 |
RUST_LOG | 日志级别 | 否(默认:info) |
生成的代码结构
my-project/
├── Cargo.toml
└── src/
└── main.rs
生成的 main.rs 示例:
use adk_rust::prelude::*;
use adk_rust::Launcher;
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
dotenvy::dotenv().ok();
let api_key = std::env::var("GOOGLE_API_KEY")?;
let model = GeminiModel::new(&api_key, "gemini-2.0-flash")?;
let agent = LlmAgentBuilder::new("assistant")
.description("Helpful AI assistant")
.instruction("You are a helpful assistant.")
.model(Arc::new(model))
.build()?;
Launcher::new(Arc::new(agent)).run().await?;
Ok(())
}
模板
Studio 包含预构建的模板:
- 基本助手 - 简单的 LLM agent
- 研究 Agent - 带有 Google 搜索的 Agent
- 支持路由器 - 多 agent 路由
- 代码助手 - 带有代码工具的 Agent
最佳实践
| 实践 | 描述 |
|---|---|
| 从简单开始 | 从单个 LLM agent 开始,逐步增加复杂性 |
| 经常测试 | 使用聊天面板验证行为 |
| 审查代码 | 在部署前检查生成的代码 |
| 项目版本控制 | 导出并进行项目 JSON 版本控制 |
| 使用模板 | 从模板开始,实现常见模式 |
上一页: ← Memory | 下一页: Development Guidelines →