• 简体中文
  • 示例

    这些示例都围绕一个具体任务展开:从运行中的 aiod 开始,调用对应的沙箱能力并验证结果。每页聚焦一项能力,代码可以直接运行。

    约定

    BASE_URL 和 API key 的用法见 快速开始

    所有 JSON 响应都使用统一的返回结构 {"success": bool, "message": str, "data": ..., "hint": null|str}

    校验失败返回 422,顶层带 errors 列表。详见 错误处理

    每个示例都提供 v2 和 v1 两种写法,侧栏的 API Preference 开关决定显示哪一种。

    v2 使用下方的 Aio helper;v1 使用 1.x SDK。SDK 不支持的少数调用,也会通过 helper 发送到 /v1。使用 helper 的示例都以 sb = Aio(BASE_URL) 开头。

    Python
    TypeScript
    import httpx
    
    
    class Aio:
        """Envelope-aware client for the v2 routes; raises on success=false."""
    
        def __init__(self, base_url, api_key=None, timeout=120):
            headers = {"x-api-key": api_key} if api_key else {}
            self.http = httpx.Client(base_url=base_url, headers=headers, timeout=timeout)
    
        def call(self, method, route, **kw):
            body = self.http.request(method, route, **kw).json()
            if not body.get("success"):
                raise RuntimeError(f"{method} {route}: {body.get('message')}")
            return body["data"]
    
        def get(self, route, **params):
            return self.call("GET", route, params=params)
    
        def post(self, route, **body):
            return self.call("POST", route, json=body)
    
        def delete(self, route, **params):
            return self.call("DELETE", route, params=params)

    sb.post("/v2/commands", command="wc -l /tmp/x") 发送 JSON body;sb.getsb.delete 同样接收查询参数。

    第一个位置参数是 route,因此 sb.post("/v2/fs/read", path="/tmp/x") 可以直接这样调用。二进制路由(下载、截图)请使用 sb.http.get(...)fetch,绕过返回结构校验。

    第一次调用

    确认 daemon 在运行,并读取它的能力:

    curl "$BASE_URL/health"
    curl "$BASE_URL/v2/sandbox" | python3 -m json.tool
    curl "$BASE_URL/v1/capabilities" | python3 -m json.tool

    缺少某项能力时,对应路由返回 503,但 daemon 仍然可以启动。

    示例列表

    示例内容所需能力
    Agent 调用沙箱写入文件、执行命令、执行 Python、读取结果filesexeccode_interpreter
    MCP 调用同样的任务走一个 JSON-RPC 端点,以及工具错误长什么样execfilescode_interpreter
    浏览器(CDP)用 Playwright 和 Puppeteer 驱动沙箱里的 Chromiumbrowser
    Browser Use在沙箱里创建一个页面,再用 REST 填写、点击、校验结果browserfilesexec
    交互式终端用最小客户端通过 WebSocket 连接实时 PTYexecpty
    代码执行一次数据分析会话:写入 CSV,pandas 计算,图表以 PNG 返回code_interpreter
    文件操作创建项目、搜索与编辑、监听变更,以及错误处理files
    Computer Use导航 Chromium,并通过无障碍树点击链接computer

    同一任务的三种调用方式

    Agent 调用沙箱 中的四步任务有三种写法:v2 路由、1.x SDK,以及 MCP 调用 中的 JSON-RPC 端点。

    三种写法的步骤、文件名和结果 27 都相同,区别只有传输方式。agent 可以选择框架已经支持的协议接入。

    SDK

    两个 SDK 都对接 v1 路由(Python agent-sandbox、TypeScript @agent-infra/sandbox):

    Python
    TypeScript
    from agent_sandbox import Sandbox
    
    client = Sandbox(base_url="http://127.0.0.1:18091")
    # headers={"x-api-key": "<key>"} when AIO_API_KEY is set
    client.bash.exec(command="uname -a")

    哪些调用可用、哪些需要改用 HTTP、哪些路由已移除,见 1.x SDK 兼容性

    /v2 通过 HTTP API 调用,参考 API 参考