NVIDIA Research 发布 SpatialClaw:免训练空间推理框架
NVIDIA 把空间推理的动作接口从工具调用换成代码,这个思路很巧,20 个基准平均拉升到 59.9%,无训练即插即用,做机器人和视频理解的人该直接跑一下 repo。
NVIDIA Research 发布 SpatialClaw,一个免训练的空间推理框架。它通过将代码作为动作接口,让智能体调用感知工具(Depth Anything 3、SAM 3)并自由组合输出,解决视觉语言模型在 3D 空间判断上的弱点。在 20 项基准测试中平均准确率达 59.9%,比近期智能体 SpaceTools 高 11.2 个百分点,比无工具基线高 6.5 点,比结构化工具调用高 3.2 点。框架无需重新训练,同一提示词和工具集可跨所有基准和骨干网络运行,支持 Qwen3.5/3.6 及 Gemma4 等 26B 至 397B 参数的模型。
NVIDIA 研究团队发布了 SpatialClaw,这是一个无需训练的空间推理框架。它针对视觉语言模型(VLM)中一个长期存在的弱点:这些模型在判断物体位置、物体间关系以及物体在三维空间中的运动方式方面,仍然存在困难。
SpatialClaw 不会重新训练模型,而是改变智能体用于调用感知工具的动作接口。研究团队认为,该接口是瓶颈所在。他们的解决方案是将代码作为动作接口。在 20 个基准测试中,SpatialClaw 的平均准确率达到 59.9%,比近期发布的空间智能体 SpaceTools 高出 11.2 个百分点。
什么是 SpatialClaw
SpatialClaw 是一个包裹在有状态 Python 内核周围的智能体循环。该内核预先加载了输入帧和一组基础操作。感知工具是普通的 Python 可调用对象。它们的输出,包括掩码、深度图、相机几何参数以及轨迹,都是普通的 Python 变量。
该内核暴露了六个公开入口点。InputImages 保存采样后的帧。Metadata 携带帧率、时长和帧索引。tools 暴露感知与几何基础操作。show() 将图像嵌入到智能体的下一个上下文中。vlm 将查询分发到独立的 VLM 会话。ReturnAnswer() 提交最终答案。
两个核心感知工具至关重要。tools.Reconstruct 封装了 Depth Anything 3,并返回每帧深度、相机内参、外参以及稠密点云。tools.SAM3 封装了 SAM 3,能够根据文本、点或框提示生成图像或视频掩码。该框架还添加了一些轻量级实用工具:tools.Geometry、tools.Mask、tools.Time、tools.Graph 和 tools.Draw。
该框架无需训练。相同的系统提示词、工具集和超参数在所有基准测试和后端模型上运行。

为什么动作接口很重要
研究团队在同一个问题上研究了三种动作接口。考虑测量暖炉与门之间的最近距离。
- 单次代码方式会编写一个完整的程序并运行一次。它在看到任何中间掩码或深度图之前就确定了完整策略。一个错误的假设会直接传导至最终答案。
- 结构化工具调用通过固定的 JSON 模式调用命名工具。它无法自由地将输出与 NumPy 或 SciPy 结合来表达测试时的计算。最近点操作没有预先注册的工具,因此结果是错误的。
- SpatialClaw 在代码中组合工具,检查结果,然后修正。它首先计算质心距离,然后发现质心使用的是中位数。智能体切换到 scipy.spatial.KDTree 来找到真正的最近点。它提交了 0.9439 米,而真实值是 0.9 米。
基准测试
SpatialClaw 在五个类别的 20 项基准测试上进行了评估。这些类别涵盖单图像、多视图、通用、视频与 4D,以及通用视频理解。在所有六个测试的骨干模型上,它相比无工具基线都有提升。骨干模型参数规模从 26B 到 397B,来自 Qwen3.5/3.6 和 Gemma4 系列。
一项受控比较将接口作为唯一变量。所有三种变体共享相同的工具集和提示词。只有动作接口不同。
| 动作接口 | 平均 (20 项基准) | 与无工具基线的差值 |
|---|---|---|
| 无工具基线 | 53.4 | – |
| 单次代码 | 55.2 | +1.8 |
| 结构化工具调用 | 56.7 | +3.3 |
| SpatialClaw(代码即动作) | 59.9 | +6.5 |
Gemma4-31B 骨干模型,20 项基准平均。
在与之前基于相同 Gemma4-31B 骨干模型的空间智能体对比中,差距进一步扩大。
| 方法 | 接口 | 平均 | 与 SpatialClaw 的差值 |
|---|---|---|---|
| VADAR | 单次 | 40.5* | −19.4 |
| pySpatial | 单次 | 47.8 | −12.1 |
| SpaceTools-Toolshed | 结构化工具调用 | 48.7 | −11.2 |
| SpatialClaw | 代码即动作 | 59.9 | 最佳 |
最大的提升出现在动态任务上。在 Gemma4-31B 上,DSI-Bench 提升了 +17.6 分,MindCube 提升了 +15.3 分。这些类别需要在帧与视角之间进行链式几何计算。
一项以 LLM 作为评判的归因分析解释了为何优于结构化工具调用。代码组合贡献了其中 52.2% 的优势。控制流贡献了 19.5%,其余 28.3% 与接口无关。
在五阶段循环内部
每个样本运行一个五阶段循环:规划、代码生成、代码执行、反馈组装和答案提交。规划器在不看到图像的情况下起草策略。然后主智能体为每一步编写一个 Python 单元格。静态 AST 检查器在执行前拒绝不安全的代码。循环重复,直到调用 ReturnAnswer() 或达到 30 步。
官方仓库基于 LangGraph 工作流和持久化的 Jupyter 内核运行。骨干模型通过 vLLM 提供服务。感知能力运行在 FastAPI GPU 服务之后。单个快速启动脚本在一台机器上运行一个基准测试:
git clone --recursive https://github.com/NVlabs/SpatialClaw.git
cd SpatialClaw
bash spatial_agent/scripts/setup.sh
cp .env.example .env # add API keys, or self-host vLLM
python -m spatial_agent.entrypoints.run \
--dataset spatial_agent/config/dataset/erqa.json \
--model spatial_agent/config/model/gemini-3-pro.json \
--concurrency 4一个代表性子智能体单元将感知与几何组合,然后进行修正:
# Reconstruct the scene, then segment both objects in one video pass
recon = tools.Reconstruct.Reconstruct(InputImages)
seg = tools.SAM3.segment_video_by_text(["radiator heater", "door"])
show(seg.visualize(1)) # inspect the masks first
# Closest-point distance via KD-tree, not centroids
pts_h = seg.get_masked_points(recon, frame=1, object=0) # object 0 = heater
pts_d = seg.get_masked_points(recon, frame=2, object=1) # object 1 = door
dists, _ = scipy.spatial.KDTree(pts_d).query(pts_h, k=1)
ReturnAnswer(float(dists.min()))智能体从问题本身选择基本操作。距离问题调用 KD-tree 搜索和向量范数。方向问题依赖点积。没有应用特定类别的路由。
使用场景
该设计适用于需要逐步几何推理的问题。具体示例包括:
- 机器人技术和具身智能体在行动前测量物体之间的度量距离。
- 多视图检测,从多个相机角度恢复物体的朝向方向。
- 视频和 4D 分析,跨帧跟踪物体或相机运动。
- 室内场景问答,例如“门相对于水槽在哪里?”
由于无需训练,团队可以在不添加新数据或微调的情况下扩展现有的已部署 VLM。
交互式解释器
关键要点
- 代码作为行动接口:SpatialClaw 让 VLM 为每一步编写一个 Python 单元格到持久化内核中,组合和修正感知输出,而不是提交一个固定计划。
- 最先进水平,无需训练:在 20 个空间基准测试上平均 59.9%,比之前的智能体 SpaceTools 高 11.2 个百分点,且没有进行基准或模型特定的调优。
- 接口就是杠杆:仅在 Gemma4-31B 上更换行动接口,准确率从 56.7(结构化工具调用)提升到 59.9,并且 52.2% 的胜利归因于代码组合。
- 几何链带来最大提升:动态 4D 和多视图任务领先提升(DSI-Bench +17.6,MindCube +15.3),这些任务中的步骤必须跨帧和视角进行组合。
- 感知是天花板:收益跨六个骨干网络(26B–397B)转移,但剩余的瓶颈是感知质量,且许可证为非商业用途。