跳转到主要内容
Environments 是 execution providers。它们为 harness 提供统一的命令执行、文件传输、文本读写、endpoint 暴露和资源清理接口。 Benchmarks 和 harnesses 应依赖 EnvironmentSession 表面,而不是直接依赖 provider SDK。

Environments 负责什么

命令执行

以 shell 或 argv 方式执行命令,并支持 cwd、env、timeout、detach 和 return-code capture。

文件传输

在本地磁盘和 environment 之间 upload/download 文件或目录。

Workspace 访问

提供文本读写和 default workspace root 行为。

Provider 生命周期

打开 session、返回可选 endpoint,并释放 sandbox、container 或本地 session。

Session 接口

Method作用
exec(command, shell=False, cwd=None, env=None, timeout=None, detach=False)执行命令并返回 ExecResult
upload(src, dst) / download(src, dst)跨 provider boundary 复制文件。
upload_dir(src, dst) / download_dir(src, dst)递归复制目录。
write_text(path, content) / read_text(path)修改 environment 内文本文件。
endpoint()对支持服务暴露的 provider 返回 URL。
provider close()释放 sandbox、container 或本地 session 状态。

Provider 选择

Provider适用场景
host_process本地轻量 smoke test,或不需要 isolation 的 benchmark。
docker本地可复现容器,前提是 Docker 可用。
modal远程 registry-image sandbox,尤其适合 SWE-bench 和 Terminal-Bench recipes。
daytona远程 developer-style workspace 和 task images。
通过 --env 选择 provider,默认值位于 config/defaults.yamlenvironments.<provider> 下。当任务只需要本地文件或直接模型调用时,从 host_process 开始;当任务需要 isolation 或 benchmark 专用镜像时,再切换到容器或远程 sandbox。对于支持 recipe 的 benchmark/provider 组合,image 和 workspace root 会从 task metadata 推导,通常不需要手动传 --env-params '{"image":"..."}'
各 provider 的凭据、配置步骤和可运行示例见执行环境章节;首次运行时如何挑选 provider,见环境选择实战指南

并发与限制

控制项作用范围
--task-concurrency单次 run 中同时执行的任务数。
execution.task_concurrencyYAML 中 per-run task concurrency 默认值。
runtime.provider_limits.<provider>当前进程内打开 provider session 的全局上限。
提高 task concurrency 前,应先确认模型 endpoint 和 provider 账号限额可以承受。

开发者说明

当执行发生在新的 provider 或 runtime substrate 中,新增 environment。不要为了选择不同 task image 新增 environment;那属于 environment.params 或 recipe。

相关页面