All in One Sandbox

更新时间:
复制为 MD 格式

本文将详细阐述如何基于阿里云无影AgentBayComputer 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能力,实现工具链无缝协同。

准备工作

实现示例

以下示例使用相同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()
    

相关资源