RoboDojo L3 数据 API

直接获取实验、结果与完整结构化证据,无需登录网盘。

公开只读 JSON,无需 API key。所有已公开的动作记录、配置、终局和费用随看板更新;单条结果详情内嵌全部非视频 JSON 证据。视频提供原文件公开直链,视频字节仍由原存储提供。

接口入口

https://zefanw.github.io/robodojo-l3-dashboard/api/v1/
GET 路径内容
index.json版本、快照、数量与接口链接
experiments.json全部实验组、名字、模型、协议、指标
evaluations.json固定首轮42 / Spiky-2(65例)/ P50_111成绩、覆盖、缺失项与入选结果
experiments/{experiment_id}.json单组完整汇总、逐轮统计与限制
experiments/{experiment_id}/results.json组内结果、入选状态、轮次与详情链接
results.json全部公开结果的轻量摘要
results/{run_id}.json单条完整结果、所有公开 JSON 证据、视频链接
tasks.json任务族列表
tasks/{task}.json同任务跨实验、seed、scene 的结果
round-selections.json逐轮选择定义与原始来源绑定
status.json上传/核验队列,不代表实时运行状态

三步获取完整结果

import json
from urllib.request import urlopen

base = "https://zefanw.github.io/robodojo-l3-dashboard/api/v1/"
def get(path):
    with urlopen(base + path, timeout=60) as r:
        return json.load(r)

experiments = get("experiments.json")["experiments"]
experiment_id = experiments[0]["experiment_id"]
listing = get(f"experiments/{experiment_id}/results.json")
run_id = listing["results"][0]["run_id"]
detail = get(f"results/{run_id}.json")
assert listing["snapshot_id"] == detail["snapshot_id"]
print(detail["result"]["outcome"])
for item in detail["evidence"]:
    print(item["kind"], item["data"])

使用约定

固定评测自动计分:每次发布按同一冻结样本定义检查首轮42、Spiky-2(65例)与P50_111。齐全且无歧义才给总分;缺失显示覆盖,分数为null。Spiky-2(API ID:spiky2_65)为23个固定spiky任务各2次、其余19个各1次;它包含首轮,只需额外补23例:普通任务补standard scene1,泛化任务补standard scene0(首轮为random scene0)。P50_111将同一批23任务扩展到各4次:非泛化scene0–3、泛化standard/random各scene0–1。seed均为0,先task内平均,再能力内平均,最后五能力等权。实验接口中的 evaluation_scores 与 evaluations.json 同步更新。

experiment_id 从实验列表获取;组定义变化时可能变化。run_id 保留原运行身份。memberships 明确入选、历史未入选、补充记录和轮次。得分为 0–1,成功标记独立;缺失值保持 null,补充材料不等于严格原生证据。

接口是静态 JSON,保留 .json 后缀;查询参数不会筛选数据。请用任务接口或客户端筛选。跨请求比较 snapshot_id,不一致时重新获取。错误路径返回 HTTP 404,先检查状态再解析 JSON。