Kibotos

从 E2B 迁移

本页介绍怎样把程序从 E2B 迁到 Kibotos:确认用到的能力可用,把 SDK 指向网关,再替换有差异的部分。各调用的完整行为见本节其他页面。

前提条件

向部署方要下面这些:

  • 网关的 API key 与域名。
  • 可用的 Template 名称。
  • 网关证书由私有 CA 签发时,这个 CA 的证书文件。

步骤

1. 确认 SDK 包

兼容性以官方 JavaScript SDK 为准,见兼容版本。

包或工具在 Kibotos 上
JavaScript 的 e2b2.46.1 通过验收,请使用这个版本
Python 的 e2b未测试。依赖它之前先跑自己的测试
@e2b/code-interpreterrunCode 需要 sandbox 里有 Code Interpreter 服务,Kibotos 的 Template 都不包含它。改用 sandbox.commands.run 运行代码
@e2b/desktop未测试。截图与键鼠输入使用原生 API 或 kibo 的桌面接口
E2B CLI网关不提供 Template 构建与 sandbox 日志。Template 用 kibo-build 构建,见下表

2. 确认用到的功能

不支持的选项会返回错误,不会被忽略,所以跑一次测试就能看出还要改什么,见返回的错误。

你用到的在 Kibotos 上处理
自己的 Template由 Operator 发布,不经 SDK把容器镜像交给部署方构建 Template,再把名称传给 Sandbox.create
Sandbox.create 的 envs返回 501在每次 sandbox.commands.run 时传 envs
内存暂停sandbox.pause() 可用,但不保留内存与进程把状态放在 Volume 上,Sandbox.connect 之后重新启动进程,见暂停与恢复
autoResume返回 501使用 sandbox 之前调用 Sandbox.connect
快照与 Sandbox.fork返回 501SDK 里没有替代。要复制数据,用 kibo 或原生 API 导出与恢复
network.allowOut 里的域名,或 network.rules返回 501使用地址与 CIDR,或让流量经 network.egressProxy 离开,见网络
递归的 files.watchDir返回 unimplemented分别监视每个目录
Template 的 cpuCount 或 memoryMB所有 sandbox 都用网关的设置向部署方提出,见资源
团队与按团队的 API key整个部署共用一个 API key在自己的程序里区分用户。团队指标返回 501
MCP 配置、IAM token返回 501网关里没有替代

单次上传的文件不能超过 1 GiB,进程或文件请求的单条消息限制为 4 MiB,见命令与文件的注意事项。

3. 把 SDK 指向网关

安装通过验收的 SDK 版本。验收在 Node.js 22 或更新版本上运行:

npm install e2b@2.46.1

设置连接参数,这一步不用改代码:

export E2B_API_KEY="$(cat e2b-api-key.txt)"
export E2B_DOMAIN=sandbox.example.com
export NODE_EXTRA_CA_CERTS="$PWD/sandbox-ca.pem"

证书来自公共 CA 时,不用设置 NODE_EXTRA_CA_CERTS。

4. 更换 Template 名称

把 E2B 的 Template 名称换成部署方给的名称:

const sandbox = await Sandbox.create('kibotos-minimal');

不写名称时,Sandbox.create 请求名为 base 的 Template。部署里没有这个 Template 时,调用返回 404。

5. 运行程序

在这套部署上跑你的测试。返回 501 时,错误里写明了能力名称,对照第 2 步修改。网关没有实现的接口返回普通的 404,SDK 会把它报告成 sandbox 不存在,见返回的错误。

行为差异

下面这些调用可用,但行为与 E2B 不同:

  • 网络访问:SDK 默认请求公网访问。除 DNS 外的 UDP(例如 QUIC、NTP)不被允许,见保证与边界。
  • 数据:需要保留的数据放在 Volume 上。恢复后 /tmp 与 /run 是空的,根文件系统的其余部分尽力保留。
  • Volume:不带 volumeMounts 创建的 sandbox 有自己的 Volume,挂在 /data,随 sandbox 一起删除,见 Volume。
  • 容量:没有 node 放得下时,创建与 connect 返回 503,见容量不足。

下一步

本页内容