核心概念
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:- AgentCompass 解析 Benchmark、Harness 和适用的 Recipe,确定任务文件、运行方式和所需环境。
- provider 打开 Environment。隔离型 provider 会创建 sandbox,或请求外部服务创建 sandbox;
host_process则直接使用 host 上的工作目录。 - Benchmark 在 workspace 中准备任务需要的仓库、依赖和其他材料。
- Harness 创建运行会话,并通过 Environment 执行 agent;如果评测组合没有单独的 Harness,则由 Benchmark 自行完成这一执行阶段。
- AgentCompass 收集任务产物并执行验证。根据 Benchmark 的要求,验证可能在 host 上进行、复用当前 Environment,或打开一个新的验证 Environment。
- 任务结束后,AgentCompass 关闭 Environment;只有显式保留 Environment 进行调试时才会跳过正常清理。
选择 Environment provider
选择时先考虑任务是否可信以及是否需要隔离,再考虑镜像来源、可用资源、网络控制和 provider 凭证。每个 provider 页都会说明前置条件、必填参数和限制。
opensandbox 是 AgentCompass 对 OpenSandbox API 的适配,并不代表一种固定的 sandbox 后端。OpenSandbox 服务如何把请求映射到 Docker 或 Kubernetes runtime backend,见其官方架构说明。
选择 provider 后,可以继续设置镜像、默认 workdir、资源、网络或生命周期参数;任务 workspace 由 Benchmark 管理。不同入口的写法和覆盖关系见配置 Environment。
继续阅读
- 配置 Environment:选择 CLI、配置文件、Python SDK 或编排文件的传参方式。
- 网络策略:控制准备、agent 运行和验证阶段的网络访问。
- 资源限制:设置单个 Environment 的 CPU、内存、存储和 GPU。
