Вопрос «какая нейросеть лучше пишет код» — это лишь половина вопроса. Помимо самой модели есть ещё и обвязка вокруг неё — она же harness, «харнесс». Разбор харнессов ИИ-агентов показывает, что именно обвязка определяет, насколько эффективно модель справляется с задачами в реальном проекте.
Принято выделять четыре слоя агентной системы: модель, скаффолд, харнесс и агент. Модель — это функция «текст на входе → текст на выходе», которая живёт в пределах одного вызова. Памяти между вызовами у неё нет, и она не видит ваш репозиторий. Скаффолд (scaffold, «строительные леса») — всё, что окружает модель до первого вызова: системный промпт вендора, описания инструментов, файл правил проекта вроде CLAUDE.md или AGENTS.md, список подключённых внешних инструментов через MCP и формат ответа. Скаффолд на типичном проекте — от нескольких до десятков тысяч токенов текста, которые попадают в каждый вызов модели ещё до вашей первой фразы.
| Слой | Что это | Пример на проекте |
|---|---|---|
| Модель | Функция «текст на входе → текст на выходе», без памяти и контекста репозитория | Claude Opus, GPT-5.x, Gemini, DeepSeek |
| Скаффолд | Всё, что задано заранее: промпты, схемы инструментов, правила | Системный промпт, CLAUDE.md, описания Read/Edit/Bash |
| Харнесс | Цикл исполнения: вызов, парсинг, запуск инструментов, остановка | Claude Code, Codex, Cursor |
| Агент | Связка модели и харнесса, гоняющая инструменты ради цели | «Агент сделал PR» |
Харнесс — исполнительная машина вокруг вызова. Он собирает промпт из скаффолда, истории и вашей задачи; зовёт модель; разбирает ответ — модель попросила прочитать cart.ts или запустить pnpm test?; исполняет запрошенное: читает файл, запускает команду, спрашивает разрешение на опасное вроде rm -rf или DROP DATABASE; подкладывает результат обратно в историю; решает, продолжать или остановиться. Сюда же относится всё, что помогает циклу пережить длинную задачу: обрезка контекста, кэширование промптов, песочница, отказы, хуки. В типичном проекте харнесс — это готовый продукт: Claude Code, Codex или Cursor.
Агент — то, что получается, когда модель посадили в этот цикл с инструментами. Когда говорят «агент сделал PR», имеют в виду всю связку целиком. Если взять авто как метафору: модель — двигатель, харнесс — трансмиссия, педали, приборка и водитель разом. Более мощный двигатель не разгонит машину, если сцепление не схватывает или водитель не в себе.
Вклад обвязки можно измерить. Академическая работа «Stop Comparing LLM Agents Without Disclosing the Harness» (arXiv 2605.23950) от исследователей из Тулейна, Ратгерса и Virginia Tech целиком посвящена тому, что сравнения агентов без раскрытия harness некорректны. В ней показано, что одна и та же модель с разной обвязкой может показывать существенно разные результаты. Это подтверждает и практика: на реальном проекте замеры показали, что изменение правил в скаффолде или настроек харнесса даёт больший прирост, чем смена модели на более новую.
Границу между скаффолдом и харнессом проводят по-разному, а часто не проводят вовсе. Но понимание этих слоёв помогает разработчикам: если агент «не понял, как у нас принято», обычно меняют скаффолд — дописывают правила. Если агент зависает или делает лишние шаги — смотрят на харнесс. Для команд, внедряющих ИИ-агентов в разработку, это означает: не гонитесь за самой мощной моделью, сначала настройте обвязку под свой проект.


