多模态 Code Agent 评测

一、研究背景与问题

多模态的行业趋势:大语言模型代码能力评测正在从函数级单元测试走向仓库级软件工程任务。与此同时,Code Agent 链路中也开始逐渐纳入其他多模态信息【Web渲染图,手机屏幕截图】。 SWE-bench Multimodal 是这一路径上的代表工作,但其中的多模态概念主要停留在 issue 输入侧: 相关视觉元素尚未嵌入 环境观测信号 与 结果判定信号,因此并不能充分评估 Code Agent 的多模态能力。

组内工作补全:组内已有相对完整的文生文代码评测体系,也正在建设面向 搜索Agent 和 通用 Agent 的多模态评测体系。 Code Agent 利用多模态信息解决代码相关问题,这一多模态代码场景仍缺少专门的评测 Benchmark。本工作以 SWE-bench Multimodal 为起点, 补足这一部分。

真实用户需求验证:为了验证多模态 Code Agent 评测是否具有真实需求基础,我们对 CodeBuddy 原始会话数据进行了分析。在 307,000 条记录中,识别出 11,039 条确切包含图片等多模态信息的记录,占比约 3.6%,这个比例已经部分说明了目前存在的多模态 Code Agent 的实际需求,并且由于目前 CodeBuddy 等产品并不提供方便的截图工具,所以这个比例对比真实的用户需求仍可能远远被低估。

本工作在组内 Agent 评测中的位置
图 1. 组内 Agent 评测的二维图谱:代码 Agent 与多模态评测的交叉仍缺少专门任务,本工作定位于此象限。

SWE-bench Multimodal 的主要不足

问题 1 · 视觉信号未进入修复与评测环节
多模态概念主要停留在 issue 输入侧,相关视觉元素未嵌入环境观测信号与结果判定信号:GPT-4o 仅在 38.3% 实例中调用过截图工具。视觉测试占比仅 11%,其余仍为纯文本断言。
问题 2 · 仓库覆盖单一
619 个实例全部来自 JavaScript / TypeScript 前端库, 尚未覆盖 Python 绘图(matplotlib / plotly / seaborn / bokeh / altair)等视觉代码仓库。
问题 3 · 任务规模偏小
「≤ 20 行 且 ≤ 2 个文件」的小补丁就已覆盖 39.2% 的实例, 对跨文件、跨模块修改的考察不足。

二、本工作的目标

本工作旨在构建一个面向视觉类代码缺陷的仓库级修复基准。

1) 总体目标

  • 任务输入:SWE-bench 以文本 issue 为主要输入,SWE-bench Multimodal 在此基础上引入图像信息。本工作沿用多模态输入设定,将图像作为视觉缺陷描述的重要组成部分。
  • 环境观测 + 反馈循环:此前调试主要依赖代码修改和日志反馈,视觉信息很少参与验证(纯代码 Terminal 环境)。本工作中,评测环境需要稳定提供截图、渲染结果、DOM 等可观察信号(Osworld 环境),使 Agent 能够在修改后观察运行时界面状态,并据此判断补丁是否逐步接近目标视觉修复。
  • 结果判定:此前工作的结果评估仍以文本测试为主。本工作在保留 F2P/P2P 测试的基础上,引入视觉评估机制,用于检查补丁是否真正修复了目标视觉缺陷。
本工作目标:视觉反馈进入复现、定位、验证与判定环节
图 2. 本工作(第三列)相对 SWE-bench、SWE-bench Multimodal 的变化:视觉信息从 issue 输入扩展到复现、调试、验证和最终判定。

2) 阶段性目标

基于 SWE-bench Multimodal,本研究计划分为两个阶段,第一阶段【8月】保证业务上可评,第二阶段【10月】做更全面的升级。我们会依次实现以下几个改进:

  1. 升级为彻底的多模态交互方式(第一阶段目标): 采用 Osworld 作为 Code Agent 运行环境,使得图像不只作为 issue 输入出现;Agent 在定位、修改和验证时,可以调用截图、渲染图、DOM 等视觉信息反馈。
  2. 任务范围扩展-v1(第一阶段目标): 任务来源从 JS / TS 前端库扩展到包含移动端任务(SWE-Bench-Mobile),囊括可视化前端中最重要的两类任务。
  3. 评测方式升级(第二阶段目标): 在保留 F2P / P2P 文本测试的同时,加入视觉验证,检查补丁是否修复 issue 描述的视觉问题。
  4. 任务范围扩展-v2(第二阶段目标): 任务来源进一步扩展,覆盖更多多模态长尾任务,扩大代码库规模,题目复杂度,并且尝试从 CodeBuddy 会话数据改造、纯文本代码修复题改造和 GitHub 公开 issue 数据合成。

三、基本方案计划

1) 评测流程

评测流程仍遵循 SWE-Bench 系列的基本流程:单个任务的评测从一个 issue 实例开始。实例中包含目标仓库版本、问题描述、和相关视觉输入;Agent 基于这些信息及运行时反馈生成补丁,评测端再在独立环境中重新执行并判定结果。

1

任务实例

固定 base commit、issue 文本、图片或其他相关多模态信息。将以上信息提供给模型,作为任务的初始输入。

2

文件修改

Agent 阅读任务材料,在同时包含文本文件和多模态文件的仓库中完成定位、修改。

3

多模态自测

初步修改完成后,模型会自己生成相关测试。在自测过程中,模型需要收集相关视觉结果,并综合多模态自测结果对之前的修改进行调整,最后提交最终补丁。

4

最终判定

评测端重新应用候选补丁,并按任务配置安装依赖、启动服务和运行评测脚本。判定过程同时检查 F2P / P2P 测试,并检查截图、DOM、渲染产物等视觉结果;两类检查均通过时,该实例计为修复成功。

2) Harness 设计

本项目借鉴 OSWorld 对环境状态、执行过程和结果判定的组织方式,但将评测对象从桌面任务转向仓库级代码修复任务: Agent 负责在给定仓库中定位缺陷并生成补丁,评测系统则统一完成环境恢复、补丁应用、测试执行、视觉结果采集与修复结果判定。

✅ 可以借鉴的设计4
  • 环境恢复与隔离

    OSWorld 强调从固定初始状态启动任务。本项目沿用这一思路,在每次评测前恢复干净环境,并区分 Agent 调试环境与最终评测环境。

  • 环境内执行

    评测系统需要在目标环境中安装依赖、启动服务并运行测试。OSWorld 的环境内执行方式可作为本项目的基础能力。

  • 配置化任务准备

    不同任务可能依赖不同文件、命令和启动方式。本项目借鉴 OSWorld 的配置化流程,使任务初始化过程可以被统一描述和复现。

  • 分阶段评测流程

    OSWorld 将任务准备、结果获取和指标计算拆成独立阶段。本项目沿用这种组织方式,以便接入不同类型的代码测试与视觉检查。

🔧 需要扩展的设计2
  • 扩展结果采集范围

    OSWorld 的结果采集主要围绕桌面文件、浏览器页面和应用状态。本项目需要覆盖仓库运行后产生的视觉结果,包括截图、DOM、SVG / PDF 文本层、控制台日志和生成文件等。

  • 扩展视觉结果判定

    除代码测试外,本项目还需要判断补丁是否修复目标视觉缺陷。评测将结合图像差异、关键区域、文本内容、元素位置和颜色等信号,给出代码测试结果与视觉修复结果。

🆕 需要新增的设计4
  • 仓库状态管理

    代码修复任务还需要管理仓库状态,包括仓库拉取、版本切换、测试补丁应用、Agent 补丁应用和结果导出。

  • 补丁执行与结果汇总

    补丁应用后,系统运行目标测试和回归测试,并记录日志、返回状态和测试结果,用于判断缺陷修复情况和潜在回归。

  • 任务运行入口

    每个任务提供固定运行方式,用于触发页面、图表或文档等目标场景,保证 Agent 调试阶段与最终评测阶段运行的是同一任务流程。

  • Agent 接入方式

    不同 Agent 可以直接输出补丁,也可以在环境中修改代码后导出补丁。评测系统将这些差异统一到补丁层面,保证最终比较对象一致。

四、数据收集

数据来源

可点击卡片查看对应数据说明与示例。
阶段一

基础数据来源

阶段二

扩展数据来源

过滤 Pipeline

图 3. 视觉相关代码修复实例的任务抽取与过滤流水线(细化阶段,仍在迭代)。

五、评估指标

代码修复指标

F2P Fail-to-Pass
补丁是否使原本失败的目标测试通过——衡量 issue 对应缺陷是否被修复。
P2P Pass-to-Pass
补丁是否保持原本通过的测试仍通过——衡量是否引入回归。

视觉评估指标

CLIP Similarity
衡量修复结果与参考结果在整体视觉效果上的接近程度。
Block-Match
检查关键视觉区域 / 组件是否正确,并发现元素缺失、冗余、错位等问题。
Text Similarity
检查页面 / 图表 / SVG / PDF / 渲染图中的文本内容是否正确。
Position Similarity
检查关键元素的相对位置、对齐、大小、间距和遮挡关系。
Color Similarity
检查颜色、透明度等样式属性是否正确。

六、参考资料

  1. 论文整理:SWE-Bench Multimodal Related Works
  2. [2410.03859] SWE-bench Multimodal: Do AI Systems Generalize to Visual Software Domains?
    关键信息
    • 规模:619 实例 × 17 个 JavaScript 仓库(Web UI / 数据可视化 / 交互地图 / 语法高亮)。
    • 任务格式:输入 = GitHub issue(文本 + ≥1 张图片)+ 仓库代码;输出 = 代码补丁。
    • 评测协议:F2P / P2P;约 89% 文本断言,约 11% 像素视觉回归(Pixelmatch + 仓库自定容差)。
    • 评测对象:SWE-agent Base / JS / M(含 5 个多模态工具:open_webpagerestart_webpageclose_webpagescreenshotopen_image);Agentless JS;RAG(BM25 检索 + 一次性生成补丁,无迭代)。
  3. [2602.09540] SWE-Bench Mobile: Can Large Language Model Agents Develop Industry-Level Mobile Applications?
    关键信息
    • 规模:50 个移动端开发任务,449 个人工校验测试用例;官网公开 leaderboard,但任务详情保持私有。
    • 任务格式:输入 = PRD + Figma 设计规格 / 参考截图 + 约 500K 行 Swift / Objective-C 生产级 iOS 代码库;输出 = unified diff patch。
    • 评测协议:hosted evaluation;使用 diff-based pytest 检查补丁结构、文件覆盖、功能入口、跨文件一致性和语义相关模式。
    • 指标:Task Success Rate(单任务全部测试通过)+ Test Pass Rate(全部测试用例通过比例)。
  4. [2403.03163] Design2Code: Benchmarking Multimodal Code Generation for Automated Front-End Engineering
    关键信息
    • 目标:多模态模型能否根据真实网页截图生成对应 HTML/CSS。
    • 指标:High-level Visual Similarity(先 inpaint 文字再算 CLIP);Low-level Element Matching:Block-Match / Text / Position / Color。
  5. [2404.07972] OSWorld: Benchmarking Multimodal Agents for Open-Ended Tasks in Real Computer Environments
    关键信息
    • 规模:369 个 Ubuntu 桌面任务;公开数据按应用分类组织,其中 vs_code 类别包含 23 条任务。
    • 任务格式:输入 = 自然语言指令 + 虚拟机初始状态配置;执行 = GUI / CLI / 截图 / 无障碍树交互;输出 = 最终桌面环境状态。
    • 代码相关样本:优先筛选 VS Code 文件编辑、编辑器设置、快捷键配置、工程目录打开、终端与编辑器焦点切换等任务。
    • 评测协议:由执行式脚本读取文件、应用配置或系统状态,例如 compare_text_file、配置检查、命令行结果检查。
    • 本项目定位:不把 OSWorld 整体作为代码修复数据集,而是抽取代码相关 GUI 原始任务,用于补充环境操作和视觉状态判断能力。
  6. 工业级 Code Agent 多模态脚手架调研

    当前工业级 Code Agent 的多模态能力差异较大。OpenHands 支持多模态工具扩展,Cursor 提供浏览器视觉观测, Claude / Anthropic 可通过 Vision、Computer Use、MCP 和 SDK 接入多模态能力;Codex 与 GitHub Copilot 的公开接口中,暂未看到稳定的环境侧视觉观测与交互协议。

    Code Agent 框架 原生多模态 原生多模态方式 支持扩展 扩展方式
    Cursor Browser tool 原生支持浏览器截图反馈;含 Screenshot / Navigate / Click / Type / Scroll / Console / Network MCP
    Codex 未见明确 未查到 image / screenshot / vision / browser 原生 tool 不明确 未查到 MCP / 自定义多模态 tool
    Claude Code 部分是 Anthropic Vision / Computer Use / Desktop:图片理解、截图、visual diff MCP、Claude Agent SDK、Playwright MCP
    GitHub Copilot 未见统一原生 未查到 image / screenshot / vision / browser 原生 tool MCP、GitHub MCP Server、agent skills、extensions
    OpenHands Image Input、BrowserToolSet、Browser Session Recording 等 Custom Tools、MCP、SDK、sandbox、browser-use、headless