Skip to main content
Daytona provider 会为每次任务执行创建一个远程 sandbox,适合希望使用隔离的 Linux 工作区、又不想占用本地计算资源的评测。 匹配的 Recipe 可以补充镜像和工作区等默认值;兼容的显式参数通常会保留。Daytona 需要可访问的服务端和具有 sandbox 权限的凭证。

使用前准备

  1. Daytona 控制台 创建账号,并在 API 密钥页面 创建密钥。
  2. 设置 DAYTONA_API_KEY。自托管或多目标部署还可以设置 DAYTONA_API_URLDAYTONA_TARGET
  3. 不要将真实凭证提交到仓库;CI 中应使用密钥存储。
也可以在私有配置文件中填写 api_keyapi_urltarget。环境变量更适合本地终端和 CI。

使用 run 验证配置

下面以 SWE-bench Verified 和 mini-swe-agent 为例。示例通过 sample_ids 只运行一个任务;匹配的 Recipe 会根据该任务选择 Daytona 可用的镜像和工作区:
上面是 agentcompass run 的最小验证示例。模型端点等通用参数见 agentcompass run Daytona 同样支持 agentcompass launch。在编排文件的 defaults.environment 中设置所有请求共享的 Daytona 配置,或在 requests[].environment 中设置单个请求;id: daytona 与 Daytona 参数写在同一层。详见 launch 的映射规则

参数参考

参数可以通过 --env-params 传入,也可以写在配置文件的 environments.daytona 中。 上面的示例继续使用环境变量中的 Daytona 凭证,并由 Recipe 补充任务镜像。将以下选项添加到该命令,可以为每个基于镜像创建的 sandbox 申请 2 vCPU、4 GiB 内存和 8 GiB 磁盘:
resources 只对 image 启动路径生效。显式设置 snapshot,或不设置启动来源而使用 Daytona 默认 snapshot 时,AgentCompass 都不会传递该字段。

连接与凭证

字段默认值说明
api_keyDAYTONA_API_KEYDaytona API key。未显式设置时读取同名环境变量;也可以改用 JWT 鉴权。
api_urlDAYTONA_API_URLDaytona API 根地址。环境变量也未设置时,SDK 默认使用 https://app.daytona.io/api
targetDAYTONA_TARGETDaytona 中配置的 target 标识,用于选择 sandbox 的执行位置或区域;未设置时使用组织的默认区域。
jwt_tokenDAYTONA_JWT_TOKENJWT 鉴权令牌。使用 JWT 时还必须提供 organization_id
organization_idDAYTONA_ORGANIZATION_IDJWT 鉴权使用的组织 ID。
connection_pool_maxsize250Daytona SDK 同时打开的 HTTP 连接数上限,必须是正整数;设为 JSON null 可以移除该上限。
鉴权至少需要配置 api_key,或同时配置 jwt_tokenorganization_id

镜像与启动

字段默认值说明
image未设置镜像仓库中的镜像名称,例如 python:3.12。Daytona 从该镜像创建 sandbox;只有此启动路径会应用 resources
snapshot未设置当前组织中处于 Active 状态的 Daytona snapshot 名称。sandbox 规格由 snapshot 决定,AgentCompass 不会传递 resources
dockerfile未设置预留字段;当前实现会报不支持。请先构建并发布镜像,再设置 image
compose_file未设置预留字段;当前实现不支持通过 Docker Compose / DinD 启动 sandbox。
languagepythonDaytona 的代码执行语言,可选 pythontypescriptjavascript。未指定启动来源时用于选择默认 snapshot;自定义镜像仍须包含任务实际需要的运行时。
os_userDaytona 默认值sandbox 内执行命令的 OS 用户,必须已存在于镜像或 snapshot 中;留空时使用其默认用户。
imagesnapshotdockerfilecompose_file 只能设置一个;当前可用的启动来源只有 imagesnapshot。两者都未设置时,Daytona 会使用 language 对应的默认 snapshot。要求预构建任务环境的 Benchmark 仍须由 Recipe 或显式参数提供兼容的 image / snapshot

标识与元数据

字段默认值说明
name自动生成sandbox 名称。固定名称可能在并发创建或上次 sandbox 尚未清理时发生冲突。
labels{}创建时写入 Daytona 的字符串键值映射,例如 {“batch”:“nightly”};可用于记录所有者或评测批次。

工作区与环境变量

字段默认值说明
default_workspace_rootworkspace/Benchmark 未指定任务工作目录时,Harness 使用的默认路径。AgentCompass 会在 sandbox 创建后确保该目录存在。
env_variables{}环境变量映射,例如 {“DEBUG”:“1”}。变量名必须符合 [A-Za-z_][A-Za-z0-9_]*;值会转换为字符串,在创建 sandbox 时传给 Daytona,并合并到后续命令的环境中。

资源

字段默认值说明
resources{}Daytona 资源对象,仅在通过 image 创建 sandbox 时传递。支持的子字段如下。
resources.cpu1 vCPU申请的 vCPU 数量,使用正整数。别名为 resources.cpus;实际可用上限由组织配置决定。
resources.memory1 GiB申请的内存,单位为 GiB,使用正整数;实际可用上限由组织配置决定。
resources.disk3 GiB申请的磁盘空间,单位为 GiB,使用正整数。别名为 resources.storage;实际可用上限由组织配置决定。
resources.gpu未设置申请 GPU;Daytona 当前每个 sandbox 最多 1 块,因此值应为 1。还需设置 ephemeral=trueauto_delete_interval=0。别名为 resources.gpus;当前适配器不支持 gpu_type,不能指定 GPU 型号。
优先使用表中的标准字段,不要同时设置一个字段及其别名。当前适配器不会把其他 resources 子字段传给 Daytona。资源值还必须符合组织的单 sandbox 上限;该上限以 Daytona 控制台和官方说明为准。

网络

字段默认值说明
network_block_all未设置Daytona 原生出站防火墙开关。true 阻断全部出站访问;false 关闭 sandbox 级 block-all,但不能覆盖组织级策略。
network_allow_list[]允许访问的外部 IPv4 地址或 CIDR 数组,例如 [“203.0.113.10”,“10.0.0.0/8”]。设置后,其他外部 IP 目标会被阻断;裸 IPv4 会转换为 /32,最多 10 项,不支持 IPv6。
domain_allow_list[]允许访问的外部域名数组,例如 [“api.example.com”,“*.example.org”]。设置后,其他外部域名会被阻断;最多 20 项,不要包含协议、端口或路径。
三种限制方式中只能启用一种:network_allow_listdomain_allow_list 不能同时非空,network_block_all=true 也不能与任一列表组合。这些字段只在 Environment 的共享基线策略为 public 时用于初始创建。为了让准备、agent 运行和验证阶段使用一致的规则,建议改用通用网络策略,不要同时配置两套方式。 Daytona 的组织级网络策略始终优先于 sandbox 设置。按照 Daytona 当前的 tier 规则,Tier 1 和 Tier 2 不能在 sandbox 级覆盖组织限制;Tier 3 和 Tier 4 才能自定义或动态更新。阶段网络切换还要求凭证具有相应写权限,并且安装的 SDK 提供 update_network_settings

生命周期与超时

字段默认值说明
auto_stop_interval15运行中的 sandbox 在多长时间没有 Daytona 活动后自动停止,使用非负整数分钟;0 表示禁用。内部后台进程本身不一定会刷新该计时。
auto_archive_interval未设置连续停止多少分钟后自动归档,使用非负整数。未设置时使用 Daytona 默认值(当前 container sandbox 为 7 天);0 使用当前最大间隔 30 天。该功能仅适用于 container sandbox。
auto_delete_interval未设置连续停止多少分钟后自动删除。未设置时禁用,0 表示停止后立即删除;AgentCompass 只接受非负整数。
ephemeralfalse设为 true 时,Daytona 会将 auto_delete_interval 设为 0,sandbox 一旦停止就会删除;此时 auto_archive_interval 不会生效。
delete_on_closetrueAgentCompass 正常关闭 Environment 时,true 调用 Daytona 删除,false 改为调用停止。
sandbox_start_timeout60等待 Daytona 创建并启动 sandbox 的秒数,使用正数;在 AgentCompass 中,0 不表示无限等待,而会回退到 60 秒。
operation_timeout1800命令、文件操作或网络更新未指定更具体超时时使用的默认秒数,必须是正整数。
delete_on_close=false--keep-environment 含义不同:前者仍执行正常关闭,只是调用 Daytona 的停止操作;如果同时设置了 ephemeral=trueauto_delete_interval=0,Daytona 仍会在停止时删除 sandbox。后者会跳过 AgentCompass 的本次关闭操作,但不能绕过 Daytona 的自动停止、归档或删除规则。相关行为见运行控制

参数参考来源

支持的字段、类型和默认值以该命令的输出为准;Daytona 原生字段的取值与平台行为,以上游文档和所连接服务的版本为准。

特有行为

  • 使用 snapshot 创建时,sandbox 的资源由 snapshot 或 Daytona 配置决定,resources 不会应用。
  • 如果 Benchmark 要求预构建任务镜像,而 Recipe 和显式参数都没有提供 imagesnapshot,AgentCompass 会在创建前报错。
  • 阶段网络切换依赖当前安装的 Daytona SDK;SDK 不支持动态更新时会给出明确错误。

故障排查

相关页面