十年匠心定制 · 商业建站与技术教学双线并行 咨询热线:400-886-1026 service@lmnt.cn
ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

OpenSandbox 平台全解:多语言 SDK、osb CLI 与 Docker/Kubernetes 沙箱运行时的完整入门

OpenSandbox 平台全解:多语言 SDK、osb CLI 与 Docker/Kubernetes 沙箱运行时的完整入门 OpenSandbox 平台全解多语言 SDK、osb CLI 与 Docker/Kubernetes 沙箱运行时的完整入门【免费下载链接】OpenSandboxSecure, Fast, and Extensible Sandbox runtime for AI agents.项目地址: https://gitcode.com/GitHub_Trending/ope/OpenSandboxOpenSandbox 是面向 AI 应用的通用沙箱平台为 Coding Agent、GUI Agent、Agent 评测、AI 代码执行和 RL 训练等场景提供多语言 SDK、统一沙箱 API 和 Docker/Kubernetes 双运行时。本文基于仓库根 README 与架构文档展开读完后你将掌握如何安装配置 OpenSandbox Server、用六种语言 SDK 与 osb CLI 创建沙箱并执行命令/文件/代码操作以及如何通过 MCP 将沙箱能力接入 Claude Code、Cursor 等客户端并理解各组件server、execd、ingress、egress的职责边界。1. 平台定位六大能力面README 将 OpenSandbox 定义为general-purpose sandbox platform for AI applications。从 架构文档 看整个平台围绕六个能力面组织Client surface客户端面——各语言 SDK、osbCLI 和 MCP server是应用、Agent 和运维人员的主要入口Protocol surface协议面——specs/下的 OpenAPI 契约覆盖沙箱生命周期、诊断、沙箱内执行和 egress 策略Lifecycle control plane生命周期控制面——server/下的 FastAPI 服务负责请求鉴权、配置校验、记录持久化并把生命周期操作委托给配置的运行时服务Runtime backends运行时后端——Docker 用于本地与单主机部署Kubernetes 通过 BatchSandbox、kubernetes-sigs/agent-sandbox等工作负载 Provider 实现大规模分布式调度Sandbox data plane沙箱数据面——用户工作负载容器加上注入的execd守护进程、可选的 Jupyter/代码解释器运行时、卷挂载和可选的 egress sidecarNetwork and security plane网络与安全面——端点解析、服务端代理、Kubernetes ingress 网关路由、安全端点访问、egress 策略执行、资源限制与 gVisor/Kata/Firecracker 等安全容器运行时。这种划分是刻意的SDK 与工具只依赖公开契约server 拥有生命周期编排运行时 Provider 拥有平台相关的资源创建execd/egress 则拥有发生在沙箱网络与文件系统命名空间内部的操作。2. 核心特性总览README 的 Features 一节列出了平台的核心能力每一条都对应仓库中可验证的组件或文档SDKs、CLI 和 MCP多语言 SDK、osbCLI 与 MCP server 集成覆盖沙箱创建、命令执行和文件操作。入口分别是 SDK 目录、CLI 与 MCP。Sandbox Protocol定义沙箱生命周期管理与沙箱执行 API支持扩展自定义沙箱运行时。规范见 API specs。Sandbox Runtime内建生命周期管理同时支持 Docker 与高性能 Kubernetes 运行时本地运行与大规模分布式调度兼得。见 Kubernetes 运行时。Sandbox Environments内建 Command、Filesystem 和 Code Interpreter 实现。示例覆盖 Coding Agent如 Claude Code、浏览器自动化Chrome、Playwright与桌面环境VNC、VS Code。Network Policy统一 ingress 网关支持多种路由策略并提供按沙箱粒度的 egress 管控。见 Ingress Gateway 与 egress controls。Credential Vault为沙箱出站请求安全注入凭据不向工作负载暴露真实密钥。见 Credential Vault 指南。Strong Isolation支持 gVisor、Kata Containers、Firecracker microVM 等安全容器运行时增强沙箱负载与宿主之间的隔离。见 Secure Container Runtime 指南。2.1 公开 API 契约生命周期、Execd 与 Egressspecs/ 目录被明确视为公开契约的 source of truth这一边界约束也写在 AGENTS.md 的协作规则中。从 架构文档 可以确认三组关键契约生命周期 APIspecs/sandbox-lifecycle.yml由 server 以/v1为 base path 提供服务。资源组包括 Sandboxes从镜像或快照创建、列表、查询、删除、暂停、恢复、续期、解析端口端点与 Snapshots从沙箱创建持久快照、列表、查询状态、删除。重要请求字段包括image/snapshotId启动源、entrypoint、环境变量、resourceLimitsCPU/内存/GPU、volumes宿主路径、平台命名卷/PVC、OSSFS、networkPolicyegress sidecar 配置与secureAccessKubernetes ingress 网关部署下的端点凭据。Execd APIspecs/execd-api.yaml定义components/execd/暴露的沙箱内执行 API包括健康检查GET /ping、代码上下文与执行/code/contexts、/code/context、/code、Bash 会话/session、命令与后台日志/command、文件目录/files/*、/directories与指标/metrics、/metrics/watch。命令与代码执行使用 SSE 流式输出交互式 PTY 通过/ptyWebSocket 端点提供。Egress APIspecs/egress-api.yaml由 egress sidecar 直接暴露运行时策略 APIGET /policy、PATCH /policy通过解析沙箱端点中的 egress sidecar 端口访问启用 sidecar 鉴权时需携带生命周期端点解析 API 返回的端点头。3. 安装与运行 Sandbox Server3.1 环境要求README 给出的最低要求Docker本地执行必需Python 3.10示例与本地运行时必需安装文档 进一步细化为Docker 运行时需 Docker Engine 20.10Kubernetes 运行时需 Kubernetes 1.21.1支持 Linux、macOS 或带 WSL2 的 Windows。3.2 初始化配置并启动README 的 Getting Started 给出了最短路径uvx opensandbox-server init-config ~/.sandbox.toml --example docker uvx opensandbox-server # Show help # uvx opensandbox-server -hinit-config --example docker会在~/.sandbox.toml生成一份 Docker 运行时的示例配置随后直接以uvx拉起服务。从源码实现看配置加载有几个可直接用于排障的事实配置文件默认路径为~/.sandbox.toml可用环境变量SANDBOX_CONFIG_PATH覆盖API Key 可通过环境变量OPENSANDBOX_SERVER_API_KEY注入而不落盘到配置文件服务端根据[runtime].type在docker与kubernetes之间恰好选择一个生命周期实现docker映射到DockerSandboxServicekubernetes映射到KubernetesSandboxService二者满足同一SandboxService接口API 路由保持薄化并委托给服务层[store]配置选择服务端元数据存储默认是 SQLite~/.opensandbox/opensandbox.db快照元数据是第一个持久化的服务端资源egress 策略支持dns与dnsnft两种模式常量对应 egress 组件 的 DNS 拦截与 DNSnftables 双重管控实现。完整的启动与配置说明见 server 文档。4. 多语言 SDK 一览README 列出了六种语言的 Sandbox SDK 安装方式完整用法参见各 SDK 的 README 与 SDK 文档Pythonpip install opensandboxJava/KotlinGradle Kotlin DSLdependencies { implementation(com.alibaba.opensandbox:sandbox:{latest_version}) }Java/KotlinMavendependency groupIdcom.alibaba.opensandbox/groupId artifactIdsandbox/artifactId version{latest_version}/version /dependencyJavaScript/TypeScriptnpm install alibaba-group/opensandboxC#/.NETdotnet add package Alibaba.OpenSandboxGogo get github.com/alibaba/OpenSandbox/sdks/sandbox/go各 SDK 封装了沙箱生命周期与沙箱内操作创建/列表/查询/暂停/恢复/续期/删除沙箱、解析沙箱端口端点、带流式输出的命令执行与后台日志轮询、文件目录管理、从execd读取资源指标以及在挂载 egress sidecar 时检查/修改运行时 egress 策略。从 SDK 目录 结构看每个语言 SDK 同时包含生成的 OpenAPI 客户端与手写适配层——生成代码负责常规请求/响应手写层负责 SDK 人体工学、流式传输、错误映射与高层模型。5. Code Interpreter 实战从创建沙箱到执行代码README 内嵌了一段完整的端到端示例创建一个 Code Interpreter 沙箱执行 shell 命令、读写文件并通过 Code Interpreter SDK 执行 Python 代码。先安装 Code Interpreter SDKuv pip install opensandbox-code-interpreter完整示例代码与 README 一致可直接复制运行import asyncio from datetime import timedelta from code_interpreter import CodeInterpreter, SupportedLanguage from opensandbox import Sandbox from opensandbox.models import WriteEntry async def main() - None: # 1. Create a sandbox sandbox await Sandbox.create( opensandbox/code-interpreter:v1.1.0, entrypoint[/opt/code-interpreter/code-interpreter.sh], env{PYTHON_VERSION: 3.11}, timeouttimedelta(minutes10), ) async with sandbox: # 2. Execute a shell command execution await sandbox.commands.run(echo Hello OpenSandbox!) print(execution.logs.stdout[0].text) # 3. Write a file await sandbox.files.write_files([ WriteEntry(path/tmp/hello.txt, dataHello World, mode644) ]) # 4. Read a file content await sandbox.files.read_file(/tmp/hello.txt) print(fContent: {content}) # Content: Hello World # 5. Create a code interpreter interpreter await CodeInterpreter.create(sandbox) # 6. Execute Python code (single-run, pass language directly) result await interpreter.codes.run( import sys print(sys.version) result 2 2 result , languageSupportedLanguage.PYTHON, ) print(result.result[0].text) # 4 print(result.logs.stdout[0].text) # 3.11.14 # 7. Cleanup the sandbox await sandbox.kill() if __name__ __main__: asyncio.run(main())示例中每一步都有对应的实现落点Sandbox.create调用生命周期 API 的创建端点sandbox.commands.run与sandbox.files.*经由 execd 的/command、/files/*API 完成interpreter.codes.run则对应 execd 的/code代码执行端点SSE 流式返回结果与 stdout。注意示例中的env{PYTHON_VERSION: 3.11}官方 code-interpreter 镜像通过PYTHON_VERSION、JAVA_VERSION、NODE_VERSION、GO_VERSION等环境变量选择具体语言版本。可运行的完整示例代码位于 examples/code-interpreter配套文档见 Code Interpreter 示例。6. osb CLI终端里的沙箱工作流osb是面向日常沙箱工作流的终端 CLI创建沙箱、运行命令、搬移文件、查看诊断、管理运行时 egress 策略。其底层基于 OpenSandbox Python SDK 实现见 CLI 实现。安装pip install opensandbox-cli # or uv tool install opensandbox-cliREADME 给出的 Quick Startosb config init osb config set connection.domain localhost:8080 osb config set connection.protocol http osb config set connection.api_key your-api-key osb sandbox create --image python:3.12 --timeout 30m -o json osb command run sandbox-id -o raw -- python -c print(1 1)从 CLI 完整参考 补充几点实操细节命令前必须保证opensandbox-server可达非默认配置文件通过根级--config /tmp/dev.toml指定执行沙箱内命令时使用--分隔 payloadosb command run sandbox-id -o raw -- cmd...文件操作有osb file write/cat清理用osb sandbox kill sandbox-id。osb的命令组包括sandbox生命周期与端点、command命令执行、后台日志、shell 会话、file、egress运行时 egress 策略检查与修改、devops低层诊断与skills为编码 Agent 安装 OpenSandbox 专用技能完整命令参考见 cli/README.md。7. MCP 集成把沙箱交给 Claude Code 与 CursorOpenSandbox 的 MCP server 向支持 MCP 的客户端暴露沙箱创建、命令执行与文本文件操作三类工具。安装并运行pip install opensandbox-mcp opensandbox-mcp --domain localhost:8080 --protocol http最小 stdio 客户端配置{ mcpServers: { opensandbox: { command: opensandbox-mcp, args: [--domain, localhost:8080, --protocol, http] } } }客户端侧的完整配置说明见 MCP README实现位于 sdks/mcp/sandbox/python。8. 官方容器镜像与发布验证OpenSandbox 的 release 镜像以相同组件名发布在三个官方 registryDocker Hubdocker.io/opensandbox/componentGitHub Container Registryghcr.io/opensandbox-group/opensandbox/component阿里云容器镜像服务sandbox-registry.cn-zhangjiakou.cr.aliyuncs.com/opensandbox/componentTagged release 镜像使用 Cosign 进行无密钥keyless签名并附带 provenance 证据。生产环境建议按 digest 固定镜像版本并遵循 发布验证指南 在部署前针对 OpenSandbox GitHub Actions 身份验证镜像。发布脚本与验证流程可在 scripts/release/ 下查看如create-release.sh、verify-release-ref.sh、verify-helm-package.sh。9. 典型场景与示例库README 将 examples/ 目录组织为四大类示例全部示例代码均可直接运行基础示例code-interpreter沙箱内的端到端 Code Interpreter SDK 工作流aio-sandbox基于 SDK 的 All-in-One 沙箱搭建agent-sandbox在 Kubernetes 上通过kubernetes-sigs/agent-sandbox运行 OpenSandbox 工作负载的集成示例VolumesDocker PVC / named volumes、Docker OSSFS、Kubernetes PVC——持久化与共享存储模式。Coding Agent 集成Coding CLIsClaude Code、Gemini CLI、OpenAI Codex CLI、OpenCode、Qwen Code、Kimi CLI逐一演示在 OpenSandbox 内运行各 CLIlanggraph带降级重试的沙箱任务 LangGraph 状态机工作流google-adk使用 OpenSandbox 工具读写文件、执行命令的 Google ADK Agentopenclaw在沙箱内启动 OpenClaw Gateway。浏览器与桌面环境chrome带 VNC 与 DevTools 访问的 Chromium 沙箱用于自动化与调试playwrightPlaywright Chromium 无头抓取与测试desktop带 VNC 访问的完整桌面环境vscode沙箱内运行 code-serverVS Code Web做远程开发。训练与评测harbor-evaluation在 OpenSandbox 上运行 Harbor Agent 评测每个 trial 一个沙箱。更多细节见 examples 总览。10. 项目结构速查README 的项目结构表与仓库实际目录一一对应可作为进入源码的导航目录说明sdks/多语言 SDKPython、Java/Kotlin、TypeScript/JavaScript、C#/.NETspecs/OpenAPI 规范与生命周期规范server/Python FastAPI 沙箱生命周期服务cli/OpenSandbox 命令行界面kubernetes/Kubernetes 部署与示例components/execd/沙箱内执行守护进程命令与文件操作components/ingress/沙箱流量入口代理components/egress/沙箱网络出口管控examples/可运行示例代码docs/examples/示例文档与用例oseps/OpenSandbox Enhancement Proposalsdocs/架构与设计文档tests/跨组件 E2E 测试scripts/开发与维护脚本从源码结构看kubernetes/下还包含 controller、Helm chartscharts/opensandbox、charts/opensandbox-controller等、快照与 task-executor 相关实现components/下的 Go 组件egress、execd、ingress与specs/保持契约对齐跨语言 E2E 测试则集中在tests/Python、Go、Java、JavaScript、C# 各语言目录。11. 延伸阅读架构总览——整体架构与设计哲学包括网络隔离与单主机网络设计Credential Vault 指南——沙箱出站凭据注入安全容器运行时指南——gVisor / Kata / Firecracker 隔离发布验证——镜像签名与制品验证流程各语言 SDK 参考Python、Java/Kotlin、JavaScript/TypeScript、C#/.NET、Go以及对应 Code Interpreter SDK 文档API 规范说明——沙箱生命周期 API 与沙箱执行 API 的 OpenAPI 定义Server 文档——服务端启动与配置支持 Docker 与 Kubernetes 两种运行时ROADMAP.md——当前路线图、规划范围与路线图条目管理方式。OpenSandbox 基于 Apache 2.0 License 开源见 LICENSE问题反馈可通过 GitHub Issues 提交社区讨论可加入 README 中列出的 Discord 与钉钉技术群。【免费下载链接】OpenSandboxSecure, Fast, and Extensible Sandbox runtime for AI agents.项目地址: https://gitcode.com/GitHub_Trending/ope/OpenSandbox创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表