用途:在 Cloudflare Workers 上构建安全、隔离的代码执行环境,适用于 AI 代码执行、代码解释器、CI/CD 系统与交互式开发环境。
安装与前置:npm install @cloudflare/sandbox;本地开发需 Docker,可用 docker info 验证。
配置:wrangler.jsonc 需声明 containers(class_name 为 Sandbox、image 指向 ./Dockerfile、instance_type 为 lite、max_instances 为 1)、durable_objects 绑定与 migrations(new_sqlite_classes 为 Sandbox)。Worker 入口必须重新导出 Sandbox 类:export { Sandbox } from '@cloudflare/sandbox';。
主要能力:getSandbox(env.Sandbox, 'user-123') 获取沙箱;exec() 执行 shell 命令并返回 stdout、stderr、exitCode、success;runCode() 执行 LLM 生成代码,支持 python、javascript、typescript,配合 createCodeContext 保持上下文状态;文件操作包括 writeFile、readFile、mkdir、listFiles;exposePort 暴露端口生成预览 URL;destroy 释放资源。
使用方式:命令与脚本用 exec(),LLM 生成代码与数据分析用 runCode(),构建测试流水线用 exec()。可通过扩展 Dockerfile 添加依赖,基础镜像为 docker.io/cloudflare/sandbox:0.7.0,含 Python 3.11、Node.js 20 及常用工具,本地开发需 EXPOSE 8080。
限制与注意:预览 URL 在生产环境需自定义域名与通配 DNS,.workers.dev 不支持;容器空闲 10 分钟后休眠,可用 sleepAfter 配置;同一 sandboxId 返回同一实例;多用户勿硬编码 ID;临时沙箱应调用 destroy();不要使用内部客户端,应使用 sandbox.* 方法。
更多资料见官方文档、API 参考与示例仓库。