File size: 35,509 Bytes
77c64b9
b7673e6
2a266f3
3c0db96
2a266f3
3c0db96
 
 
 
 
 
 
 
 
 
 
b7673e6
3c0db96
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
b7673e6
f595195
 
3c0db96
b7673e6
3c0db96
b7673e6
 
 
3c0db96
b7673e6
3c0db96
 
 
b7673e6
 
 
 
 
 
3c0db96
 
b7673e6
 
3c0db96
b7673e6
3c0db96
b7673e6
3c0db96
b7673e6
 
 
 
 
 
 
 
 
3c0db96
b7673e6
 
 
 
3c0db96
 
b7673e6
3c0db96
bc63dfc
b7673e6
 
3c0db96
 
 
 
b7673e6
3c0db96
 
b7673e6
 
3c0db96
b7673e6
3c0db96
 
b7673e6
3c0db96
b7673e6
3c0db96
 
b7673e6
3c0db96
b7673e6
 
3c0db96
83379da
b7673e6
3c0db96
b7673e6
 
 
 
 
 
 
3c0db96
b7673e6
 
 
 
 
bc63dfc
b7673e6
 
 
 
 
 
 
 
 
 
3c0db96
b7673e6
 
 
3c0db96
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
<!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>