本文将详细阐述如何基于阿里云无影AgentBay的Computer Use Linux镜像,构建一个功能完备的All-in-One Sandbox环境。
背景介绍
All-in-One Sandbox是一个高度集成的云端开发与执行环境,集成了Linux桌面自动化、浏览器以及代码执行引擎,为自动化任务(尤其是 AI Agent)、云端开发和安全代码执行提供标准化、开箱即用的运行环境。
该方案通过统一容器化架构,消除传统分散工具链中环境差异、文件传输复杂性和组件间交互障碍,实现全流程一体化与无缝操作。
方案概述
本方案使用Linux沙箱会话作为一体化沙箱。使用linux_latest镜像以完成:
session.computer用于桌面自动化。session.browser用于浏览器自动化。session.code用于代码执行(例如,Python)。
当需要在单一会话中同时进行用户界面交互与脚本执行(或快速获取网络内容)而无需切换镜像时,该环境尤为适用。
核心亮点
环境一致性:将浏览器、终端、文件系统、开发工具封装在统一环境中,消除环境差异问题。
开箱即用:预装常用语言、框架、构建工具,避免环境搭建时间消耗。
安全隔离:基于VPC网络隔离和独立容器环境,确保任务执行安全性与数据可控性。
弹性伸缩:支持秒级环境创建与销毁,按需资源配置,优化成本效益。
多模态集成:在单一Linux镜像中集成Browser Use、CodeSpace、Computer Use能力,实现工具链无缝协同。
准备工作
在环境中完成API 密钥设置。
实现示例
以下示例使用相同的linux_latest会话类型并演示:
通过
session.code.run_code()运行代码。通过
session.browser使用浏览器代理API。
示例1:在linux_latest内运行代码(类似Codespace)
import os
from agentbay import AgentBay, CreateSessionParams
def main() -> None:
api_key = os.getenv("AGENTBAY_API_KEY")
if not api_key:
raise RuntimeError("AGENTBAY_API_KEY environment variable not set")
ab = AgentBay(api_key=api_key)
create_result = ab.create(CreateSessionParams(image_id="linux_latest"))
if not create_result.success:
raise RuntimeError(create_result.error_message)
session = create_result.session
try:
code = """
print("RUN_CODE_OK")
print(6 * 7)
""".strip()
result = session.code.run_code(code, "python")
if not result.success:
raise RuntimeError(result.error_message)
print(result.result)
finally:
session.delete()
if __name__ == "__main__":
main()
示例2:在linux_latest内使用浏览器API
此示例使用浏览器代理API(无需本地Playwright):导航到页面并截取屏幕截图。
import os
from agentbay import AgentBay, BrowserOption, CreateSessionParams
def main() -> None:
api_key = os.getenv("AGENTBAY_API_KEY")
if not api_key:
raise RuntimeError("AGENTBAY_API_KEY environment variable not set")
ab = AgentBay(api_key=api_key)
create_result = ab.create(CreateSessionParams(image_id="linux_latest"))
if not create_result.success:
raise RuntimeError(create_result.error_message)
session = create_result.session
try:
if not session.browser.initialize(BrowserOption()):
raise RuntimeError("Failed to initialize browser")
session.browser.agent.navigate("https://example.com")
data = session.browser.agent.screenshot(full_page=False)
print("Screenshot data prefix:", data[:30])
finally:
session.delete()
if __name__ == "__main__":
main()