本文作者:阿里云无影技术专家 吴晓
什么是无影 AgentBay
无影 AgentBay 是阿里云提供的云端 GUI 沙箱环境服务,专为 AI Agent 智能体开发而设计。AgentBay 的SDK已在 GitHub 上开源(欢迎大家 Star✨!),目前支持 Python、TypeScript、Golang 三种编程语言。
AgentBay 支持四种类型的沙箱环境:
- Browser Use:浏览器自动化环境,提供完整的 Web 自动化、网页抓取、表单填写等能力
- Computer Use:桌面操作系统环境,支持 Windows/Linux 桌面应用的自动化操作
- Mobile Use:移动端环境,支持 Android 设备的模拟和控制
- CodeSpace:代码执行环境,支持 Python 等多种编程语言的云端执行
镜像类型 |
说明 |
适用场景 |
|
Linux 环境 |
基础命令执行、文件操作 |
|
Windows 环境 |
Windows 应用操作 |
|
浏览器自动化环境 |
Web 自动化、网页操作 |
|
移动端环境 |
移动应用操作 |
|
代码执行环境 |
Python/代码执行 |
AgentBay 主要解决智能体开发中的以下核心问题:
- 基础设施部署复杂:传统智能体开发需要本地部署 Docker 容器或 Kubernetes 集群,配置和维护成本高。AgentBay 提供开箱即用的云端沙箱,开发者只需通过 API Key 即可访问,无需关心底层基础设施。
- 环境隔离与安全性:智能体在执行代码、文件操作、浏览器控制等任务时,需要确保不会危及系统安全。AgentBay 提供严格的多租户架构隔离,每个会话都在完全隔离的环境中运行,确保进程、文件系统和网络层面的安全隔离。
- 多平台环境支持:智能体需要访问不同的执行环境(Linux、Windows、浏览器、移动端),传统方案需要为每种环境单独部署和维护。AgentBay 统一提供多种环境类型,通过简单的 API 调用即可切换,实现跨平台智能体开发。
- GUI 操作能力缺失:许多智能体任务需要图形界面交互能力(如点击、输入、截图等),传统命令行或 API 方式无法满足。AgentBay 提供完整的 GUI 操作能力,包括鼠标控制、键盘输入、屏幕截图、窗口管理等,支持真实的图形界面交互。
- 人机协作需求:智能体在执行复杂任务时,往往需要人类干预(如处理 CAPTCHA、输入敏感信息等)。AgentBay 支持混合交互模式,智能体可以通过程序化 API 控制,同时人类操作员可以随时无缝接管进行手动操作,实现真正的人机协作。
什么是 AgentScope Runtime
AgentScope Runtime 是由阿里巴巴通义实验室开源的一个全面的智能体运行时框架,旨在解决智能体开发中的两个关键挑战:
- 安全的沙箱工具执行:智能体在执行工具(如代码执行、文件操作、浏览器控制等)时,需要确保不会危及系统安全。AgentScope Runtime 提供了隔离的沙箱环境,确保所有工具操作都在安全隔离的环境中执行。
- 可扩展的智能体服务化部署:在生产环境中部署智能体应用时,需要处理会话管理、上下文管理(长短期记忆、外部知识库)、环境控制等复杂的基础设施问题。AgentScope Runtime 提供了完整的部署基础设施,让开发者可以专注于智能体逻辑本身,而无需关心底层的基础设施实现。
AgentScope Runtime 为什么需要 AgentBay
AgentScope-Runtime已经有沙箱环境,但AgentBay相对于AgentScope-Runtime自有沙箱有下列的优势:
- 无需本地部署,开箱即用
- AgentBay 作为阿里云提供的云端服务,开发者只需一个 API Key 即可调用,无需在本地安装 Docker、Kubernetes 或维护任何基础设施。
- AgentScope-Runtime 虽然提供了安全沙箱能力,但通常需要本地部署和配置运行环境(如容器或虚拟化资源),增加了部署复杂度和运维成本。
- 原生支持多平台 GUI 环境
- AgentBay 原生提供四种 GUI 沙箱类型,并支持完整的图形界面交互能力,如鼠标点击、键盘输入、截图、窗口管理等。
- AgentScope-Runtime 沙箱设计更偏向通用工具执行的安全隔离(如代码、文件、网络操作),对 GUI 环境(云电脑和浏览器)的支持有限,且不支持云手机的沙箱。
- 人机协作能力(Human in the loop)
- AgentBay 支持混合交互模式——智能体自动执行 + 人类操作员随时接管(如处理验证码、输入密码等)。
- AgentScope-Runtime 聚焦于智能体自动化与服务化部署,默认提供画面流的GUI沙箱,但是不支持人类接管操作。
目前 AgentBay SDK 已经集成进 AgentScope-Runtime 开源项目中,作为 AgentScope Runtime 的一种沙箱实现(AgentBay Sandbox)提供服务。通过集成,开发者可以在 AgentScope Runtime 框架中直接使用 AgentBay 作为云原生沙箱,无需单独部署和维护沙箱环境。
AgentBay Sandbox 作为 AgentScope Runtime 集成的云原生沙箱实现,基于阿里云的 AgentBay 服务,为智能体开发提供了以下优势:
- 无需本地部署:无需 Kubernetes,通过 API Key 即可使用云端沙箱环境
- 多种环境支持:支持 Linux、Windows、浏览器、代码执行、移动端等多种环境类型
- GUI 操作能力:提供完整的图形界面操作能力,包括鼠标、键盘、屏幕截图、窗口管理等
- 开箱即用:通过云服务直接访问,无需维护基础设施,降低开发和运维成本
- 安全隔离:每个会话都在完全隔离的云端环境中运行,确保安全性和可靠性
安装和使用过程
1. 安装依赖
首先,安装 AgentScope Runtime 和 AgentBay SDK:
# 安装 AgentScope Runtime pip install agentscope-runtime # 安装 AgentBay SDK pip install wuying-agentbay-sdk # 安装 AgentScope 框架(如果还没有安装) pip install agentscope
2. API 密钥配置
在运行示例之前,需要配置两个 API 密钥:
- AgentBay API Key:
- 访问 AgentBay 控制台
- 登录你的阿里云账号
- 在服务管理部分创建或选择一个 API KEY
- 复制 API Key 并设置为
AGENTBAY_API_KEY环境变量
- 🔔 注意:AgentBay账号需要有Pro以上的权益
- 百炼 API Key:
- 访问百炼平台
- 登录你的账号
- 在 API Key 管理部分复制 API Key
- 设置为 DASHSCOPE_API_KEY 环境变量
# 设置 AgentBay API Key export AGENTBAY_API_KEY=your_agentbay_api_key # 设置 百炼 API Key(用于模型调用) export DASHSCOPE_API_KEY=your_dashscope_api_key
您也可以创建 .env 文件来管理 API 密钥:
# .env 文件 AGENTBAY_API_KEY=your_agentbay_api_key DASHSCOPE_API_KEY=your_dashscope_api_key
3. 快速开始
方式一:直接使用 AgentBay Sandbox
最简单的使用方式是直接创建 AgentBay Sandbox 实例:
import os from agentscope_runtime.sandbox.box.agentbay.agentbay_sandbox import ( AgentbaySandbox, ) # 创建 AgentBay Sandbox sandbox = AgentbaySandbox( api_key=os.getenv("AGENTBAY_API_KEY"), image_id="linux_latest", # 或 "browser_latest", "windows_latest" 等 ) # 执行 Shell 命令 result = sandbox.call_tool( "run_shell_command", {"command": "echo 'Hello from AgentBay!'"}, ) print(result) # 文件操作 sandbox.call_tool( "write_file", {"path": "/tmp/test.txt", "content": "Hello World"}, ) # 读取文件 result = sandbox.call_tool("read_file", {"path": "/tmp/test.txt"}) print(result) # 清理资源 sandbox._cleanup()
方式二:通过 SandboxService 使用
通过 SandboxService 和 EnvironmentManager 可以更好地管理沙箱生命周期:
注意:agentscope-runtime 的 sandbox_service 基于 Docker 运行,因此在执行以下代码之前,请确保已启动 Docker 服务。
import asyncio import os import logging from agentscope_runtime.sandbox.enums import SandboxType from agentscope_runtime.engine.services.sandbox import SandboxService logging.basicConfig(level=logging.INFO) logger = logging.getLogger(__name__) async def main(): # Create environment manager context async with SandboxService(bearer_token=os.getenv("AGENTBAY_API_KEY")) as service: # Connect AgentBay sandbox sandboxes = service.connect( session_id="demo_service_session", user_id="demo_user", sandbox_types=[SandboxType.AGENTBAY], ) if not sandboxes: logger.error("No sandboxes returned by SandboxService") return False sandbox = sandboxes[0] logger.info( f"Connected AgentBay sandbox via service: " f"{sandbox.sandbox_id}", ) # Basic shell command result = sandbox.call_tool( "run_shell_command", {"command": "echo 'Service path OK'"}, ) logger.info(f"Service command result: {result}") # File write & read write_res = sandbox.call_tool( "write_file", {"path": "/tmp/svc_test.txt", "content": "hello"}, ) logger.info(f"Service write result: {write_res}") read_res = sandbox.call_tool( "read_file", {"path": "/tmp/svc_test.txt"}, ) logger.info(f"Service read result: {read_res}") # Session info info = sandbox.get_session_info() logger.info(f"Service session info: {info}") asyncio.run(main())
如何使用 AgentScope + AgentBay Sandbox 来构建一个 GUI 智能体
核心步骤主要分为以下几步:
1. 创建智能体类
创建一个继承自基础类的 GUI 智能体,核心结构如下:
async def setup_agent(self): """Setup AgentScope agent.""" try: logger.info("Setting up AgentScope agent...") # Initialize AgentScope init() # Create DashScope model model = DashScopeChatModel( model_name="qwen-max", api_key=self.dashscope_api_key, ) # Create DashScope formatter formatter = DashScopeChatFormatter() # Create agent self.agent = agent.ReActAgent( name="CloudAssistant", sys_prompt="""You are an AI assistant with access to a cloud-based sandbox environment. You can help users execute commands, manage files, and perform various tasks in the cloud. When users ask you to do something, you can use the available tools to: - Execute shell commands - Read and write files - List directory contents - Create directories - Run Python code - Take screenshots Always explain what you're doing and provide helpful responses.""", model=model, formatter=formatter, toolkit=self._get_toolkit(), ) logger.info("AgentScope agent created successfully") return True except Exception as e: logger.error(f"Failed to setup agent: {e}") return False
2. 初始化 AgentBay Sandbox
AgentBay Sandbox 的初始化采用显式方式,在智能体启动时创建:
# 在 setup_environment 中 sandboxes = self.sandbox_service.connect( session_id="demo_session", user_id="demo_user", sandbox_types=[SandboxType.AGENTBAY], # 注意:如果需要指定镜像类型,可能需要通过其他方式配置 # AgentBay 会根据需要自动选择合适的镜像 )
3. 封装工具函数
将 AgentBay Sandbox 的工具封装为 AgentScope 的工具函数。每个工具函数需要:
- 检查 sandbox 是否已初始化
- 调用
sandbox.call_tool()执行操作 - 返回
ToolResponse对象
使用 AgentScope 的 Toolkit 注册所有工具函数:
def _get_toolkit(self) -> Toolkit: """Create and configure toolkit with AgentBay tools.""" toolkit = Toolkit() # Register tool functions toolkit.register_tool_function( self.execute_command, func_description=( "Execute shell commands in the cloud environment" ), ) toolkit.register_tool_function( self.write_file, func_description=( "Write content to a file in the cloud environment" ), ) toolkit.register_tool_function( self.read_file, func_description=( "Read content from a file in the cloud environment" ), ) #注册其他工具函数 ...... return toolkit
通过集成 AgentBay 和 AgentScope,你可以快速构建一个具备真实 GUI 交互能力的智能体。例如,你可以创建一个“网页自动化助手”智能体,让它自动登录某个网站、填写表单、截图验证结果,并在遇到验证码时暂停执行,等待人类操作员介入处理。整个过程无需本地部署复杂的沙箱环境,所有操作均在阿里云提供的安全、隔离、多平台兼容的 AgentBay 云端环境中完成。
相关链接
- 无影 AgentBay 官网
- 无影 AgentBay SDK Github- 欢迎 Star 支持
系列文章
- 打通Agent最后一公里: 用阿里云无影AgentBay+LangChain实现浏览器自动化
- 3分钟采集134篇AI文章!深度解析如何通过云无影AgentBay实现25倍并发 + LlamaIndex智能推荐