Loading... # SnapBench LLM 空间推理基准测试技术分析 # 一、概述 ## 1. 项目背景 ### A. 项目简介 SnapBench 是一个受 1999 年《宝可梦快照》游戏启发的空间推理基准测试项目。该项目构建了一个 3D 体素世界,让视觉语言模型(VLM)控制无人机在其中飞行,寻找并识别生物。 ### B. 核心特点 - 程序化生成的 3D 地形 - 真实的物理模拟和碰撞检测 - 多语言混合架构(Zig + Rust + Python) - 自动化基准测试框架 ## 2. 技术栈 ### A. 编程语言 - Zig 64.3%:3D 模拟引擎 - Rust 22.4%:无人机控制器 - Python 11.1%:基准测试脚本 ### B. 核心依赖 - raylib:3D 图形渲染 - OpenRouter:VLM API 接入 # 二、系统架构 ## 1. 整体设计 系统采用三层架构设计: ```mermaid graph TB subgraph Simulation A[地形生成] B[生物生成] C[物理引擎] end subgraph Controller D[Rust控制器] E[画面捕获] F[Prompt构建] end subgraph VLM G[OpenRouter API] end Simulation -->|UDP:9999| Controller Controller -->|screenshot+state| VLM VLM -->|commands| Controller Controller -->|movement+identify| Simulation ```  ## 2. 组件说明 ### A. 模拟层(Simulation) - 职责:生成 3D 世界,处理物理模拟 - 技术实现:Zig + raylib - 功能特性: - 程序化地形生成 - 生物生成(猫、狗、猪、羊) - 碰撞检测 - 无人机物理模拟 ### B. 控制层(Controller) - 职责:协调 VLM 与模拟交互 - 技术实现:Rust - 功能特性: - 画面捕获 - 状态数据收集 - Prompt 构建 - 响应解析 ### C. VLM 层 - 职责:理解场景并决策 - 技术实现:OpenRouter API - 支持模型:7 种前沿 LLM ## 3. 通信协议 系统通过 UDP 协议进行组件间通信: ```mermaid sequenceDiagram participant Sim as 模拟器(Zig) participant Ctrl as 控制器(Rust) participant VLM as 视觉模型 Sim->>Ctrl: UDP:9999 状态推送 Ctrl->>Ctrl: 画面捕获 Ctrl->>Ctrl: 构建Prompt Ctrl->>VLM: API请求 VLM->>Ctrl: 返回指令 Ctrl->>Sim: 移动+识别命令 Sim->>Sim: 物理更新 ```  # 三、基准测试设计 ## 1. 测试任务 ### A. 目标 控制无人机在 3D 体素世界中寻找并成功识别 3 个生物 ### B. 成功条件 无人机距离目标生物 5 个单位以内时执行 identify 命令 ### C. 约束条件 - 最大迭代次数:50 次 - 可用命令:8 个移动命令 + identify + screenshot - 生物位置:随机生成 ## 2. 参与模型 测试了 7 种前沿 LLM: | 模型 | 定位 | 成本 | |------|------|------| | Gemini 3 Flash | 轻量级 | 最低 | | Gemini 3 Pro | 标准版 | 中等 | | GPT-5.2-chat | 主流 | 较高 | | Claude Opus 4.5 | 旗舰 | 最高 | | 其他 3 个 | 多样化 | 各异 | ## 3. 测试结果 ### A. 核心发现 只有 Gemini 3 Flash 成功完成任务 ### B. 关键数据 - Flash:唯一成功找到生物的模型 - GPT-5.2:能靠近但从不下降高度 - Claude Opus:尝试识别 160+ 次,从未成功 - 其他模型:随机游走或陷入停滞 ### C. 性能对比 ```mermaid graph LR A[模型成本] --> B[实际表现] C[Claude Opus<br/>最高成本] --> D[失败] E[Gemini Pro<br/>中等成本] --> F[失败] G[GPT-5.2<br/>较高成本] --> H[失败] I[Gemini Flash<br/>最低成本] --> J[成功] style J fill:#90EE90 style D fill:#FFB6C1 style F fill:#FFB6C1 style H fill:#FFB6C1 ```  # 四、技术分析 ## 1. 核心差异因素 ### A. 高度控制能力 测试表明,关键差异点并非智能程度,而是高度控制能力: - Gemini Flash:主动调整高度,下降到生物层面 - GPT-5.2:水平方向接近,但不降低高度 - Claude Opus:尝试识别 160+ 次,因接近角度错误而失败 ### B. 问题根因 生物位于地面,要成功识别必须下降。Claude Opus 虽然是最强的模型,知道需要识别生物,并积极尝试,但从不调整接近角度。 ## 2. 异常发现 ### A. 双生物异常 第 13 次运行(种子 72)是唯一找到 2 个生物的测试。原因是它们生成位置靠近,Flash 找到一个后转身发现了第二个。 ### B. 搜索空间限制 大多数运行中,Flash 快速找到一个生物后,用尽迭代次数寻找其他生物。世界很大,50 次迭代不足以完成全面搜索。 ## 3. 模型规模悖论 ### A. 预期 vs 实际 预期结果: - Claude Opus 4.5(最贵)应占主导 - Gemini 3 Pro 应优于 Gemini 3 Flash 实际结果:最便宜的模型击败了成本高 10 倍的模型 ### B. 可能解释 1. 空间推理不随模型规模扩展 2. Flash 训练方式不同(更多机器人学数据) 3. 小模型更按字面意思执行指令 # 五、技术实现细节 ## 1. 模拟器设计 ### A. 地形生成 程序化生成算法创建体素地形 ### B. 生物系统 - 类型:猫、狗、猪、羊 - 生成:随机位置 - 可见性:部分生物(灰色羊、粉色猪)因对比度更易发现 ### C. 物理引擎 - 无人机物理模拟 - 碰撞检测 - 移动命令处理 ## 2. 控制器实现 ### A. 状态收集 - 位置信息 - 画面截图 - 最近命令历史 ### B. Prompt 构建 将状态信息结构化为 VLM 可理解的提示词 ### C. 响应解析 将 VLM 输出转换为可执行命令序列 ## 3. 通信机制 ### A. UDP 协议 端口 9999 用于模拟器与控制器通信 ### B. 数据格式 - 请求:screenshot + state - 响应:commands + state # 六、使用指南 ## 1. 环境要求 | 工具 | 版本要求 | 安装来源 | |------|---------|---------| | Zig | ≥0.15.2 | ziglang.org/download | | Rust | stable (2024 edition) | rust-lang.org/tools/install | | Python | ≥3.11 | python.org | | uv | latest | docs.astral.sh/uv | ## 2. 安装步骤 ```bash # 克隆仓库 gh repo clone kxzk/snapbench cd snapbench # 设置 API 密钥 export OPENROUTER_API_KEY="sk-or-..." ``` ## 3. 运行方式 ### A. 手动运行模拟 ```bash # 终端 1:启动模拟器(可选种子) zig build run -Doptimize=ReleaseFast -- 42 # 或 make sim # 终端 2:启动控制器 cargo run --release --manifest-path llm_drone/Cargo.toml -- --model google/gemini-3-flash-preview # 或 make drone ``` ### B. 运行基准测试 ```bash # 运行所有定义在 bench/models.toml 的模型 uv run bench/bench_runner.py # 或 make bench ``` 结果保存到 data/run_<id>.csv # 七、项目局限 ## 1. 已知问题 ### A. 模拟器粗糙边缘 作为副业项目,并非完善的基准测试套件 ### B. Prompt 设计 对所有模型使用统一提示,未针对特定模型优化 ### C. 反馈循环简单 仅传递位置、截图、最近命令,信息有限 ### D. 迭代限制 50 次迭代可能限制慢速模型的潜力 # 八、未来方向 ## 1. 改进计划 ### A. 模型特定优化 针对各模型优势调整指令 ### B. 丰富反馈信息 传递更多空间上下文(距离读数、指南针、小地图) ### C. 多智能体测试 为每个模型分配无人机进行竞争 ### D. 扩展迭代 让慢速模型运行更长时间,分离推理速度与能力 ### E. 真实无人机测试 Gemini Flash vs. BetaFPV 真实飞行 ### F. 宝可梦资产 使用低多边形宝可梦模型,强化游戏灵感 ### G. 世界优化 更大地形、更好视觉效果、性能优化 # 九、技术价值 ## 1. 研究意义 ### A. 空间推理评估 为 LLM 空间推理能力提供实际测试场景 ### B. 成本效益分析 揭示模型规模与任务表现的非线性关系 ### C. 具身智能 为机器人学中的 LLM 应用提供参考 ## 2. 实践启示 ### A. 模型选择 构建需要导航物理或虚拟空间的 LLM 智能体时,最昂贵的模型未必是最佳选择 ### B. 任务适配 不同模型在不同任务上表现差异显著,需针对性选择 ### C. 评估方法 真实场景测试比理论性能更重要 # 十、相关资源 ## 1. 项目信息 - 仓库地址:github.com/kxzk/snapbench - Star 数:115 - 最后更新:2026 年 1 月 26 日 ## 2. 素材来源 - 无人机模型:NateGazzard (CC-BY) - 体素世界包:Quaternius - 平台:Poly Pizza ## 3. 相关项目 - Tello Bench:真实 DJI Tello 无人机控制测试 *** ## 参考资料 1. [SnapBench - GitHub Repository](https://github.com/kxzk/snapbench) 最后修改:2026 年 01 月 27 日 © 允许规范转载 赞 如果觉得我的文章对你有用,请随意赞赏