> ## Documentation Index
> Fetch the complete documentation index at: https://opencompass-docs-preview-pr-335-0.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# Environment 概览

Environment 决定评测中的任务命令在哪里执行，任务文件又保存在哪里。AgentCompass 在 host 上调度评测，任务文件准备和命令执行通常通过所选 Environment 完成；验证位置由 Benchmark 决定。

## 核心概念

| 概念 | 含义 |
| - | - |
| Environment | 一次任务使用的执行环境。它提供命令执行、文件读写和工作目录等能力。 |
| provider | 由 `--env` 选择的 Environment 实现。它可以直接管理执行实例，也可以通过外部服务把创建工作交给服务端 runtime。这里的 provider 与调用 model API 的 provider 无关。 |
| sandbox | 具体执行后端为任务创建的隔离实例，可以是本地容器或远程实例。`opensandbox` 本身是 API 接入层，实际 sandbox 由所连接服务配置的后端创建；`host_process` 不创建 sandbox。 |
| workdir | Environment 的默认命令目录，由 `setup.workdir` 指定，未指定时继承镜像或 provider 的默认值。 |
| workspace | Benchmark 选择并传给 Harness 的任务根目录。它可以与 workdir 相同，但不是 Environment provider 参数。除非使用 `host_process` 或显式挂载目录，否则其中的路径不是 host 上的同名路径。 |

## workspace 解析规则

TerminalBench 2、2.1、Verified、SkillsBench 和 SWE-Marathon 直接使用 Environment 的实际当前目录作为准备好的 workspace，不再提供独立的 Benchmark workspace 配置。可以通过 `setup.workdir` 覆盖任务的 `environment.workdir`；两者都未指定时，Docker 保留镜像的 WORKDIR。Dockerfile 解析仅用于部分远程 provider recipe 的兜底。

Harness 使用准备好的 workspace；协议允许 workspace 为空时，也回退到实际当前目录，不再另外创建任务根目录。OpenEvolve 仍要求 Benchmark 提供 workspace。共享环境时，包括并发 `host_process` 运行，Benchmark 必须自行隔离任务文件。

复用环境的 verifier 使用准备好的 workspace；fresh verifier 使用自身 Environment 的有效 workdir，不继承 run workspace，可以通过 `evaluation_setup.workdir` 覆盖。SWE-bench 等拥有独立评测布局的 Benchmark 仍保留自己的布局字段。

拥有自定义布局的 Benchmark 仍保留独立于 `setup.workdir` 的目录参数。PinchBench 的 `workspace_root` 是隔离任务目录的父目录；WildClawBench 直接将 root 用作任务 workspace；SciCode 的 root 是本地临时代码目录。修改默认命令目录不会移动显式选择的绝对 Benchmark workspace。TauBench 没有外部 Harness workspace，其隔离运行目录只存放输入、结果和临时数据。

相对命令目录和远端文件路径使用同一个基准：Environment 的有效默认 workdir。provider 在调用 SDK 命令或文件接口前解析相对路径。支持相对布局的 Benchmark 在准备材料前完成解析，再将最终的绝对任务目录交给 Harness 和 evaluator。Harness 输出文件的相对路径以该任务目录为基准。SWE-bench 的 workspace root，以及 SWE-bench Pro 的评测目录，要求使用不含 `..` 的绝对 POSIX 路径，因为 artifact 路径在环境启动前就会声明。

请从上述 Benchmark 的配置中删除 `workspace_root`。需要覆盖任务目录时，使用统一的 Environment 字段，例如 `--env-params '{"setup":{"workdir":"/repo"}}'`。除非所有任务都要求 `/root`，否则不要把旧的兜底值迁成全局覆盖。Environment 参数不再接受 `workspace` 或 `default_workspace_root`。

## 任务执行流程

同一个 Benchmark 样本可能只执行一次，也可能因为重复评测或错误重试而执行多次。每次实际执行通常按以下顺序使用 Environment：

1. AgentCompass 解析 [Benchmark](/zh/user_guide/modules/benchmarks/overview)、[Harness](/zh/user_guide/modules/harnesses/overview) 和适用的 [Recipe](/zh/user_guide/other_features/recipes)，确定任务文件、运行方式和所需环境。
2. provider 打开 Environment。隔离型 provider 会创建 sandbox，或请求外部服务创建 sandbox；`host_process` 则直接使用 host 上的工作目录。
3. Benchmark 在 workspace 中准备任务需要的仓库、依赖和其他材料。
4. Harness 创建运行会话，并通过 Environment 执行 agent；如果评测组合没有单独的 Harness，则由 Benchmark 自行完成这一执行阶段。
5. AgentCompass 收集任务产物并执行验证。根据 Benchmark 的要求，验证可能在 host 上进行、复用当前 Environment，或打开一个新的验证 Environment。
6. 任务结束后，AgentCompass 关闭 Environment；只有显式[保留 Environment 进行调试](/zh/user_guide/using_agentcompass/run_controls#保留-environment-以便调试)时才会跳过正常清理。

这一过程解释了为什么 Environment 的镜像、workdir、网络和资源配置，以及 Benchmark 的 workspace，会直接影响评测是否能够运行以及结果能否复现。

<a id="environment-列表" />

<a id="选择-provider" />

## 选择 Environment provider

| provider | 命令执行位置 | Environment 形式 | 适用场景 |
| - | - | - | - |
| [`host_process`](/zh/user_guide/modules/environments/providers/host_process)（默认） | 运行 AgentCompass 的 host | 无 sandbox 隔离 | 可信任务、本地调试，或必须直接访问 host 文件和工具的任务。 |
| [`docker`](/zh/user_guide/modules/environments/providers/docker) | 运行 AgentCompass 的 host 上的 Docker 容器 | 容器 | 希望在本地获得独立文件系统和可复现镜像的任务。 |
| [`daytona`](/zh/user_guide/modules/environments/providers/daytona) | Daytona 服务创建的远程 sandbox | 远程 sandbox | 已使用 Daytona，希望远程创建和管理任务环境。 |
| [`modal`](/zh/user_guide/modules/environments/providers/modal) | Modal 云端 sandbox | 远程 sandbox | 希望按需使用云端计算资源或 GPU。 |
| [`opensandbox`](/zh/user_guide/modules/environments/providers/opensandbox) | OpenSandbox 服务端 runtime 创建的 sandbox | 取决于服务端 runtime 与安全配置 | 已准备可访问的 OpenSandbox 生命周期服务，并希望通过统一 API 使用其服务端 runtime。 |

选择时先考虑任务是否可信以及是否需要隔离，再考虑镜像来源、可用资源、网络控制和 provider 凭证。每个 provider 页都会说明前置条件、必填参数和限制。

`opensandbox` 是 AgentCompass 对 OpenSandbox API 的适配，并不代表一种固定的 sandbox 后端。OpenSandbox 服务如何把请求映射到 Docker 或 Kubernetes runtime backend，见其[官方架构说明](https://open-sandbox.ai/architecture/)。

<a id="配置-environment-参数" />

选择 provider 后，可以继续设置镜像、默认 workdir、资源、网络或生命周期参数；任务 workspace 由 Benchmark 管理。不同入口的写法和覆盖关系见[配置 Environment](/zh/user_guide/modules/environments/configuration/overview)。

## 继续阅读

* [配置 Environment](/zh/user_guide/modules/environments/configuration/overview)：选择 CLI、配置文件、Python SDK 或编排文件的传参方式。
* [网络策略](/zh/user_guide/modules/environments/configuration/network)：控制准备、agent 运行和验证阶段的网络访问。
* [资源限制](/zh/user_guide/modules/environments/configuration/resource_limits)：设置单个 Environment 的 CPU、内存、存储和 GPU。


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.