Один и тот же промпт, одна и та же модель — а код на выходе разный. Это не баг и не «модель испортилась»: результат определяет вся обвязка вокруг модели — инструмент, формат весов и настройки генерации. Ниже — почему так происходит и как из этого делать выводы, на примере теста Qwen 3.8 Flash Next в четырёх кодинг-инструментах.
Почему один и тот же промпт даёт разный код
Инструмент — это не окно к модели, а пайплайн, который решает, что именно модель увидит. Даже с идентичным запросом результат расходится, потому что отличается всё, что стоит между вами и генерацией:
- системный промпт: у каждого инструмента свой, он задаёт стиль, длину и структуру ответа;
- доступные действия: где-то модель просто дописывает строку, где-то сама читает файлы, запускает тесты и правит несколько файлов;
- сборка контекста: какие файлы попали в окно, в каком порядке, что обрезали;
- параметры сэмплинга: температура, top-p, штрафы за повторы;
- постобработка: автоформатирование, линтеры, повторные попытки после ошибки.
Поэтому формулировка «модель плохо кодит» почти всегда неполная. Точнее так: «эта модель в этом инструменте на этой задаче даёт такой результат». Одни и те же веса в одном клиенте ведут себя как аккуратный исполнитель, в другом — как генератор длинных сниппетов с объяснениями.
Разница видна уже на уровне формата ответа. Если системный промпт инструмента требует коротких дифов, вы получите патч; если поощряет объяснения — получите абзац текста вокруг кода. Это не «модель передумала», это разные инструкции. Как системный промпт меняет поведение, разбирали отдельно: системный промпт агенту.
Что именно ломает воспроизводимость
Три источника разброса: обвязка инструмента, версия и квантование весов, стохастичность генерации. Первый даёт самый большой разброс, потому что меняет вход целиком.
Второй — веса. Одна и та же модель существует в разных вариантах сжатия: облачная версия и локальные квантованные сборки. Квантование уменьшает размер модели, но теряет точность на длинных цепочках рассуждений — именно там, где код и пишется. Чем агрессивнее сжатие, тем выше шанс, что модель срежет угол: забудет обработку ошибки или перепутает сигнатуру функции.
Третий — сэмплинг. Даже при одинаковом входе генерация не детерминирована: если температура не равна нулю, два запуска дают два разных ответа. Это не дефект инструмента, это его природа.
Что показал тест Qwen 3.8 Flash Next: 4 инструмента и 3 версии модели
Автор теста прогнал одну и ту же модель с одним промптом через четыре кодинг-инструмента и получил четыре разных результата. Это небольшой тест, а не бенчмарк — но он хорошо показывает масштаб разброса.
Что именно сравнивали:
- версии модели: IQ3_XXS, IQ3_S и оригинальная версия Alibaba Cloud, подключённая через OpenRouter API;
- инструменты: GitHub Copilot, Qwen Code, OpenCode, Codex Desktop;
- отдельная проверка: GitHub Copilot запустили дважды — выводы отличались оба раза.
Вывод ровно один: сравнивать модели между собой имеет смысл только внутри одного инструмента и с одинаковыми настройками. Иначе вы измеряете не модель, а разницу между харнессами. Для команд это значит, что «попробовали модель, не зашла» — недостаточный вывод: возможно, не зашёл конкретный клиент.
Как выбрать инструмент под задачу
Выбор инструмента — это выбор режима работы, а не рейтинга. Все четыре участника теста решают разные задачи лучше или хуже друг друга, универсального победителя тут нет.
| Инструмент | Тип | Когда брать |
|---|---|---|
| GitHub Copilot | плагин в редакторе | точечные правки и автодополнение в знакомом проекте |
| Qwen Code | клиент под модели Qwen | если работаете с Qwen локально или через API |
| OpenCode | открытый терминальный агент | когда нужен контроль над окружением и локальные веса |
| Codex Desktop | десктопный агент | многошаговые изменения в проекте, а не одна строка |
Практическое правило: для мелких правок берите то, что уже открыто в редакторе; для задач на несколько файлов — агентный инструмент с доступом к терминалу и тестам. И не сравнивайте «модель против модели» по ощущениям: разница между инструментами в этом тесте оказалась заметнее, чем между версиями одной модели.
Если задача многошаговая, сначала разложите её по схеме «цель → шаги → проверка» — гайд по делегированию задач агенту.
Как воспроизвести такой тест у себя
Нужно зафиксировать всё, кроме одной переменной. Иначе результат ничего не значит.
- Сформулируйте одну задачу и сохраните промпт дословно — без правок между прогонами.
- Прогоните его в двух-трёх инструментах на одном и том же файле проекта.
- Повторите каждый прогон минимум дважды: как показал тест с Copilot, один запуск ничего не доказывает.
- Запишите рядом версию модели и уровень квантования (например, IQ3_S против облачной версии).
- Сравнивайте по одинаковому критерию: прошли ли тесты, сколько файлов изменилось, сколько правок вы внесли руками.
Частые вопросы
Почему один и тот же промпт в одном инструменте даёт разный код? Из-за сэмплинга: при температуре больше нуля генерация не детерминирована. В тесте GitHub Copilot запускали дважды и получили разные выводы.
Влияет ли квантование модели на качество кода? Да. IQ3_XXS, IQ3_S и облачная версия Alibaba Cloud — это три разных входа, и результаты в тесте отличались. Более сильное сжатие обычно бьёт по многошаговым задачам.
Можно ли считать этот тест бенчмарком? Нет. Автор прямо называет его небольшим тестом, цель которого — посмотреть, как инструменты и уровни квантования влияют на вывод, а не вывести рейтинг моделей.
Больше разборов по ИИ и автоматизации — в канале: @il_chum