OpenSandbox 本地快速上手:Docker 运行时、多语言 SDK 与 CLI 的最短路径

发布时间:2026/9/14 22:56:04

OpenSandbox 本地快速上手:Docker 运行时、多语言 SDK 与 CLI 的最短路径 OpenSandbox 本地快速上手Docker 运行时、多语言 SDK 与 CLI 的最短路径【免费下载链接】OpenSandboxSecure, Fast, and Extensible Sandbox runtime for AI agents.项目地址: https://gitcode.com/GitHub_Trending/ope/OpenSandboxOpenSandbox 是一个面向 AI 应用的通用沙箱平台提供统一的生命周期 API、多语言 SDK 和 Docker/Kubernetes 双运行时。本文基于官方 Quick Start 文档docs/getting-started/index.md完整展开从生成 Docker 运行时的服务端配置、启动生命周期服务器到用 Python SDK 创建并操作第一个沙箱执行命令、读写文件、运行代码解释器最后用osbCLI 完成同样的操作并深入仓库源码说明每一步背后的实现。一、快速上手整体流程Quick Start 的完整路径只有四步启动 Serveruvx opensandbox-server拉起生命周期 API 服务默认监听127.0.0.1:8080安装 SDKPython / JavaScript / Go / C# / Kotlin-Java 任选创建并使用沙箱SDK 中Sandbox.create(...)一步完成容器拉起随后调用commands、files、Code Interpreter 等能力CLI 替代路径osb命令行完成创建与命令执行。前提条件PrerequisitesDockerEngine 20.10本地执行沙箱所依赖的运行时Python3.10服务端与 Python SDK 均要求uv推荐或 pip。Python 3.10 的要求在 Python SDK 的包定义中有明确声明sdks/sandbox/python/pyproject.toml 中requires-python 3.10且兼容到 3.13。二、启动生命周期 Server2.1 生成初始配置# Generate a starter config uvx opensandbox-server init-config ~/.sandbox.toml --example docker # Start the server uvx opensandbox-serverinit-config并不是简单的模板复制命令。从 server/opensandbox_server/cli.py 可以看到它支持四种打包示例--example {docker, docker-zh, k8s, k8s-zh}分别对应包内的example.config.toml、example.config.zh.toml、example.config.k8s.toml、example.config.k8s.zh.toml四份模板如果不带--example则会调用render_full_config()基于 Pydantic 配置模型渲染一份全字段占位骨架注释直接来自 schema 的Fielddescription保证与校验逻辑同步。目标文件已存在时需要--force才会覆盖否则会报FileExistsError。服务端配置的默认路径是~/.sandbox.toml可用环境变量SANDBOX_CONFIG_PATH覆盖或使用opensandbox-server --config /path/to/sandbox.toml为当前进程显式指定——这三者优先级关系在 server/configuration.md 开头有完整说明。2.2 验证服务健康curl http://127.0.0.1:8080/health # → {status: healthy}/health是服务端 FastAPI 应用注册的公共端点见 server/opensandbox_server/main.py。从鉴权中间件的源码结构看/health、/version、/docs、/redoc、/openapi.json均属于免 API Key 路径server/opensandbox_server/middleware/auth.py因此即使配置了server.api_key健康检查也不需要携带凭证。2.3 启动过程的源码视角uvx opensandbox-server执行的入口是 server/opensandbox_server/cli.py 中的main()若传入--config会将其写入SANDBOX_CONFIG_PATH环境变量随后load_config()解析 TOML、configure_logging()初始化日志最终由 uvicorn 加载opensandbox_server.main:app监听地址与端口来自[server]配置默认0.0.0.0:8080并透传timeout_keep_alive、limit_concurrency、backlog、loop、http等 uvicorn 参数。源码注释里有一个值得注意的设计启动阶段刻意只加载配置与日志延迟导入main模块——因为导入opensandbox_server.main会立即构造sandbox_service恢复容器、启动过期定时器把这些副作用推迟到真正的 worker 进程可避免--reload模式下 uvicorn 的 reloader 监督进程重复执行恢复逻辑。三、Docker 运行时示例配置解读init-config --example docker落盘的模板就是仓库中的 server/opensandbox_server/examples/example.config.toml。与快速上手相关的核心项配置段关键项示例值说明[server]host/port127.0.0.1/8080HTTP API 绑定地址max_sandbox_timeout_seconds 86400限制沙箱 TTL 上限[server]api_key注释项空未设置时启动需显式确认风险交互式 TTY 输入YES或非交互环境设置OPENSANDBOX_INSECURE_SERVERYES[runtime]type/execd_imagedocker/opensandbox/execd:v1.1.0必填段execd 镜像负责在沙箱内引导命令/文件访问通道[docker]network_modebridge本地执行建议 bridgeegress 出站策略强制要求 bridge[docker]port_range_min/port_range_max40000/60000bridge 模式下沙箱端口分配区间每个沙箱需 2–3 个宿主机端口区间需 ≥100 个端口[docker]drop_capabilities/no_new_privileges/pids_limit见模板默认丢弃危险 capability、禁止提权、限制 PID 数4096[egress]image/modeopensandbox/egress:v1.1.7/dns出站策略 sidecar仅在创建请求携带networkPolicy时挂载[store]type/pathsqlite/~/.opensandbox/opensandbox.db服务端持久化元数据快照等默认用 SQLite无需外部数据库[ingress]modedirectDocker 运行时下 ingress 只允许direct模式跨字段校验规则完整的字段参考包括[kubernetes]、[secure_runtime]、[renew_intent]、[otel]等本地快速用不到的段见 server/configuration.md。需要特别注意一条跨字段校验runtime.type docker时不得出现[kubernetes]或[agent_sandbox]段且ingress.mode必须为direct——校验逻辑在opensandbox_server/config.py的AppConfig.validate_runtime_blocks中。四、安装 SDKQuick Start 支持的语言与安装命令语言安装命令仓库对应源码Pythonpip install opensandboxsdks/sandbox/pythonJavaScriptnpm install alibaba-group/opensandboxsdks/sandbox/javascriptGogo get github.com/alibaba/OpenSandbox/sdks/sandbox/gosdks/sandbox/goC#dotnet add package Alibaba.OpenSandboxsdks/sandbox/csharpKotlin/Java见 安装文档sdks/sandbox/kotlinPython SDK 的运行时依赖收敛在pydantic、httpx、httpx-sse等少数几个库上见 sdks/sandbox/python/pyproject.toml异步优先、通过 SSE 接收执行事件流。五、创建并使用第一个沙箱Python 完整示例以下是 Quick Start 文档中的完整示例可直接复制运行需要能访问opensandbox/code-interpreter镜像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: # Create a sandbox with code interpreter 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: # Execute a shell command execution await sandbox.commands.run(echo Hello OpenSandbox!) print(execution.logs.stdout[0].text) # Write and read a file await sandbox.files.write_files([ WriteEntry(path/tmp/hello.txt, dataHello World, mode644) ]) content await sandbox.files.read_file(/tmp/hello.txt) print(fContent: {content}) # Run code via the Code Interpreter interpreter await CodeInterpreter.create(sandbox) result await interpreter.codes.run( import sys; print(sys.version); 2 2, languageSupportedLanguage.PYTHON, ) print(result.result[0].text) # 4 await sandbox.kill() if __name__ __main__: asyncio.run(main())示例中每一步对应的底层能力Sandbox.create(image, entrypoint, env, timeout)向生命周期服务发起创建请求。从 SDK 服务层协议 sdks/sandbox/python/src/opensandbox/services/sandbox.py 可以看到create_sandbox的完整参数面除spec镜像、entrypoint、env、timeout外还支持resource资源限制、network_policy出站策略、volumes卷挂载、extensions透传扩展参数、snapshot_id从快照恢复等。timeout为沙箱 TTL到期自动回收传None则创建需显式清理的长生命周期沙箱。async with sandbox保证上下文退出时的资源清理。sandbox.commands.run(...)命令执行经沙箱内的 execd 通道下发返回的execution.logs.stdout是分段的日志列表示例取第一段文本Hello OpenSandbox!。sandbox.files.write_files / read_file文件系统操作以WriteEntry(path, data, mode)批量写入随后read_file读回校验。Code InterpreterCodeInterpreter.create(sandbox)在已有沙箱上构建代码执行句柄codes.run(code, language...)通过 execd 的code_interpretingAPI 运行代码并返回结果段示例中2 2的结果是4。注意Code Interpreter SDK 需单独安装pip install opensandbox-code-interpreteropensandbox/code-interpreter容器镜像由 opensandbox-group/sandbox-images 仓库维护见原文档提示。六、用 CLI 完成同样操作不想写代码时osb命令行可以直接驱动同一套 APIpip install opensandbox-cli osb config init osb config set connection.domain localhost:8080 osb config set connection.protocol http osb sandbox create --image python:3.12 --timeout 30m -o json osb command run sandbox-id -o raw -- python -c print(1 1)流程说明osb config init生成 CLI 本地配置config set写入连接目标localhost:8080http协议即指向第二节启动的 Serverosb sandbox create --image python:3.12 --timeout 30m -o json以python:3.12镜像创建沙箱并设置 30 分钟 TTL-o json输出结构化结果从中取回 sandbox-idosb command run sandbox-id -o raw -- python -c print(1 1)在沙箱内执行任意命令--之后的部分原样作为要执行的命令。CLI 的完整命令集、输出格式json/raw等与配置项可在仓库的 cli/README.md 与 docs/cli/index.md 中查阅其源码位于 cli/src/opensandbox_cli。七、验证、限制与下一步验证要点curl http://127.0.0.1:8080/health返回{status: healthy}即表示生命周期 API 就绪此后 SDK/CLI 的所有操作都经由该端口进入 Server再由 Server 调度 Docker 运行时拉起沙箱容器。适用前提与限制本地快速上手默认 Docker 运行时需要本机 Docker Engine 20.10Kubernetes 运行时的完整部署另见 docs/kubernetes/index.md 与 kubernetes/README.mdserver.api_key未设置时服务可匿名访问启动时要求显式确认YES或OPENSANDBOX_INSECURE_SERVERYES——本地开发可行公网暴露务必配置 API Key对应请求头OPEN-SANDBOX-API-KEY沙箱创建请求的timeout受server.max_sandbox_timeout_seconds上限约束示例配置为 86400 秒bridge 网络模式下端口分配依赖port_range_min/max并发沙箱规模要与该区间匹配。下一步原文档 Next Steps路径已转换为仓库内相对路径安装指南 — 各 SDK 与运行时的详细安装配置参考 — 服务端配置完整说明架构文档 — OpenSandbox 内部工作机制功能指南 — Credential Vault、安全容器等进阶特性示例合集 — 真实场景用法生命周期 API 的公开契约定义见 specs/sandbox-lifecycle.yml是服务端与所有 SDK 共同的接口依据。【免费下载链接】OpenSandboxSecure, Fast, and Extensible Sandbox runtime for AI agents.项目地址: https://gitcode.com/GitHub_Trending/ope/OpenSandbox创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
延伸阅读

更多相关文章

2026/9/14 22:56:04

工业串口服务器选型的12项隐性指标解析

1. 为什么“串口服务器”不再是插上线就能用的傻瓜设备——从NCOM622样本看工业现场的真实选型逻辑你手头那台刚拆封的32路串口服务器,通电后LED灯亮了,串口能ping通IP,Modbus Poll也能连上从站——恭喜,你完成了出厂验收的前30秒…

2026/9/14 22:51:04

Zoho Projects问题解决通知自动化方案与实践

1. 项目背景与核心需求解析在项目管理场景中,问题跟踪与解决闭环是保证交付质量的关键环节。我们经常遇到这样的痛点:开发团队在内部系统中标记了问题状态为"已解决",但外部用户(如客户、合作伙伴)却无法及时…

2026/9/14 23:06:13

人脸关键点检测小模型蒸馏实战:轻量高精度部署方案

简介:本资源是一套面向本科生与初学者的人脸关键点检测轻量化模型实战项目,聚焦知识蒸馏技术在模型压缩中的落地应用,适用于人工智能、计算机科学等专业学生的毕业设计、课程设计及算法进阶学习。压缩包含2000个文件,主体为997张人…

2026/9/14 23:06:13

人脸关键点检测的知识蒸馏实战:轻量模型精度提升方法

简介:本资源是一份面向本科生与初学者的人脸关键点检测轻量化模型实践项目,聚焦知识蒸馏技术在模型压缩中的落地应用,适用于人工智能、计算机科学等专业学生开展毕设、课程设计或算法进阶学习。压缩包共2000个文件,含997张带标注的…

2026/9/14 23:06:13

AI驱动SolidWorks自动建模:Claude Code与DeepSeek Harness实战对比

1. 项目概述:当AI不再只是写代码,而是直接指挥CAD软件画出真实零件 最近在机械设计圈里,一个被反复提起的问题是:“能不能让AI像人一样,听懂‘画个M6螺纹孔,深度20mm,中心距底面15mm’这种自然…

2026/9/14 23:06:13

AI辅助编程实战:我用提示词工程从零复刻《宝可梦红》

《宝可梦 红》这款 26 年前的游戏,我从小玩到大,一直想知道把它“拆开”会看到什么。直到 AI 编程工具成熟之后,这个好奇心终于有了落地的可能。过去五个月,我利用下班和周末时间,用 AI 辅助编程的方式从零复刻了《宝可…

2026/9/14 23:01:07

从斜视到上帝视角:多路摄像头俯视图拼接实战

最近在折腾一个叫gods-eye-view的项目,说白了就是给监控摄像头补一个"上帝视角"——把分布在场地四周的几路普通画面,实时拼成一张从上往下看的俯视图。以前看监控,最痛苦的就是空间感全靠脑补:明明在屏幕A里看到一个人…

2026/9/14 2:17:50

拯救者Y7000黑屏故障排查与维修实战指南

1. 项目概述:一台黑屏的拯救者Y7000,到底卡在哪一步? 联想拯救者Y7000系列笔记本,从2018年第一代搭载i5-8300H开始,到后来的i7-9750H、i7-10750H、i5-11400H,再到2023年款的R7-7840HS,它始终是学…

2026/9/14 0:03:22

KCF目标跟踪算法与OTB工程实现:毕业设计实战解析

简介:这是一份基于KCF核相关滤波算法、融合尺度池与抗遮挡处理的目标检测跟踪MATLAB完整源码,主要面向计算机相关专业准备毕业设计、课程设计或期末大作业的学生,也适合需要项目实战练习的初学者。源码在OTB数据集上完成验证,能够…

2026/9/14 0:03:22

语音情感识别实战:Keras实现LSTM、CNN、SVM与MLP多模型对比

简介:面向语音情感识别入门与进阶开发者,这份基于Keras的项目源码完整实现了LSTM、CNN、SVM、MLP四种模型,兼容Python3.8与Keras/TensorFlow2环境。压缩包内含49个文件,大小约70.31MB,主体包括Python脚本、yaml/json配…

2026/9/14 11:59:31

USB Type-C PCB布局分区设计:电源、高速信号与PD协议全攻略

做硬件这行,Type-C接口算是典型的“看着简单,做起来全坑”的东西。光引脚就24个,高低速信号、电源、控制线全部塞在一个小小的连接器里,如果PCB布局不做规划,打样回来基本就是“插上没反应”、“高速掉线”、“静电一打…

2026/9/14 13:53:59

系统编程学习原型如何补齐稳定性边界

系统编程学习原型如何补齐稳定性边界预算有限时&#xff0c;我先优化明显多余的复制&#xff0c;而不是猜测性地换容器。用借用传递只读数据通常就能减少分配&#xff1a; fn parse(line: &str) -> Result<Item, Error> { /* ... */ }用基准确认热点确实在分配&am…

2026/9/14 11:22:57

雨花区哪家财务公司代理记账比较好?

在雨花区&#xff0c;企业处理财税事务常常面临诸多挑战&#xff0c;选择一家靠谱的财务公司至关重要。湖南巨勤财务管理咨询有限公司就是本地正规实体财税服务机构&#xff0c;深耕本地工商财税行业多年&#xff0c;熟悉当地工商局、税务局最新政策与申报流程。主营公司注册、…

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
咨询二维码