OpenSandbox 1.1.0:阿里开源的 AI 沙箱平台,这次把版本号也管明白了 - 张善友

OpenSandbox 1.1.0:阿里开源的 AI 沙箱平台,这次把版本号也管明白了 - 张善友

💡 原文中文,约5800字,阅读约需14分钟。
📝

内容提要

阿里开源沙箱平台OpenSandbox发布1.1.0,用于安全隔离运行AI生成代码。该平台采用四层架构,以OpenAPI规范解耦SDK与运行时,支持五种语言SDK和MCP。新版推出Firecracker微虚拟机沙箱,启动约80毫秒,并引入统一伞版本与签名BOM治理,升级快照存储和生命周期Hook。

🔎

延伸解读

版本治理:从混乱到统一

OpenSandbox 1.1.0 引入“伞版本”机制,将 Server、SDK、CLI 等所有产物统一版本号,并由 Sigstore 签名的 BOM 固定。这解决了此前各组件版本分散的问题,例如 Maven Central 上 SDK 已到 1.0.19,而 Go module 到 v1.0.5。统一版本后,用户能明确知道各组件兼容性,降低集成复杂度。同时,项目采用每两周发布新线、只维护最新线的节奏,紧急 CVE 可回补上一线,这要求使用者及时跟进升级。

Firecracker 微虚拟机:轻量隔离新选择

1.1.0 首次集成基于 Firecracker microVM 的 Fast Sandbox,通过 FastPath v2 gRPC 接入,支持与 K8s 容器混合部署。其预热池可实现约 80 毫秒启动,暂停时 checkpoint 到 artifact store 并释放算力,恢复时可在任意宿主机复活。这为需要强隔离且快速启停的场景提供了新选项,但需注意其与容器运行时在生命周期 Hook 等特性上的支持差异。

升级注意事项:避免踩坑

升级到 1.1.0 需留意几个破坏性变更:agent-sandbox provider 迁移到 agents.x-k8s.io/v1beta1,需先安装 beta CRDs;Helm charts 目录移至 manifests/charts/;informer_enabled 配置项被删除;CodeInterpreter 创建默认改为严格就绪检查,依赖旧行为的需显式设置;生命周期 Hook 在 Docker 运行时上会被拒绝。建议升级前仔细阅读发布说明,并测试关键功能。

选型参考:何时选择 OpenSandbox

若需要多框架接入、K8s 大规模批量调度,OpenSandbox 是合适选择,其 OpenAPI 规范解耦了 SDK 与运行时,支持自定义运行时。若需要完整的组织级 Coding Agent 平台(含快照、Dashboard、多区域),可考虑 Daytona;若个人运行 Agent 且注重凭据安全和推理隐私,可尝试 OpenShell,但需接受其 Alpha 状态。OpenSandbox 的独占沙箱设计适合高隔离要求的场景。

❓

Q&A

OpenSandbox 是什么?它主要用来做什么?

OpenSandbox 是阿里开源(现由 opensandbox-group 维护)、Apache 2.0 协议的通用 AI 应用沙箱平台,用于安全隔离运行 AI 生成的代码。它提供多语言 SDK、统一沙箱 API 和可插拔运行时,覆盖 Coding Agent 跑代码、GUI Agent 开浏览器、批量评测智能体、AI 代码解释器、强化学习训练等场景。

OpenSandbox 的架构分为哪几层?

OpenSandbox 采用四层架构,从上到下依次是:SDK 层、协议规范层、运行时层、沙箱实例层。

OpenSandbox 1.1.0 版本为什么跳过 1.0.0 直接发布?

因为 Maven Central 上 com.alibaba.opensandbox:sandbox 已发布到 1.0.19,Go module proxy 也到了 v1.0.5,这些包仓库不可变,统一伞版本必须从高于所有已消耗版本的新线开始。1.0.20 虽可避开冲突,但按规则 Z>0 是留给线内快照的,不算合法线起点,所以只能选 1.1.0。

OpenSandbox 1.1.0 引入了哪些新功能?

主要新功能包括:推出基于 Firecracker 微虚拟机的沙箱(启动约 80 毫秒,支持混合部署和 checkpoint/恢复);新增可选的 PostgreSQL 快照存储(支持连接池、CAS 语义、多进程 HA)及 migrate-snapshots 迁移命令;引入沙箱生命周期 Hook(OSEP-0020),支持 preStart 和 periodic hook。

OpenSandbox 如何保证沙箱的网络安全性?

入口有 Ingress 网关(HTTP/WebSocket 反向代理),支持按请求头或 URI 路径路由,并实现按需保活;出口有 Egress Sidecar,与沙箱容器共享网络命名空间,通过 DNS 代理和 nftables 做双层拦截,支持 FQDN 级别白名单,默认拒绝所有出站流量。

OpenSandbox 支持哪些编程语言的 SDK?

OpenSandbox 提供五种语言的 SDK:Python、Java/Kotlin、TypeScript、C#、Go。

OpenSandbox 的沙箱是独占的还是可以共享?为什么?

沙箱是独占的,一人一个,不支持共用。因为沙箱内只有一个 execd 入口,文件系统命名空间唯一,进程互相可见,TTL 到期整个沙箱一起销毁,多人共用会互相干扰。正确做法是每个会话独占一个沙箱,由平台批量创建和回收。

OpenSandbox 与 Daytona、OpenShell 相比有什么不同?

OpenSandbox 适合需要多框架接入和 K8s 大规模批量调度的场景;Daytona 适合需要完整组织级 Coding Agent 平台(快照、Dashboard、多区域)的场景;OpenShell 适合个人跑 Agent、特别在意凭据安全和推理隐私的场景,但目前仍是 Alpha 阶段。

🏷️

标签

➡️

继续阅读