MoveBench-Leaderboard / index.html
SatoSakula's picture
Rename Claude 4.6 Opus to Claude Opus 4.6
bc63dfc verified
Raw History Blame Contribute Delete
35.5 kB
<!doctype html>
<html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1">
<title>MoveBench Leaderboard</title>
<link rel="icon" href="https://keep-tech.github.io/MoveBench/assets/brand/movebench-mb-square.png">
<style>
:root{color-scheme:dark;--ink:#f4f5f7;--muted:#9a9ba6;--faint:#6d6e78;--bg:#070708;--panel:#111116;--panel2:#16161d;--line:#26262f;--line2:#33333f;
--g1:#5fe39a;--g2:#c7e24b;--g3:#f6a43a;--g4:#f45b8a;--g5:#e85cc8;--accent:#8ff0b0;--s1:#30a96b;--s2:#d27c1a;--s3:#cc4aae;
--grad:linear-gradient(90deg,var(--g1),var(--g2) 30%,var(--g3) 55%,var(--g4) 80%,var(--g5))}
*{box-sizing:border-box}
body{margin:0;background:var(--bg);color:var(--ink);font:15px/1.6 -apple-system,system-ui,"Segoe UI","PingFang SC","Microsoft YaHei",sans-serif}
a{color:var(--accent);text-decoration:none}a:hover{text-decoration:underline}
.wrap{max-width:1180px;margin:0 auto;padding:0 20px}
header{position:sticky;top:0;z-index:10;background:rgba(7,7,8,.86);backdrop-filter:blur(10px);border-bottom:1px solid var(--line)}
header .wrap{display:flex;align-items:center;gap:16px;height:58px}
.brand{display:flex;align-items:center;gap:10px;font-weight:700;color:var(--ink);font-size:16px}
.brand img{width:26px;height:26px;border-radius:6px}
.lang{margin-left:auto;display:flex;background:var(--panel);border:1px solid var(--line2);border-radius:999px;padding:3px}.lang button{background:none;border:0;color:var(--muted);font:inherit;font-size:13px;padding:5px 14px;border-radius:999px;cursor:pointer}.lang button[aria-pressed=true]{background:var(--ink);color:#0b0b0c;font-weight:600}
.hero{position:relative;overflow:hidden;border-bottom:1px solid var(--line)}
.hero:before{content:"";position:absolute;inset:-40% -10% auto -10%;height:140%;background:radial-gradient(40% 50% at 20% 40%,rgba(95,227,154,.22),transparent 70%),radial-gradient(35% 45% at 55% 30%,rgba(246,164,58,.18),transparent 70%),radial-gradient(40% 50% at 85% 50%,rgba(232,92,200,.2),transparent 70%);pointer-events:none}
.hero .wrap{position:relative;padding:56px 20px 40px}
.eyebrow{font-size:12px;letter-spacing:.22em;color:var(--muted);text-transform:uppercase}
h1{font-size:clamp(30px,5vw,48px);line-height:1.15;margin:10px 0 12px;font-weight:800}
h1 .gt{background:var(--grad);-webkit-background-clip:text;background-clip:text;color:transparent}
.lead{color:var(--muted);max-width:720px;margin:0}
.stats{display:grid;grid-template-columns:repeat(4,1fr);gap:1px;background:var(--line);border:1px solid var(--line);border-radius:14px;overflow:hidden;margin-top:32px}
.stat{background:var(--panel);padding:18px 20px}.stat b{display:block;font-size:30px;font-weight:800;line-height:1.1}
.stat:nth-child(1) b{color:var(--g1)}.stat:nth-child(2) b{color:var(--g2)}.stat:nth-child(3) b{color:var(--g3)}.stat:nth-child(4) b{color:var(--g5)}
.stat span{color:var(--muted);font-size:12.5px}
.tabs{display:flex;gap:6px;flex-wrap:wrap;margin:28px 0 18px}
.tab{background:var(--panel);border:1px solid var(--line);color:var(--muted);padding:8px 16px;border-radius:999px;font:inherit;font-size:14px;cursor:pointer}
.tab:hover{color:var(--ink);border-color:var(--line2)}.tab[aria-selected=true]{color:#0b0b0c;background:var(--accent);border-color:var(--accent);font-weight:600}
section.panel{display:none;padding-bottom:56px}section.panel.on{display:block}
h2{font-size:22px;margin:0 0 4px}.sub{color:var(--muted);margin:0 0 18px;font-size:14px}
.card{background:var(--panel);border:1px solid var(--line);border-radius:14px;padding:18px}
.controls{display:flex;gap:10px;flex-wrap:wrap;margin-bottom:12px}
input,select{background:var(--panel2);border:1px solid var(--line2);color:var(--ink);border-radius:9px;padding:8px 12px;font:inherit;font-size:14px}
input{min-width:220px}
.tw{overflow-x:auto;border:1px solid var(--line);border-radius:14px;background:var(--panel)}
table{border-collapse:collapse;width:100%;font-variant-numeric:tabular-nums;font-size:14px}
th,td{padding:10px 12px;border-bottom:1px solid var(--line);text-align:right;white-space:nowrap}
tbody tr:last-child td{border-bottom:0}tbody tr:hover td{background:var(--panel2)}
th{position:sticky;top:0;background:var(--panel2);color:var(--muted);font-weight:600;font-size:12.5px;cursor:pointer;user-select:none}
th.nosort{cursor:default}th.act{color:var(--ink)}th .ar{opacity:.7}
th.l,td.l{text-align:left}
.grp th{cursor:default;text-align:center;font-size:11.5px;letter-spacing:.06em;border-bottom:1px solid var(--line2)}
.rk{display:inline-grid;place-items:center;width:28px;height:28px;border-radius:8px;background:var(--panel2);color:var(--muted);font-weight:700;font-size:13px}
.r1 .rk{background:var(--g1);color:#07130c}.r2 .rk{background:var(--g2);color:#151803}.r3 .rk{background:var(--g3);color:#1d1003}
.mname{font-weight:600;color:var(--ink)}.fam{display:block;color:var(--faint);font-size:12px}
.tot{display:flex;align-items:center;gap:10px;justify-content:flex-end}.tot b{min-width:38px}
.mini{width:90px;height:6px;border-radius:3px;background:var(--line);overflow:hidden}.mini i{display:block;height:100%;background:var(--grad);background-size:90px 6px}
.hfb{font-size:11px;border:1px solid var(--line2);border-radius:5px;padding:0 5px;margin-left:6px;color:var(--muted)}
.notes{color:var(--faint);font-size:12.5px;margin-top:10px}
.grid3{display:grid;grid-template-columns:repeat(3,1fr);gap:14px}
.sc h3{margin:0;font-size:16px}.sc .d{color:var(--muted);font-size:12.5px;margin:2px 0 12px}
.bars{display:grid;gap:7px}
.bar{display:grid;grid-template-columns:18px 132px minmax(0,1fr) 34px;gap:8px;align-items:center;font-size:12.5px}
.bar .nm2{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:var(--ink)}
.bar .n{color:var(--faint);text-align:right}.bar .v{text-align:right;font-variant-numeric:tabular-nums}
.bar .t{height:8px;background:var(--panel2);border-radius:0 4px 4px 0}
.bar .t i{display:block;height:100%;border-radius:0 4px 4px 0}
.legend{display:flex;gap:16px;flex-wrap:wrap;font-size:13px;color:var(--muted);margin:0 0 12px}
.legend i{display:inline-block;width:10px;height:10px;border-radius:3px;margin-right:6px;vertical-align:-1px}
.gb{display:grid;grid-template-columns:200px 1fr;gap:4px 14px;align-items:center}
.gb .nm{font-size:13px;text-align:right;color:var(--ink);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.gb .rows{display:grid;gap:2px;padding:6px 0;border-bottom:1px solid var(--line)}
.gb .rr{display:grid;grid-template-columns:1fr 40px;gap:8px;align-items:center}
.gb .rr .tr{height:8px;background:var(--panel2);border-radius:0 4px 4px 0}.gb .rr .tr i{display:block;height:100%;border-radius:0 4px 4px 0}
.gb .rr b{font-size:11.5px;font-weight:500;color:var(--muted);text-align:right;font-variant-numeric:tabular-nums}
.prog{display:grid;grid-template-columns:repeat(3,1fr);gap:14px}
.pc .fam2{color:var(--muted);font-size:12.5px;letter-spacing:.08em;text-transform:uppercase}
.pc .dl{font-size:34px;font-weight:800;margin:4px 0 2px}.pc .dl small{font-size:14px;color:var(--muted);font-weight:500;margin-left:6px}
.pc .pair{display:flex;justify-content:space-between;gap:10px;margin-top:14px;font-size:13px}
.pc .pair div{flex:1;background:var(--panel2);border-radius:10px;padding:10px}.pc .pair b{display:block;font-size:20px}
.pc .arrow{align-self:center;color:var(--faint)}
.pc p{color:var(--faint);font-size:12.5px;margin:12px 0 0}
.about{display:grid;grid-template-columns:1fr 1fr;gap:14px}.about h3{margin:0 0 8px;font-size:16px}.about ul{margin:0;padding-left:18px;color:var(--muted)}.about li{margin:4px 0}
.pill{display:inline-block;font-size:12px;padding:2px 10px;border-radius:999px;border:1px solid var(--line2);color:var(--muted);margin:0 6px 6px 0}
footer{border-top:1px solid var(--line);color:var(--faint);font-size:12.5px;padding:22px 0 40px}
@media (max-width:860px){.stats{grid-template-columns:repeat(2,1fr)}.grid3,.prog,.about{grid-template-columns:1fr}.gb{grid-template-columns:120px 1fr}input{min-width:0;flex:1}}
select{appearance:none;-webkit-appearance:none;padding-right:40px;cursor:pointer;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'%3E%3Cpath d='M1 1.5l5 5 5-5' fill='none' stroke='%239a9ba6' stroke-width='1.6' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 14px center;background-size:12px 8px}
select:hover{border-color:var(--line2);background-color:var(--panel)}</style></head><body>
<header><div class="wrap"><a class="brand" href="https://keep-tech.github.io/MoveBench/"><img src="https://keep-tech.github.io/MoveBench/assets/brand/movebench-mb-square.png" alt="">MoveBench</a>
<div class="lang" role="group" aria-label="Language"><button data-lang="en" aria-pressed="true">EN</button><button data-lang="zh" aria-pressed="false">中文</button></div></div></header>
<div class="hero"><div class="wrap">
<div class="eyebrow" data-i18n="eyebrow"></div>
<h1><span data-i18n="h1a"></span> <span class="gt" data-i18n="h1b"></span></h1>
<p class="lead" data-i18n="lead"></p>
<div class="stats">
<div class="stat"><b>25</b><span data-i18n="st1"></span></div><div class="stat"><b>809</b><span data-i18n="st2"></span></div><div class="stat"><b>3</b><span data-i18n="st3"></span></div><div class="stat"><b>3</b><span data-i18n="st4"></span></div>
</div></div></div>
<main class="wrap">
<div class="tabs" role="tablist">
<button class="tab" role="tab" data-t="overall" aria-selected="true" data-i18n="t_overall"></button>
<button class="tab" role="tab" data-t="scene" data-i18n="t_scene"></button>
<button class="tab" role="tab" data-t="cap" data-i18n="t_cap"></button>
<button class="tab" role="tab" data-t="type" data-i18n="t_type"></button>
<button class="tab" role="tab" data-t="prog" data-i18n="t_prog"></button>
<button class="tab" role="tab" data-t="about" data-i18n="t_about"></button>
</div>
<section class="panel on" id="p-overall">
<h2 data-i18n="h_overall"></h2><p class="sub" data-i18n="s_overall"></p>
<div class="controls"><input id="q"><select id="fam"></select></div>
<div class="tw"><table id="tbl"><thead>
<tr class="grp"><th class="nosort" colspan="3"></th><th class="nosort" colspan="3" data-i18n="g_fmt"></th><th class="nosort" colspan="3" data-i18n="g_sc"></th><th class="nosort" colspan="3" data-i18n="g_layer"></th><th class="nosort"></th></tr>
<tr id="hdr"></tr></thead><tbody></tbody></table></div>
<p class="notes" data-i18n-html="n_overall"></p>
</section>
<section class="panel" id="p-scene"><h2 data-i18n="h_scene"></h2><p class="sub" data-i18n="s_scene"></p><div class="grid3" id="scenes"></div></section>
<section class="panel" id="p-cap"><h2 data-i18n="h_cap"></h2><p class="sub" data-i18n="s_cap"></p>
<div class="controls"><select id="capSort"><option value="total" data-i18n="so_total"></option><option value="safe" data-i18n="so_safe"></option><option value="pro" data-i18n="so_pro"></option><option value="exp" data-i18n="so_exp"></option></select></div>
<div class="card"><div class="legend" id="capLeg"></div><div class="gb" id="capChart"></div></div></section>
<section class="panel" id="p-type"><h2 data-i18n="h_type"></h2><p class="sub" data-i18n="s_type"></p>
<div class="controls"><select id="typeSort"><option value="total" data-i18n="so_total"></option><option value="ms" data-i18n="so_ms"></option><option value="oq" data-i18n="so_oq"></option></select></div>
<div class="card"><div class="legend" id="typeLeg"></div><div class="gb" id="typeChart"></div></div></section>
<section class="panel" id="p-prog"><h2 data-i18n="h_prog"></h2><p class="sub" data-i18n="s_prog"></p><div class="prog" id="progCards"></div><p class="notes" data-i18n="n_prog"></p></section>
<section class="panel" id="p-about"><h2 data-i18n="h_about"></h2><p class="sub" data-i18n="s_about"></p>
<div class="about">
<div class="card"><h3 data-i18n="a_fw"></h3><span class="pill" data-i18n="p_safe"></span><span class="pill" data-i18n="p_pro"></span><span class="pill" data-i18n="p_exp"></span><ul data-i18n-html="a_fw_l"></ul></div>
<div class="card"><h3 data-i18n="a_sc"></h3><ul data-i18n-html="a_sc_l"></ul></div>
<div class="card"><h3 data-i18n="a_dn"></h3><ul data-i18n-html="a_dn_l"></ul></div>
<div class="card"><h3 data-i18n="a_sub"></h3><ul data-i18n-html="a_sub_l"></ul></div>
</div></section>
</main>
<footer><div class="wrap"><span data-i18n="foot"></span> · <a href="https://keep-tech.github.io/MoveBench/">keep-tech.github.io/MoveBench</a></div></footer>
<script>
const M=[{"rank": 1, "name": "GPT-5.2", "cov": "全量", "total": 0.924, "oq": 0.895, "mcq": 0.971, "DA": 0.94, "PG": 0.872, "QA": 0.957, "ss": 1.0, "ms": 0.954, "safe": 0.891, "pro": 0.922, "exp": 0.909, "n": 809, "nOq": 499, "nMcq": 310, "zero": 0, "family": "GPT", "hf": null}, {"rank": 2, "name": "GLM-5.3", "cov": "全量", "total": 0.922, "oq": 0.889, "mcq": 0.974, "DA": 0.935, "PG": 0.873, "QA": 0.955, "ss": 1.0, "ms": 0.959, "safe": 0.905, "pro": 0.913, "exp": 0.907, "n": 809, "nOq": 499, "nMcq": 310, "zero": 0, "family": "GLM", "hf": "zai-org/GLM-5.3"}, {"rank": 3, "name": "Claude Opus 5.5", "cov": "全量", "total": 0.921, "oq": 0.895, "mcq": 0.965, "DA": 0.926, "PG": 0.88, "QA": 0.957, "ss": 1.0, "ms": 0.944, "safe": 0.916, "pro": 0.919, "exp": 0.915, "n": 809, "nOq": 499, "nMcq": 310, "zero": 0, "family": "Claude", "hf": null}, {"rank": 4, "name": "Claude Opus 4.6", "cov": "全量", "total": 0.912, "oq": 0.87, "mcq": 0.981, "DA": 0.925, "PG": 0.859, "QA": 0.95, "ss": 1.0, "ms": 0.97, "safe": 0.856, "pro": 0.909, "exp": 0.895, "n": 809, "nOq": 499, "nMcq": 310, "zero": 1, "family": "Claude", "hf": null}, {"rank": 5, "name": "Qwen3.8 Max", "cov": "全量", "total": 0.912, "oq": 0.868, "mcq": 0.984, "DA": 0.918, "PG": 0.881, "QA": 0.936, "ss": 1.0, "ms": 0.975, "safe": 0.915, "pro": 0.88, "exp": 0.9, "n": 809, "nOq": 499, "nMcq": 310, "zero": 0, "family": "Qwen", "hf": null}, {"rank": 6, "name": "Doubao Seed 2.1 Pro", "cov": "全量", "total": 0.91, "oq": 0.861, "mcq": 0.987, "DA": 0.907, "PG": 0.882, "QA": 0.94, "ss": 1.0, "ms": 0.98, "safe": 0.892, "pro": 0.879, "exp": 0.898, "n": 809, "nOq": 499, "nMcq": 310, "zero": 0, "family": "Doubao", "hf": null}, {"rank": 7, "name": "Kimi K3", "cov": "全量", "total": 0.909, "oq": 0.865, "mcq": 0.981, "DA": 0.922, "PG": 0.863, "QA": 0.941, "ss": 1.0, "ms": 0.97, "safe": 0.895, "pro": 0.89, "exp": 0.891, "n": 809, "nOq": 499, "nMcq": 310, "zero": 0, "family": "Kimi", "hf": "moonshotai/Kimi-K3"}, {"rank": 8, "name": "Qwen3.5 397B-A17B", "cov": "全量", "total": 0.909, "oq": 0.872, "mcq": 0.968, "DA": 0.929, "PG": 0.83, "QA": 0.964, "ss": 1.0, "ms": 0.949, "safe": 0.894, "pro": 0.91, "exp": 0.901, "n": 809, "nOq": 499, "nMcq": 310, "zero": 0, "family": "Qwen", "hf": "Qwen/Qwen3.5-397B-A17B"}, {"rank": 9, "name": "MiniMax M3", "cov": "全量", "total": 0.907, "oq": 0.874, "mcq": 0.961, "DA": 0.927, "PG": 0.838, "QA": 0.954, "ss": 1.0, "ms": 0.939, "safe": 0.926, "pro": 0.909, "exp": 0.879, "n": 809, "nOq": 499, "nMcq": 310, "zero": 0, "family": "MiniMax", "hf": "MiniMaxAI/MiniMax-M3"}, {"rank": 10, "name": "Qwen3.5 27B", "cov": "全量", "total": 0.899, "oq": 0.856, "mcq": 0.968, "DA": 0.925, "PG": 0.808, "QA": 0.96, "ss": 1.0, "ms": 0.949, "safe": 0.869, "pro": 0.897, "exp": 0.894, "n": 809, "nOq": 499, "nMcq": 310, "zero": 1, "family": "Qwen", "hf": "Qwen/Qwen3.5-27B"}, {"rank": 11, "name": "MiMo v2.6 Pro", "cov": "全量", "total": 0.898, "oq": 0.85, "mcq": 0.974, "DA": 0.917, "PG": 0.855, "QA": 0.918, "ss": 1.0, "ms": 0.959, "safe": 0.869, "pro": 0.872, "exp": 0.876, "n": 809, "nOq": 499, "nMcq": 310, "zero": 0, "family": "MiMo", "hf": null}, {"rank": 12, "name": "Qwen3.5 35B-A3B", "cov": "全量", "total": 0.891, "oq": 0.849, "mcq": 0.958, "DA": 0.921, "PG": 0.799, "QA": 0.948, "ss": 1.0, "ms": 0.934, "safe": 0.858, "pro": 0.889, "exp": 0.885, "n": 809, "nOq": 499, "nMcq": 310, "zero": 3, "family": "Qwen", "hf": "Qwen/Qwen3.5-35B-A3B"}, {"rank": 13, "name": "Gemini 4 Argon", "cov": "全量", "total": 0.89, "oq": 0.83, "mcq": 0.987, "DA": 0.918, "PG": 0.84, "QA": 0.908, "ss": 1.0, "ms": 0.98, "safe": 0.824, "pro": 0.874, "exp": 0.867, "n": 809, "nOq": 499, "nMcq": 310, "zero": 0, "family": "Gemini", "hf": null}, {"rank": 14, "name": "HY3", "cov": "全量", "total": 0.887, "oq": 0.845, "mcq": 0.955, "DA": 0.909, "PG": 0.826, "QA": 0.924, "ss": 1.0, "ms": 0.929, "safe": 0.868, "pro": 0.886, "exp": 0.867, "n": 809, "nOq": 499, "nMcq": 310, "zero": 0, "family": "HY", "hf": "tencent/Hy3"}, {"rank": 15, "name": "GPT-6", "cov": "全量", "total": 0.88, "oq": 0.846, "mcq": 0.935, "DA": 0.885, "PG": 0.858, "QA": 0.898, "ss": 1.0, "ms": 0.898, "safe": 0.889, "pro": 0.869, "exp": 0.873, "n": 808, "nOq": 499, "nMcq": 309, "zero": 0, "family": "GPT", "hf": null}, {"rank": 16, "name": "Qwen3 Max", "cov": "全量", "total": 0.873, "oq": 0.806, "mcq": 0.981, "DA": 0.905, "PG": 0.804, "QA": 0.906, "ss": 1.0, "ms": 0.97, "safe": 0.772, "pro": 0.851, "exp": 0.861, "n": 809, "nOq": 499, "nMcq": 310, "zero": 2, "family": "Qwen", "hf": null}, {"rank": 17, "name": "DeepSeek R1", "cov": "全量", "total": 0.861, "oq": 0.797, "mcq": 0.965, "DA": 0.892, "PG": 0.78, "QA": 0.907, "ss": 1.0, "ms": 0.944, "safe": 0.788, "pro": 0.84, "exp": 0.852, "n": 809, "nOq": 499, "nMcq": 310, "zero": 2, "family": "DeepSeek", "hf": "deepseek-ai/DeepSeek-R1"}, {"rank": 18, "name": "Doubao Seed 2.0 Pro", "cov": "全量", "total": 0.856, "oq": 0.786, "mcq": 0.968, "DA": 0.877, "PG": 0.783, "QA": 0.903, "ss": 1.0, "ms": 0.949, "safe": 0.784, "pro": 0.836, "exp": 0.849, "n": 809, "nOq": 499, "nMcq": 310, "zero": 2, "family": "Doubao", "hf": null}, {"rank": 19, "name": "Kimi K2", "cov": "全量", "total": 0.847, "oq": 0.765, "mcq": 0.981, "DA": 0.895, "PG": 0.737, "QA": 0.903, "ss": 1.0, "ms": 0.97, "safe": 0.753, "pro": 0.83, "exp": 0.822, "n": 809, "nOq": 499, "nMcq": 310, "zero": 6, "family": "Kimi", "hf": null}, {"rank": 20, "name": "GLM-4.7", "cov": "全量", "total": 0.843, "oq": 0.79, "mcq": 0.929, "DA": 0.894, "PG": 0.716, "QA": 0.911, "ss": 1.0, "ms": 0.888, "safe": 0.752, "pro": 0.854, "exp": 0.854, "n": 809, "nOq": 499, "nMcq": 310, "zero": 4, "family": "GLM", "hf": "zai-org/GLM-4.7"}, {"rank": 21, "name": "Grok 4.1 Fast", "cov": "全量", "total": 0.842, "oq": 0.77, "mcq": 0.958, "DA": 0.869, "PG": 0.766, "QA": 0.887, "ss": 1.0, "ms": 0.934, "safe": 0.714, "pro": 0.809, "exp": 0.834, "n": 809, "nOq": 499, "nMcq": 310, "zero": 3, "family": "Grok", "hf": null}, {"rank": 22, "name": "DeepSeek V3.2/DeepSeek V3", "cov": "全量(OQ=V3.2/MCQ=V3)", "total": 0.842, "oq": 0.769, "mcq": 0.958, "DA": 0.847, "PG": 0.787, "QA": 0.89, "ss": 1.0, "ms": 0.934, "safe": 0.737, "pro": 0.808, "exp": 0.832, "n": 809, "nOq": 499, "nMcq": 310, "zero": 8, "family": "DeepSeek", "hf": null}, {"rank": 23, "name": "GPT-OSS 120B", "cov": "全量", "total": 0.81, "oq": 0.723, "mcq": 0.952, "DA": 0.827, "PG": 0.723, "QA": 0.878, "ss": 1.0, "ms": 0.924, "safe": 0.672, "pro": 0.769, "exp": 0.799, "n": 809, "nOq": 499, "nMcq": 310, "zero": 10, "family": "GPT", "hf": "openai/gpt-oss-120b"}, {"rank": 24, "name": "Qwen3 235B-A22B", "cov": "全量", "total": 0.78, "oq": 0.672, "mcq": 0.955, "DA": 0.81, "PG": 0.686, "QA": 0.84, "ss": 1.0, "ms": 0.929, "safe": 0.59, "pro": 0.721, "exp": 0.769, "n": 809, "nOq": 499, "nMcq": 310, "zero": 10, "family": "Qwen", "hf": "Qwen/Qwen3-235B-A22B"}, {"rank": 25, "name": "Qwen3 32B", "cov": "全量", "total": 0.734, "oq": 0.595, "mcq": 0.958, "DA": 0.77, "PG": 0.636, "QA": 0.79, "ss": 1.0, "ms": 0.934, "safe": 0.516, "pro": 0.636, "exp": 0.711, "n": 809, "nOq": 499, "nMcq": 310, "zero": 21, "family": "Qwen", "hf": "Qwen/Qwen3-32B"}],T={"en": {"eyebrow": "Leaderboard · Movement intelligence", "h1a": "MoveBench", "h1b": "Sports Science LLM Leaderboard", "lead": "A unified framework of expertise, safety and experience, measuring what large language models can and cannot do across three real coaching scenarios: workout data analysis, personalized training plans and expert knowledge QA.", "st1": "models evaluated", "st2": "questions · 499 open-ended + 310 multiple-choice", "st3": "scenarios · DA / PG / QA", "st4": "evaluation layers · safety / expertise / experience", "t_overall": "Overall", "t_scene": "Scenarios", "t_cap": "Capability", "t_type": "Question type", "t_prog": "Progress", "t_about": "About", "h_overall": "Overall leaderboard", "s_overall": "Full 809-question evaluation, scores out of 100. Click a column header to sort.", "search": "Search models", "allfam": "All families", "g_fmt": "Format", "g_sc": "Scenario", "g_layer": "Layer", "c_rank": "#", "c_name": "Model", "c_total": "Overall", "c_oq": "OQ", "c_mcq": "MCQ", "c_ss": "SS", "c_safe": "Safety", "c_pro": "Expertise", "c_exp": "Experience", "c_zero": "Zeroed", "n_overall": "OQ = open-ended, MCQ = multiple-choice, SS = single-select; Zeroed = open-ended answers scored 0 for a safety red-line violation. † GPT-6 answered 808 questions (one multiple-choice question missing). ‡ DeepSeek V3.2 / V3 combines V3.2 on open-ended and V3 on multiple-choice questions. Overall scores are taken from the source table, not recomputed from sub-scores. Bars in the Overall column run from 70 to 100 to make the gaps visible. Models marked <span class=\"hfb\">HF</span> link to their Hugging Face model page.", "empty": "No matching models", "h_scene": "Scenario leaderboards", "s_scene": "Each scenario ranked separately. Personalized training plans (PG) are the lowest-scoring scenario for nearly every model.", "DA_t": "Workout data analysis", "DA_d": "Data understanding, metric interpretation and action advice", "PG_t": "Personalized training plans", "PG_d": "Goal fit, course selection and plan structure", "QA_t": "Expert knowledge QA", "QA_d": "Knowledge accuracy, applicability and clarity", "top": "Top", "h_cap": "Capability leaderboard", "s_cap": "Safety, expertise and experience layers side by side.", "so_total": "Sort by overall", "so_safe": "Sort by safety", "so_pro": "Sort by expertise", "so_exp": "Sort by experience", "so_ms": "Sort by multi-select", "so_oq": "Sort by open-ended", "l_safe": "Safety", "l_pro": "Expertise", "l_exp": "Experience", "l_ss": "Single-select", "l_ms": "Multi-select", "l_oq": "Open-ended", "h_type": "Question-type leaderboard", "s_type": "Single-select, multi-select and open-ended side by side. Every model scores 100 on single-select, so open-ended questions do most of the separating.", "h_prog": "Progress leaderboard", "s_prog": "Change in overall score between two versions in the same model family. This is a score difference between versions, not a rate over time, and is not attributable to the version upgrade alone.", "n_prog": "For Qwen, only Max → Max is linked. 32B, 27B, 35B-A3B, 235B-A22B and 397B-A17B differ in size or architecture and are not treated as an upgrade chain.", "rankN": "Gain #", "pts": "pts", "safeL": "Safety", "h_about": "About the evaluation", "s_about": "Framework, scoring and data notes.", "a_fw": "Framework", "p_safe": "Safety", "p_pro": "Expertise", "p_exp": "Experience", "a_fw_l": "<li><b>DA · Workout data analysis</b>: data understanding, metric interpretation and action advice</li><li><b>PG · Personalized training plans</b>: goal fit, course selection and plan structure</li><li><b>QA · Expert knowledge QA</b>: knowledge accuracy, applicability and clarity</li>", "a_sc": "Scoring", "a_sc_l": "<li>Open-ended answers are graded against expert-written, per-question rubrics by a three-judge weighted LLM panel.</li><li>Single- and multi-select questions are scored by exact match against the gold answer.</li><li>An open-ended answer that violates a safety red line scores 0. The \"Zeroed\" column counts these for each model.</li>", "a_dn": "Data notes", "a_dn_l": "<li>Scores are the source scores × 100, rounded to one decimal.</li><li>This page reports the full 809-question evaluation. Scores on the 80-question public subset are on the <a href=\"https://huggingface.co/datasets/KeepaceAI/MoveBench\">dataset page</a>; the two are not interchangeable.</li><li>Model names follow the source table.</li>", "a_sub": "Get your model listed", "a_sub_l": "<li>Download the <a href=\"https://huggingface.co/datasets/KeepaceAI/MoveBench\">dataset</a> and generate answers with your model.</li><li>Submit the answer file following the <a href=\"https://github.com/Keep-Tech/MoveBench/blob/main/docs/SUBMISSION.md\">submission guide</a>. Maintainers score and review submissions before updating the leaderboard.</li><li>Cite the <a href=\"https://arxiv.org/abs/2610.26185\">MoveBench paper</a> (arXiv 2610.26185).</li>", "foot": "MoveBench Team × Capital University of Physical Education and Sports · Dataset and documentation licensed under CC BY 4.0"}, "zh": {"eyebrow": "Leaderboard · Movement intelligence", "h1a": "MoveBench", "h1b": "运动科学大模型榜单", "lead": "以专业、安全、体验为统一评价框架,在运动数据解读、个性化课程方案、专业知识问答三个真实服务场景中衡量大模型的能力与边界。", "st1": "参评模型", "st2": "评测题 · 499 道开放题 + 310 道选择题", "st3": "业务主题 · DA / PG / QA", "st4": "评价层面 · 安全 / 专业 / 体验", "t_overall": "总榜", "t_scene": "主题榜", "t_cap": "能力榜", "t_type": "题型榜", "t_prog": "进步榜", "t_about": "说明", "h_overall": "总榜", "s_overall": "809 题全量评测,分数为百分制。点击表头排序。", "search": "搜索模型", "allfam": "全部系列", "g_fmt": "题型", "g_sc": "主题", "g_layer": "评价层面", "c_rank": "#", "c_name": "模型", "c_total": "总分", "c_oq": "开放题", "c_mcq": "选择题", "c_ss": "单选", "c_safe": "安全", "c_pro": "专业", "c_exp": "体验", "c_zero": "红线置零", "n_overall": "OQ = open-ended, MCQ = multiple-choice, SS = single-select; Zeroed = open-ended answers scored 0 for a safety red-line violation. † GPT-6 为 808 题(少 1 道选择题)。‡ DeepSeek V3.2 / V3:开放题用 V3.2、选择题用 V3 的混合结果。总分沿用原表,不由分项均值重算。总分列的进度条从 70 分起算,便于看出差距。带 <span class=\"hfb\">HF</span> 标记的模型可跳转到其 Hugging Face 模型页。", "empty": "没有匹配的模型", "h_scene": "主题榜", "s_scene": "三个业务场景各自排名。几乎所有模型都在 PG 个性化课程方案上得分最低。", "DA_t": "运动数据解读", "DA_d": "数据理解、指标解释与行动建议", "PG_t": "个性化课程方案", "PG_d": "目标适配、课程选择与方案编排", "QA_t": "专业知识问答", "QA_d": "知识准确、适用条件与表达质量", "top": "最高", "h_cap": "能力榜", "s_cap": "安全层、专业层、体验层并排对照。", "so_total": "按总分排序", "so_safe": "按安全层排序", "so_pro": "按专业层排序", "so_exp": "按体验层排序", "so_ms": "按多选排序", "so_oq": "按开放问答排序", "l_safe": "安全层", "l_pro": "专业层", "l_exp": "体验层", "l_ss": "单选", "l_ms": "多选", "l_oq": "开放问答", "h_type": "题型榜", "s_type": "单选、多选、开放问答并排对照。单选题全部满分,区分度主要来自开放问答。", "h_prog": "进步榜", "s_prog": "同系列两个版本之间的总分变化。这里的“进步”指版本间分数差,不代表时间速度,也不能单独归因于版本升级。", "n_prog": "Qwen 系列只连接 Max → Max;32B、27B、35B-A3B、235B-A22B、397B-A17B 属于不同规模或架构,不作为连续升级链。", "rankN": "增幅第 ", "pts": "分", "safeL": "安全", "h_about": "评测说明", "s_about": "评价框架、评分方式与数据口径。", "a_fw": "评价框架", "p_safe": "安全", "p_pro": "专业", "p_exp": "体验", "a_fw_l": "<li><b>DA 运动数据解读</b>:数据理解、指标解释与行动建议</li><li><b>PG 个性化课程方案</b>:目标适配、课程选择与方案编排</li><li><b>QA 专业知识问答</b>:知识准确、适用条件与表达质量</li>", "a_sc": "评分方式", "a_sc_l": "<li>开放题由三个 LLM judge 组成的加权评审团,依据专家编写的逐题 rubric 评分。</li><li>选择题(单选、多选)按标准答案精确匹配评分。</li><li>触犯安全红线的开放题记 0 分;总榜“红线置零”列为每个模型被置零的题数。</li>", "a_dn": "数据口径", "a_dn_l": "<li>分数为原表分数 × 100,保留 1 位小数。</li><li>本页为 809 题全量评测结果。公开的 80 题子集成绩见<a href=\"https://huggingface.co/datasets/KeepaceAI/MoveBench\">数据集页</a>,两者不可混用。</li><li>模型名称沿用原表写法。</li>", "a_sub": "参与评测", "a_sub_l": "<li>下载<a href=\"https://huggingface.co/datasets/KeepaceAI/MoveBench\">数据集</a>,用你的模型生成答案。</li><li>按<a href=\"https://github.com/Keep-Tech/MoveBench/blob/main/docs/SUBMISSION.md\">提交指南</a>提交答案文件,维护方评分审核后更新榜单。</li><li>引用:<a href=\"https://arxiv.org/abs/2610.26185\">MoveBench 论文</a>(arXiv 2610.26185)。</li>", "foot": "MoveBench Team × 首都体育学院 · 数据集与文档采用 CC BY 4.0 许可"}};
let L='en';try{const s=localStorage.getItem('mb-lang');if(s==='zh'||s==='en')L=s;}catch(e){}
const t=k=>T[L][k];
const f=v=>(v*100).toFixed(1);
const esc=s=>String(s).replace(/[&<>"]/g,c=>({'&':'&amp;','<':'&lt;','>':'&gt;','"':'&quot;'}[c]));
const flag=m=>m.name==='GPT-6'?'†':m.name.startsWith('DeepSeek V3')?'‡':'';
const S=['var(--s1)','var(--s2)','var(--s3)'];
const $=id=>document.getElementById(id);
document.querySelectorAll('.tab').forEach(b=>b.onclick=()=>{document.querySelectorAll('.tab').forEach(x=>x.setAttribute('aria-selected',x===b));document.querySelectorAll('.panel').forEach(p=>p.classList.toggle('on',p.id==='p-'+b.dataset.t));try{history.replaceState(null,'','#'+b.dataset.t)}catch(e){}});
const fromHash=()=>{const h=location.hash.slice(1);const b=h&&document.querySelector(`.tab[data-t="${h}"]`);if(b)b.click();};fromHash();addEventListener('hashchange',fromHash);
const COLS=['rank','name','total','oq','mcq','ss','DA','PG','QA','safe','pro','exp','zero'];
const CL={rank:'c_rank',name:'c_name',total:'c_total',oq:'c_oq',mcq:'c_mcq',ss:'c_ss',safe:'c_safe',pro:'c_pro',exp:'c_exp',zero:'c_zero'};
let sk='total',sd=true;
const fams=[...new Set(M.map(m=>m.family))];
function rankOf(rows,k){let prev=null,r=0;return rows.map((m,i)=>{if(prev===null||Math.abs(m[k]-prev)>1e-9)r=i+1;prev=m[k];return r;});}
function renderTable(){
$('hdr').innerHTML=COLS.map(k=>`<th class="${k==='rank'||k==='name'?'l':''} ${k===sk?'act':''}" data-k="${k}" aria-sort="${k===sk?(sd?'descending':'ascending'):'none'}">${CL[k]?t(CL[k]):k}${k===sk?` <span class="ar">${sd?'↓':'↑'}</span>`:''}</th>`).join('');
document.querySelectorAll('#hdr th').forEach(th=>th.onclick=()=>{const k=th.dataset.k;if(k===sk)sd=!sd;else{sk=k;sd=!(k==='rank'||k==='name'||k==='zero');}renderTable();});
const q=$('q').value.toLowerCase().trim(),fa=$('fam').value;
let rows=M.filter(m=>(fa==='all'||m.family===fa)&&(m.name+' '+m.family).toLowerCase().includes(q));
const k=sk==='rank'?'total':sk;
rows.sort((a,b)=>{if(k==='name')return sd?b.name.localeCompare(a.name):a.name.localeCompare(b.name);return (sd?b[k]-a[k]:a[k]-b[k])||a.rank-b.rank;});
if(sk==='rank'&&!sd)rows.reverse();
document.querySelector('#tbl tbody').innerHTML=rows.length?rows.map(m=>`<tr class="r${m.rank}">
<td class="l"><span class="rk">${m.rank}</span></td>
<td class="l"><span class="mname">${esc(m.name)}${flag(m)}</span>${m.hf?`<a class="hfb" href="https://huggingface.co/${m.hf}" title="${m.hf}">HF</a>`:''}<span class="fam">${esc(m.family)}</span></td>
<td><div class="tot"><b>${f(m.total)}</b><div class="mini" title="70–100"><i style="width:${Math.max(0,Math.min(100,(m.total*100-70)/30*100))}%"></i></div></div></td>
<td>${f(m.oq)}</td><td>${f(m.mcq)}</td><td>${f(m.ss)}</td><td>${f(m.DA)}</td><td>${f(m.PG)}</td><td>${f(m.QA)}</td><td>${f(m.safe)}</td><td>${f(m.pro)}</td><td>${f(m.exp)}</td><td>${m.zero}</td></tr>`).join(''):`<tr><td colspan="13" class="l">${t('empty')}</td></tr>`;
}
function renderScenes(){
const SC=[['DA','var(--g1)'],['PG','var(--g3)'],['QA','var(--g5)']];
$('scenes').innerHTML=SC.map(([k,c])=>{const rows=[...M].sort((a,b)=>b[k]-a[k]||a.rank-b.rank);const rk=rankOf(rows,k);return `<div class="card sc"><h3>${k} · ${t(k+'_t')}</h3><div class="d">${t(k+'_d')} · ${t('top')} ${f(rows[0][k])}</div><div class="bars">${rows.map((m,i)=>`<div class="bar" title="${esc(m.name)} · ${k} ${f(m[k])}"><span class="n">${rk[i]}</span><span class="nm2">${esc(m.name)}${flag(m)}</span><div class="t"><i style="width:${m[k]*100}%;background:${c}"></i></div><span class="v">${f(m[k])}</span></div>`).join('')}</div></div>`}).join('');
}
function grouped(el,leg,keys,sortKey){
const labels=keys.map(k=>t('l_'+k));
$(leg).innerHTML=labels.map((l,i)=>`<span><i style="background:${S[i]}"></i>${l}</span>`).join('');
const rows=[...M].sort((a,b)=>b[sortKey]-a[sortKey]||a.rank-b.rank);
$(el).innerHTML=rows.map(m=>`<div class="nm" title="${esc(m.name)}">${esc(m.name)}${flag(m)}</div><div class="rows">${keys.map((k,i)=>`<div class="rr" title="${esc(m.name)} · ${labels[i]} ${f(m[k])}"><div class="tr"><i style="width:${m[k]*100}%;background:${S[i]}"></i></div><b>${f(m[k])}</b></div>`).join('')}</div>`).join('');
}
const rc=()=>grouped('capChart','capLeg',['safe','pro','exp'],$('capSort').value);
const rt=()=>grouped('typeChart','typeLeg',['ss','ms','oq'],$('typeSort').value);
function renderProg(){
const P=[['GLM','GLM-4.7','GLM-5.3'],['Qwen Max','Qwen3 Max','Qwen3.8 Max'],['Claude Opus','Claude Opus 4.6','Claude Opus 5.5']].map(([fa,a,b])=>{const A=M.find(m=>m.name===a),B=M.find(m=>m.name===b);return {fa,A,B,d:(B.total-A.total)*100,rel:(B.total/A.total-1)*100};}).sort((x,y)=>y.d-x.d);
$('progCards').innerHTML=P.map((p,i)=>`<div class="card pc"><div class="fam2">${p.fa} · ${t('rankN')}${i+1}</div><div class="dl" style="color:${['var(--g1)','var(--g2)','var(--g3)'][i]}">+${p.d.toFixed(1)}<small>${t('pts')} · +${p.rel.toFixed(1)}%</small></div><div class="pair"><div>${esc(p.A.name)}<b>${f(p.A.total)}</b></div><span class="arrow">→</span><div>${esc(p.B.name)}<b>${f(p.B.total)}</b></div></div><p>${t('safeL')} ${f(p.A.safe)} → ${f(p.B.safe)} · PG ${f(p.A.PG)} → ${f(p.B.PG)}</p></div>`).join('');
}
function applyLang(){
document.documentElement.lang=L==='zh'?'zh-CN':'en';
document.querySelectorAll('[data-i18n]').forEach(e=>e.textContent=t(e.dataset.i18n));
document.querySelectorAll('[data-i18n-html]').forEach(e=>e.innerHTML=t(e.dataset.i18nHtml));
document.querySelectorAll('.lang button').forEach(b=>b.setAttribute('aria-pressed',b.dataset.lang===L));
$('q').placeholder=t('search');$('q').setAttribute('aria-label',t('search'));
const fv=$('fam').value||'all';$('fam').innerHTML=`<option value="all">${t('allfam')}</option>`+fams.map(x=>`<option>${esc(x)}</option>`).join('');$('fam').value=fv;
renderTable();renderScenes();rc();rt();renderProg();
}
document.querySelectorAll('.lang button').forEach(b=>b.onclick=()=>{L=b.dataset.lang;try{localStorage.setItem('mb-lang',L)}catch(e){}applyLang();});
$('q').oninput=renderTable;$('fam').onchange=renderTable;$('capSort').onchange=rc;$('typeSort').onchange=rt;
applyLang();
</script></body></html>