SuperAPI AI 工具集

sandbox

测试与质量

查看项目

更新于 10-16 09:08

技能介绍

用途

Sandbox 是 OSS Agent Lab 中的沙箱专家(Sandbox Specialist),用于在本地测试中模拟 alibaba/OpenSandbox 的部分响应契约。它通过简单的字符串校验规则处理代码片段,并返回合成的执行记录,而不会真正评估、运行代码或调用 OpenSandbox。其定位是校验器与契约模拟器,而非安全边界或执行引擎。

主要能力

  • execute:在不运行代码片段的情况下,返回模拟的 stdout、stderr、退出码和耗时。
  • code_execution:用于从通用“运行代码”意图进行路由的别名能力标签。
  • sandbox:在不提供隔离边界的前提下,演练隔离形态的响应。
  • multi_language:根据静态运行时目录校验语言名称。

支持的语言标识包括 Python、JavaScript、TypeScript、Bash、Ruby、Go、Rust、Java、C、C++。该列表为模拟目录,当前 execute_code 函数不会评估所提供代码、启动进程或调用 OpenSandbox,而是基于字符串标记返回合成输出。

工具

  • execute_code:为代码片段返回合成执行输出;无副作用,代码不会被执行。
  • validate_code:不执行代码的静态分析,返回错误和警告;无副作用。
  • list_runtimes:返回静态运行时目录;无副作用。

使用方式

前置条件:在本地 OSS Agent Lab 检出目录中使用 Python 3.11+,并运行 pip install -e .。

建议优先使用 validate 获取静态关键字警告,并提供受支持的语言标识。仅在测试响应契约时使用 execute,并将其 stdout/stderr 标注为模拟输出。将 list_runtimes 视为已配置的目录,而非解释器已安装的证明。真实执行应路由到单独配置并独立验证的沙箱后端。

Python API 示例:

from agents.specialists.sandbox.agent import SandboxSpecialist
from oss_agent_lab.contracts import Intent, Query, SpecialistRequest

specialist = SandboxSpecialist()

request = SpecialistRequest(
    intent=Intent(
        action="execute",
        domain="code",
        confidence=0.95,
        parameters={"code": "print('hello, sandbox!')", "language": "python"},
    ),
    query=Query(user_input="print('hello, sandbox!')"),
    specialist_name="sandbox",
)

result = await specialist.execute(request)
print(result.result["stdout"])

CLI 示例:

oss-lab run sandbox "print('hello, sandbox!')"

带语言覆盖的示例:

request = SpecialistRequest(
    intent=Intent(
        action="execute",
        domain="code",
        confidence=0.95,
        parameters={
            "code": "console.log('hello from node');",
            "language": "javascript",
            "timeout": 10,
        },
    ),
    query=Query(user_input="console.log('hello from node');"),
    specialist_name="sandbox",
)

仅校验不执行的示例:

request = SpecialistRequest(
    intent=Intent(
        action="validate",
        domain="code",
        confidence=0.9,
        parameters={"code": "import os; os.system('ls')", "language": "python"},
    ),
    query=Query(user_input="import os; os.system('ls')"),
    specialist_name="sandbox",
)

result = await specialist.execute(request)
print(result.result["valid"])       # False (warnings present)
print(result.result["warnings"])    # ['os.system() executes shell commands...']

列出可用运行时:

request = SpecialistRequest(
    intent=Intent(action="list_runtimes", domain="code", confidence=1.0),
    query=Query(user_input=""),
    specialist_name="sandbox",
)

result = await specialist.execute(request)
for rt in result.result["runtimes"]:
    print(rt["name"], rt["version"], rt["available"])

输出示例

execute:

{
  "stdout": "[sandbox:python] Execution started\n[sandbox:python] 1 line(s) processed\n[sandbox:python] Execution complete",
  "stderr": "",
  "exit_code": 0,
  "execution_time_ms": 12.4,
  "language": "python",
  "execution_id": "3f2504e0-4f89-11d3-9a0c-0305e82c3301"
}

validate:

{
  "valid": true,
  "errors": [],
  "warnings": ["eval() executes arbitrary code strings."],
  "language": "python"
}

list_runtimes:

{
  "runtimes": [
    {"name": "python", "version": "3.12.3", "available": true},
    {"name": "javascript", "version": "node 22.2.0", "available": true}
  ],
  "total_count": 12,
  "available_count": 10
}

适用场景

适用于在 OSS Agent Lab 测试中安全地演练 Sandbox 响应契约、校验代码片段的静态关键字警告,以及查询已配置的运行时目录。

限制

  • 当前 execute_code 函数不会评估所提供代码、启动进程或调用 OpenSandbox,仅返回基于字符串标记的合成输出。
  • 支持的语言列表为模拟目录,不代表本机已安装对应解释器。
  • 该工具不是安全边界或执行引擎;真实执行需路由到单独配置并独立验证的沙箱后端。
  • 错误处理:拒绝空代码、未知语言以及超出 1–300 秒范围的超时。
  • valid: true 仅表示没有触发内置字符串规则,并不证明代码安全或正确。
  • 切勿在实际隔离边界之外执行或建议执行不受信任的代码。

资源

封装 alibaba/OpenSandbox。当前本地专家不包含该运行时。详见运行时契约。