用途
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。当前本地专家不包含该运行时。详见运行时契约。