Cube Sandbox v0.2.2:E2B 兼容更进一步,高频踩坑集中收敛
继 v0.2.0 之后,Cube Sandbox 在 5 月 18 日晚间发布了 v0.2.2。
相比 v0.2.0,这一版核心做了几方面更新:把 E2B 兼容性从 SDK 层延伸到了端口协议层;闭合了 v0.1.x 以来用户反复反馈的几个高频稳定性问题;处理了 0.2 系列首批 CVE。下面分别展开。
一、兼容性做到协议层,离 E2B "零改造迁移" 又近一步
v0.2.0 时,Cube 的 E2B 兼容只覆盖到 SDK 层——你可以一行代码不改,把客户端从 E2B 切到 Cube,但反向代理、防火墙规则、客户端中写死的端口仍要跟着调整。
v0.2.2 把 sandbox 默认暴露端口从 8080/32000 改为 49983,与 E2B sandbox 协议对齐。意味着切到 Cube 时,配置文件也不用动了。
这一版还把"默认端口"的来源统一到了 CubeMaster——在此之前,Cubelet 和 network-agent 各自硬编码了一份默认值,运行时容易出现两边不一致。重构后,Cubelet 与 network-agent 不再持有默认值,行为以 CubeMaster 为准。
二、稳定性:集中修复用户高频踩到的 7 个坑
v0.1.x 到 v0.2.0 期间,社区反馈的几个反复踩到的问题,这一版我们做了集中处理:
cubecli exec在 stdin EOF 时的 nil-deref panic(#188):exec 命令在 stdin 关闭瞬间触发空指针,进程被中止但日志不报错,导致用户误以为是网络或权限问题。修复后改用errors.Is(err, io.EOF)兼容 error wrapping,shim 日志能正常输出成对的 exec req / exit code 条目。CubeMaster 模板镜像任务重复创建(#227):并发或重试 API 调用会让同一个构建任务被入队两次。这一版给
template_image表加了request_id列和(request_id, operation)唯一索引,从数据层做幂等。已有遗留 ID 的旧记录由迁移脚本处理,老用户升级后无需手工干预。PVM 模板的 ext4 artifact 运行时文件物化(#282):原先
RefreshArtifactRuntimeFiles、validateArtifactRuntimeFilesPresent、ensureArtifactRuntimeFiles三处逻辑独立、状态不一致。这一版收敛为只处理 kernel 文件,配套单测同步重写。对 PVM 部署用户而言,模板生命周期更可预测。存储插件命令超时可配置(#236):原本 ext4 操作的 3 秒超时硬编码在代码里,并发场景下大文件 live-create 慢路径会被误杀。新增
cmd_timeout字段写入存储插件的 TOML 配置,运维不需要重新编译就能调整。字段不存在时行为不变。存储失败的诊断信息(#237):
newExt4RawByReflinkCopy失败时的错误日志,从单行 message 改为结构化输出。配套新增describeStorageFailure、describeFile、describeFreeBytes单测。部署脚本支持
.env端口占位符(#210):cubemaster.yaml里的 MySQL/Redis 端口改为__CUBE_SANDBOX_MYSQL_PORT__和__CUBE_SANDBOX_REDIS_PORT__占位符,由install.sh从.env读取替换。非默认端口部署不再需要手工改 YAML。模板镜像下载体验优化:快速体验镜像从 4G 瘦身到 100M 左右,下载失败率和首次启动等待时间都明显下降。配合两周前上线的海外镜像仓库地址,海外用户拉镜像的卡顿问题也一并改善。
三、安全:v0.2 系列首批 CVE 处置
vmm-sys-util0.11.x → 0.12.1:闭合 CVE-2023-50711。原版本FamStructWrapper::deserialize不校验 header 长度与 flexible-array 长度匹配,安全 Rust 代码可能产生越界内存访问。bytes、env_logger同步升级:同一轮 PR(#267)刷新依赖。timecrate 升级回滚(CVE-2026-25727):升级需要 MSRV bump,团队评估后确认 Cube 仅使用time::format_description::well_known::Rfc3339做出站时间戳格式化,从不对不可信输入调用Rfc2822解析,受影响攻击向量不可达。等 MSRV 准备好再单独推。
四、第一期共建计划同步上线
v0.2.2 同时上线了 Cube Sandbox 第一期共建计划,仓库新增了三个面向社区贡献的文档专区:
- Troubleshooting:避坑指南,用户分享部署、配置、报错的踩坑记录;
- Use Cases:应用案例,用户分享真实业务场景下用 Cube 解决的具体问题;
- Integrations:生态集成,用户分享 Cube × LangChain / Dify / Claude Code / OpenHands 等组合的接入实践。
每个专区都有模板和 index 页,提交方式参考仓库根目录 CONTRIBUTING_zh.md。
欢迎大家前来贡献,你的 PR 合入后即有机会获得:Cube Sandbox 官方贡献者证书 + 官网荣誉墙永久署名 + 新版本优先体验 + 限量开源周边。