Command Palette
Search for a command to run...
SpatialClaw:重新思考智能体空间推理的动作接口
SpatialClaw:重新思考智能体空间推理的动作接口
摘要
空间推理能力,即确定物体位置、相互关系及在三维空间中运动状态的能力,仍然是视觉-语言模型(VLMs)面临的一项根本性挑战。工具增强型智能体(Tool-augmented agents)试图通过将专用感知模块引入 VLMs 来解决这一问题,但其有效性受限于调用这些工具的动作接口(action interface)。在本研究中,我们探讨了该接口的设计如何影响智能体进行开放式空间推理的能力。现有的空间推理智能体通常采用单次代码执行(single-pass code execution),即在观察到任何中间结果之前就确定完整的分析策略;或者依赖结构化的工具调用接口,这种接口在自由组合操作或针对特定任务定制分析方面往往缺乏灵活性。这两种设计在为开放式、复杂的三维/四维空间推理提供灵活性方面均显不足。因此,我们提出了 SpatialClaw,这是一种无需训练的、以代码作为动作接口的空间推理框架。
一句话总结
这项工作提出了 SpatialClaw,一种无需训练的框架,用于视觉语言模型,采用代码作为动作接口,以支持自由组合操作,并解决开放、复杂 3D 和 4D 空间推理中单次代码执行和结构化工具调用接口的灵活性限制。
核心贡献
- 这项工作引入了 SpatialClaw,一种用于空间推理的无需训练框架,采用代码作为动作接口以支持开放式的 3D/4D 空间推理。该设计使 agents 能够根据中间执行结果逐轮编写代码,而不是事先承诺完整的程序。
- 该研究通过对替代动作接口的受控比较和轨迹级分析,贡献了特定领域的设计选择。这些评估确定了代码动作接口何时有帮助,并确定哪些空间分析模式驱动了性能提升。
- 该框架未向主干视觉语言模型添加任何参数,允许现有模型在不增加训练数据或微调的情况下扩展更强的空间推理能力。此配置可跨主干和基准测试进行迁移而无需修改,以提高部署的视觉语言模型的实用价值。
引言
空间推理仍然是视觉语言模型的根本挑战,因为它们难以仅凭原始像素组合深度和运动等几何证据。先前的工具增强 agents 受限于动作接口,这些接口要么在观察中间结果之前承诺完整的分析策略,要么通过刚性结构化命令限制灵活性。作者引入了 SpatialClaw,一种无需训练的框架,将代码视为状态化 Python 内核内的动作接口。该设计使 agent 能够根据先前输出为每一步编写可执行单元格,允许感知结果的灵活组合以及对复杂 3D 和 4D 任务的动态适应。在 20 个基准测试中,该系统在无需特定模型微调的情况下实现了显著的准确率提升。
数据集
- 作者调整所有输入图像的大小,使长边不超过 768 像素,同时保持原始宽高比,以限制每帧 token 成本。
- agent VLM 最多接收 32 帧作为视觉上下文,较长的视频输入以均匀时间间隔采样以生成 32 个关键帧。
- 多图像输入被截断为序列中的前 32 张图像。
- 持久内核保留完整的采样帧序列,允许任何帧通过 show() 在后续步骤中重新访问或转发给感知工具。
- 包含多个视频的样本将每个视频保持为独立的帧序列,使 agent 能够独立分析和比较它们。
方法
作者提出了 SpatialClaw,一种无需训练的 agent 框架,旨在通过用持久的多轮 Python 内核替换单次代码执行和结构化工具调用接口来增强空间推理能力。该设计允许 agent 将感知输出与数值原语组合,检查中间状态,并在多个步骤中修订分析。系统的核心是围绕状态化执行环境包装的迭代 agent 循环。
参考下图中的框架图,了解控制 agent 行为的五阶段循环的整体架构。
过程始于规划,其中单独的 LLM 会话根据问题和工具文档生成分析计划,无需查看输入图像。然后该计划传递给主要 agent 进行代码生成,模型在此生成实现下一个分析动作的 Python 单元格。该代码在持久内核中执行,该内核在执行步骤之间维护共享程序状态。内核预加载了输入帧、元数据以及一系列原语,涵盖感知模块(例如深度估计、分割)和科学库(例如 NumPy, SciPy)。
执行后,系统执行反馈组装,将标准输出、变量摘要和任何渲染图像编译到下一轮的上下文中。如果 agent 尚未通过 ReturnAnswer() 函数提交有效答案,循环将迭代回代码生成。这种迭代结构使 agent 能够将空间结论视为必须与多个证据源交叉检查的主张。
这种持久、迭代方法的优势在不同动作接口的比较中得以说明。虽然单次代码要求 agent 在不观察中间结果的情况下承诺完整策略,且结构化工具调用将每一步限制为单个命名调用,但 SpatialClaw 允许灵活组合和修订。
参考下图,其中演示了 agent 如何通过中间验证识别和纠正错误。
在所示示例中,agent 最初尝试使用源自中值计算的重心来计算距离。收到执行反馈表明该方法不适合寻找最近点后,agent 在下一轮中修订其策略以利用 scipy.spatial.KDTree。这种检查中间掩码、深度图或数值摘要并随后细化代码的能力,使系统能够通过组合和中间验证泛化到新问题,而不是依赖静态工具定义。内核公开了特定入口点,如用于 3D 几何的 tools.Reconstruct 和用于分割的 tools.SAM3,确保所有中间结果作为普通 Python 变量在后续步骤中保持可访问。
实验
SpatialClaw 在 20 个空间推理基准测试和六个视觉语言模型主干上进行了评估,以将其基于代码的动作接口与结构化工具调用和单次代码替代方案进行比较。结果表明,该设计始终优于基线,特别是在需要多步几何组合的任务中,同时在无需特定调整的情况下跨模型泛化。进一步分析确认 agent 自发地根据问题类型调整工具使用,即使在没有预定义实用函数的情况下也保持可比性能,表明动作接口本身驱动了性能提升而不是模型容量。
作者进行了一项消融研究,以确定实用函数和感知工具对 SpatialClaw 性能的贡献。结果表明,移除预定义的实用函数对性能影响最小,表明基于代码的接口允许模型用即时数值计算替代这些函数。相反,移除感知工具导致性能显著下降,尽管剩余的动作接口仍优于没有任何工具的基线。移除实用函数产生的性能与完整模型相当,证明了基于代码的动作接口的灵活性。完整模型变体在所有评估的推理类别中取得了最佳总体结果。消除感知工具导致准确率明显下降,但系统仍优于无工具基线。
作者将 SpatialClaw 与 Single-pass Code 和 Structured tool-call 接口在十三个空间推理元类别上进行了评估。结果表明,SpatialClaw 在大多数类别中对两个基线均确立了净优势,最显著的性能提升出现在需要跨帧或视角进行链式几何计算的任务中。SpatialClaw 在相机运动和多点视角推理任务中表现出优于 Single-pass Code 的性能。该模型对 Structured tool-call 保持一致的获胜幅度,验证了其代码即动作接口的灵活性。在空间规划和大小估计等类别中,性能提升最小或略为负面,其中感知质量可能是限制因素。
作者将 SpatialClaw 与无工具基线在六个不同的视觉语言模型主干和二十个空间推理基准测试上进行了评估。结果表明,SpatialClaw 在所有模型尺寸上始终优于基线,在需要复杂几何计算的多视角和视频空间推理任务中观察到特别显著的提升。SpatialClaw 在所有评估的主干模型上显示出对无工具基线的一致性能提升,参数范围从 26B 到 397B。该方法在视频空间和多点视角推理类别中实现了最显著的提升,这些类别受益于迭代多步几何计算。动作接口设计有效泛化,无需特定模型调整或预定义实用工具。
作者将提出的方法 SpatialClaw 与三个现有的空间 agents 进行了比较:VADAR、pySpatial 和 SpaceTools Toolshed。结果表明,SpatialClaw 在多样化的基准测试集中始终优于所有基线,在每个类别中均实现了最高准确率。虽然 SpaceTools Toolshed 通常排名第二,但与其余方法相比,VADAR 在支持视频或多图像输入方面显示出局限性。SpatialClaw 在所有评估的基准类别中实现了最高的性能分数。SpaceTools Toolshed 通常优于像 VADAR 和 pySpatial 这样的单次代码基线,但不及 SpatialClaw。VADAR 不支持视频或多图像推理任务,导致这些特定基准测试的性能数据缺失。
热力图说明了 agent 如何根据特定空间推理任务调整其工具使用。它揭示了明显的专业化,其中与距离相关的任务依赖空间索引和范数,而方向任务利用点积,表明 agent 根据问题语义选择适当的几何原语,而无需硬编码路由。基于方向的任务主要依赖点积和角度计算。距离估计任务大量利用空间索引和向量范数操作。agent 根据任务语义自发组合工具,而无需特定类别的提示工程。
评估通过消融研究以及在不同空间推理基准测试上与各种基线和主干的比较来评估 SpatialClaw。结果表明,基于代码的动作接口通过允许模型替代实用函数提供了显著的灵活性,而感知工具对于最佳性能仍然至关重要。SpatialClaw 在不同模型尺寸上始终优于竞争 agents,特别是在需要链式几何计算的任务中,并展示了根据问题语义自发组合工具的能力。