Skip to main content
Osmosis CLI 使用 TOML 文件配置 evaluation runs、training runs 和 benchmark runs。Configs 必须位于 workspace directory 内:
必需字段会以 un-commented 形式显示。可选字段在 template 文件中会被注释掉,可省略以使用平台默认值。

Eval Config

osmosis eval submit 使用,用于提交一次 evaluation run。平台会克隆由 origin remote 标识的 workspace repository,并在服务端针对 platform dataset 运行 rollout。
configs/eval/my-rollout.toml

[experiment]

同时省略 branchcommit_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_namescategories 时,两者取并集。设置 task_set 后,会使用其发布的 sample,而不使用 task_namescategories
对于 HLE,我们建议设置 task_set = "parity"。仅当你确实准备提交完整 HLE benchmark 时,才省略 [tasks]

[[agents]][agents.model]

每个 run 需要一到八个 agents。可用 harness 取决于所选 benchmark。在所有托管 benchmark 中,harness 支持的取值包括 claude-codecodexcursor-cligemini-climini-swe-agentopenhandsopencodeterminus-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-climini-swe-agent 必须设置,其他 harness 设置后会被拒绝。cursor-cliCURSOR_API_KEYmini-swe-agentMSWEA_API_KEY。这是各自 harness 读取的变量,填其他值会在提交时被拒绝。 使用 osmosis secret set 注册 record,然后在 agent 中引用其名称。例如,Cursor CLI agent 可以使用:
若要 benchmark 你自己的 LoRA model 而不是 provider model,请使用 type = "hosted"。两个值都取自 osmosis model list --type lorabase_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 提供服务。
每个 agent 的 effective environment 由顶层 [env] 和该 agent 的 [agents.env] 合并而成。Provider 或 endpoint agent 的 api_key_secret 名称不能出现在该 agent 的 effective environment 中。judge_api_key_secret 名称以及任何 [verifier] 中的 secret 名称都不能出现在顶层 [env] 或任何 agent 的 [agents.env] 中。对于 cursor-cli agent,不要同时在任一 env table 中设置 CURSOR_API_KEY;对于 mini-swe-agent agent,不要设置 MSWEA_API_KEY。解析后的 harness secret 会占用对应的 destination variable。Provider 和 endpoint 的 api_key_secret 也不能引用 runner 保留的名称:DAYTONA_API_KEYDAYTONA_API_URLSKYPILOT_SERVICE_ACCOUNT_TOKENSKYPILOT_API_SERVER_ENDPOINT。这些属于 Platform 管理的 sandbox 基础设施,请将 model 凭据存放在其他 record 名称下。_OSMOSIS_ 开头的键由平台保留,[env] 和每个 [agents.env] 中都会被拒绝。
所有 secret fields 都保存 record 名称,而不是 credential value。[agents.env] 包含单个 agent 使用的 literal variables;顶层 [env] 应用于所有 agents,agent-specific value 会覆盖同名 global key。

[execution]

Benchmark 有三种形态,可在 benchmark infoLLM Judge 行看到: 使用 osmosis secret set 注册该 record。

[secrets]

run 需要但其他字段未命名的凭据——例如 registry dataset 自身的 API key。这里只列出 record 名称,值在提交时解析。training 和 eval config 使用相同的 section 与解析顺序。
每个名称的解析顺序,命中即止:
  1. --secrets-file <path>,每行一个 NAME=value,以 # 开头的整行会被跳过;- 表示从 stdin 读取
  2. CLI 进程环境中同名的变量
  3. 已有 personal 或 workspace secret,由服务端解析
  4. 隐藏的交互式 prompt,仅在终端中、且仅针对仍未解析的名称
本地提供(1、2 或 4)。 CLI 读取该值,并随本次提交的 TLS 请求发送。Osmosis 会在 Run scope 下记录名称,但不会将值加入 secret store 或持久化 run config,因此每次提交都需要重新提供。 服务端解析(3)。 该名称已是 personal 或 workspace secret,平台会自行查出对应的值,本地无需提供;同名 personal secret 会覆盖 workspace secret。 这里刻意不提供 --secret NAME=value 参数:argv 中的值会进入 shell history、ps 输出,以及任何启用 set -x 的 CI 日志。
stdin 接受与文件相同的 NAME=value 行。管道输入会使 stdin 变为非交互,因此需要加 --yes 跳过提交确认。 在非终端环境下,缺少值的名称会立即失败并一次性列出所有缺失名称,使 CI 一次报告完整缺口,而不是每次重试只报一个。 --secrets-file 的每一行采用 dotenv 风格的 NAME=value。名称区分大小写,并且必须通过 Python 的 str.isidentifier() 检查。CLI 会剥离开头的 export 前缀,并移除值外层一组成对的单引号或双引号。空行以及以 # 起始的行会被忽略;不支持行内注释、转义处理或多行值。
.env.run
格式不正确的行会导致提交失败。CLI 仅报告来源与行号,不会将行内容回显到 stderr 或 JSON 错误信封,避免 secret 值通过 CI 日志泄露。

[verifier]

Registry dataset 声明的凭据模板无法由平台枚举,因此需要在这里列出提供这些凭据的 Platform secret record。每条 record 都以自身名称交付给 verifier,因此请按 verifier 读取的变量名来命名。最多 16 条,每个名称必须匹配 ^[A-Z][A-Z0-9_]*$
Managed benchmark 在 catalog 中已建模自身凭据,不接受此项,提交时会被拒绝。与 judge_api_key_secret 同理,这里引用的 secret 名称不能同时作为 literal key 出现在顶层 [env] 或任何 [agents.env] 中。
不要把 secret value 放进 [env][agents.env]extra_headers。Benchmark config 使用 Osmosis fields,不是 Harbor configuration file。

Training Config

osmosis train submit 使用,用于提交训练任务。
configs/training/my-rollout.toml
Git Sync 是您 rollout 代码的 source of truth。CLI 会读取您传入的本地 TOML config 值,但 rollout 代码来自已同步的 workspace repository。提交代码修改前,请先 commit 并 push。设置 branch 可使用已 push 的分支,设置 commit_sha 可固定到特定已 push revision;都省略时使用默认分支。

[experiment]

同时省略 branchcommit_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 注册它们。
从只填写 [experiment](以及 eval config 的 [secrets])开始,让平台使用训练默认值。仅在需要调优训练任务时添加可选字段。
最后修改于 2026年8月10日