Reliable handling of code diffs is central to agents that edit and refactor repositories at scale. We introduce Diff-XYZ, a compact benchmark for code-diff understanding with three supervised tasks: apply (old code $+$ diff $\rightarrow$ new code), anti-apply (new code $-$ diff $\rightarrow$ old code), and diff generation (new code $-$ old code $\rightarrow$ diff). Instances in the benchmark are triples $\langle \textit{old code}, \textit{new code}, \textit{diff} \rangle$ drawn from real commits in CommitPackFT, paired with automatic metrics and a clear evaluation protocol. We use the benchmark to do a focused empirical study of the unified diff format and run a cross-format comparison of different diff representations. Our findings reveal that different formats should be used depending on the use case and model size. For example, representing diffs in search-replace format is good for larger models in the diff generation scenario, yet not suited well for diff analysis and smaller models. The Diff-XYZ benchmark is a reusable foundation for assessing and improving diff handling in LLMs that can aid future development of diff formats and models editing code. The dataset is published on HuggingFace Hub: https://huggingface.co/datasets/JetBrains-Research/diff-xyz.
- ID статьи: 2510.12487
- Название: Diff-XYZ: A Benchmark for Evaluating Diff Understanding
- Авторы: Евгений Глухов, Микеле Конти, Егор Богомолов, Ярослав Голубев, Александр Беззубов (JetBrains Research)
- Категория: cs.SE (Программная инженерия), cs.LG (Машинное обучение)
- Конференция: 39-я конференция по нейронным системам обработки информации (NeurIPS 2025) Семинар: Deep Learning for Code in the Agentic Era
- Ссылка на статью: https://arxiv.org/abs/2510.12487
В данной работе предложен бенчмарк Diff-XYZ для оценки способности больших языковых моделей понимать различия в коде (diff). Бенчмарк включает три задачи контролируемого обучения: apply (старый код + diff → новый код), anti-apply (новый код - diff → старый код) и генерация diff (новый код - старый код → diff). Данные бенчмарка получены из реальных коммитов в CommitPackFT и содержат 1000 экземпляров троек ⟨старый код, новый код, diff⟩. Исследование показало, что различные форматы diff следует выбирать в зависимости от сценария использования и размера модели, что обеспечивает важную основу для развития будущих моделей редактирования кода.
Современные агенты редактирования кода требуют надежной обработки различий в коде при масштабном редактировании репозиториев и рефакторинге, однако существующие методы оценки имеют следующие недостатки:
- Отсутствие систематического исследования выбора формата: Хотя существуют различные форматы представления diff (unified diff, search-replace и др.), отсутствует систематическое сравнение форматов
- Сложность оценки: Существующие сквозные бенчмарки (такие как SWE-bench) объединяют множество факторов (поиск, использование инструментов и т.д.), что затрудняет изоляцию влияния формата diff
- Разнообразие режимов отказа: Патчи могут не применяться из-за синтаксических ошибок, несовпадения контекста или логических ошибок, требуя более детального анализа
- Практическая ценность: Обработка diff кода является основной способностью для автоматизированного редактирования кода, исправления ошибок, исправления сборок CI и других задач
- Теоретическое значение: Понимание того, как LLM обрабатывают структурированную информацию об редактировании, имеет важное значение для улучшения моделей генерации кода
- Инженерная ценность: Предоставляет рекомендации, основанные на данных, для выбора подходящего формата diff
- Предложение бенчмарка Diff-XYZ: Легкая, воспроизводимая структура оценки с тремя взаимодополняющими задачами
- Систематическое сравнение форматов: Первое контролируемое сравнение нескольких форматов представления diff
- Установление базовых показателей производительности: Подробные базовые показатели производительности для собственных и открытых моделей в задачах понимания diff
- Руководство по выбору формата: Выявлены связи между размером модели, типом задачи и оптимальным выбором формата
- Открытый набор данных: Высококачественный набор данных для оценки опубликован на HuggingFace Hub
На основе уравнения diff = новый код - старый код определены три задачи:
X. Задача Apply (Применение)
- Входные данные: Старый код + diff
- Выходные данные: Новый код
- Цель: Тестирование соответствия формату и точности на уровне символов
Y. Задача Anti-Apply (Обратное применение)
- Входные данные: Новый код + diff
- Выходные данные: Старый код
- Цель: Проверка обратимости формата и отсутствия потерь информации
Z. Задача Diff Generation (Генерация различий)
- Входные данные: Старый код + новый код
- Выходные данные: diff
- Цель: Тестирование надежной способности синтеза diff
Источник данных: Реальные коммиты открытого исходного кода из набора данных CommitPackFT
Стратегия фильтрации:
- Сохранены только коммиты с изменениями в одном файле
- Исключены бинарные файлы, сгенерированный код, каталоги поставщиков
- Ограничение по количеству строк в файле: 40-1000 строк
- Исключены изменения только пробельных символов
Стратифицированная выборка:
- Распределение по языкам: Python, JavaScript, Java, Kotlin, Rust по 200 образцов каждый
- Сложность редактирования: Стратификация по количеству блоков изменений и размеру изменений
- Малые редактирования: ≤7 строк изменений (40%)
- Средние редактирования: 8-24 строк изменений (40%)
- Большие редактирования: >24 строк изменений (20%)
- Типы изменений: 81,5% содержат добавления и удаления, 16,3% только добавления, 2,2% только удаления
Задачи Apply и Anti-Apply:
- Stripped Exact Match (EM): Точное совпадение после удаления пустых строк
- Stripped Intersection over Union (IoU): Пересечение над объединением на уровне строк
Задача Diff Generation:
- Parsing Rate: Доля анализируемых diff
- Applying Rate: Доля успешно применяемых diff
- EM/IoU после применения: Точное совпадение и IoU после применения diff
- F1+ / F1-: F1-оценка для добавленных и удаленных строк
- Взаимодополняющий дизайн задач: Три задачи всесторонне оценивают способность понимания diff с разных углов
- Контролируемые экспериментальные переменные: Точное измерение влияния формата путем фиксирования изменений контекста
- Данные из реальных источников: Основано на реальных коммитах, а не на синтетических данных, обеспечивая экологическую валидность
- Многомерная оценка: Объединяет синтаксическую корректность, успешность применения и семантическую корректность
- udiff: Стандартный формат unified diff
- udiff-h: Unified diff с ослабленными заголовками блоков
- udiff-l: Unified diff с явными метками (ADD/DEL/CON)
- search-replace: Формат поиска и замены
Собственные модели:
- GPT-4o, GPT-4o-mini
- GPT-4.1, GPT-4.1-mini, GPT-4.1-nano
- Claude 4 Sonnet
- Gemini 2.5 Flash
Открытые модели:
- Серия Qwen2.5-Coder (0.5B-32B)
- без формата: Общая подсказка помощника
- с форматом: Системная подсказка с описанием формата
Производительность собственных моделей:
- Claude 4 Sonnet показывает лучший результат в задаче Apply (EM: 0.95-0.96)
- GPT-4.1 демонстрирует сильную производительность во всех задачах, но чувствителен к подсказкам
- Меньшие собственные модели (такие как GPT-4.1-nano) значительно снижают производительность на сложных задачах
Закономерности масштабирования открытых моделей:
- Производительность явно улучшается с размером модели
- Qwen2.5-Coder-32B приближается к уровню GPT-4o в задачах Apply/Anti-Apply
- Однако остается значительный разрыв в задаче Diff Generation
Ключевые выводы:
- Зависимость от задачи:
- Apply/Anti-Apply: Формат udiff показывает лучший результат
- Diff Generation: search-replace более оптимален для больших моделей
- Эффект размера модели:
- Большие модели: search-replace выделяется в задачах генерации
- Малые модели: udiff-l (с явными метками) показывает лучший результат
- Анализ характеристик формата:
- Преимущества search-replace: Избегает глобальных ограничений, локальные редактирования независимы
- Недостатки udiff-h: Удаление номеров строк приводит к структурному беспорядку
- Преимущества udiff-l: Явные метки снижают конфликты маркировки
Влияние подсказок:
- Задача Diff Generation высокочувствительна к описанию формата
- GPT-4.1 без описания формата склонен выводить формат V4A
- Задача Apply относительно устойчива к изменениям подсказок
Различия между языками:
- Производительность относительно согласована на пяти языках программирования
- Немного лучше на Python и JavaScript
- HumanEval/MBPP: Генерация кода на уровне функций
- BigCodeBench: Задачи со сложными вызовами библиотек
- Ограничения: Сосредоточены в основном на генерации с нуля, не затрагивают представления редактирования
- SWE-bench: Решение реальных проблем GitHub
- CodeEditorBench: Редактирование с соблюдением инструкций
- Ограничения: Сквозная оценка затрудняет изоляцию влияния формата
- Дополнительность: Сосредоточена на изолированном исследовании представления редактирования
- Легкость: Не требует настройки репозитория или среды выполнения
- Контролируемость: Фиксирует контекст задачи, варьирует формат представления
- Выбор формата критически важен: Различные форматы показывают значительные различия в производительности в зависимости от задачи и размера модели
- Специфичность задачи: Задачи генерации и применения требуют различных оптимальных форматов
- Зависимость от размера: Оптимальные стратегии для малых и больших моделей различаются
- Практический разрыв: Открытые модели все еще имеют значительное пространство для улучшения в генерации diff
- Упрощение задач: Задачи бенчмарка являются упрощенным прокси для нижестоящих приложений
- Область оценки: Рассматривается только жадное декодирование, не затрагиваются рассуждения или использование инструментов
- Охват форматов: Не охватывает форматы на уровне AST или структурированные форматы патчей
- Связь с нижестоящими приложениями: Отсутствует количественная связь между производительностью бенчмарка и эффективностью реальных приложений
- Расширение форматов: Исследование представлений редактирования на уровне деревьев и AST
- Связь с нижестоящими приложениями: Установление связи между производительностью бенчмарка и эффектом реальных приложений
- Способность рассуждения: Оценка многошаговых рассуждений и сценариев использования инструментов
- Восстановление после ошибок: Исследование обработки частичных или поврежденных diff
- Четкое определение проблемы: Точное выявление понимания diff как основной, но упускаемой из виду способности
- Строгий дизайн экспериментов: Научный и надежный метод сравнения форматов с контролем переменных
- Высокое качество данных: Основано на реальных коммитах, стратифицированная выборка обеспечивает репрезентативность
- Ценные выводы: Рекомендации по выбору формата имеют прямую практическую ценность
- Высокая воспроизводимость: Подробная экспериментальная установка и открытый набор данных
- Ограниченная теоретическая глубина: Теоретический анализ механизмов различий форматов недостаточно глубок
- Однозначные измерения оценки: Сосредоточена в основном на корректности, не учитывает эффективность и читаемость
- Неполное охватывание моделей: Открытые модели в основном сосредоточены на серии Qwen
- Ограниченные сценарии приложений: Не рассматриваются интерактивное редактирование и сценарии пошагового обновления
- Академическая ценность: Заполняет важный пробел в оценке редактирования кода, может стимулировать последующие исследования
- Инженерная ценность: Предоставляет поддержку данных для выбора формата diff в промышленности
- Вклад в сообщество: Открытый бенчмарк и набор данных принесут пользу всему исследовательскому сообществу
- Потенциал стандартизации: Может стать стандартным бенчмарком для оценки способности редактирования кода
- Разработка моделей: Оценка и улучшение способности моделей редактирования кода
- Проектирование форматов: Проверка эффективности новых форматов diff
- Выбор инструментов: Выбор стратегии формата для инструментов редактирования кода
- Основа исследования: Тестирование базовых способностей для сложных задач редактирования кода
Статья цитирует 31 связанную работу, включая в основном:
- Бенчмарки генерации кода: HumanEval, MBPP, BigCodeBench и др.
- Оценка редактирования: SWE-bench, CodeEditorBench и др.
- Технические отчеты моделей: GPT-4o, Claude, Qwen2.5-Coder и др.
- Инструменты и форматы: Aider, GNU diffutils и др.
Общая оценка: Это высококачественная систематическая исследовательская работа, которая точно выявляет и решает важные проблемы в области редактирования кода. Хотя теоретическая глубина несколько ограничена, практическая ценность и вклад методологии значительны, что имеет важное значение для продвижения развития технологии редактирования кода.