多模态大模型在代码生成与理解方面取得了显著进展,但其在基础视觉任务上的表现却时常不尽如人意。针对这一短板,UniPat AI 提出了一个极简的视觉智能体框架——SWE-Vision。该框架的核心思想是让模型能够编写并执行 Python 代码,以此处理和验证自身的视觉判断。在五个主流视觉基准测试中,SWE-Vision 均取得了当前最优的性能。
01|模型看得见,却难以精确处理
过去一年,多模态大模型在代码能力上突飞猛进,已能完成复杂的项目搭建与调试。然而,在“理解视觉世界”这一基础任务上,其可靠性远未达到同等水平。UniPat AI 此前发布的多模态基准测试 BabyVision 便揭示了这一现象:模型常常能给出看似合理的推理,却在基础的计量、计数和空间关系判断上频频出错。
BabyVision 基准已被多个近期发布的重要模型纳入评测体系,体现了社区对此问题的广泛关注。分析其中的错误案例,可以发现一个关键问题:模型能够感知,却无法进行精确的量化处理。
- 图表阅读:模型能感知到“大约 75%”,但无法精确计算具体比值。
- 复杂场景计数:模型可能识别了所有物体,但在逐一清点时出错。
- 空间关系描述:模型能给出定性判断(如“左边”),但难以稳定进行距离计算和几何推理。
面对这类问题,人类通常会借助工具,如画辅助线、做标记或进行计算。这引发了一个关键猜想:既然模型极其擅长编程,能否让它用代码——这个它最熟悉的工具——来弥补视觉处理中的精度短板?
SWE-Vision 正是对这一猜想的系统性验证。

其效果显著:在涵盖基础感知、图表推理、数学问题、空间理解及复杂多步骤视觉挑战的五个基准测试中,SWE-Vision 均提升了前沿大模型的表现,并取得了最先进的结果。
02|SWE-Vision 是什么:一个「极简视觉智能体」
SWE-Vision 的设计理念是极简化,它并未引入大量专用视觉工具,而是将能力集中于核心两点。
2.1 工具层:仅保留两个核心工具
在配置中,模型可调用的工具只有两个:
* execute_code:让模型在一个状态持久化的 Jupyter 环境中执行 Python 代码。
* finish:当模型确信答案正确时,输出最终结果。
关键在于,工具接口本身非常小且通用。SWE-Vision 没有预设一堆专用视觉 API,而是只暴露一个模型本就熟悉的动作:编写 Python 代码。
2.2 控制层:一个标准的智能体循环
智能体实现了完整的工作循环:将用户问题和图片组织成消息,调用支持工具使用的模型接口;若模型发起 execute_code,则将代码送至 Notebook 内核执行;再将执行结果作为工具消息返回给模型;模型据此决定继续调用工具还是输出最终答案。框架默认支持自动工具选择,并可开启推理模式,允许进行多轮迭代分析。
2.3 执行层:Docker 中的持久化 Jupyter 内核
执行层并非简单地执行一段代码,而是在 Docker 容器中启动一个持久的 Jupyter 内核。宿主通过客户端连接此内核,并收集执行结果。内核状态是持久化的,变量、导入的模块、图像对象和中间结果都能在多次代码调用间保留。同时,代码运行在隔离的 Docker 环境中,确保了安全性与可复现性。
简而言之,SWE-Vision 不强迫模型对每个问题都编写代码,但为它提供了一个随时可用且熟悉的“视觉计算实验室”。
03|工作流:从看图推理到带图循环验证
SWE-Vision 的工作流程类似于一个会看图的数据科学家:
- 输入:用户提供问题与图片。
- 思考:模型先判断问题能否直接回答,是否需要计算或验证。
- 执行:若需要,则调用
execute_code,在 Notebook 中使用 PIL、NumPy、Matplotlib 等库进行分析。 - 反馈:代码执行结果(数值、错误信息或生成的可视化图表)回流给模型。
- 迭代:模型基于反馈继续分析,直至调用
finish给出最终答案。

其关键设计包括:
* 有状态的执行环境:变量、导入、加载的图片可跨多次调用保留。
* Docker 沙箱:提供安全、可控且可复现的执行环境。
* 图像输入与输出:模型不仅能读取输入图像,还能将自己生成的可视化结果回传给自身进行验证,这是实现自我纠错的关键。
* 标准工具调用接口:保证了与主流模型的开箱即用兼容性。
这套设计的价值在于,允许模型像真正的科学家一样,先做实验,再下结论。
04|为何有状态的 Notebook 比一次性代码执行器更关键
表面上看,SWE-Vision 似乎只是为视觉语言模型(VLM)增加了一个 Python 工具。但真正的差异在于 “有状态”。
在 SWE-Vision 中,内核状态在多次调用间得以保留。这意味着模型可以像人类分析师一样进行分步工作:第一轮读取图像、检查尺寸;第二轮裁剪局部、观察边缘;第三轮统计颜色或测量距离;第四轮绘制辅助线进行确认;最后再生成答案。
如果每次代码执行都是无状态的,这种多步分析会变得非常笨重:每一步都需要重新导入库、加载图片、重建变量。SWE-Vision 通过持久化内核,将“多轮工具调用”转变为“同一个 Notebook 会话中的连续实验”。从工程实现上看,这也是它能处理图表测量、空间关系和复杂多步视觉任务,而不仅限于一次性OCR或检测的原因。
05|核心能力:验证自身的视觉判断
在 SWE-Vision 处理“观察科学图表、总结规律”的任务中,可以看到一种独特的行为模式。例如,在下图所示的科研图表分析任务中,要求模型判断在某个特定条件下,哪张子图中两条曲线间的差距最大。

SWE-Vision 智能体展现了一套严谨且可解释的解决方案。首先,它排除了不含红色虚线的子图(d);随后,在 Quarters = 15 的位置为每张候选子图精确绘制辅助线,定位红线与黑线的交点;接着,通过执行代码精确计算两条曲线在该位置的数值差;最终基于计算结果给出正确答案。
这种“先结构化分析、再程序化测量、最后数值验证”的思维与行动闭环,与传统视觉语言模型依赖直觉式“目视观察”直接给出答案的方式形成鲜明对比。它不仅显著提升了结果的可靠性与可解释性,也展现出更高的能力上限与更强的泛化潜力。

06|为什么极简设计反而更强
SWE-Vision 的一个重要结论是:对于视觉任务,为前沿多模态模型引入通用代码工具,是提升其视觉能力的一个有效的测试时扩展方向。
其有效性恰恰源于设计的极简性:
- 工具数量少,决策边界清晰。
- 工具语义与模型已有能力高度一致。
- 支持多轮迭代和状态积累。
- 中间结果可被再次观察,而非一次性返回文本。
- 不绑定特定基准测试的专用手工策略。
这与许多“为某类视觉任务单独设计一套工具接口”的方法不同。后者往往在特定窄任务上有效,但泛化性不足。而 SWE-Vision 的目标是提供一个尽可能通用的视觉增强框架,让模型自主决定何时调用代码、如何组织分析步骤。
07|五大基准全线提升:更加通用的“视觉能力增强器”
SWE-Vision 在五个覆盖面广泛的视觉基准上进行了评估(涵盖基础感知、图表、数学、空间、综合多步推理),其核心发现高度一致:引入代码执行能力,能系统性地提升前沿模型的视觉表现上限。
在对比实验中(同一模型基础版 vs. SWE-Vision 增强版),SWE-Vision 为两个前沿视觉语言模型(GPT-5.2,Seed-2.0)均带来了显著提升:


一个“反直觉”的发现是:提升幅度最大的,往往不是最复杂的高阶推理任务,而是最基础的感知和精确处理能力——例如 BabyVision 基准中的计数、颜色识别和空间关系判断。这类任务人类凭借直觉和简单工具即可稳定完成,而模型仅依赖“语言化视觉”则极易忽略细节、数错数量、缺乏验证手段。
SWE-Vision 的结果也揭示了另一种可能性:对于视觉理解,测试时扩展不一定只能依靠“多生成几段文字”的思维链,也可以通过“多执行几行代码”来进行更精细的观察与测量。
08|未来的发展方向:让“代码增强视觉”成为视觉智能体的原生能力
与用于训练多模态大语言模型的传统数据(通常是问题、图片、答案三元组)不同,训练视觉智能体模型需要多模态交错的智能体轨迹。它还需要一个交互式环境来支持强化学习、工具使用和评估,使模型不仅能学习回答问题,还能学习感知、行动和反思。要彻底释放“工具增强视觉”的潜力,模型需要更多深度交织的视觉-编程监督微调/强化学习数据与环境,以学会感知、行动和反思。
具体而言,下一步的关键方向包括:
- 判断时机:学会识别何时视觉推理需要代码辅助,何时可以直接回答。
- 中间验证:在多步推理过程中主动检验中间结果的正确性。
- 失败恢复:在代码方案无效时及时跳出,切换到替代策略。
- 原生融合:让“观察”与“计算”不再是两个独立步骤,而是深度融合、一体两面。
SWE-Vision 的开源代码已在 GitHub 发布。编程辅助的精确视觉理解是一个值得社区共同探索的方向——一个数百行代码的极简框架,或许是这段旅程一个不错的起点。
关注“鲸栖”小程序,掌握最新AI资讯
本文来自网络搜集,不代表鲸林向海立场,如有侵权,联系删除。转载请注明出处:https://www.itsolotime.com/archives/25903


