Соответствие scaffold'а и модели
- title
- Соответствие scaffold'а и модели
- type
- concept
- summary
- Бенчмарки кодинг-агентов измеряют связку модель × scaffold: малые модели получают задачи, которые scaffold рассчитывал оставить на их самоконтроль
- tags
- llm, coding-agent, benchmarks
- created
- 2026-05-13
- updated
- 2026-07-29
- lang
- ru
- translation_of
- scaffold-model-fit
- source_updated
- 2026-07-29
- translated
- 2026-09-01
- translator
- lllm/antigravity/gemini-3.7-flash-high
Результаты бенчмарков кодинг-агентов измеряют взаимодействие между моделью и окружающей её обвязкой (scaffold'ом), а не одну лишь модель. Стандартная практика оценки считает scaffold константой, а модель - переменной: в такой парадигме результат локальной 9B-модели в Aider "и есть" оценка самой модели. Но scaffold закладывает определённые допущения: сколько автономии ожидать, насколько агрессивно редактировать файлы, как восстанавливаться после сбоев, ограничено ли рассуждение. Эти допущения делались в расчёте на frontier-модели. Когда на их место ставят модель, не способную к такой же саморегуляции, вину за ошибки возлагают на веса модели, хотя ограничивающим фактором выступает именно scaffold.
Статья Итая Инбарра о little-coder - самая наглядная демонстрация этого в wiki. Та же модель (Qwen3.5-9B Q4_K_M), тот же бенчмарк (Aider Polyglot), то же железо. Scaffold A - стандартный в Aider. Scaffold B - little-coder, переработанный под поведенческий профиль модели. Scaffold A набирает 19.11%, scaffold B - 45.56%. Разрыв в 26.5 процентных пункта - это и есть сигнал от scaffold'а.
Что scaffold'ы ожидают от моделей, а малые модели не могут дать
Пять аспектов, в которых scaffold'ы для frontier-моделей рассчитывают на саморегуляцию:
-
Дисциплина записи файлов. Frontier-модель понимает, когда нужно вызвать
Edit, а не перезаписывать (Write) файл целиком. 9B-модель примерно в половине случаев переписывает частично работающую реализацию с нуля. ИнструментWriteв little-coder отказывается работать с существующими файлами и возвращает структурированное перенаправление наEdit- это срабатывает примерно в 57% упражнений. -
Ограниченное рассуждение. Frontier-модели завершают chain-of-thought, как только собрали достаточно данных для действия. Малые модели уходят в размышления далеко за рамки разумного бюджета. little-coder ограничивает рассуждения 2048 токенами, заново подаёт частичный след мысли в виде контекста и повторяет попытку с отключённым thinking. Срабатывает в среднем в ~0.90 упражнений на бенчмарк.
-
Исследование workspace'а. Frontier-модели сами находят проектную документацию. Малые модели бросаются редактировать код, даже не прочитав
README.md. little-coder внедряет условный блок знаний, который срабатывает по ключевым словам для кодинга и направляет модель сначала сделать glob и прочитать файлы.Globсрабатывает в 67% упражнений,Read- в 100%. -
Упаковка справочных материалов. Frontier-модели нормально переносят объёмную статическую преамбулу. Бюджет контекста малых моделей её не выдержит. little-coder использует два экономных канала: карточки навыков инструментов (~80-150 токенов, выбираются на каждом ходе по предсказанию намерений) и шпаргалки по алгоритмам (подбираются по ключевым словам). Общий лимит: ~500 токенов за ход.
-
Восстановление после повреждённого вывода. Frontier-модели выдают корректные вызовы инструментов. Малые модели оборачивают их в блоки кода, галлюцинируют имена инструментов и зацикливаются на одном и том же неработающем подходе. little-coder оборачивает цикл агента парсером некорректного вывода, детектором пустых ответов и механизмом прерывания повторов.
В каждом из этих случаев scaffold для frontier-моделей полагался на саморегуляцию, тогда как scaffold для малых моделей превращает это допущение в инфраструктуру.
Ячейка асимметрии как оценка сигнала scaffold'а
Наглядный способ измерить scaffold-model fit - составить кросс-таблицу результатов обоих scaffold'ов на уровне отдельных упражнений.
| Aider pass | Aider fail | |
|---|---|---|
| little-coder pass | 32 | 69 |
| little-coder fail | 11 | 113 |
Ячейка со значением 69 - это упражнения, с которыми справляются те же самые веса модели, но до которых не дотягивается scaffold Aider'а. Ячейка со значением 11 - честная цена смены scaffold'а. Асимметрия между 69 и 11 и есть сигнал соответствия scaffold'а. Их соотношение (~6×) даёт порядок величины того, сколько можно выиграть за счёт переработки scaffold'а при неизменной модели.
Почему исключение из лидербордов - категориальная ошибка
Публичный лидерборд Aider Polyglot не публикует результаты для моделей меньше ~10B параметров. Неявное допущение: такие модели не стоят отдельной строчки. Базовый прогон Инбарра (baseline со стандартным scaffold'ом Aider и Qwen3.5-9B) набирает больше баллов, чем несколько позиций лидерборда на базе куда более крупных моделей. Исключение моделей измеряет вовсе не то, что кажется его авторам: оно лишь закрепляет допущение scaffold'а о том, что тестировать стоит только поведение моделей frontier-класса.
Это перекликается с аргументом из статьи по IKP на другом конце шкалы размеров: бенчмарки, созданные для проверки процедурных способностей, перестали измерять накопленные знания, поэтому закон Densing Law кажется верным на бенчмарках, оставаясь ложным по отношению к объёму фактов. Оба довода указывают на одну и ту же системную проблему: бенчмарки фиксируют свои допущения, а сдвиги в возможностях моделей могут опережать эти допущения в любую сторону.
Практические выводы
- Сравнение моделей на общем scaffold'е информативно только тогда, когда scaffold подходит обеим. Двум моделям с сильно различающимися профилями саморегуляции нужны разные scaffold'ы для справедливой оценки. Подход лидербордов ("ранжировать модели на этом бенчмарке") неявно предполагает, что scaffold не меняет расстановку сил.
- Наблюдаемость механизмов - это не абляции. Частота срабатывания механизмов в little-coder показывает лишь то, что каждый компонент работал во время бенчмарка, а не то, что конкретный компонент отвечает за определённую долю прироста. Проектирование scaffold'а под поведенческий профиль модели - цельная задача; разложить её на независимые составляющие получается далеко не всегда.
- Фраза "эта локальная модель плохо пишет код" обычно содержит скрытую претензию к scaffold'у. Прежде чем делать вывод, что ограничивающим фактором являются веса, попробуйте scaffold, который не требует от модели саморегуляции уровня frontier-класса.
Связанные страницы
- little-coder-scaffold-model-fit - исходная статья
- lucumr-local-models - дополняющий аргумент Армина Ронахера (Armin Ronacher) о том, что проблема кроется в шлифовке тулчейна; scaffold-model fit находится уровнем выше
- clean-code-coding-agents - важность структуры кода при работе с агентами; симметричное наблюдение со стороны scaffold'а
- local-llm-16gb-vram-tests - Вячеслав использует OpenCode с правилами
AGENTS.md; OpenCode меньше заточен под frontier-модели, чем Aider, но всё же менее адаптирован под малые модели, чем little-coder - thinking-mode-rule-erosion - ограничение бюджета на размышления в little-coder выступает одним из механизмов против этого; общий приём здесь - "перестать позволять модели самой решать, когда остановиться"
- acceptance-criteria-ids - превращение произвольных правил в верифицируемые идентификаторы; именно это по сути делает ограничение бюджета thinking с повторной попыткой
- incompressible-knowledge-probes - симметричный аргумент на стороне frontier-моделей о слепых зонах бенчмарков
- swe-1-7 - модель, обученная внутри своего scaffold'а (Devin) и поставляемая только вместе с ним, из-за чего модель и scaffold невозможно разделить; крайняя степень связывания модели и scaffold'а
- benchmarking-opus-5-slopcodebench - сталкивается с этим напрямую: моделям давался только голый промпт на решение без обратной связи по качеству в цикле, и то и другое - выбор scaffold'а, а не свойства модели
- evaluating-quantized-models - та же ошибка при квантовании: KLD и число бит на вес выступают лишь грубыми метриками первичного отбора, и попытка ранжировать варианты для продакшена по ним приводит к выбору неправильного квантования
- Boffin
- Toolcraft
- Benchmarking Opus 5 on SlopCodeBench
- Evaluating Quantized Models for Deployment
- Factual Capacity Scaling
- If AI Writes Your Code, Why Use Python? (Mitchem)
- itayinbarr.substack.com
- little-coder — Scaffold-Model Fit on Aider Polyglot
- An Empirical Study on Strong-Weak Model Collaboration for Repo-level Code Generation
- SWE-1.7 — Cognition's Coding Model
- Why Software Factories Fail