Проверка соответствия JSONL‑оснований кода Qwen Godot
Дата создания: 28 июня 2026 г.
Цель
Сгенерировать 50 фрагментов кода Godot 3 с помощью Qwen и проверить, правильно ли определяется решение «да»/«нет» так же, как в тесте соответствия JSONL‑оснований, проведённом вчера.
Этот тест не предназначен для оценки знаний модели о Godot. Он проверяет, содержит ли JSONL при совместном вводе с SOURCE_CODE реальные строки/API/шаблоны, непосредственно соответствующие коду‑фрагменту.
То есть, релевантный JSONL должен получать ответ «да», а нерелевантный — «нет».
Методика теста
Для каждого кода‑чанка прикрепляются как минимум два типа JSONL для тестирования. Однако, поскольку в Godot 3 и Godot 4 может быть общая синтаксис, одинаковая в обеих версиях, не все функции рассматриваются как специфичные только для Godot 3.
| Тип JSONL | Ожидаемый ответ | Значение |
|---|---|---|
| Корректный JSONL | да |
По крайней мере один из source_api, source_pattern, match_terms, required_when_seen_in_code, before_code в JSONL непосредственно совпадает с кодовым чанком |
| Некорректный JSONL | нет |
JSONL основан на другом API, другом узле, другой системе или только на общих терминах |
Каждый тест рассматривается как следующая группа входных данных.
JSONL
Qwen direct-evidence validator prompt
SOURCE_CODE chunkФактический запрос проверки заключается в том, чтобы при одновременной передаче JSONL + Prompt + chunk убедиться, что Qwen возвращает только да или нет.
В случае общей грамматики тест проводится на основе одного одинакового кода‑chunk. При этом правильный JSONL содержит описание или шаблон соответствующего кода/функции, а неправильный JSONL — описание совершенно другой функции или системы. Ожидаемый ответ да и нет зависит не от различий в коде, а от наличия или отсутствия прямых доказательств внутри JSONL.
Цикл повторной генерации
Общая цель — тестировать все 50 функций. Однако сегодня проверяем вручную только первые 5, а затем сокращаем работу, сначала анализируя паттерн ответов да/нет в накопленных результатах.
Сегодняшняя цель: 5
Общая цель: 50/50После заполнения пяти пунктов не увеличивая насильственно количество новых пунктов, сначала рассматриваются общие синтаксисы/различия версий/характеристики false positive и false negative для каждой таблицы.
Тестирование выполняется путем повторения нижеуказанного процесса для создания данных.
1. Дайте Qwen одну функцию Godot для тестирования.
2. Сначала укажите, является ли эта функция общим синтаксисом Godot 3/4, специфичным для Godot 3 или специфичным для Godot 4.
3. Если это общий синтаксис, создайте один блок кода.
4. Если это общий синтаксис, создайте один правильный JSONL для этой функции/кода и один неправильный JSONL для совершенно другой функции.
5. Если это не общий синтаксис, создайте отдельные JSONL для Godot 4 и для Godot 3 и протестируйте их.
6. Все JSONL должны быть сформированы в соответствии со столбцами целевой таблицы.
7. Включите JSONL + блок SOURCE_CODE в проверочный запрос и проверьте «да»/«нет».
8. Запишите, совпадают ли ожидаемый ответ и фактический ответ.Суть не в качестве генерируемого кода, а в том, насколько стабильно работает оценка сопоставления доказательств в JSONL. Поэтому правильный JSONL должен выводить 예, а неправильный JSONL — 아니오.
Общие правила синтаксиса
Синтаксис, который сохраняется одинаково в Godot 3 и Godot 4, не следует рассматривать как тест классификации версии. Например, могут существовать функции _ready(), _process(delta), базовые присваивания переменных, print(), которые используются в обеих версиях.
В таких случаях следует рассматривать их следующим образом.
| Характер кода | Способ теста | Ожидание |
|---|---|---|
| Общий синтаксис Godot 3/4 | Один и тот же блок кода тестирует JSONL функции и полностью другой JSONL функции | По наличию прямого подтверждения в JSONL должно определяться 예/아니오 |
| Специфичный синтаксис Godot 3 | На основе блока Godot 3 сравниваются JSONL только для Godot 3 и JSONL только для Godot 4 | Если в JSONL присутствует реальная строка/шаблон Godot 3, то 예 |
| Специфичный синтаксис Godot 4 | На основе блока Godot 4 сравниваются JSONL только для Godot 4 и JSONL только для Godot 3 | Если в JSONL присутствует реальная строка/шаблон Godot 4, то 예 |
| Описание функции, не зависящее от версии | Код должен иметь прямое подтверждение в content/code_blocks JSONL независимо от версии |
Если есть лишь широкая схожесть, то 아니오 |
Поэтому в таблице следует обязательно указывать, относится ли синтаксис к общему. Это необходимо, чтобы позже различать, был ли общий синтаксис ошибочно использован как основание миграции, или специфичный синтаксис ошибочно обработан как общий.
Переопределение критериев – заметки
Во время тестов пунктов 4 и 5 стало ясно, что трудно вынести окончательное решение. Особенно менялся ответ на один и тот же блок кода в зависимости от того, создавался ли JSONL на основе Godot 3 или Godot 4, и это различие само по себе стало объектом анализа шаблонов.
Поэтому сейчас вместо окончательных «хорошо/плохо» фиксируются сырые ответы, как показано ниже.
| Категория | Критерий создания JSONL | Тестовый код | Текущий ожидаемый порядок |
|---|---|---|---|
| Общий синтаксис | На основе Godot 3 | Общий код или эквивалентный код Godot 3/4 | 예, 아니오, 예, 아니오, 예, 아니오 |
| Общий синтаксис | На основе Godot 4 | Общий код или эквивалентный код Godot 3/4 | 예, 아니오, 예, 아니오, 예, 아니오 |
| Различие версий | На основе Godot 3 | Код Godot 3 | 예, 아니오, 예, 아니오, 예, 아니오 |
| Различие версий | На основе Godot 3 | Код Godot 4 | В основном 아니오. Однако если api_mapping или prototype явно содержат основание для преобразования Godot 3 → 4, могут появиться отдельные 예, поэтому такие ответы рассматриваются отдельно |
| Различие версий | На основе Godot 4 | Код Godot 3 | В основном 아니오. Однако если JSONL одновременно содержит строки source и target, возможны отдельные 예, поэтому такие ответы рассматриваются отдельно |
| Различие версий | На основе Godot 4 | Код Godot 4 | 예, 아니오, 예, 아니오, 예, 아니오 |
Порядок ответов обычно такой: docs_chunks 관련, docs_chunks 무관, api_mapping 관련, api_mapping 무관, label_prototypes 관련, label_prototypes 무관.
Пункт 4 ранее фиксировался как упорядоченный элемент, но в тестах Godot 3 получалась последовательность 아니오, 아니오, 예, 아니오, 예, 아니오, поэтому он исключён из окончательного решения. Этот документ служит наблюдательной записью того, «какие ответы колеблются при каких критериях», а не «сколько ответов было правильных».
Пример запроса на генерацию
Ниже приведён пример запроса при тестировании первой функции — инициализации _ready() и установки размеров viewport.
Формат JSONL и назначение каждого JSONL описаны в отдельном документе.
_ready() функция инициализации и предоставление одного чанка godot3, соответствующего настройке размера окна просмотра, а также одного чанка godot4.
Однако сначала укажите, является ли эта функция общей синтаксической конструкцией для godot3 и godot4.
Если это общая синтаксическая конструкция, отметьте, что можно тестировать, используя один и тот же код.
Также предоставьте правильный JSONL в формате docs_chunks и неправильный JSONL.Этот пример основан на docs_chunks. api_mapping, label_prototypes также создают правильный JSONL и неправильный JSONL в соответствии с форматом и назначением каждого JSONL, используя тот же проверочный запрос, чтобы проверить да/нет.
Ввод для проверки выглядит следующим образом.
JSONL:
<правильный или неправильный JSONL в одной строке>
PROMPT:
<direct-evidence validator prompt>
SOURCE_CODE:
<Godot 3 код chunk, Godot 4 код chunk, или общий синтаксис код chunk>Подсказка отправляется так, как ниже, с ощущением оценки прямого объяснительного или преобразующего основания между SOURCE_CODE и JSONL.
Ты — система оценки соответствия JSONL.
Определи, содержит ли приведённый ниже JSONL прямые доказательства описания или преобразования для указанного ниже SOURCE_CODE.
Критерии оценки:
*Переведённый фрагмент Markdown будет предоставлен здесь после получения исходного текста.*
- Простое совпадение широких слов, таких как Godot, Godot3, Godot4, migration, 2D, physics, не считается релевантным.
(Нет доступного фрагмента для перевода.)
- Не используйте свои знания о Godot, используйте только строковые доказательства, указанные в JSONL.
примерМатрица оценки
| Ожидаемый ответ | Фактический ответ | Временная интерпретация | Что записать |
|---|---|---|---|
예 |
예 |
Соответствует ожиданию | Прямое подтверждение корректного JSONL |
아니오 |
아니오 |
Соответствует ожиданию | Ошибочный JSONL отклоняется |
예 |
아니오 |
Требуется повторный просмотр | Пропущено, хотя есть прямое подтверждение. Кандидат на ложный отрицательный |
아니오 |
예 |
Требуется повторный просмотр | Принято, хотя прямого подтверждения нет. Кандидат на ложный положительный |
Да или Нет |
Другой ответ | Требуется повторный просмотр | Нарушение формата ответа. Включает объяснение, JSON, пустой ответ, неоднозначный ответ |
Чеклист наблюдений
После завершения 50‑образцовых тестов для каждой таблицы проверяется следующее.
| Пункт | Критерий | Результат |
|---|---|---|
| Формат ответа | Каждый ответ выводит только 예 или 아니오 |
|
| Ответы по релевантному JSONL | В тестах релевантного JSONL ответ 예 появляется достаточно стабильно |
|
| Ответы по нерелевантному JSONL | В тестах нерелевантного JSONL ответ 아니오 появляется достаточно стабильно |
|
| Запись false positive | Все случаи, когда правильный ответ 아니오, а получен 예, фиксируются отдельно |
|
| Запись false negative | Все случаи, когда правильный ответ 예, а получен 아니오, фиксируются отдельно |
|
| Широкий словарный фильтр | Такие общие слова, как Godot, migration, 2D, physics, не вызывают ответ 예 |
|
| Прямое строковое подтверждение | В решении 예 присутствует поле JSONL, совпадающее с реальной строкой кода/API/шаблоном |
|
| Различие общих синтаксисов | Для образцов, общих для Godot 3/4, проверялись ожидаемые 예/아니오 JSONL по тем же кускам кода |
|
| Различия между таблицами | Зафиксировано, как различаются несоответствия в docs_chunks, api_mapping, label_prototypes |
|
| Воспроизводимость | При повторном вводе тех же данных оценка не меняется существенно | |
| Следующее решение | Определяется, можно ли передать этот промпт и метод оценки в следующий PoC |
Формат записи тестов
Скопируйте таблицу ниже и заполните результаты тестов.
| ID | Функция | Общий синтаксис | Таблица | Тип JSONL | Ожидаемый ответ | Фактический ответ | Оценка | Прямо совпадающие поля | Примечание |
|---|---|---|---|---|---|---|---|---|---|
| G03-001-A | _ready() функция инициализации и установка размера viewport |
Корректный JSONL | 예 |
||||||
| G03-001-B | _ready() функция инициализации и установка размера viewport |
Некорректный JSONL | 아니오 |
Записи по таблицам
docs_chunks
Проверяется, соответствует ли объяснительное основание из официальной документации конкретному куску кода.
| Номер | Функция | Общий синтаксис | Результат связанного JSONL | Результат несвязанного JSONL | Примечание |
|---|---|---|---|---|---|
| 1 | Инициализация функции _ready() и установка размера вьюпорта |
Общий синтаксис | связанный JSONL да наблюдение |
несвязанный JSONL нет наблюдение |
Объяснение docs_chunks, содержащие Node._ready, get_viewport().get_visible_rect().size, DisplayServer.window_set_size, имеет основание да; объяснение _process(delta) в JSONL оценивается как нет |
| 2 | Цикл обновления каждый кадр _process(delta) |
Общий синтаксис | связанный JSONL да наблюдение |
несвязанный JSONL нет наблюдение |
Объяснение docs_chunks, содержащие _process(delta), position.x +=, speed * delta, имеет основание да; объяснение Vector2.lerp в JSONL оценивается как нет |
| 3 | Обработка ввода перемещения игрока (WASD или стрелки) | Общий синтаксис | связанный JSONL да наблюдение |
несвязанный JSONL нет наблюдение |
Объяснение docs_chunks, содержащие Input.is_action_pressed, Vector2.ZERO, direction.normalized(), velocity, move_and_slide(), имеет основание да; объяснение TileMapLayer.set_cell() в JSONL оценивается как нет |
| 4 | Применение скорости и ускорения игрока | Различия версий | существующая двунаправленная запись да исключена из окончательного решения |
В проверке Godot 3 docs получен поток нет/нет, требующий пересмотра |
Необходимо переопределить критерии из‑за оригинальных ответов нет, нет, да, нет, да, нет |
| 5 | Ограничение максимальной скорости игрока | Различия версий | Первичное наблюдение по Godot 3. Обратный ответ по Godot 4: код Godot 4 да/да, код Godot 3 да/да |
При обратном анализе Godot 4 все кандидаты docs помечены да |
CharacterBody2D, max_speed, velocity = input_vector * max_speed, move_and_slide(), Input.is_action_pressed встречаются как прямые строки; требуется уточнить область действия |
| 6 | Создание и запуск снаряда при клике мышью | Различия версий | Обоснования Godot 3/4 соответствуют коду, попадают в общий поток 24/24 |
Другие описания JSONL отбрасываются как ожидается | Различия в обработке ввода мыши между PackedScene.instance() и instantiate() разделяют кандидаты docs |
| 7 | Управление перемещением и временем жизни (TTL) снаряда | Различия версий | Проверка docs_chunks подтверждает соответствие коду перемещения/TTL | Несвязанные кандидаты docs отбрасываются | Несоответствия в 22/24 возникают из‑за сопоставления api_mapping/label_prototypes Godot 3 с Godot 4, где оба помечены да |
| 8 | Логика отслеживания игрока врагом (AI) | Различия версий | Кандидат docs Godot 4 ошибочно помечен да и для кода Godot 3 (ложноположительный) |
Другие кандидаты также помечены да в обоих версиях, требуется пересмотр |
Общий показатель 21/24; docs_chunks слишком широко трактуют темы отслеживания/движения |
| 9 | Логика скорости и вращения врага | Различия версий | Обоснования docs по скорости и вращению совпадают с кодом в обеих версиях | Несвязанные кандидаты отбрасываются | 24/24 успешно пройдено; цель и конечное действие ясны, поэтому кандидаты docs стабильно различаются |
| 10 | Удаление игрока при выходе за пределы экрана | Общий синтаксис | Обоснования по выходу за границы, global_position, get_viewport_rect().size, hide() помечены да |
Другие кандидаты помечены нет |
Общий синтаксис 6/6 пройден. Обоснования docs и миграционных кандидатов хорошо разделены |
| 11 | Обнаружение столкновений (Area2D или PhysicsBody) | Различия версий | Сопоставление кандидатов docs, описывающих события столкновения, цели и колбэки, с кодовыми фрагментами | Отделение от кандидатов, описывающих расчёт урона или обработку здоровья после столкновения | В sample-11 проверяется, что доказательство «обнаружения» не смешивается с доказательством «обработки» |
| 12 | Расчёт и применение урона при столкновении | Общий синтаксис | Сопоставление кандидатов docs, описывающих вычисление урона и его применение к здоровью, с кодом | Отделение от простых описаний столкновения, подсчёта очков или завершения игры | sample-12 проверяет, что ключевой элемент docs – формула урона и поток применения |
| 13 | Логика уменьшения здоровья игрока | Общий синтаксис | Сопоставление кода, уменьшающего переменную здоровья игрока, обработку попадания и нижний предел, с docs | Отделение от аналогичных описаний для врагов или подсчёта очков | sample-13 требует различать, относится ли строка health к игроку или к врагу |
| 14 | Обработка Game Over при здоровье игрока = 0 | Общий синтаксис | Проверка условий health <= 0, переход в состояние Game Over, смена сцены/остановка, сопоставление с кодом |
Отделение от простого уменьшения здоровья или удаления врагов | sample-14 проверяет, что после достижения 0 происходит именно переход в состояние, а не просто уменьшение |
| 15 | Логика уменьшения здоровья врага | Общий синтаксис | Сопоставление кода, уменьшающего переменную здоровья врага и обработку попадания, с docs | Отделение от аналогичных описаний для игрока или подсчёта очков | sample-15 фокусируется на том, является ли объект enemy или player ключевым для оценки |
| 16 | Удаление врага при здоровье = 0 и добавление очков | Общий синтаксис | Сопоставление кода, вызывающего queue_free()/деактивацию и увеличение счёта, с docs |
Отделение от простого уменьшения здоровья или только увеличения очков | sample-16 проверяет совместное наличие удаления и начисления очков |
| 17 | Обновление переменной счёта (Score) | Общий синтаксис | Сопоставление кода, увеличивающего/уменьшающего счёт и накопления значения, с docs | Отделение от описаний обновления UI‑метки или рендеринга | sample-17 разделяет обновление данных и обновление отображения |
| 18 | Функция обновления текста счёта (Label) | Общий синтаксис | Сопоставление кода, устанавливающего Label.text/форматирование строки для отображения счёта, с docs |
Отделение от простого изменения переменной счёта | sample-18 проверяет, что именно UI‑текст отражает значение |
| 19 | Воспроизведение фоновой музыки (BGM) и регулировка громкости | Общий синтаксис | Сопоставление кода, отвечающего за узел BGM, громкость шины, зацикливание/регулировку, с docs | Отделение от одноразовых звуковых эффектов (SFX) | sample-19 разделяет постоянный BGM и короткие вызовы SFX |
| 20 | Функция воспроизведения звукового эффекта (SFX) | Общий синтаксис | Сопоставление кода, создающего/вызывающего проигрыватель эффекта, одноразовое воспроизведение, с docs | Отделение от цикла BGM и регулировки громкости | sample-20 проверяет, что общие аудио‑термины не приводят к ошибочному привязыванию к BGM |
| 21 | Реализация эффекта дрожания экрана (Screen Shake) | Различия версий | Сравнение кода с объяснением смещения камеры, силы/времени дрожания, Tween или случайного смещения | Отличие от перемещения врагов, слежения камеры, вариантов UI‑анимации | sample-21 проверяет, объясняет ли непосредственно результат дрожания экрана, даже если слово «камера» совпадает |
| 22 | Создание системы частиц и согласование позиции | Различия версий | Сравнение кода с объяснением создания узла частицы, синхронизации позиции, начала излучения | Отличие от создания обычных узлов, генерации снарядов, вариантов анимации | sample-22 проверяет, является ли цель создания частицей, содержит ли процесс согласования позиции и поток излучения |
| 23 | Функция смены сцены (Scene Change) | Различия версий | Сравнение кода с объяснением запроса смены сцены, вызова SceneTree, пути целевой сцены | Отличие от отображения меню, паузы, загрузки ресурсов, когда смена сцены не происходит | sample-23 разделяет, является ли вызов фактической сменой экрана/сцены или просто загрузкой/отображением UI |
| 24 | Загрузка и отображение главного меню | Различия версий | Сравнение кода с объяснением загрузки сцены главного меню и её отображения | Отличие от простой смены сцены, паузы, предзагрузки ресурсов | sample-24 разделяет, отображает ли поток действительно меню, или описывает обработку другой сцены |
| 25 | Переключение функции паузы игры (Pause) | Общий синтаксис | Сравнение кода с объяснением переключения состояния pause, get_tree().paused, остановки/возобновления по вводу | Отличие от открытия меню, смены сцены, завершения игры | sample-25 проверяет, меняет ли состояние паузы само по себе, а не просто отображает UI |
| 26 | Проверка состояния клавиатурного ввода (Input.is_key_pressed) | Различия версий | Сравнение кода с объяснением Input.is_key_pressed и проверки констант/кодов клавиш | Отличие от ввода через action map, мыши, полной логики перемещения | sample-26 разделяет запрос состояния клавиши и всю логику перемещения |
| 27 | Получение координат позиции мыши (курсор) | Общий синтаксис | Сравнение кода с объяснением получения позиции мыши в viewport/global | Отличие от выстрела по клику, ввода касания, отображения курсора | sample-27 проверяет, читает ли код только координаты, а не обрабатывает событие клика |
| 28 | Функция генерации случайного числа | Различия версий | Сравнение кода с объяснением инициализации RNG, генерации числа, указания диапазона | Отличие от распределения случайных позиций, таймера спауна врагов | sample-28 разделяет саму функцию генерации числа и её использование в игровой логике |
| 29 | Периодический спаун врагов по времени | Различия версий | Сравнение кода с объяснением использования Timer/timeout/накопленного времени для регулярного создания врагов | Отличие от расчёта случайных позиций или AI перемещения врагов | sample-29 проверяет, являются ли интервалы и вызов spawn непосредственными доказательствами |
| 30 | Случайное распределение позиций спауна врагов | Общий синтаксис | Сравнение кода с объяснением диапазонов случайных координат, области спауна, распределения позиций | Отличие от таймера, вызывающего спаун через определённые интервалы | sample-30 проверяет, описывает ли код не время создания, а место размещения |
| 31 | Переключение состояний анимации игрока (Idle, Run, Jump) | Различия версий | Сравнение кода с объяснением смены имени анимации в зависимости от ввода/скорости/состояния | Отличие от управления скоростью воспроизведения или временем анимации | sample-31 разделяет переключение состояний и контроль времени воспроизведения |
| 32 | Управление временем воспроизведения анимации | Общий синтаксис | Сравнение кода с объяснением управления скоростью анимации, seek, advance, позиции воспроизведения | Отличие от переключения состояний Idle/Run/Jump | sample-32 проверяет, регулирует ли код время/скорость, а не выбор анимации |
| 33 | Корректировка размеров зоны столкновения | Различия версий | Сравнение кода с объяснением свойств размера CollisionShape2D/Shape2D, параметров size/extents RectangleShape2D | Отличие от детекции столкновений, обработки урона, сигналов Area2D | sample-33 проверяет, изменяет ли код форму/размер зоны столкновения, а не проверяет факт столкновения |
| 34 | Применение физической гравитации (Gravity) | Различия версий | Сравнение кода с объяснением накопления gravity и delta в velocity и применения через функцию move | Отличие от силы прыжка, детекции приземления, настройки гравитации в Area | sample-34 разделяет поток накопления гравитации и проверку прыжка/приземления |
| 35 | Применение силы прыжка (Jump) и детекция приземления | Различия версий | Сравнение кода с объяснением is_on_floor(), скорости прыжка, условий ввода, состояния приземления | Отличие от чисто гравитации или переключения анимационных состояний | sample-35 проверяет, описывается ли ввод прыжка и проверка пола в одном потоке перемещения |
| 36 | Обработка скольжения при столкновении со стеной | | | | |
| 37 | Переключение направления игрока (Facing Left/Right) | | | | |
| 38 | Уменьшение счёта патронов (Ammo) | | | | |
| 39 | Переключение состояния перезарядки (Reload) при пустом магазине | | | | |
| 40 | Привязка события клика UI‑кнопки | | | | |
| 41 | Переключение открытия/закрытия меню настроек (Settings) | | | | |
| 42 | Обновление текста при изменении языка (Language) | | | | |
| 43 | Сериализация данных сохранения (Save Game) в JSON | | | | |
| 44 | Десериализация загруженных данных (Load Game) из JSON | | | | |
| 45 | Обработка ошибок чтения/записи файлов | | | | |
| 46 | Проверка состояния сетевого соединения | | | | |
| 47 | Синхронизация через удалённый вызов функции (RPC) | | | | |
| 48 | Динамическая загрузка ресурсов сцены | | | | |
| 49 | Освобождение памяти и выгрузка ресурсов | | | | |
| 50 | Вывод отладочных логов (print или print_debug) | | | | |
api_mapping
Проверьте, соответствует ли доказательство того, как меняются имена, классы, функции и символы при переходе от Godot 3 к Godot 4, непосредственно к коду‑чанку.
| № | Функция | Общий синтаксис? | Результат связанного JSONL | Результат несвязанного JSONL | Примечание |
|---|---|---|---|---|---|
| 1 | Инициализация функции _ready() и установка размера вьюпорта |
Общий синтаксис | Связанный JSONL да наблюдение |
Несвязанный JSONL нет наблюдение |
mapping с DisplayServer.window_set_size, Vector2i считается да; mapping с AudioServer.get_bus_volume_db считается нет |
| 2 | Цикл обновления каждый кадр в _process(delta) |
Общий синтаксис | Связанный JSONL да наблюдение |
Несвязанный JSONL нет наблюдение |
stable mapping с position.x, delta, _process считается да; mapping с get_node("Sprite2D") считается нет |
| 3 | Обработка ввода перемещения игрока (WASD или стрелки) | Общий синтаксис | Связанный JSONL да наблюдение |
Несвязанный JSONL нет наблюдение |
mapping с CharacterBody2D.move_and_slide, velocity, Vector2 считается да; mapping с Node.connect/signal connect считается нет |
| 4 | Применение скорости и ускорения игрока | Различия версий | Запись двунаправленного да исключена из окончательного решения |
В проверке Godot 3 часть api_mapping делится на да/нет |
Необходимо пересмотреть, как mapping move_and_slide, CharacterBody3D, move_toward, velocity.x, velocity.z, target_velocity реагирует в разных версиях кода |
| 5 | Ограничение максимальной скорости игрока | Различия версий | Первичное наблюдение по Godot 3. Обратный ответ по Godot 4: код Godot 4 да/да, код Godot 3 нет/нет |
В коде Godot 4 оба кандидата mapping да, в коде Godot 3 оба нет |
Различия в возврате limit_speed, нормали столкновения и т.п.; требуется анализ паттернов разделения ожидаемых значений между синтаксисом Godot 4 и Godot 3 |
| 6 | Создание и запуск снаряда при клике мышью | Различия версий | Различия API создания снарядов в Godot 3/4 и сопоставление ввода работают как ожидалось | Кандидаты несвязанных mapping также отвергнуты | PackedScene.instance() и instantiate() разделены как source/target и включены в поток 24/24 |
| 7 | Управление перемещением и временем жизни (TTL) снаряда | Различия версий | По Godot 3 преобразование mapping отмечено как да |
Тот же mapping в Godot 4 также да — наблюдается несоответствие |
Общий показатель 22/24; если это уже код Godot 4, преобразование не применяется, поэтому в проверочном запросе нужно яснее определять, относится ли он к source‑side |
| 8 | Логика AI преследования игрока врагом (Enemy) | Различия версий | Причина несоответствия № 8 не была в api_mapping |
Кандидаты несвязанных mapping отвергнуты как ожидается | Полное несоответствие возникло в docs_chunks; mapping фиксирует изменения API AI‑кода между версиями |
| 9 | Логика скорости и вращения врага | Различия версий | Mapping вращения/движения согласован с кодом | Кандидаты несвязанных mapping отвергнуты | 24/24 пройдено; различия API скорости и вращения достаточно чётко разделены |
| 10 | Удаление игрока, когда он выходит за пределы экрана | Общий синтаксис | Для общего кода api_mapping не требует преобразования |
Кандидаты несвязанных преобразований нет |
6/6 пройдено; в общем синтаксисе таблица миграции не требуется |
| 11 | Обнаружение столкновений (Area2D или PhysicsBody) | Различия версий | Проверяется, нужны ли изменения API обнаружения Area2D/PhysicsBody или сигналов в текущем коде | Отделяется от mapping урона и обработки здоровья | sample-11 оценивает, относится ли изменение API обнаружения к требуемому mapping |
| 12 | Расчёт и применение урона при столкновении | Общий синтаксис | Проверяется, есть ли реальное изменение API применения урона между версиями | Отделяется от mapping, описывающего только сигнал обнаружения | sample-12 различает, нужен ли mapping для изменения API или это просто игровая логика |
| 13 | Логика уменьшения здоровья игрока | Общий синтаксис | Проверяется, требуется ли реальное изменение API для уменьшения здоровья между версиями | Отделяется от mapping здоровья врага/счёта/окончания игры | sample-13 показывает, что большинство пунктов — чисто игровая логика, и миграция может быть избыточной |
| 14 | Обработка «Game Over», когда здоровье игрока становится 0 | Общий синтаксис | Проверяется, есть ли изменения API переключения сцен, паузы, tree в коде | Отделяется от простого уменьшения здоровья | sample-14 проверяет, является ли изменение состояния сцены основанием для mapping |
| 15 | Логика уменьшения здоровья врага | Общий синтаксис | Проверяется, нужны ли реальные изменения API Godot 3→4 для уменьшения здоровья врага | Отделяется от mapping здоровья игрока/счёта | sample-15 показывает, что если объект другой, найденный кандидат mapping должен дать нет |
| 16 | Удаление врага при 0 здоровья и добавление очков | Общий синтаксис | Проверяется, есть ли различия в API удаления, обновления счёта, работы с деревом сцен | Отделяется от простого mapping урона или обновления Label | sample-16 разделяет, какая часть процесса (удаление vs. начисление очков) является основанием для mapping |
| 17 | Обновление переменной счёта (Score) | Общий синтаксис | Проверяется, требуется ли реальное изменение API для обновления переменной счёта | Отделяется от mapping обновления UI текста или сохранения/загрузки | sample-17 следит, чтобы простые арифметические операции не приводили к избыточному миграционному mapping |
| 18 | Функция обновления текста счёта (Label) | Общий синтаксис | Проверяется, меняется ли способ доступа к Label.text или ссылка на узел между версиями |
Отделяется от расчёта значения счёта | sample-18 определяет, является ли изменение доступа к Label.text общим или версионным |
| 19 | Воспроизведение фоновой музыки (BGM) и регулировка громкости | Общий синтаксис | Проверяется, нужны ли изменения API AudioServer, AudioStreamPlayer, регулировка громкости шины в коде |
Отделяется от mapping одиночных звуковых эффектов (SFX) | sample-19 гарантирует, что лишь упоминание «аудио» не приводит к ненужному mapping |
| 20 | Функция воспроизведения звукового эффекта (SFX) | Общий синтаксис | Проверяется, меняется ли API воспроизведения SFX или способ создания узла | Отделяется от mapping BGM‑цикла/регулировки громкости | sample-20 разделяет причины миграции между SFX и BGM, даже если они используют один и тот же аудио‑модуль |
| 21 | Реализация эффекта тряски экрана (Screen Shake) | Различия версий | Проверяется, есть ли изменения API Tween, Camera2D, offset/random shake между версиями | Отделяется от mapping обычного следования камеры или перемещения | sample-21 проверяет, является ли камера‑связанный кандидат основанием для миграции тряски экрана |
| 22 | Создание системы частиц и сопоставление позиции | Различия версий | Проверить, находятся ли изменения, связанные с Particles2D/GPUParticles2D, emitting, position/global_position, непосредственно в коде | Отделить от сопоставления создания снарядов или обычных узлов | sample-22 рассматривает изменения API, специфичные для системы частиц, отдельно от общей логики создания |
| 23 | Функция смены сцены (Scene Change) | Различия версий | Проверить, присутствуют ли изменения в вызовах change_scene, change_scene_to_file, change_scene_to_packed непосредственно в текущем коде | Отделить от простого load()/preload() или отображения главного меню | sample-23 проверяет, соответствуют ли вызовы смены сцены Godot 3 и их замены в Godot 4 реальной версии кода |
| 24 | Загрузка и отображение главного меню | Различия версий | Проверить, нужны ли изменения, связанные с загрузкой сцены, инстанцированием и отображением меню, в текущем коде | Отделить от обычной смены сцены или предзагрузки ресурсов | sample-24 проверяет, не смешаны ли цели отображения главного меню и изменения API работы со сценами |
| 25 | Переключение функции паузы (Pause) | Общий синтаксис | Проверить, действительно ли изменения, связанные с режимом паузы, процессом и паузой дерева, нужны в текущем коде | Отделить от UI меню или карты «game over» | sample-25 проверяет, не накладывается ли избыточное миграционное сопоставление на общий код переключения паузы |
| 26 | Проверка состояния клавиатурного ввода (Input.is_key_pressed) | Различия версий | Проверить, соответствуют ли изменения констант клавиш, scancode/keycode и Input.is_key_pressed коду напрямую | Отделить от обработки action‑map или ввода мыши | sample-26 разделяет изменения API проверки состояния клавиш и игровую логику, использующую ввод |
| 27 | Получение координат позиции мыши (курсор) | Общий синтаксис | Проверить, нужны ли изменения в API получения позиции мыши для разных версий | Отделить от создания снарядов по клику или ввода касания | sample-27 проверяет, не добавлены ли лишние причины преобразования к коду чтения координат |
| 28 | Функция генерации случайного числа | Различия версий | Проверить, находятся ли изменения, связанные с randomize, RandomNumberGenerator, функцией range, непосредственно в коде | Отделить от случайных позиций спауна или таймера спауна | sample-28 разделяет изменения самого API генерации случайных чисел и цели их использования |
| 29 | Периодический спаун врагов | Различия версий | Проверить, присутствуют ли изменения в сигнале Timer, соединении timeout, yield/await непосредственно в коде | Отделить от случайного распределения позиций врагов или их AI‑движения | sample-29 одновременно проверяет структуру периодического выполнения и логику создания объектов |
| 30 | Случайное распределение позиций спауна врагов | Общий синтаксис | Проверить, нужны ли реальные изменения API при работе с random range, размером viewport, расчётом зоны спауна | Отделить от таймер‑базированного периодического спауна | sample-30 проверяет, не накладывается ли сопоставление периодичности спауна на код, который только вычисляет позицию |
| 31 | Переключение состояний анимации игрока (Idle, Run, Jump) | Различия версий | Проверить, соответствуют ли изменения в AnimatedSprite/AnimatedSprite2D, AnimationPlayer и переключении состояний коду напрямую | Отделить от управления скоростью воспроизведения/поиска/времени | sample-31 разделяет изменения имён узлов анимации и паттерн переключения состояний |
| 32 | Управление временем воспроизведения анимации | Общий синтаксис | Проверить, нужны ли изменения в playback speed, seek, текущей позиции в текущем коде | Отделить от выбора состояний Idle/Run/Jump | sample-32 различает API регулирования времени воспроизведения и API переключения состояний |
| 33 | Корректировка размеров зоны столкновения | Различия версий | Проверить, необходимы ли изменения в CollisionShape2D, RectangleShape2D, размере/extents формы непосредственно в коде | Отделить от сигнала столкновения, физического слоя, нанесения урона | sample-33 проверяет, соответствуют ли изменения API изменения размеров shape реальному коду, а не API определения столкновений |
| 34 | Применение гравитации в физике | Различия версий | Проверить, нужны ли изменения в CharacterBody2D/KinematicBody2D, velocity, move_and_slide непосредственно в коде | Отделить от импульса прыжка, проверки пола, гравитации в Area2D | sample-34 проверяет, действительно ли гравитация накапливается в физическом кадре и влияет на движение |
| 35 | Применение силы прыжка и обнаружение приземления | Различия версий | Проверить, соответствуют ли изменения в is_on_floor(), скорости прыжка, Input‑action и move_and_slide коду напрямую | Отделить от чисто гравитационного перемещения, анимационных состояний, столкновений со стеной | sample-35 проверяет, нужны ли одновременно условия начала прыжка и проверка приземления в данном сопоставлении |
| 36 | Обработка скольжения при столкновении со стеной | | | | |
| 37 | Поворот направления игрока (влево/вправо) | | | | |
| 38 | Уменьшение счёта патрон в магазине | | | | |
| 39 | Переключение в состояние перезарядки при пустом магазине | | | | |
| 40 | Привязка события клика UI‑кнопки | | | | |
| 41 | Переключение открытия/закрытия меню настроек | | | | |
| 42 | Обновление текста при смене языка | | | | |
| 43 | Сериализация данных сохранения (JSON) | | | | |
| 44 | Десериализация данных загрузки (JSON) | | | | |
| 45 | Обработка ошибок чтения/записи файлов | | | | |
| 46 | Проверка состояния сетевого соединения | | | | |
| 47 | Синхронизация через удалённый вызов функции (RPC) | | | | |
| 48 | Динамическая загрузка ресурсов сцены | | | | |
| 49 | Освобождение памяти и выгрузка ресурсов | | | | |
| 50 | Вывод отладочных логов (print или print_debug) | | | | |
label_prototypes
Убедитесь, что пример, в котором меняется не просто имя, а полностью меняются способ использования функции, состав аргументов и паттерн вызова, непосредственно соответствует коду‑чанку.
| № | Функция | Общий синтаксис | Связанный JSONL результат | Непрямой JSONL результат | Примечание |
|---|---|---|---|---|---|
| 1 | Инициализация функции _ready() и установка размера окна |
Общий синтаксис | Наблюдение связанного JSONL да |
Наблюдение непрямого JSONL нет |
Прототип DisplayServer.window_set_size(Vector2i(1920, 1080)) оценён как да; прототип AudioStreamPlayer3D оценён как нет |
| 2 | Цикл обновления каждый кадр _process(delta) |
Общий синтаксис | Наблюдение связанного JSONL да |
Наблюдение непрямого JSONL нет |
Прототипы func _process(delta) и position.x += move_speed * delta оценены как да; прототипы _input(event)/event.is_action_pressed оценены как нет |
| 3 | Обработка ввода перемещения игрока (WASD или стрелки) | Общий синтаксис | Наблюдение связанного JSONL да |
Наблюдение непрямого JSONL нет |
Прототипы Input.is_action_pressed, velocity = direction * move_speed, move_and_slide() оценены как да; прототип @onready/доступ к пути узла оценён как нет |
| 4 | Применение скорости и ускорения игрока | Различия версий | Записи двусторонних да исключены из окончательной оценки |
В проверке Godot 3 сторона label_prototypes делится на да/нет |
Необходимо пересмотреть, являются ли прототипы move_toward(velocity.x/velocity.z), move_and_slide(), CharacterBody3D специфичными для версии или общими строковыми основаниями |
| 5 | Ограничение максимальной скорости игрока | Различия версий | Первичное наблюдение по Godot 3. Обратный ответ по Godot 4: код Godot 4 да/нет, код Godot 3 да/нет |
Прототип Tween в обеих версиях нет и отклонён |
Прототипы CharacterBody2D, move_and_slide(), velocity присутствуют в обоих кодах, поэтому они отмечены как да. Необходимо разделить версии‑специфичные основания и общие строковые основания |
| 6 | Создание и запуск снаряда при клике мыши | Различия версий | Паттерн создания/запуска снаряда соответствует коду | Непрямые прототипы также отклонены | Включено в поток 24/24. Обработка ввода и паттерн создания снаряда чётко разделены |
| 7 | Управление перемещением и временем жизни (TTL) снаряда | Различия версий | По Godot 3 паттерн преобразования отмечен как да |
Тот же прототип в коде Godot 4 также отмечен да, наблюдается несоответствие |
Общий показатель 22/24; в уже преобразованном коде Godot 4 не должно появляться пометка «требуется преобразование» |
| 8 | Логика AI преследования игрока врагом (Enemy) | Различия версий | На стороне label_prototypes причина несоответствия №8 не была прямой | Непрямые прототипы отклоняются как ожидается | Полное несоответствие возникло в docs_chunks. Прототип фиксирует изменение способа использования AI‑преследования как вспомогательный показатель |
| 9 | Логика скорости перемещения и вращения врага | Различия версий | Паттерн вызова перемещения/вращения соответствует коду | Непрямые прототипы отклоняются как ожидается | 24/24 пройдено. Вычисление скорости перемещения и применение вращения разделены достаточно явно |
| 10 | Если игрок выходит за пределы экрана, он исчезает | Общий синтаксис | Поскольку это общий код, преобразование JSONL, связанного с label_prototypes, не требуется | Независимый кандидат преобразования также нет поток | 6/6 пройдено. В общем синтаксисе подтверждено, что prototype необязательно применяется |
| 11 | Обнаружение столкновений (Area2D или PhysicsBody) | Различия версий | Проверить, является ли способ использования сигналов/обратных вызовов обнаружения столкновений паттерном до изменения текущего кода | Отличить от prototype применения урона после столкновения | sample-11 рассматривает разделение паттерна события обнаружения и последующего паттерна обработки игрового процесса |
| 12 | Вычисление и применение урона при столкновении | Общий синтаксис | Проверить, присутствует ли в текущем коде непосредственно паттерн вызова, применяющего урон в результате столкновения | Отличить от простого обнаружения столкновения или обработки здоровья 0 в prototype | sample-12 проверяет, являются ли состав аргументов, целевой объект и порядок применения урона основанием prototype |
| 13 | Логика уменьшения здоровья игрока | Общий синтаксис | Проверить, присутствует ли в текущем коде непосредственно паттерн получения урона/уменьшения здоровья игрока | Отличить от prototype уменьшения здоровья врага | sample-13 проверяет различия целей player/enemy даже в одной серии health |
| 14 | Обработка завершения игры, когда здоровье игрока достигает 0 | Общий синтаксис | Проверить, присутствует ли в текущем коде непосредственно паттерн вызова завершения игры после 0 здоровья | Отличить от простого уменьшения здоровья или удаления врага в prototype | sample-14 проверяет, описывает ли prototype переход состояния/обработку сцены после условия |
| 15 | Логика уменьшения здоровья врага | Общий синтаксис | Проверить, присутствует ли в текущем коде непосредственно паттерн уменьшения урона/здоровья врага | Отличить от prototype урона игрока | sample-15 проверяет, возникают ли ложные срабатывания, когда имена целевых объектов и переменных состояния сильно пересекаются |
| 16 | Удаление врага при 0 здоровья и добавление очков | Общий синтаксис | Проверить, присутствует ли в текущем коде непосредственно паттерн вызова, где одновременно удаляется враг и увеличивается счёт | Отличить от простого обновления счёта или простого удаления в prototype | sample-16 проверяет, соответствует ли prototype, объединяющий несколько действий, реальному порядку в SOURCE_CODE |
| 17 | Обновление переменной счёта (Score) | Общий синтаксис | Проверить, присутствует ли в текущем коде непосредственно паттерн обновления переменной score | Отличить от prototype отражения текста в Label | sample-17 разделяет обновление внутренних данных и обновление отображения UI |
| 18 | Функция обновления текста счёта (Label) | Общий синтаксис | Проверить, присутствует ли в текущем коде непосредственно паттерн обновления текста Label | Отличить от prototype, меняющего только переменную score | sample-18 проверяет, является ли prototype относящимся к отображению на экране, а не к изменению значения |
| 19 | Воспроизведение фоновой музыки (BGM) и регулировка громкости | Общий синтаксис | Проверить, присутствует ли в текущем коде непосредственно паттерн воспроизведения BGM/регулировки громкости | Отличить от prototype однократного воспроизведения SFX | sample-19 рассматривает цель длительного воспроизведения/регулировки громкости, а не общие термины аудио |
| 20 | Функция воспроизведения звуковых эффектов (SFX) | Общий синтаксис | Проверить, присутствует ли в текущем коде непосредственно паттерн вызова/воспроизведения SFX | Отличить от prototype цикла BGM или громкости шины | sample-20 разделяет поток короткого воспроизведения эффектов и управления фоновой музыкой |
| 21 | Реализация эффекта дрожания экрана (Screen Shake) | Различия версий | Проверить, присутствует ли в текущем коде непосредственно паттерн применения интенсивности/времени/смещения дрожания экрана | Отличить от prototype слежения камеры или обычного Tween | sample-21 проверяет, является ли конечный эффект shake, даже если присутствуют Camera2D/Tween |
| 22 | Создание системы частиц и согласование позиции | Различия версий | Проверьте, создаются ли частицы, согласуется ли позиция и начинается ли эмиссия непосредственно в текущем коде | Отличие от прототипа создания снарядов или обычных узлов | sample-22 проверяет, описывает ли прототип синхронизацию позиции и начало эмиссии |
| 23 | Функция смены сцены (Scene Change) | Версия | Проверить, присутствует ли в текущем коде прямой вызов, принимающий путь к сцене и переключающий её в SceneTree | Отличие от простого загрузки ресурсов, открытия меню, прототипа паузы | sample-23 проверяет, описывает ли прототип ввод пути сцены, цель вызова и результат переключения |
| 24 | Загрузка и отображение главного меню | Версия | Проверить, присутствует ли в текущем коде прямой вызов, загружающий сцену меню и отображающий её | Отличие от простого загрузки ресурсов, смены сцены, прототипа меню паузы | sample-24 проверяет, описывает ли прототип результат «отобразить главное меню» |
| 25 | Переключение функции паузы (Pause) | Общий синтаксис | Проверить, присутствует ли в текущем коде прямой паттерн, меняющий состояние паузы и объединяющий обработку UI/ввода | Отличие от открытия меню настроек или прототипа «game over» | sample-25 проверяет, следует ли рассматривать изменение флага паузы и отображение экрана как один поток |
| 26 | Проверка состояния клавиатурного ввода (Input.is_key_pressed) | Версия | Проверить, присутствует ли в текущем коде прямой паттерн опроса состояния клавиши | Отличие от прототипов силы действия, вектор движения, ввода мыши | sample-26 фиксирует разделение запроса ввода и действий, выполненных на основе этого ввода |
| 27 | Получение координат позиции мыши (курсор) | Общий синтаксис | Проверить, присутствует ли в текущем коде прямой паттерн чтения координат курсора и их использования в переменных или вычислениях позиции | Отличие от прототипов событий клика мышью или создания снарядов | sample-27 проверяет, является ли сам запрос позиции мыши ключевым |
| 28 | Функция генерации случайного числа | Версия | Проверить, присутствует ли в текущем коде прямой паттерн вызова генерации случайного числа/указания диапазона | Отличие от прототипов распределения позиций спауна, таблиц дропа, таймера спауна | sample-28 разделяет вызов API random и места использования полученного результата |
| 29 | Спавн врагов по таймеру | Версия | Проверить, присутствует ли в текущем коде прямой паттерн вызова функции spawn через равные интервалы времени | Отличие от прототипов вычисления случайных позиций или ИИ слежения за врагом | sample-29 проверяет корректность условий времени, таймера и порядка вызова spawn |
| 30 | Случайное распределение позиций спавненных врагов | Общий синтаксис | Проверить, присутствует ли в текущем коде прямой паттерн размещения созданных врагов в случайных пределах | Отличие от прототипа цикла спауна, создающего врагов через фиксированные интервалы | sample-30 разделяет распределение/вычисление координат и цикл создания |
| 31 | Переключение состояний анимации игрока (Idle, Run, Jump) | Версия | Проверить, присутствует ли в текущем коде прямой паттерн изменения имени анимации в зависимости от состояния или скорости | Отличие от прототипов управления скоростью воспроизведения, перемотки, контроля кадра/времени | sample-31 проверяет, является ли ключевым именно переход в определённое состояние |
| 32 | Управление временем воспроизведения анимации | Общий синтаксис | Проверить, присутствует ли в текущем коде прямой паттерн контроля скорости, перемотки и текущей позиции воспроизведения | Отличие от прототипа переключения состояний Idle/Run/Jump | sample-32 фиксирует, что ключевым является управление временем воспроизведения, а не выбор анимации |
| 33 | Регулировка размера зоны столкновения | Версия | Проверить, присутствует ли в текущем коде прямой паттерн чтения или изменения размеров формы коллайдера | Отличие от прототипов обработки событий столкновения или применения урона | sample-33 разделяет изменение размера формы и обработку результата столкновения |
| 34 | Применение гравитации (Gravity) | Версия | Проверить, присутствует ли в текущем коде прямой паттерн накопления гравитации в velocity на основе delta и отражения её в вызове перемещения | Отличие от прототипов ввода прыжка, проверки приземления, спауна/таймера | sample-34 проверяет, является ли накопление гравитации внутри физического цикла ключевым |
| 35 | Применение силы прыжка и проверка приземления | Версия | Проверить, присутствует ли в текущем коде прямой паттерн применения силы прыжка, когда персонаж стоит на земле, и последующей проверки приземления | Отличие от прототипов только накопления гравитации или переключения анимационных состояний | sample-35 проверяет, объединяются ли условие прыжка, изменение вертикальной скорости и проверка пола в один поток |
| 36 | Обработка скольжения при столкновении со стеной (Slide) | | | | |
| 37 | Поворот направления игрока (Facing Left/Right) | | | | |
| 38 | Уменьшение счёта патронов (Ammo) | | | | |
| 39 | Переключение в состояние перезарядки (Reload) при пустом магазине | | | | |
| 40 | Привязка события клика UI‑кнопки | | | | |
| 41 | Переключение открытия/закрытия меню настроек (Settings) | | | | |
| 42 | Обновление текста при изменении языка (Language) | | | | |
| 43 | Сериализация сохранённых данных (Save Game) в JSON | | | | |
| 44 | Десериализация загруженных данных (Load Game) из JSON | | | | |
| 45 | Обработка ошибок чтения/записи файлов | | | | |
| 46 | Проверка состояния сетевого соединения | | | | |
| 47 | Синхронизация через удалённый вызов функции (RPC) | | | | |
| 48 | Динамическая загрузка ресурсов сцены | | | | |
| 49 | Освобождение памяти и выгрузка ресурсов | | | | |
| 50 | Вывод отладочных логов (print или print_debug) | | | | |
6 июля 2026 г. Дополнительная запись
С 6‑го по 10‑й пункт уже были подробно описаны 3 июля 2026 года, когда в процесс улучшения были внесены соответствующие изменения. Поэтому в этом документе пункты 6‑10 оставлены заполненными: их наблюдения соответствуют таблицам docs_chunks, api_mapping, label_prototypes.
6 июля 2026 года, опираясь на http://localhost:8520/#item=sample-22, были добавлены записи с 11‑го по 22‑й пункт. В этом диапазоне для каждого пункта раскрывается, какой кандидат‑источник относится к соответствующему JSONL, а какой кандидат должен быть отнесён к другому коду/другой трансформации/другому шаблону.
8 июля 2026 г. Добавленная запись
8 июля 2026 года, опираясь на http://localhost:8520/#item=sample-32, были добавлены записи с 23‑го по 32‑й пункт. Этот диапазон рассматривается не как окончательная таблица решений, а как наблюдательная таблица, в которой docs_chunks, api_mapping, label_prototypes фиксируют, как каждый из них должен объяснять или отклонять один и тот же код‑чанк с разных точек зрения.
13 июля 2026 г. Дополнительная запись
13 июля 2026 года, опираясь на http://localhost:8520/#item=sample-35, были добавлены записи с 33‑го по 35‑й пункт. Этот диапазон охватывает области, где размер столкновения, гравитация, прыжок/приземление и другие физические перемещения взаимно влияют друг на друга, поэтому здесь необходимо учитывать не только простое совпадение строк, но и цель кода и место его применения.
Обратное наблюдение №5
Пункт 5 вошёл в сегодняшнее целевое количество, но при обратной проверке JSONL по стандарту Godot 4 результат не свёлся к чистым парам да/нет. Поэтому окончательное решение не принимается, а на следующем этапе он рассматривается как объект для анализа шаблонов.
Порядок ответов: docs_chunks #1, docs_chunks #2, api_mapping #1, api_mapping #2, label_prototypes #1, label_prototypes #2.
| Код проверки | Порядок ответа | Наблюдение |
|---|---|---|
| Godot 4 код | Да, Да, Да, Да, Да, Нет |
много строк, непосредственно совпадающих с кодом, например limit_speed, velocity, move_and_slide(), Input.is_action_pressed, поэтому кандидаты docs/api широко отмечаются как Да |
| Код Godot 3 | да, да, нет, нет, да, нет | Документы‑кандидаты и прототип CharacterBody2D отмечены как да, но кандидат api_mapping по версии Godot 4 отмечен как нет |
Этот результат следует рассматривать не просто как ошибку модели, а как сигнал к проверке того, слишком ли широки поля match_terms, required_when_seen_in_code, content в JSONL. Особенно строки, такие как move_and_slide() и Input.is_action_pressed, которые встречаются часто, могут служить прямым доказательством, но использовать их в качестве аргумента о максимальном ограничении скорости или различиях версий может быть слишком обобщённо.
Запись случаев несоответствия
Ложноположительный результат
Записываем случаи, когда правильный ответ «нет», а система выдала «да».
| ID | Функция | Общий синтаксис | Таблица | Неправильное резюме JSONL | Ответ Qwen | Причина пересмотра |
|---|---|---|---|---|---|---|
Ложноположительный результат
Записываем случаи, когда правильный ответ «да», а система выдала «нет».
| ID | Функция | Общий синтаксис | Таблица | Правильное резюме JSONL | Ответ Qwen | Причина пересмотра |
|---|---|---|---|---|---|---|
Нарушение формата ответа
예 или 아니오 вместо этого записывайте случаи, когда ответ дан в виде пояснения, JSON, пустого ответа или нескольких предложений.
| ID | Функция | Общий синтаксис | Таблица | Ожидаемый ответ | Фактический ответ | Примечание |
|---|---|---|---|---|---|---|
Обзор наблюдений
Во время тестирования заполняются ниже указанные числа и исходные ответы. Здесь мы не делаем окончательных выводов, а лишь смотрим, как ответы колеблются в зависимости от критериев.
| Пункт | docs_chunks | api_mapping | label_prototypes | Итого |
|---|---|---|---|---|
| Сегодняшнее наблюдение | 23~32 добавлено | 23~32 добавлено | 23~32 добавлено | По состоянию на 2026-07-08 23~32 добавлено |
| Общее наблюдение | 32/50 тестовых записей | 32/50 тестовых записей | 32/50 тестовых записей | 32/50 тестовых записей |
| Количество проверенных фрагментов кода | 32/50 | 32/50 | 32/50 | 32/50 |
| Количество образцов общей синтаксической конструкции | Накопительный подсчёт отложен | Накопительный подсчёт отложен | Накопительный подсчёт отложен | После записи меток до 32‑го требуется отдельный подсчёт |
| Количество образцов различий версий | Накопительный подсчёт отложен | Накопительный подсчёт отложен | Накопительный подсчёт отложен | После записи меток до 32‑го требуется отдельный подсчёт |
| Ожидаемое совпадение ответов по первому критерию | 5 | 5 | 5 | 15 |
| Ожидаемое несовпадение ответов по первому критерию | 0 | 0 | 0 | 0 |
| Обратный исходный ответ по 5‑му тесту Godot 4 | Godot 4 예/예, Godot 3 예/예 |
Godot 4 예/예, Godot 3 아니오/아니오 |
Godot 4 예/아니오, Godot 3 예/아니오 |
Требуется анализ шаблонов |
| Нарушения формата ответа | 0 | 0 | 0 | 0 |
| Требуется повторный просмотр | 2 | 2 | 2 | Требуется переопределение по критериям 4/5 |
| Текущее решение | Ожидание окончательного решения | Ожидание окончательного решения | Ожидание окончательного решения | Необходимо последующее анализирование шаблонов, включая добавленные записи 23~32 |