配置字段参考
ageval.yaml / task.yaml 的字段和校验规则。
字段规则如下。
根 ageval.yaml
| 字段 | 规则 |
|---|---|
format | ageval.dataset/1 |
dataset_id | 1–128;^[a-z0-9]([a-z0-9._/-]*[a-z0-9])?$;禁 .. / //;推荐 org/name |
version | 非空 |
tasks.root | 默认 tasks |
defaults | 仅 max_concurrent_tasks(≥1) |
| 禁止 | harness / provider / limits / evaluation / agent_profiles |
不在 yaml 里:n_attempts / Always-k(只走 CLI/job)。
没有 task 的 dataset → lock 失败。未知 format → invalid_format。
成员 task.yaml
| 区块 | 要点 |
|---|---|
format | ageval.task/1 |
task_id | = 目录名 = --task |
parameters | 给 run.py(ctx.params) |
agent_profiles | 成员只写 {id};ACP entry 写在根 profiles.yaml |
limits | wall_time_seconds(run,缺省 300)、environment_seconds(缺省 600)、evaluate_seconds(缺省 600)、agent_invocations(只计 run 阶段)、agent_concurrency(同时进行的 run 阶段 executor invoke,缺省 1) |
artifacts.publishable | id + path + producer |
evaluation | 可选 inputs / output;有 evaluator.py 就认 |
provenance | 可选 |
| 禁止 | harness: 块、provider.kind、assurance、角色上的 executor / api_key |
可选的 evaluation.* 字段:
| 字段 | 说明 |
|---|---|
evaluation.tmpfs_mb | 环境内 evaluator /tmp(正整数 MiB),省略 32。不是 limits.* |
evaluation.environments | 按名打分 Host(dockerfile 和/或 docker_image)。写出则必须 job evaluate_host.isolated: true + environment: docker,并忽略 evaluate.Dockerfile |
evaluation.collect | 打分前把声明的绝对路径从 attempt 容器和 compose service 拷到打分 Host。一条可以带 command、service、timeout_sec。省略或 [] 时这一步不跑:workspace 收获和打分脚本里的 /app 合并保持原样。命令失败或路径拷不到,这次 evaluate 是 ERROR |
有文件就认:run.py、evaluator.py、environment/Dockerfile、environment/setup.sh。
Job binding(profiles.yaml)
format: ageval.profiles/1
environment: docker
agent_profiles:
solver:
executor: acp
api_key: ${ZHIPU_API_KEY}
model:
id: gpt-5.4-mini
options:
entry: pi
extensions:
- plugin: acp
- plugin: dockerrole 上可选 label。缺省:ACP 用 options.entry,其它路径用 executor。不要把 options.agent 当展示名。--agent 与 --profiles 互斥。--model 须配合 --agent,写入这次运行的 model.id。
model 是嵌套对象。可以整段不写。写成字符串,或在 options 里平铺 api、reasoning_effort、timeout、request_timeout、watchdog、extra_body,lock 会失败。可选字段是 api(chat 或 responses)、reasoning.effort、timeout、watchdog、extra。没写的字段不会发到请求里。reasoning.effort: max 是别名:lock 把它改写成该模型 pin 里最高的 effort 档。pin 对不上这个模型,或该行没有 effort 列表,lock 失败。options.upstream_stall_seconds 省略是 3600,0 关闭这段等待。重试间隔固定 60 秒,不是配置字段。
可选 overlays 是该 role 在 Hub 上的发布文件集(路径必须以 overlays/ 开头)。列出的文件只能含 locator,不能含密钥。
可选 evaluate_host.isolated: true(Current:docker):另起打分环境。与成员 evaluation.environments 一起用时,Core 按名懒启动多个 Host。
成员 parameters 的 cpus、memory_mb、gpus、gpu_types、verifier_gpus 在写出时是 docker 容器限额。机器没有所需 GPU 时,尝试以 environment_gpu_unavailable 失败。省略这些键时,docker run 保持今日形状。
docker 可选 environment_options:image / platform / network / user / egress / egress_allow / python_version。python_version 是官方镜像的 CPython minor(如 "3.13";省略 = 3.12,形状 ^\d+\.\d+$);上游 tag 拉不到一次失败,不回退。egress: llm 时出站只放行绑定 profile 的 base_url 主机;egress_allow 是同一 map 上的额外 hostname 列表(省略 = 不加)。evaluate_host.environment_options 可写 network / egress / egress_allow / platform / user / python_version(不是 image);省略时打分 Host 只继承 job 的 platform / user / python_version,不继承 agent 的 egress / egress_allow / network。
任务有 environment/compose.yaml 时,里面的服务用 docker compose up -d 启动。Agent 容器仍是单独的 docker run。depends_on 里指向 main 的条目在这次 up 中去掉。不等待这些服务的 healthcheck。接入 compose 项目网络时,Agent 容器同时注册主机名 main,侧车可以用这个名字访问它。network_mode: service:<服务名> 和没有 compose 文件的运行不注册这个别名。network_mode: service:<服务名> 来自 environment/docker-compose.yaml 的 service main、任务 parameters.network_mode,或 environment_options.network_mode。Agent 容器以 --network container:<该服务的容器> 启动,和那个服务共用网络,127.0.0.1 就是那个服务容器里的 127.0.0.1。cap_add 和 main 的 environment(parameters.cap_add、parameters.main_environment,或 environment_options 上的同名键)写在这次 docker run 上。打分容器不用这些声明。这些值留在 docker run 上,不写入 lock,也不写入 evidence。
成员一级目录白名单
prompts · schemas · environment · evaluation · data · lib · upstream · solution
lock 常见失败
task_id 不一致 · format 错 · dataset_id 非法 · docker 无 Dockerfile · ACP 缺 entry · 密钥写进 yaml · 非法一级目录 · 没有 task