快速开始
安装一个客户端即可使用 el 命令和 envloop.Client。需要 Python 3.11+、Git 和 uv。以下使用源码安装,不假设已有 PyPI 发布版本;需要 EnvLoop 仓库访问权限。
1. Install
git clone https://github.com/EnvLoop/envloop.git
cd envloop
uv venv
uv pip install --python .venv/bin/python -e .
uv run --no-sync el --help
后续命令在此目录执行。--no-sync 保留手动安装的依赖;也可激活 .venv 后直接运行 el 和 python。
2. Connect
登录平台,在 API Keys → Create API Key 创建密钥,并妥善保存。账号需要已开通且属于已授权工作区,详见 Authentication。
export ENVLOOP_BASE_URL=https://api.envloop.ai
export ENVLOOP_API_KEY='YOUR_ENVLOOP_API_KEY'
将占位符替换为自己的 Key。不要把真实 Key 提交到 Git。省略 workspace 时由平台选择默认已授权工作区。
3. Submit a dataset job
uv run --no-sync el job submit --dataset envloop/terminal-bench-2-1-lite
响应为 JSON,含 job_id。把下面 JOB_ID 替换为返回值:
uv run --no-sync el job status JOB_ID
uv run --no-sync el job result JOB_ID
数据集需在目标平台可用。省略版本、config、split 时,平台解析并冻结默认选择。HTTP 提交返回后,作业由平台继续执行;result 不会自动等待。也可使用 submit --wait 等待。停止使用 el job stop JOB_ID。
4. Submit your own task
创建一个只包含以下两个文件的目录:
mkdir -p my-task
cat > my-task/runner.toml <<'TOML'
schema_version = "envhub.runner/v1"
[runner]
name = "examples/hello"
version = "1"
[execution]
entrypoint = "main.py"
timeout_sec = 10
outputs = ["result.txt"]
TOML
cat > my-task/main.py <<'PY'
from pathlib import Path
Path("result.txt").write_text("hello\n", encoding="utf-8")
print("hello")
PY
uv run --no-sync el task submit ./my-task --wait
得到 trial_id 后运行 uv run --no-sync el task result TRIAL_ID,查看 stdout、stderr 和 outputs。成功终态是 succeeded;Task 完成不表示 benchmark reward=1。
5. Use the Python SDK
保存为 quickstart.py,在相同虚拟环境运行 uv run --no-sync python quickstart.py:
from envloop import Client
with Client.remote() as client:
trial = client.tasks.submit("./my-task")
final = client.tasks.wait(trial["trial_id"], timeout=60)
if final["status"] != "succeeded":
raise RuntimeError(f"Trial ended: {final['status']}")
result = client.tasks.result(trial["trial_id"])
print(result["stdout"])
print(result["outputs"])
SDK 读取系统环境变量,不会自动读取 .env.local。没有平台账号时,可安装可选 EnvPlatform 后端后使用 Python SDK 的本地示例。下一步:核心概念、运行 Job、CLI reference。