Разработчик, вынужденный использовать Qwen Code на работе вместо желанного Claude, потратил месяц на борьбу с галлюцинациями инструмента - и в итоге нашёл математически подтверждённое объяснение. Проблема оказалась не в модели. Она в архитектуре самого CLI.
Как два часа против двадцати минут изменили всё
Первое задание для агента было до смешного простым: задача уровня «найти и заменить» в IDE, которую опытный разработчик закрывает за двадцать минут. Агент трудился два часа, добавлял мусор в код, уходил в сторону. Вместо того чтобы сразу бросить эксперимент, автор продолжил - из спортивного интереса. И это решение оказалось правильным.
Стандартный путь - QWEN.md, правила, скилы, агенты, подробные промпты с примерами - не дал заметного результата. Тогда появилась гипотеза: а что если дело не в промптинге, а в том, как вообще устроен контекст, который уходит в модель?
Три причины, почему агент врёт
Исследования нескольких университетских групп дают ясный ответ. Первая причина - иллюзия диалога. Никакого диалога нет: каждый новый запрос - это отдельный вызов модели, в который механически упаковывается вся предыдущая переписка. Для простой команды «добавь обработку ошибок в файл» реальный промпт разрастается до десятков тысяч токенов: системный промпт Qwen Code весит около 20 тысяч токенов ещё до того, как туда попадёт хоть слово пользователя.
Вторая причина - феномен lost-in-the-middle, зафиксированный исследователями Стэнфорда. Модель распределяет внимание по U-образной кривой: хорошо «видит» начало и конец контекста, середину - значительно хуже. Потеря качества составляет 10-20%. Феномен существует до сих пор, несмотря на рост контекстных окон.
Третья причина - контекстные помехи. Системный промпт Qwen Code упоминает десятки технологий, языков, фреймворков, областей разработки. Каждое лишнее слово активирует нерелевантные кластеры знаний модели. По данным исследователей из KAIST AI и LG AI Research, помехи в контексте способны обрушить точность ответов до 80% даже у самых современных моделей.
Что дал форк: цифры решают
Вместо того чтобы подстраиваться под инструмент, разработчик форкнул репозиторий и провёл хирургическую чистку системного промпта: убрал все упоминания конкретных технологий, удалил примеры, вычистил повторы. Затем протестировал изменения на четырёх моделях - Claude Sonnet 4.6, Qwen 3.6 Plus, Qwen3 Coder Next и DeepSeek V4 Flash - по десять прогонов на каждую.
Результаты оказались показательными. Расход токенов на промпты сократился существенно:
| Модель | Официальный CLI (токены) | Модифицированный CLI (токены) | Экономия |
|---|---|---|---|
| Claude Sonnet 4.6 | 122 304 | 59 742 | -50% |
| DeepSeek V4 Flash | 117 364 | 74 863 | -35% |
| Qwen 3.6 Plus | 107 770 | 53 275 | -50% |
| Qwen3 Coder Next | 103 210 | 41 746 | -53% |
Качество при этом не упало. Ни одна из моделей не начала хуже использовать инструменты после того, как из промпта исчезли жёсткие инструкции по их применению. Зато число уточняющих вопросов от агента выросло кратно: в официальном CLI Claude задавал уточнения в 2 из 5 прогонов, в модифицированном - в 5 из 5.
Отдельный вывод - про специализированные кодинговые модели. Qwen3 Coder Next фактически игнорировала системный промпт в обоих вариантах и отказывалась следовать скилам. Модель общего назначения того же семейства справлялась заметно лучше. Быстро набрать код - не значит работать в команде.
Главный принцип, который меняет подход
Из эксперимента вырос один практический принцип: в системный промпт допустимы только инструкции, релевантные абсолютно любой задаче. Всё остальное - шум, который снижает точность на каждом запросе, для каждого пользователя, без исключений.
- Примеры в промптах не обучают модель - они лишь активируют то, что она уже знает, и нередко мешают
- Упоминание конкретных технологий в системном промпте создаёт постоянные контекстные помехи
- Повторы инструкций не усиливают их - они просто занимают место в контексте
- Специализированные кодинговые модели могут уступать моделям общего назначения в агентных сценариях
Инструмент стал заметно предсказуемее. Без смены модели, без подписки на более дорогой сервис - просто за счёт понимания того, как на самом деле работает то, чем пользуешься каждый день.