跳到主要内容

沙盒变量

本页列出 sandbox sidecar 与其会话容器使用的全部 SANDBOX_* 变量。它们只影响沙盒进程;修改后需要重启 sandbox 服务。SANDBOX_BASE_URLSANDBOX_API_KEY 是应用访问沙盒的连接变量,已在环境变量总览说明,这里一并列出以方便核对。

部署和运维流程请先查看 Python 沙箱说明;Sidecar 的 HTTP 合约见沙箱 API

官方完整版默认启动内置 sidecar。个人版默认不启动它,只有启用 --profile sandbox 或配置外部沙盒后 Python 才可用。sidecar 驱动宿主机 Docker socket,具有高权限;不要公开端口、不要关闭鉴权、不要为了修复超时而无限制提高资源上限。

配置层级

层级常见变量作用
应用到 sidecarSANDBOX_BASE_URLSANDBOX_API_KEY决定 Aivory 是否能声明和调用 Python 工具
sidecar 控制面SANDBOX_IMAGE、鉴权、并发、队列、Docker 超时创建、复用和回收会话容器
单个会话容器CPU、内存、PID、只读根、tmpfs、seccomp、文件上限限制不可信代码的资源和系统能力
工作区归档本地目录、对象存储超时、归档大小与 TTL控制会话回收后的持久工作区

SANDBOX_MEMORYSANDBOX_CPUSSANDBOX_MAX_SESSIONSSANDBOX_WORKSPACE_SIZE 的总和不能超过宿主机可承受资源。不要只按单会话额度计算,还要为 sidecar、应用、数据库、镜像拉取和峰值并发留余量。

连接、镜像与鉴权

变量默认值作用与取值安全说明
SANDBOX_BASE_URL应用请求 sidecar 的基础 URL。个人版本机 profile 为 http://sandbox:8000;官方完整版固定内部地址。不应指向公网无鉴权服务。
SANDBOX_API_KEYsidecar Bearer Key,应用与 sidecar 必须一致。官方 Compose 提供内部值,外部沙盒必须自行设置强随机值。密钥,泄露可变成执行入口。
SANDBOX_IMAGEaivory-sandbox:latestsidecar 为每个执行会话启动的运行时镜像。官方 Compose 会替换为发布镜像。只能指向受控镜像,避免不可信镜像。
SANDBOX_PULL_ON_START关闭1/true 时在启动时预拉取运行时镜像。官方 Compose 开启。可减少首次执行超时,但会增加启动时间和出站流量。
SANDBOX_ALLOW_NO_AUTH0仅当为真时允许 sidecar 无 API Key 启动。仅可信本机开发可用;生产必须保持关闭。
SANDBOX_DOCKER_CALL_TIMEOUT_S30Docker inspect、version 等控制调用的默认超时,单位秒。过高会延迟故障暴露。
SANDBOX_ARCHIVE_TIMEOUT_S120打包工作区归档时的总时限,单位秒。过高会占用会话回收锁。
SANDBOX_IDLE_REAPER_SWEEP_INTERVAL300扫描空闲会话并回收的间隔,单位秒。较短会更快回收资源,较长会增加空闲占用。

会话资源与隔离

变量默认值作用与取值安全说明
SANDBOX_MEMORY2g每个会话容器的内存上限,使用 Docker 大小格式。按最大并发预留总内存。
SANDBOX_CPUS1每个会话容器可用 CPU 数或 Docker CPU 配额。不要把所有宿主机 CPU 分配给单个会话。
SANDBOX_PIDS_LIMIT256每个会话容器允许的进程数。保持限制以缓解 fork bomb。
SANDBOX_NOFILE_ULIMIT1024:1024容器打开文件描述符软/硬限制。调高前评估文件与 socket 滥用。
SANDBOX_READ_ONLY_ROOTFS1会话根文件系统只读;0 关闭。生产应保持开启。
SANDBOX_TMPFS_SIZE256m只读根模式下 /tmp 和用户目录的可写 tmpfs 大小。影响临时文件可用空间和内存占用。
SANDBOX_WORKSPACE_SIZE512m会话 /workspace 的可写 tmpfs 大小。与归档上限、文件上传上限共同规划。
SANDBOX_WORKSPACE_TMPFS_SIZE512m旧名称兼容别名;仅在 SANDBOX_WORKSPACE_SIZE 未设置时生效。新部署使用正式变量。
SANDBOX_DISK_SIZE可选容器可写层大小限制,需要主机 Docker 存储驱动支持。不支持时会尽力回退;不能替代只读根。
SANDBOX_SECCOMP_PROFILEsidecar 内可读取的 seccomp profile 路径。仅使用审阅过的本地只读 profile。

执行、并发与回收

变量默认值作用与取值运营说明
SANDBOX_EXEC_TIMEOUT_CAP_MS600000单次执行的硬上限,毫秒;后台单次超时不能超过它。降低可减少资源风险。
SANDBOX_DEFAULT_EXEC_TIMEOUT_MS120000调用方未提供执行时长时的默认超时,毫秒。不应默认等于硬上限。
SANDBOX_IDLE_TTL_SECONDS1800未指定会话级 TTL 时的空闲回收时长,秒。缩短释放资源更快,延长保留更多工作区。
SANDBOX_IDLE_TTL_CAP_SECONDS86400管理后台下发的会话级空闲 TTL 硬上限,秒。管理员无法超出此运营边界。
SANDBOX_MAX_SESSIONS16可同时存在的活跃沙盒会话容器数。个人版官方 profile 默认覆盖为 4与内存、CPU 和 Docker socket 负载关联。
SANDBOX_MAX_CONCURRENT_EXECS4所有会话合计同时执行 /exec 的上限。调高会放大 CPU、内存和镜像/文件压力。
SANDBOX_MAX_CONCURRENT_CREATES2同时创建会话容器的最大数量。保守值可防止 Docker daemon 突刺。
SANDBOX_QUEUE_TIMEOUT_SECONDS150请求等待内部执行或创建槽位的最长时间,秒。超时应返回可诊断错误,而不是无限排队。

请求、代码与产物上限

变量默认值作用与取值运营说明
SANDBOX_MAX_BODY_BYTES58720256/exec 与文件请求体读取前的最大字节数,约 56 MiB,含 base64/JSON 开销。应大于上传原始文件上限的编码后大小。
SANDBOX_MAX_STORAGE_BODY_BYTES314572800/storage/put 请求体最大字节数,约 300 MiB。文档归档需要较大空间,仍需与代理限制一致。
SANDBOX_MAX_CODE_BYTES1048576单次 /exec 源代码字段最大字节数,默认 1 MiB。保持上限以避免控制面内存压力。
SANDBOX_MAX_UPLOAD_BYTES41943040单个输入文件解码后最大字节数,默认 40 MiB。与应用上传、暂存和 body 上限协调。
SANDBOX_MAX_OUTPUT_BYTES32768返回给模型的 stdout/stderr 总字节截断上限。防止无限打印占用内存和上下文。
SANDBOX_MAX_ARTIFACT_BYTES20971520单个生成产物最大字节数,默认 20 MiB。大文件应使用受控存储而非直接响应。
SANDBOX_MAX_FILES_PER_EXEC20单次执行最多返回的产物文件数。限制批量文件滥用。
SANDBOX_MAX_TOTAL_ARTIFACT_BYTES52428800单次执行返回产物总大小上限,默认 50 MiB。与单文件上限共同生效。
SANDBOX_MAX_COLLECT_SECONDS60收集执行产物的总时间预算,秒。过高会拉长用户请求和占用执行槽位。
SANDBOX_COLLECT_FILE_TIMEOUT_S30收集单个产物文件的超时,秒。过低可能丢失大文件,过高增加卡住风险。

工作区归档与对象存储

变量默认值作用与取值安全说明
SANDBOX_LOCAL_STORAGE_DIR本地工作区归档目录。设置后必须挂载持久化卷;空则本地归档不生效。仅单节点,路径只能由运维者设置。
SANDBOX_MAX_ARCHIVE_BYTES209715200回收或删除时可归档的工作区 tar 最大大小,默认 200 MiB。超出会跳过归档,需在用户文档中明确。
SANDBOX_STORAGE_DEFAULT_TTL3600/storage/put 未指定时预签名读取 URL 的默认有效期,秒。尽量短,避免长期公开访问。
SANDBOX_STORAGE_MAX_TTL86400预签名读取 URL 的硬上限,秒。不要提高到超过业务所需。
SANDBOX_S3_MAX_ATTEMPTS3S3 SDK 单次操作最大重试次数。过高会把故障放大成排队。
SANDBOX_S3_CONNECT_TIMEOUT_S10S3 连接超时,秒。与私网/跨区网络延迟协调。
SANDBOX_S3_READ_TIMEOUT_S120S3 读取超时,秒。大对象需同时检查总 body 上限。
SANDBOX_OSS_CONNECT_TIMEOUT_S30OSS 客户端连接超时,秒。仅使用受控 endpoint。

其他运行时变量

变量默认值作用与取值说明
MPLCONFIGDIR未设置Matplotlib 配置缓存目录。通常无需设置;若设置,应指向会话内可写、受限目录,不能指向宿主机敏感路径。

应用侧还有 AIVORY_SANDBOX_MAX_SANDBOX_RESP_BYTESAIVORY_SANDBOX_EXEC_CLIENT_OVERHEADAIVORY_SANDBOX_SANDBOX_ERROR_BODY_READ_CAP,它们限制 API 处理 sidecar 响应的大小和时长,见高级运行时变量