CLI 参考
可执行命令为 el。业务结果输出 JSON;帮助信息与参数错误使用 argparse 的命令 help。全局选项必须位于资源子命令之前。
el [GLOBAL_OPTIONS] {task,job,profile} COMMAND
Global options
| 选项 | 默认 / 行为 |
|---|---|
--api-url URL | 平台地址,配置优先级见 Configuration |
--workspace-id ID | 可选;省略由平台选择默认已授权 workspace |
--repository-root PATH | 本地显式仓库顶层 |
--repository-commit COMMIT | 本地固定 commit;通常可省略,默认本地 main |
--work-dir PATH | 本地执行与产物目录 |
--help | 输出帮助并退出 0 |
远程地址不能与本地 repository / work-dir 或 Profile 管理组合。Key 只从 ENVLOOP_API_KEY 读取,没有 --api-key 参数。
Task commands
| 命令 | 行为 |
|---|---|
el task submit PATH | 提交两文件目录;兼容别名 el submit task PATH |
el task submit --runner NAME --dataset NAME --task-id ID | 从 APIServer catalog 提交单个 Dataset Task;不传 PATH |
el task status TRIAL_ID | 查询运行状态 |
el task result TRIAL_ID | 获取 stdout、stderr、outputs,不自动等待 |
el task snapshot TRIAL_ID | 获取冻结输入快照 |
el task stop TRIAL_ID | 请求停止;由后端决定支持情况 |
Task submit options
| 选项 | 含义 |
|---|---|
--runner NAME[@VERSION] / --dataset NAME[@VERSION] | 平台解析 runner 和 Dataset;与本地目录互斥 |
--task-id ID | runner 提交必填;选择 Dataset 中单个 Task |
--namespace / --config / --split / --revision | runner 的 Dataset 选择 |
--profile-id ID | 平台不可变 Profile ID;与 --profile 互斥 |
--job-id ID / --tag TEXT | Job 归属与运行标签 |
--queue-id ID / --priority INT | 默认 default / 0;较大的 priority 先派发等待中的任务 |
--profile NAME[@VERSION] | 命名 Profile;省略版本须有显式默认 |
--profile-sha256 SHA256 | 校验规范化 ProfileSpec 哈希 |
--request-id ID | 幂等请求标识;省略自动生成 |
--seed INT | 运行 seed 覆盖,需 Task 自行使用 |
--timeout-sec INT | 任务执行期限覆盖 |
--command SCRIPT | 覆盖 Runner 默认 shell 脚本,保留多行文本;最多 65536 UTF-8 字节、非空、无 NUL |
--executor {local,docker,sandbox} | 执行后端选择,取决于平台可用能力 |
--provider {e2b,e2b-local} | Sandbox provider 选择 |
--wait | 显式等待 HTTP 完成;本地提交总是等待 |
正常运行无需 --command:Runner 的 execution.command 为可选默认脚本,省略时从 execution.entrypoint 推导 bash main.sh / python main.py。提交覆盖 > Runner 默认脚本 > 入口推导;平台冻结有效命令,客户端保留参数缺省。
没有 task logs/cancel/wait 子命令。wait 的客户端期限不等于 --timeout-sec 的执行期限。
Job commands
| 命令 | 行为 |
|---|---|
el job submit --dataset NAME[@VERSION] | Dataset Job 提交;兼容位置参数形式,两种形式只能选一 |
el job status JOB_ID | 作业状态详情 |
el job result JOB_ID | 聚合结果,不自动等待 |
el job stop JOB_ID | 请求取消成员执行 |
el job list [--limit INT] [--cursor CURSOR] | 分页;limit 默认 25 |
Job submit options
| 选项 | 默认 / 含义 |
|---|---|
--dataset NAME[@VERSION] | 数据集逻辑名称,可带精确作者版本 |
--runner NAME[@VERSION] | APIServer catalog runner,版本省略由平台解析并冻结 |
--profile-id ID | 平台不可变 Profile ID;与 --profile 互斥 |
--job-id ID | 可选调用方指定的 Job ID |
--tag TEXT | 可选运行标签 |
--queue-id ID / --priority INT | 默认 default / 0;数值越大先派发等待中的任务,不抢占运行任务 |
--namespace NAME | 为短名补 namespace |
--config NAME | 使用指定 subset;省略用声明默认 |
--split NAME | 一个完整 split;省略为 config 全部分组 |
--revision REF | Git branch/tag/commit,须匹配平台绑定快照 |
--attempts INT | 每个成员尝试次数,默认 1 |
--request-id ID | 重试保留首次冻结的选择 |
--profile NAME[@VERSION] | 命名 Profile |
--seed INT | seed 覆盖 |
--timeout-sec INT | 执行期限覆盖 |
--command SCRIPT | 所有成员使用同一 shell 脚本覆盖;校验规则同 Task |
--executor {local,docker,sandbox} | 平台执行后端 |
--provider {e2b,e2b-local} | Sandbox provider |
--wait | 等待 HTTP Job 终态;本地提交总是等待 |
Job submit 没有 --profile-sha256;该选项只在 Task submit 提供。Dataset 默认选择由平台固定,不猜 latest,也不支持 split 切片表达式。
命名 runner 请求需要支持 catalog 的 APIServer。LocalServer / JobMaster 未提供 catalog 时明确拒绝;客户端不自动下载内容或执行 runner。
Profile commands
仅本地 registry 管理,需要安装 EnvPlatform 并指定 repository-root。
| 命令 | 选项 / 行为 |
|---|---|
el --repository-root PATH profile init | 显式初始化 registry,不替用户初始化 Git |
... profile put NAME VERSION --file FILE | 导入完整 ProfileSpec JSON,name/version 必须匹配 |
... profile get NAME [--version VERSION] | 获取指定版本或显式默认 |
... profile list | --name、--include-archived、--limit(默认 50)、--cursor |
... profile set-default NAME VERSION | 可选 --expected-version 做并发检查 |
... profile archive NAME VERSION | 归档版本 |
... profile export NAME VERSION | 输出 ProfileSpec JSON,可重定向到文件 |
表中 ... 代表 el --repository-root PATH。没有 CLI profile import 子命令,文件导入用 put。
Exit codes
| code | 含义 |
|---|---|
| 0 | 命令成功,包括取消成功;不表示 verifier reward=1 |
| 1 | API / 执行错误或等待失败 |
| 2 | 参数错误,stderr 输出对应完整 help |
响应中 status 为 failed 时 CLI 退出 1,包括查询或等待返回的失败状态。HTTP 默认只等待接受,后续执行失败需查询状态确认。Task submit --wait 输出结果字典,本地 Task 提交也采用该行为。