Skip to content

沙盒与上限 ​

沙盒是云端运行所在的那台虚拟机。本页说明它的规格档和架构、装了什么、能访问什么、受哪些上限约束,以及运行结束后留下什么。

连 GitHub 仓库和自带镜像的项目,每次运行、每次预跑、每次「检查一次」都开一台全新的虚拟机。虚拟机开在伦敦(见运行位置)。它不会重复使用,也不和别人共用,运行结束就删除。隔离措施见安全说明。

选规格档 ​

规格档决定虚拟机的大小。默认是「标准」。

规格档vCPU内存磁盘x86 机型ARM 机型适合
小2 个共享(x86)/ 1 个(ARM)4 GB30 GBe2-mediumn4a-standard-1只调外部模型 API 的轻量 Agent
标准28 GB30 GBe2-standard-2n4a-standard-2多数 Agent
大416 GB50 GBe2-standard-4n4a-standard-4带数据库和多个工具后端的 Agent
特大832 GB100 GBe2-standard-8n4a-standard-8本地跑小模型或依赖很重
超大1664 GB200 GBe2-standard-16n4a-standard-16大型构建、几个很重的服务,或要更多内存的本地模型
GPU(即将开放)8 个,加一块 24 GB 显存的 GPU32 GB100 GBg2-standard-8没有要用 GPU 的本地模型

ARM 的一个 vCPU 是一个完整的核;x86 的一个 vCPU 是一个超线程。同一档不论 x86 还是 ARM 都是一个价,见价格。每一档在所有套餐上都能用,免费版也一样。「GPU」档只在伦敦的 x86 上跑。平台的 GPU 镜像做好并通过安全检查之前,这一档是灰的(「即将开放」),之后由平台开放。

要换档,打开项目的「设置 → 沙盒」,选「规格档」,点「保存」;也可以在接入向导的「规格档」一步里选。

平台会按测试接入(Agent 旁边要起几个容器)、仓库的依赖文件(要装 torch、TensorFlow、CUDA 这类很大的包)和最近 3 次沙盒(内存不够、盘满了、准备环境到了时间上限、准备环境用了 10 分钟以上)推荐一档。要装很大的包、或者上次准备环境很慢时,不管推荐不推荐都会提前写一句,比如「这个仓库要装 torch 这类很大的包:准备环境可能要 20 分钟以上」。这两处都会在现在用的那档旁边写出推荐的那一档和原因,下拉框一直显示现在的那档,点「换成…」才会改。测试接入写明了装什么之后(review.yaml 的 setup,没写就是按仓库根目录文件的默认装法),只按它装的算。平台从不推荐更小的档。

组织所有者在「组织」→「策略」→「AI 自己做的事」里关掉了「助手改东西要我确认」(默认开着)时,AI 会在它的费用上限内替项目换上推荐的档,项目上会写明,可以在「设置 → 沙盒」里改回。开着时,平台从不自己换档。

项目的每次运行都用选定的这一档,运行会记下用的是哪一档。平台停用的规格档,新的运行不能再选;已经在跑的不受影响。

自定义规格 ​

「规格档」里最后一项「自定义…」让你自己定大小,所有套餐都能用,免费版也一样。它主要是给哪一档都没有的大小用的,比如 200 GB 内存。

字段取值
核数2 到 80 的偶数
内存 GB2 到 640
磁盘 GB30 到 2000
GPU不要、1 块、2 块或 4 块(每块 24 GB 显存)

平台给你至少这么大、最便宜的机器:

  • 不要 GPU 时, 核数取你要的核数和「内存 ÷ 8」里大的那个,向上取到偶数(每个核最多配 8 GB);内存取你要的内存和「每核 2 GB」里大的那个。ARM 规则一样,最多 64 核、512 GB;更大的请选 x86。
  • 要 GPU 时(只有 x86),给你 GPU 块数相同、核数和内存都够的最小一种机器:1 块 GPU 的有 4 核 16 GB、8 核 32 GB、12 核 48 GB、16 核 64 GB、32 核 128 GB;2 块的是 24 核 96 GB;4 块的是 48 核 192 GB。再大的会被拒。

给的比你要的多时,输入框下面写明实际给的,比如「实际分配:26 核 · 200 GB 内存 · 30 GB 磁盘」,旁边是每小时的价格(「价格:约 $3.64/小时」)。自定义规格在伦敦跑,不用你选在哪。自定义规格里的 GPU 和「GPU」档一起开放;在那之前,带 GPU 的自定义规格会被拒,提示同样是「即将开放」。

自定义规格和规格档一样按秒计费,用它自己的价格,开始测试前的预估也按这个价格算。价格和例子见价格。

选架构 ​

沙盒跑在 x86(amd64)或 ARM(arm64)上。在「设置 → 沙盒 → 架构」里设:

设置连仓库的项目自带镜像的项目
自动(默认)x86镜像有 x86 就用 x86,否则用 ARM
x86x86x86,镜像得有
ARMARMARM,镜像得有

自带镜像的项目只能选镜像有的架构。设置里选了镜像没有的,运行会被拒绝,并说明镜像有哪些。仓库默认 x86,因为一些 Python 包、下载型二进制和只出 x86 的工具在 ARM 上装不上。

出现 exec format error,或者找不到 aarch64 的包,说明架构不对。平台会从预跑(或「检查一次」)的日志里认出这些,自动换到另一种架构再预跑一次,项目的设置先不动。通过了,平台就把项目的架构改过去,在「设置 → 沙盒」里写明为什么,并给出「改回」。两种都没通过时,两次的结果都写在预跑结果里。在等这次预跑的测试也跟着换过去。

镜像没有设置里那种架构时,「检查一次」直接在镜像有的那种上跑。

选运行位置 ​

在「设置 → 沙盒 → 运行位置」里设:

设置沙盒开在哪
自动(默认)伦敦
伦敦伦敦

现在两个都开在伦敦。只有平台以后再开一个位置时才有区别:「自动」在伦敦满了时可以开到那里,「伦敦」满了就排队。数据放在哪,见数据处理。

2026 年 10 月 24 日起,沙盒只在伦敦。「瑞典(欧盟)」不再提供,设置里也不显示;选过它的项目已经改成「自动」。还选着它的项目发起时会被拒,提示把运行位置改成「自动」,不会不问一声就换到伦敦。

机器镜像里有什么 ​

沙盒从平台的机器镜像开机,每种架构一个:

  • Ubuntu 24.04 LTS,带当周的更新。
  • Docker Engine 和 Compose 插件,以及 devcontainer 命令行。
  • Node.js 20 和 22(node 是 22;node20、node22 也在 PATH 上),pnpm 和 yarn 经 corepack 提供。
  • Python 3.12 和 3.11,各带 venv,以及 uv。
  • Go 1.23 和 Java 21(OpenJDK)。
  • 预先拉好的镜像:postgres:16-alpine、mysql:8、redis:7-alpine、node:22-alpine、python:3.12-slim。
  • 两个用户:runner 跑测试机,agent(uid 1500)跑你们的 Agent,没有 sudo,也用不了 Docker。

带 GPU 的虚拟机(「GPU」档,或带 GPU 的自定义规格)用同一个 x86 镜像开机,另外装好 GPU 驱动和容器工具包。在虚拟机上直接跑的 Agent 直接就能用 GPU;在容器里跑的 Agent 也能用(它的容器用 --gpus all 启动)。

镜像每周重建一次。每次运行都记下用的镜像版本,作为版本的一部分。

沙盒能访问什么 ​

  • 入站: 什么都进不来。沙盒没有外网 IP。
  • 出站: 只有 TCP 443 和 80 端口,经伦敦的一个固定出口 IP。80 端口只给构建镜像用;你们的 Agent 本身只能走 443。
  • 你们的 Agent 能经发布出来的端口访问 127.0.0.1 上的 services,能访问外网 443 端口;访问不了云元数据服务、平台的控制面,也不能直接访问容器网络。

把沙盒地址加进白名单 ​

你们的测试后端或模型网关只放行已知地址时,发邮件到 admin@nice2.io 问沙盒的出站地址,加进白名单。2026 年 10 月 24 日起不再用瑞典(欧盟)的那个地址。网页直连的对话 AI 则是从控制面自己的固定地址调用的。

上限 ​

云端运行受组织策略约束。所有者在「组织 → 策略」里设,不能超过套餐允许的范围(见组织策略)。

上限默认到了会怎样
同时在跑的沙盒数2之后的运行排队,前面的跑完按顺序开始。
单次运行最长时间120 分钟到上限前 5 分钟,测试机在当时那次执行结束后停下,已有的部分结果照常出报告。到上限还在跑的被停下,虚拟机删除。虚拟机本身还带一个硬上限:到上限后晚 10 分钟直接删除。
每月沙盒小时不限所有者可以设上限。用完后新发起的运行会被拒并说明原因,还在跑的沙盒在当时那次执行结束后停下。每月 1 日(UTC)恢复。

套餐决定组织策略最多能设多少:

套餐同时在跑的沙盒单次运行最长每月沙盒小时
免费版160 分钟不限
Pro3240 分钟不限
Ultra10480 分钟不限
先充值3240 分钟不限
企业版不限不限不限

预跑和「检查一次」也和运行一样占沙盒、用沙盒小时。沙盒时间按规格档或自定义规格的价格收费(单价)。免费版、Pro 和 Ultra 先从这一期的额度里扣,再从余额扣。

虚拟机一直没接上平台 ​

新开的虚拟机要在建好后 12 分钟内接上平台。没接上的话,平台删掉它,自动重开一台。还是同一次测试、同一个人发起的,按组织的名额排队;页面上写明原因,并给出第一台的串口输出(和任务日志一样,里面的密钥和令牌已遮住)。这段时间不收费,也不算进本月的沙盒小时。

重开的那台也没接上,平台才结束这次运行,并把任务编号、两台各在哪家云哪个区、开机日志(密钥已遮住)发给我们的工程师(admin@nice2.io)。页面上会写「已经通知了平台的工程师」,你们不用做什么。

云上没能建起虚拟机时也一样:不收费,过一分钟自动再建一次,还不行就通知我们。只重开一次,取消了就不再重开。

虚拟机在运行中途没了,或失联 ​

这次运行记为「没跑完」,不会自动重跑:你们的 Agent 可能已经改过测试后端里的数据。先重置测试后端,再重新发起。发起时要勾选,确认已经核对过。在有人确认之前,自动触发和用项目 API 令牌发起的运行都会被拒。已执行的部分照常出报告,可以补跑没执行的那几次。

虚拟机中途没了时,它最后一次交回部分结果之后的那段时间不收费,也不算进本月的沙盒小时;之后平台的自动补跑也不收费。测试中途和沙盒失联(租约过期)的照常计费。见平台的问题不收费。

测试中途和沙盒失联(租约过期)时,平台先看这次用的 review.yaml:测试开始后覆盖层里的没改过,就用覆盖层里的;否则读仓库里那个提交的。

下面这些全部满足时,Agent 能改的东西都在这台虚拟机里,已经随它删掉了,所以平台自己核对。任务页会写「平台已核对」,审计日志记成平台做的(job.auto_acknowledge,带上找到的后端):

  • Agent 在虚拟机里跑(driver: command 或 harness);用 driver: http 的,接口和它的重置地址在 127.0.0.1 或 localhost 上;
  • 工具经工具代理到 127.0.0.1 上的上游(attach: http_proxy),或者是平台的模拟后端(fixture);
  • 数据重置是 127.0.0.1 上的 HTTP 地址,或者是数据库地址在 127.0.0.1 上、写在 runner_env 里的 SQL;数据读取是虚拟机里的 SQLite 文件,或者地址在 127.0.0.1 上、写在 runner_env 里;
  • 交给 Agent 的项目密钥只有模型的密钥(OPENAI_API_KEY 这类),agent.env 和 runner_env 里交给它的地址都在 127.0.0.1 上。

有一条不满足,就仍然要人核对。下面这些都算不满足:

  • 外面的地址;
  • 地址来自项目密钥(平台读不到它的值);
  • 数据重置是一条命令;
  • 用 MCP 工具服务(mcp_wrap,它们连到哪儿不写在 review.yaml 里),或只看得到回复的接入;
  • review.yaml 读不到,或在测试开始后改过。

运行结束后留下什么 ​

什么保留多久
你们的源码或镜像,以及项目密钥随虚拟机删除
运行包里的证据文件和沙盒日志组织的保留期,默认 90 天
报告和结论项目在就一直在
依赖缓存(连仓库的项目)30 天
按 Dockerfile 或 devcontainer.json 构建的容器镜像,按提交保存30 天

一个运行包解压后最多 512 MB、10,000 个文件、单个文件 64 MB。

下一步 ​

本站的法律文件都是草稿,待律师审阅,尚未生效。