news 2026/10/16 1:39:08

如何在Agents‘ Last Exam中配置实验YAML:并发、auto-resume、timeout等关键参数详解

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
如何在Agents‘ Last Exam中配置实验YAML:并发、auto-resume、timeout等关键参数详解

【免费下载链接】agents-last-exam

Agents' Last Exam

项目地址:https://gitcode.com/gh_mirrors/ag/agents-last-exam
点击查看免费下载

Agents' Last Exam(ALE)是一个用于在真实沙箱中评测 AI Agent 的开源基准框架,而实验 YAML(experiment YAML)是启动一次批量评测的唯一入口:用一个文件把 Agent 预设、沙箱环境与任务清单"接线"起来,并通过concurrency、auto_resume、wall_time_s等运行级参数控制整批任务的行为。本文带你从 3 个必填字段写到并发与断点续跑,完整讲清实验 YAML 的每一个关键参数。

1️⃣ 先认识实验YAML:一个文件搞定批量评测

一次实验 =Agent × 环境 × 任务的组合矩阵。实验 YAML 的设计刻意"很薄":

  • 它只负责接线——Agent 配置放在configs/agents/,环境配置放在configs/environments/,实验文件只按路径引用它们;
  • 运行级参数(并发、超时、续跑、清理策略)则直接写在实验 YAML 的顶层。

仓库自带的最小示例就是 example_exp.yaml,复制修改后即可运行:

name: my_experiment secret_file: secret/.env # KEY=value 形式的密钥文件 agents: - configs/agents/claude_code.yaml # 多写几行 = 运行 agent 矩阵 environment: configs/environments/environment_gcloud.yaml tasks: selected_tasks/hello_both.txt # 任务清单 # ---- 运行级参数(全部可选,此处为默认值)---- output: root: .logs/ale # 宿主机运行日志目录 concurrency: 1 # 同时进行的 unit 数 wall_time_s: 7200 # 每个 unit 的墙上时钟上限(秒) auto_resume: true # 跳过已完成/超时,自动重试失败项 max_attempts: 3 # 失败 unit 的总尝试次数(1..3) cleanup_mode: delete # delete | stop | keep

2️⃣ 三个必填字段:name、agents、tasks + environment

字段是否必填说明
name✅实验名,同时也是输出目录名(.logs/ale/<name>/)
agents✅Agent 预设 YAML 路径列表,位于configs/agents/;列多个即跑agent 矩阵(每个 agent × 每个任务)。单 agent 也可用agent:简写
environment✅环境 YAML 路径,每个实验只能有一个,定义 provider、镜像与路由
tasks✅任务清单:.txt每行一个任务路径(#开头为注释);.yaml则支持{path, variants}条目

几个实用细节:

  • Agent 预设决定用哪个 harness、哪个模型。例如 configs/agents/claude_code.yaml 中harness: claude_code+model:一行即可切换模型;同名 harness 想同时跑多个配置变体时,在预设里显式写id:区分输出目录。
  • 环境 YAML按"快照(snapshot)"路由 provider:一个环境可以混用后端,比如 Linux 任务走 Docker、Windows/GPU 任务走云 VM。参考 configs/environments/environment_gcloud.yaml 与 configs/environments/docker.yaml。
  • 任务清单仓库内置多档:冒烟用的 selected_tasks/hello_both.txt(Linux + Windows 各一个 hello),完整公开集 selected_tasks/unlicensed.txt。
  • 所有相对路径都相对于主 YAML 所在目录解析;配置里可用${env:VAR}引用环境变量(变量未设置会直接报错,见 ale_run/orchestration/config_loader.py)。

3️⃣ 并发与超时:concurrency 和 wall_time_s 怎么设

concurrency(默认 1):同时"在飞"的 unit 数。每个 unit 从获取沙箱、跑 Agent 到评测结束都独占一个槽位,所以它实际上就是同时存活的沙箱数上限。官方建议按min(云厂商配额, LLM 限频 ÷ agent 数)来取值;使用 static provider(共用一台机器)时必须保持 1(见 ale_run/orchestration/experiment_spec.py)。

wall_time_s:实验级的墙上时钟预算(秒),会覆盖每个任务卡片自带的vm.timeout。比如设18000就是统一 5 小时预算;超时的 unit 会被标记为status=timeout并被停止。不设置时按各任务卡片自己的值(或框架默认)。

典型批量配置(摘自 docs/quickstart.md):

tasks: selected_tasks/unlicensed.txt concurrency: 8 auto_resume: true max_attempts: 3 cleanup_mode: delete

4️⃣ 断点续跑:auto_resume 与 max_attempts 详解

这是长批次最关键的一对参数:

  • auto_resume(默认true):启动时扫描输出根目录下历史run.json(布局为<output.root>/<agent>/<model>/<task>/v<i>/<时间戳>/),跳过状态为completed或timeout的 unit,并对新失败的 unit 自动重新入队(实现见 ale_run/cli.py);
  • max_attempts(默认 3,范围 1..3):单个失败 unit 在本次调用中的总尝试次数上限(含首次运行)。每次尝试都会保留独立的时间戳运行目录,互不覆盖;
  • 想一次性干净重跑(不扫描历史、不重试):命令行加--disable-resume,或在 YAML 里持久写auto_resume: false。
# 一次性重跑所有 unit,不续跑、不重试 uv run python -m ale_run run my_experiment.yaml --disable-resume

💡 大批次跑挂了、机器重启了?不用管——直接重新执行同一条run命令,auto_resume会自动跳过已完成的 unit,只补跑失败的。

5️⃣ 另外两个参数:cleanup_mode 与 prompt_suffix

  • cleanup_mode(默认delete):unit 结束后沙箱的处置方式——delete销毁(省配额)、stop停止但保留磁盘以便事后检查产物、keep保持运行(调试用);
  • prompt_suffix(默认空):以独立段落形式追加到每个任务提示词末尾(会一并记录进 trajectory)。适合统一声明"全程自主、不可交互、无法完成时写 infeasible.md"之类的要求,多行文本用 YAML 的|块标量即可。

6️⃣ 别搞混:output_path 在环境YAML里

output.root(实验 YAML)只控制宿主机运行记录目录;而沙箱内产物的去向由环境 YAML的output_path决定,三态取值:

取值行为适用场景
null不回收产物,只留评分只要分数、省空间
local直接拉到运行目录output/本地开发、小规模
gs:///s3:///oss://从沙箱直传云存储桶大规模批次的集中存储

同理,任务数据来源task_data_source(如baked_in_sandbox、local:<dir>)也写在环境 YAML 里(见 configs/environments/docker.yaml)。

7️⃣ 标准启动流程:先 dry-run,再过滤,最后全量

# 1. 安装依赖 uv sync --all-packages # 2. 干跑:解析并打印整个 agent × task × variant 矩阵,不创建任何沙箱 uv run python -m ale_run run example_exp.yaml --dry-run # 3. 只跑矩阵中的一部分(调试常用) uv run python -m ale_run run my_experiment.yaml \ --agent claude_code \ --task demo/hello # 4. 确认无误后正式运行 uv run python -m ale_run run my_experiment.yaml

干跑会输出实验名、环境路由、输出根目录、并发数及全部 unit 清单,是开跑前验证配置正确性的最快方法。更完整的运行与产物收集说明见 docs/ale-docs-site/pages/run.html。

📌 快速回顾清单

  • ✅ 实验 YAML 只需"接线":name+agents+environment+tasks四个必填;
  • ✅concurrency决定并发沙箱数,先 dry-run 再逐步调大;
  • ✅wall_time_s统一控制每个 unit 的超时预算;
  • ✅auto_resume默认开启,中断后重跑同一命令即可续跑;
  • ✅output_path/task_data_source属于环境 YAML,不在实验文件里。

📁 相关文件索引

  • 示例实验:example_exp.yaml、example_hfsandbox_exp.yaml
  • 参数定义:ale_run/orchestration/experiment_spec.py
  • YAML 加载与校验:ale_run/orchestration/config_loader.py
  • CLI 与续跑逻辑:ale_run/cli.py
  • 上手指南:docs/quickstart.md

【免费下载链接】agents-last-exam

Agents' Last Exam

项目地址:https://gitcode.com/gh_mirrors/ag/agents-last-exam
点击查看免费下载

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/16 1:36:03

CSS transform: skew 深度解析:从数学原理到实战避坑指南

1. 从一次界面错位说起&#xff1a;为什么偏偏是skew前阵子帮一个做数据可视化的朋友调界面&#xff0c;他拿着屏幕截图问我&#xff1a;“为什么我这个卡片列表在鼠标悬停时&#xff0c;文字会跟着一起歪掉&#xff1f;我只想让背景斜切一下。”我一看代码&#xff0c;问题出在…

作者头像 李华
网站建设 2026/10/16 1:33:47

VxWorks下UDP通信编程实战:从Socket模板到踩坑优化

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/10/16 1:32:13

NegPy能做什么?这款开源胶片负片处理工具的完整介绍

【免费下载链接】NegPy Tool for processing film negatives. 项目地址&#xff1a; https://gitcode.com/gh_mirrors/ne/NegPy 点击查看 免费下载 NegPy 是一款免费开源的胶片负片处理工具&#xff0c;专为负片扫描而设计。它不只是简单地把负片反转成正片&#xff0c;而是用…

作者头像 李华