我构建了一个2D物理竞技场,让LLM智能体在其中实时进行剑斗。结果发现,这出人意料地成为测试战术推理能力的绝佳方式。
摘要
Stickblade Arena 是一项新基准测试,让LLM智能体在2D物理刀剑格斗模拟器中控制布娃娃角色,测试其在对抗压力下的多回合战术推理、空间感知和实时决策能力。早期结果揭示了能力差距:DeepSeek R1在近战中占据主导地位,但因时间限制无法使用弓箭,而小模型在近距离战斗中表现出色。
**TL;DR** — 我构建了一个名为 **Stickblade Arena** 的基准测试:两个 LLM 在一个 2D 物理模拟器中运行 agent 循环——每模拟 3 秒,每个 agent 收到一个 JSON 世界状态,有大约 15 秒的时间提交一个动作,然后物理引擎解决后果。人类匿名投票谁打得好,每个(模型、武器、锋利区域)组合追踪 ELO 分数。它揭示了一些标准评测无法发现的性能差距。
# 为什么我要构建这个
大多数 LLM 评测都是 **静态且封闭形式** 的——比如 MMLU、HumanEval、MT-Bench。它们测试的是模型 *知道什么*,而不是它是否能在 24 个对抗回合中,在惩罚糟糕空间推理的确定性环境中保持一个计划的连贯性。所以我构建了一个能做到这点的评测。
Agent 循环极其简单:
```
textloop:
state = build_state(me, opponent, last_events) # ~600 字节 JSON
reply = llm.decide(state) # 15 秒截止
controller.execute(reply) # 3 秒物理模拟
events = combat_system.resolve_hits()
```
每一回合模型收到的内容类似:
```json
{
"turn": 4,
"my_hp": 67,
"enemy_hp": 80,
"distance": 142,
"me": {
"torso":[412,150],
"head":[412,191],
"weapon_tip":[461,180],
"facing": 1,
"velocity":[30,-2]
},
"enemy": {
"torso":[554,150],
"head":[554,193],
"facing":-1
},
"relative": {
"dx":142,
"dy":0,
"enemy_is":"right",
"facing_enemy":true
},
"ranged_hint": {
"arrow_flight_time_s":0.20,
"vertical_drop_to_compensate":24
},
"enemy_last_action": "guard_high",
"last_turn_hits": [
{ "by":"enemy", "zone":"edge", "damage":4.1, "was_sharp":false }
]
}
```
并且必须回复一个战术动作 + 步法(MACRO 模式)或者身体**每个关节**的伸展/弯曲/保持/放松状态(JOINT 模式——基本上就是 Toribash 风格)。
# 我实际测试的是什么
| 能力 | 标准评测 | 这个评测 |
|:-|:-|:-|
| 静态知识 | ✅ MMLU | 不测试 |
| 多轮连贯性 | ❌ 大多单轮 | ✅ 24 回合状态连续性 |
| 实时截止时间 | ❌ 无时间预算 | ✅ 每回合 15 秒,超时判负 |
| 空间推理 | 部分 | ✅ 连续 2D 物理 |
| 约束满足 | 部分 | ✅ 只有特定武器区域才能造成伤害 |
| 对抗压力 | ❌ 固定对手 | ✅ 对手是 *另一个同样在适应的 LLM* |
| 基于结果的创造力 | ❌ 基于文采判断 | ✅ 基于谁打出致命一击判断 |
# 看过几百场战斗后的意外发现
* **DeepSeek R1** 在 MACRO 模式下剑术占优(它确实会蓄力然后跨回合连贯出剑),但 **输在弓箭上**——其冗长的推理链会在速射时耗尽 15 秒预算
* **小模型(Llama 3.2 3B)** 在 **匕首/缠斗距离** 上表现出超常水平——它们不会对近距离博弈过度思考
* **GPT-OSS 120B** 拥有最一致的多回合计划;几乎可以看到它在执行一个三连击杀链
* **JOINT 模式极其残酷**——即使强模型也难以将“伸展肩膀 + 弯曲肘部”组合成一次连贯挥击。战略规划与具身运动规划之间存在巨大差距
* 那些忽略 `relative.facing_enemy` 的模型第一次攻击就会落空,再也无法挽回。这个单一字段清晰地测试了模型是否真正解析了状态
匿名投票设置(服务器端随机化哪个模型变成绿色或蓝色布娃娃)意味着排行榜无法通过品牌认知来作弊。
# 技术栈(如果有人想复刻)
* 物理引擎:**pymunk**(Chipmunk2D),60 Hz 频率,2 倍子步长
* 后端:**FastAPI** 部署在 HF Spaces;大脑调用 OpenRouter / OpenAI / Gemini
* 前端:**Next.js 15** \+ 纯 Canvas 回放播放器,部署在 Vercel
* 存储:Supabase(Postgres + 用于回放 JSON 的存储桶)
* 即刻内置 21 个免费 OpenRouter 模型选择器
支持单败淘汰赛(4 或 8 个模型,实时赛程浏览器)、战前 LLM 垃圾话、战后 LLM 评论员吐槽、致命一击时的击杀回放慢动作。
# 开放问题(欢迎讨论)
1. 有没有明显 **这个评测无法揭示** 的能力,我可能遗漏了?
2. 每回合 15 秒的预算惩罚了深度推理模型。如果采用“思考时间均等”模式(给 R1 60 秒,给 Haiku 5 秒)会是更公平的比较,还是只是更差的基准?
3. JOINT 模式更接近“具身”agent。有谁在从事 agent 输出直接转化为连续电机控制的相关工作吗?
4. 状态载荷大约 600 字节。我很想 A/B 测试更丰富的载荷(完整骨骼关节角度?速度历史?)——有谁做过关于状态格式选择对哪些模型家族有利的评测工作吗?
选两个模型,设定一个锋利区域,看它们战斗。无需 API 密钥也能使用 Mock 模式,如果你想在接入密钥之前先试用 UI。
相似文章
我搭建了一个竞技场,让LLM们在真实物理规则下进行剑斗。你来决定刀刃哪部分锋利,盲评胜负,免费OpenRouter模型争夺Elo排名。目前Llama 3.3正在刺向GPT-OSS的脸。
新竞技场让LLM控制物理布娃娃进行武器对决,用户定义武器伤害区域、盲评投票,模型争夺Elo排名。免费模型如Llama 3.3和GPT-OSS参与竞争,基础设施可自托管。
我搭建了一个竞技场,让AI代理在实时3轮对战中互相厮杀——结果出乎意料
作者构建了AI Combat,这是一个平台,用户可以为AI代理设计特定角色和策略,让它们在实时3轮比赛中相互对战,配有AI裁判和ELO排名。
我构建了一个1v1核战略游戏来基准测试LLM推理(而不仅仅是选择题)——Age of LLM
名为Age of LLM的新型开源基准通过回合制核战略游戏(包含战争迷雾、外交和虚张声势)来测试LLM推理,相较于传统的多项选择基准,提供了更动态的评估。
LLM时代:迷雾战争下大语言模型推理、外交与可靠性的战略1v1基准测试
介绍Age of LLM,一个回合制1v1基准测试,LLM在带有战争迷雾和外交机制的网格上对战,评估推理、可靠性和战略规划能力。结果显示核速攻战术占主导,且可靠性与获胜之间存在弱关联。
Collider-Bench: 以粒子物理分析复现基准测试AI代理
Collider-Bench是一个新基准,评估LLM代理仅使用公开论文和开源软件复现大型强子对撞机粒子物理分析的能力,需要物理推理来填补缺失的实现细节。