必需字段会以 un-commented 形式显示。可选字段在 template 文件中会被注释掉,可省略以使用平台默认值。
Eval Config
由osmosis eval submit 使用,用于提交一次 evaluation run。平台会克隆由 origin remote 标识的 workspace repository,并在服务端针对 platform dataset 运行 rollout。
configs/eval/my-rollout.toml
[experiment]
同时省略
branch 和 commit_sha 时,使用仓库默认分支上最新已同步的 commit。按 branch 提交时只解析一次 branch head,因此 run 会固定到得到的完整 commit SHA。
[evaluation]
所有字段均为可选。省略字段表示使用平台默认值。
[env] 和 [secrets](eval)
evaluation run container 的可选 [env] 变量与必填 [secrets] 表。Eval config 必须包含 [secrets]——仅在 evaluation 不需要任何 secret refs 时才写 required = []。完整规则见下方的 [env] 和 [secrets]。
Benchmark Config
由osmosis benchmark submit 使用,用于运行已经添加到当前 workspace 的 benchmark。Benchmark config 描述 task selection、agent harness 和 model,以及 execution settings;它不引用 workspace rollout code。
configs/benchmark/terminal-bench-smoke.toml
[experiment](benchmark)
benchmark list 会同时显示 key 和名称;两者都可以填在这里,ID 同样可以。
[tasks]
所有字段均为可选。省略此 section 会运行所有 tasks。同时设置 task_names 和 categories 时,两者取并集。设置 task_set 后,会使用其发布的 sample,而不使用 task_names 或 categories。
[[agents]] 和 [agents.model]
每个 run 需要一到八个 agents。可用 harness 取决于所选 benchmark。在所有托管 benchmark 中,harness 支持的取值包括 claude-code、codex、cursor-cli、gemini-cli、mini-swe-agent、openhands、opencode 和 terminus-2。Platform 会拒绝所选 benchmark 不支持的 harness。无论哪种情况,每个 agent 都需要各自的 [[agents]] 条目:只运行官方 scaffold 的 benchmark 会拒绝所有 harness;而允许(但不强制)harness 的 benchmark 在省略该字段时会运行其官方 scaffold。benchmark info 会说明属于哪一种。
对于 provider 和 endpoint model,
api_key_secret 是 model 的 Platform secret record 名称。harness_api_key_secret 独立于它并按 agent 设置:cursor-cli 和 mini-swe-agent 必须设置,其他 harness 设置后会被拒绝。cursor-cli 填 CURSOR_API_KEY,mini-swe-agent 填 MSWEA_API_KEY。这是各自 harness 读取的变量,填其他值会在提交时被拒绝。
使用 osmosis secret set 注册 record,然后在 agent 中引用其名称。例如,Cursor CLI agent 可以使用:
type = "hosted"。两个值都取自 osmosis model list --type lora:base_model 是该 LoRA 的 Base Model 列,lora_model_name 是其 Name 列。
osmosis model deploy 部署该 LoRA model;针对未部署 model 的 run 会被拒绝,base_model 与该 LoRA model 实际训练所用的 base 不一致时同样会被拒绝。Hosted agent 不需要 api_key_secret,由 Osmosis 提供服务。
所有 secret fields 都保存 record 名称,而不是 credential value。[agents.env] 包含单个 agent 使用的 literal variables;顶层 [env] 应用于所有 agents,agent-specific value 会覆盖同名 global key。
[execution]
Benchmark 有三种形态,可在
benchmark info 的 LLM Judge 行看到:
使用
osmosis secret set 注册该 record。
[secrets]
run 需要但其他字段未命名的凭据——例如 registry dataset 自身的 API key。这里只列出 record 名称,值在提交时解析。training 和 eval config 使用相同的 section 与解析顺序。
--secrets-file <path>,每行一个NAME=value,以#开头的整行会被跳过;-表示从 stdin 读取- CLI 进程环境中同名的变量
- 已有 personal 或 workspace secret,由服务端解析
- 隐藏的交互式 prompt,仅在终端中、且仅针对仍未解析的名称
Run scope 下记录名称,但不会将值加入 secret store 或持久化 run config,因此每次提交都需要重新提供。
服务端解析(3)。 该名称已是 personal 或 workspace secret,平台会自行查出对应的值,本地无需提供;同名 personal secret 会覆盖 workspace secret。
这里刻意不提供 --secret NAME=value 参数:argv 中的值会进入 shell history、ps 输出,以及任何启用 set -x 的 CI 日志。
NAME=value 行。管道输入会使 stdin 变为非交互,因此需要加 --yes 跳过提交确认。
在非终端环境下,缺少值的名称会立即失败并一次性列出所有缺失名称,使 CI 一次报告完整缺口,而不是每次重试只报一个。
--secrets-file 的每一行采用 dotenv 风格的 NAME=value。名称区分大小写,并且必须通过 Python 的 str.isidentifier() 检查。CLI 会剥离开头的 export 前缀,并移除值外层一组成对的单引号或双引号。空行以及以 # 起始的行会被忽略;不支持行内注释、转义处理或多行值。
.env.run
[verifier]
Registry dataset 声明的凭据模板无法由平台枚举,因此需要在这里列出提供这些凭据的 Platform secret record。每条 record 都以自身名称交付给 verifier,因此请按 verifier 读取的变量名来命名。最多 16 条,每个名称必须匹配 ^[A-Z][A-Z0-9_]*$。
judge_api_key_secret 同理,这里引用的 secret 名称不能同时作为 literal key 出现在顶层 [env] 或任何 [agents.env] 中。
Training Config
由osmosis train submit 使用,用于提交训练任务。
configs/training/my-rollout.toml
[experiment]
同时省略
branch 和 commit_sha 时,使用仓库默认分支上最新已同步的 commit。按 branch 提交时只解析一次 branch head,因此 run 会固定到得到的完整 commit SHA。
[training]
[sampling]
[checkpoints]
平台会在提交时强制执行这些取值范围。它不会将取值与所选 model 或 backend 进行校验,因此不受支持的组合可能要到 provisioning 或执行阶段才会暴露。
[advanced]
仅供 Osmosis 明确启用的 accounts 使用的 backend-specific fields。标准 accounts 和标准 configs 必须省略 [advanced];未启用的 account 使用时,平台会拒绝。
[env] 和 [secrets]
使用这些 sections 向 training run 或 evaluation run 期间的 rollout container 注入环境变量。同一套结构同时适用于 training 和 evaluation configs。
[env]keys 必须匹配^[A-Z_][A-Z0-9_]*$;[secrets].required名称必须匹配^[A-Z][A-Z0-9_]*$。- 同一个名称不能同时出现在
[env]和[secrets].required中。 [env]中以_OSMOSIS_开头的名称由平台保留,不能使用。- 已有 personal 或 workspace secret record 由服务端解析,因此其值不会出现在本地 config 或 CLI 请求中。通过
--secrets-file、进程环境变量或隐藏 TTY prompt 在本地提供的值会随本次提交的 TLS 请求传输,但不会加入 Osmosis secret store 或持久化 run config。 - Eval config 必须包含
[secrets]。仅在 evaluation 不需要任何 secret refs 时使用required = []。 - Training config 可以省略
[secrets]。但只要包含该 table,就必须定义required。
Secrets 有 scope。Workspace secret 在 workspace 内共享;Personal secret 只属于您本人,且会在运行时覆盖同名的 workspace secret。提交引用 secrets 的 run 之前,先用
osmosis secret set 注册它们。