SpatialClaw:把遥感 VLM 的空间推理改成可执行代码

SpatialClaw:把遥感 VLM 的空间推理改成可执行代码

结论:这一轮最值得单独深挖的是 SpatialClaw: Rethinking Action Interface for Agentic Spatial Reasoning。它不是遥感原生论文,也没有在卫星影像 benchmark 上报告结果;但它给遥感 VLM 一个很直接的启发:空间推理不应只靠一次性文本回答,也不应只靠固定 schema 的工具调用,而应该让模型在一个有状态 Python kernel 里逐步写代码、调用感知工具、查看中间证据、修改分析路径,最后再提交答案。对大幅遥感影像、矢量图层、DEM、时间序列和 GIS 证据链来说,这个“代码即动作接口”的设定比普通 VQA prompt 更接近真实工作流。

我按 2026-06-13 23:00 +08 检索公开来源,过滤 SAR、PolSAR、InSAR、radar-only、microwave-only 和 SAR-optical fusion 主线。本篇选择 2026-06-11 提交 arXiv 的 SpatialClaw。论文和官方 GitHub 均已公开,仓库说明包含 agent runtime、LangGraph workflow、persistent Jupyter kernel、AST safety check、planning/reflection loop、20 个 benchmark loader、perception tool wrappers、FastAPI GPU tool server、vLLM 发现与负载均衡、SLURM 复现实验管理。本文把它作为 CV-to-RS 迁移方向,而不是当作已有遥感 SOTA 结果引用。

这篇适合放进“遥感基础模型与多模态理解”。原因是它研究的是 VLM agent 的空间推理接口,而遥感 VLM 的很多关键失败都来自空间接口不足:模型看不清局部证据、不会把 tile 和全图坐标对齐、不会把 mask/box/polygon/DEM 统一计算、不会记录跨步骤证据,也不会把中间计算交给可验证工具。SpatialClaw 不直接解决遥感问题,但它给了一个可复用的系统骨架。

遥感 VLM 评测这两天有一个共同趋势:从“图里有什么”走向“模型如何得到答案”。SpatialSky-Bench 问 VLM 是否理解 UAV 空间导航;VLRS-Bench 问遥感 VLM 是否能跨 RGB、DSM、NIR 等输入做多任务推理;UltraVR 把超高分辨率 VQA 拆成证据定位、局部感知、计数、整合和最终决策;TerraBench 则把地球科学任务放进可执行工具链。它们都指向同一件事:遥感 AI 的瓶颈不只是视觉 encoder,而是证据访问和空间计算过程。

传统 VLM 的交互方式太薄。给一张图、一个问题,让模型直接输出答案,适合测试粗粒度识别,但不适合大幅遥感场景。一个 8000 像素航空图里,问题可能涉及左上角港口、右下角桥梁、中心城区道路密度和周边水体边界。模型如果只看缩略图,小目标会丢;如果切成 tile,又要知道 tile 坐标、重叠区域、目标去重和跨 tile 关系;如果还有矢量边界或地形栅格,还要做投影、叠加、统计和单位换算。一次性回答很难可靠完成这些步骤。

固定工具调用接口也不够。很多 agent 框架把工具设计成 detect_objectsegmentmeasure_distancequery_map 这类函数,模型按 schema 调用。问题是空间推理经常需要临时组合操作:先分割水体,再用行政区 polygon 裁剪,再统计边界附近 200 米缓冲区里的建筑,再排除云影区域,再画图检查结果。若工具接口过窄,模型就只能在预设动作里选;若接口过宽,又容易把参数传错、坐标弄错、重复计算。

SpatialClaw 的问题意识就在这里。它认为 spatial agent 的能力被 action interface 限制。单次代码执行会在看到中间结果前就把整套分析写死;固定工具调用又缺少灵活组合能力。于是它把动作接口改成“逐步写 Python cell”:模型每一步都能根据上一步 stdout、新变量和可视化结果继续调整,就像研究者在 notebook 里分析空间数据。

这对遥感很有启发。遥感工作本来就是 notebook/脚本驱动的:读影像、重投影、裁剪、分块、运行模型、合并 mask、矢量化、叠加 GIS 图层、计算面积和距离、出图、审查异常。VLM 如果要成为遥感分析 agent,最自然的接口不是让它凭空描述图像,而是让它在受控环境里写可审计代码,调用遥感和 GIS 工具,并留下每一步 artifact。

SpatialClaw 是 training-free framework。它不训练新的 VLM,也不为每个 benchmark 调专门 prompt;核心改变是运行时接口。系统维护一个有状态 Python kernel,预加载输入帧、感知模块、几何工具和科学计算库。VLM 每一步写一个 Python cell,cell 经过 AST safety check 后执行,执行结果再返回给模型作为下一步观察。

仓库 README 把流程概括为五阶段循环:planner 先起草策略,main VLM 逐步写代码,系统检查并执行 cell,stdout、新变量和 show() 图像作为 observation 返回,模型继续分析,直到调用 ReturnAnswer(...) 提交答案。这个循环的关键不是“模型会写代码”本身,而是代码成为可组合的空间操作界面:模型可以把分割结果、深度估计、几何计算、数组统计和可视化检查放在同一个状态里。

SpatialClaw 的工具栈面向通用 3D/4D 空间推理。官方 README 提到 perception primitives 包括 SAM3 segmentation、Depth-Anything-3 reconstruction、geometry utilities,以及 NumPy、SciPy、Matplotlib 等科学计算库。运行时还包括三类服务:vLLM backbone、GPU perception-tool server 和 agent-side Jupyter kernels。对于大规模实验,它支持 vLLM 自动发现与负载均衡、FastAPI 工具服务和 SLURM launch managers。

迁移到遥感时,工具清单应替换成遥感/GIS primitives。最小版可以包括:读取 GeoTIFF/COG、查看 CRS 和 transform、按经纬度或投影坐标裁剪 tile、调用分割/检测/VLM 模型、把 mask polygonize、用 Shapely/GeoPandas 做相交/缓冲/面积/长度统计、用 rasterio/xarray 做栅格窗口读写、用 OSM 或行政边界做矢量叠加、用 Matplotlib/Folium/QGIS 风格图层输出中间图。

这里的设计重点是“有状态”。遥感 VLM 的很多错误来自没有持久证据状态:第一步找到的建筑,在第二步计数时被重复;一个 tile 的局部坐标没有转回全图坐标;模型看到的 crop 不能和最终地图定位对应;mask 被压缩成文字后丢掉形状。SpatialClaw 式 kernel 可以让模型把 building_polygonsroad_graphwater_masktile_indexcrsuncertainty_map 这些对象保存在变量里,而不是在自然语言上下文中模糊记忆。

对遥感来说,还必须加两层约束。第一是安全约束:只允许读指定数据目录、只允许调用白名单库和工具、限制网络和文件写入、限制每步运行时间。第二是地理约束:每个空间对象都必须带 CRS、分辨率、时间戳、数据源和置信度;任何面积、距离、比例都必须记录单位。否则代码接口会把 VLM 的幻觉从文字层转移到脚本层。

SpatialClaw 原论文评测的是 20 个通用空间推理 benchmark,覆盖 single-image spatial reasoning、multi-view spatial reasoning、general spatial reasoning、video spatial & 4D reasoning 和 general video understanding。官方配置文档列出的 benchmark 包括 ERQA、Omni3D、OmniSpatial、SPBench、MindCube、MMSI、SPAR-Bench、BLINK、SpatialTree、ViewSpatial、MMSI-Video、OSI-Bench、PAI-Bench、VSI-Bench-U、VSTI-Bench、DSI-Bench、CV-Bench、PerceptComp、Video-MME 和 Video-MME-v2。

这些 benchmark 不是遥感数据,但它们覆盖了遥感 VLM 也会遇到的能力:对象相对位置、视角变化、多帧运动、3D/4D 关系、视觉证据检索、工具辅助测量和中间结果修正。遥感迁移时,不应照搬题目,而应照搬评测结构:给 agent 一个需要多步空间计算的问题,要求它产出可执行轨迹和最终答案。

一个遥感版 benchmark 可以从四类任务构造。

第一类是超高分辨率图像空间问答。输入 DOTA、xView、FAIR1M、DIOR 或 SpaceNet 的大图和目标标注,问题包括“左上港区船只是否多于右下港区”“道路以东 100 米内是否有储罐”“两个机场跑道之间哪一个更长”“指定 polygon 内车辆密度是否超过阈值”。这类任务测试 tile 选择、局部感知、计数、距离和方向关系。

第二类是光学遥感 + GIS 矢量推理。输入 NAIP/Google-style aerial RGB 或 Sentinel-2/Landsat 光学影像,再给 OSM road/building/landuse、行政边界或 parcel。问题包括“新建建筑是否落在既有建筑 footprint 外”“某村庄 500 米缓冲区内绿地比例是多少”“道路连通性是否被洪水 mask 切断”。这类任务测试 raster-vector fusion、CRS、缓冲、相交和拓扑。

第三类是多时相变化证据链。输入 LEVIR-CD、WHU building change、SECOND、SpaceNet temporal 或 Landsat/Sentinel-2 时间序列,问题不只是“哪里变化”,而是“变化发生在哪个区域、变化类型是什么、是否影响道路/建筑/农田、面积是多少、置信度如何”。这类任务测试 temporal state、前后影像对齐、变化 mask 到语义解释的转换。

第四类是环境/农业/城市指标计算。输入 Sentinel-2/Landsat 光学产品、公开气象/人口/土地覆盖栅格和矢量边界,问题包括 NDVI 异常、城市热岛 proxy、作物物候阶段、灾后暴露人口估计、绿地可达性等。这里更接近 TerraBench,但需要把视觉证据纳入 agent 轨迹,而不是只做表格/栅格计算。

评测指标也应借鉴 SpatialClaw 的过程式思路。除了最终 accuracy 或数值误差,还要报告 tool execution success、CRS error rate、unit error rate、tile localization accuracy、evidence mask IoU、object count error、polygon validity、topology error、duplicate object rate、artifact completeness、step count、token/compute cost 和 human audit pass rate。若只看最终答案,很难知道模型是视觉看错、代码写错、参数错,还是最后推理错。

论文摘要报告,SpatialClaw 在 20 个空间推理 benchmark 上达到 59.9% average accuracy,比最近的 spatial agent 高 11.2 个百分点;增益覆盖两个模型家族、六个 VLM backbone,参数规模从 26B 到 397B,并且没有 benchmark-specific 或 model-specific adaptation。官方 README 也强调使用同一套 system prompt、tool set 和 hyperparameters。

这个结果说明一个重要点:action interface 本身可以带来明显收益。它不是换一个更大的视觉编码器,也不是为每个任务写专门工具,而是让模型把工具输出和中间证据以代码变量的方式组合。对遥感研究而言,这意味着“更好的 prompt”可能不是终点;更大的改进可能来自把遥感空间操作暴露成可执行、可检查、可回滚的接口。

迁移实验可以按最小可行版本开始。第一步,不训练任何模型,选择一个强 VLM 加一套遥感工具白名单。给它 DOTA/xView 中 100-300 个空间计数和关系问题,比较三种接口:直接 VQA、固定工具调用、SpatialClaw-style Python cell。若 Python cell 在 evidence localization、counting 和 relation accuracy 上明显更好,就说明接口设计对遥感 VLM 有独立价值。

第二步,加入视觉工具。直接 VQA 只给图;固定工具调用可以调用 detector/SAM/segmenter;代码接口可以在 cell 中组合 detector、SAM、Shapely、rasterio 和可视化。评估时不要只看最终答案,要看模型是否选择了正确 tile、是否把 bbox/mask 转成正确全图坐标、是否对重叠 tile 做去重、是否把不确定区域标出来。

第三步,加入 GIS 图层。让模型回答需要 raster-vector 叠加的问题,例如某行政区内新增建筑面积、道路缓冲区内水淹比例、农田 parcel 内 NDVI 异常面积。这里可以直接暴露 geopandas.overlayrasterio.maskpyprojshapely.buffer 等函数。关键对照是:固定工具 schema 是否足够表达任务,代码接口是否减少了参数/单位/坐标错误。

第四步,做错误归因。把失败分成六类:视觉证据错、tile/坐标错、工具参数错、空间计算错、证据整合错、最终答案错。这个分类比普通遥感 VQA 的 accuracy 更有价值,因为它能告诉我们下一步该改视觉模型、工具接口、坐标状态、代码安全检查,还是答案校准。

第一,SpatialClaw 把空间推理的接口问题讲清楚了。VLM 不只是需要更多工具,还需要一种能逐步组合工具、查看中间结果、保存状态和修正路径的动作空间。代码 cell 比固定工具 schema 更接近研究者真实分析空间数据的方式。

第二,它是 training-free。对遥感来说,这很实用:很多场景没有足够标注,也不方便重新训练大模型。先把现有 VLM、遥感基础模型、分割器、GIS 库和评测器接成 agent runtime,就能做一批有诊断价值的实验。

第三,官方实现相对完整。公开仓库不是只有 demo,而是包含 agent runtime、benchmark loaders、tool server、配置文档和复现实验管理。这让它比只有论文概念的 spatial agent 更适合作为遥感系统原型的参考。

第四,它强调中间观察。遥感大图推理最怕模型“脑补”。如果每一步都能输出图层、mask、bbox、统计表和可视化,人工和自动 verifier 就能检查模型到底看了哪里、算了什么、错在哪一步。

第五,它能和近期遥感趋势拼起来。UltraVR 给证据链诊断,TerraBench 给地球科学可执行 workflow,VecLang 给矢量地图结构化输出,SpatialClaw 给代码动作接口。四者结合,基本就是下一代遥感 VLM agent benchmark 的雏形。

第一,SpatialClaw 不是遥感论文。它的 20 个 benchmark 主要是通用图像、视频、3D/4D 空间推理,不包含遥感传感器、地理坐标、投影、超大幅影像切片、多光谱 band、云影、季节变化或空间自相关。因此本文所有遥感价值判断都是迁移推断,需要单独实验验证。

第二,代码接口提高灵活性,也提高风险。VLM 写代码可能产生隐性错误:单位错、坐标轴反了、经纬度顺序错、buffer 在地理坐标系里直接算米、mask 与影像分辨率不一致、tile overlap 重复计数。这些错误看起来比文字幻觉更“工程化”,但危害不小。

第三,工具能力会限制结果。若 SAM/Depth/Detector 在遥感小目标、阴影、密集建筑或低分辨率光学影像上失败,代码接口只能把错误组合得更复杂。遥感版 SpatialClaw 必须加入遥感专用视觉工具和质量控制,而不是只复用自然图像工具。

第四,计算成本可能较高。逐步执行 cell、生成中间图、调用多个 GPU 工具、保存 artifact,会比一次性 VQA 慢很多。对于大范围制图,必须研究 tile routing、缓存、早停、低分辨率预筛和不确定性驱动的局部放大。

第五,可复现性和安全性需要严格规范。若每个模型都能写任意代码,实验很难比较;若不给足够自由,代码接口又退化成固定工具调用。遥感 benchmark 需要定义白名单 API、资源限制、日志格式、artifact schema 和 scoring protocol。

一个可做的小论文方向是:面向遥感 VLM 的可执行空间推理接口与错误诊断 benchmark。核心问题不是让模型直接回答更多遥感问答,而是比较不同动作接口对空间证据链的影响:直接文本回答、固定工具调用、一次性脚本、逐步 Python cell,哪一种最能减少证据定位、坐标转换、计数和 GIS 叠加错误?

假设是:在大幅光学遥感图像和 GIS 图层混合任务中,SpatialClaw-style 有状态代码接口会显著提升需要测量、计数、拓扑和跨 tile 整合的问题;但如果没有 CRS/单位约束和 artifact verifier,它也会引入新的 workflow hallucination。

方法可以分三层。第一层是 runtime:一个受控 Python kernel,预加载影像数组、GeoTIFF metadata、tile index、矢量图层和白名单函数。第二层是工具:检测/分割模型、SAM/SAM2 proposal、GeoPandas/Shapely/rasterio/xarray/pyproj、可视化和基本统计。第三层是 verifier:检查 CRS、单位、polygon validity、mask shape、坐标范围、重复对象、输出 artifact 是否完整。

数据可以从最小组合开始:DOTA 或 xView 做高分辨率目标计数与关系,SpaceNet 或 WHU building 做建筑 polygon 与面积统计,LEVIR-CD 做双时相建筑变化,OpenEarthMap/LoveDA 做语义 mask,OSM/行政区边界做矢量叠加。所有任务都应明确输入、问题、可验证答案、允许工具和评分函数。

指标包括 final accuracy、numeric tolerance hit rate、evidence IoU、object count MAE、relation accuracy、CRS error rate、unit error rate、invalid geometry rate、duplicate count rate、tool failure rate、artifact completeness、平均 step 数和 GPU/时间成本。最好再做 first-error analysis:第一次错误发生在视觉、坐标、工具、空间计算、证据整合还是最终答案。

baseline 可以设四组。第一,direct VLM:给图和问题直接回答。第二,tool-call agent:只能调用固定 schema 工具。第三,single-shot code:一次写完整脚本并执行。第四,stateful code agent:逐步写 cell,观察中间结果后继续。关键 ablation 是有无 planner、有无 reflection、有无可视化返回、有无 CRS verifier、有无正确局部 crop、有无遥感专用 detector。

一个遥感版代码动作接口 prompt 可以这样写:

你是遥感空间推理 agent。你必须通过受控 Python cell 完成分析,不能直接猜答案。

每一步只写一个可执行 cell。优先保存中间变量和可视化证据。

规则:
1. 所有 raster、mask、polygon、bbox 都必须记录 CRS、transform、分辨率和数据源。
2. 面积、距离、缓冲区必须在投影坐标系中计算,并显式写出单位。
3. 大图必须先定位相关 tile,再做局部检测或分割;跨 tile 目标必须去重。
4. 对每个最终结论,必须保留支持它的 evidence artifact,例如 crop、mask、polygon、统计表或叠加图。
5. 如果视觉证据不足、工具失败或坐标不确定,必须返回不确定状态,而不是用地理常识补全。
6. 最终只能通过 ReturnAnswer(answer, evidence, uncertainty) 提交。

这个 prompt 的关键不是让模型解释得更长,而是强制它把空间推理变成可检查对象。比如模型要回答“某行政区内新增建筑面积是否超过 2 平方公里”,它必须展示前后影像、变化 mask、行政区裁剪、面积计算代码、单位转换和不确定区域。这样评审者才能判断错误来自哪里。

进一步的研究可以把 SpatialClaw 和 UltraVR 合并:UltraVR 提供 operation labels,SpatialClaw 提供可执行操作轨迹。对于遥感 VLM,问题不再只是“最终答案对不对”,而是“证据定位 cell 是否选对 tile、分割 cell 是否生成正确 mask、GIS cell 是否正确叠加、统计 cell 是否单位正确、最终答案是否由这些 artifact 支持”。这会比普通排行榜更像可发表的 benchmark 论文。

也可以和 VecLang 合并。SpatialClaw-style agent 负责从影像和工具中构造证据,VecLang/SVL 负责把最终地图对象输出成可解析矢量语言。这样一个系统可以从“看图问答”走向“生成可执行地图更新”:检测建筑变化、生成 polygon、检查拓扑、导入 PostGIS,再由 verifier 给出错误类型。

最小第一实验不需要大模型训练。选 100 个 DOTA/xView 空间计数题和 100 个 SpaceNet/WHU 建筑面积题,用同一个 VLM 比较 direct QA、tool-call 和 stateful code 三种接口。若 stateful code 明显减少 tile 漏看、重复计数和单位错误,这篇就有清晰结论;若没有提升,也能说明当前 VLM 写代码的空间操作能力不足,需要更强 verifier 或工具设计。

这篇对遥感 AI 的真正提示是:下一代遥感 VLM 可能不该只被评为“会不会回答问题”,而要被评为“会不会像一个合格的地理分析员那样组织证据”。它要能看图、切图、调模型、算几何、查矢量、画图、复核单位、保留 artifact,并在不确定时停下来。SpatialClaw 给出的不是遥感答案,而是一个值得移植的动作接口。

  • SpatialClaw: Rethinking Action Interface for Agentic Spatial Reasoning:https://arxiv.org/abs/2606.13673
  • SpatialClaw 项目页:https://spatialclaw.github.io/
  • SpatialClaw 官方 GitHub:https://github.com/NVlabs/SpatialClaw
  • SpatialClaw 配置与 benchmark 文档:https://github.com/NVlabs/SpatialClaw/blob/main/docs/configuration.md
  • UltraVR: A Diagnostic Ultra-Resolution Image-VQA Benchmark for Evidence-Grounded Reasoning:https://arxiv.org/abs/2606.05576
  • TerraBench: Can Agents Reason Over Heterogeneous Earth-System Data?:https://arxiv.org/abs/2606.13148
  • Vector Map as Language: Toward Unified Remote Sensing Vector Mapping:https://arxiv.org/abs/2606.10701

Related Content

评论