Использование кодовых агентов (Codex, Cursor, Claude Code) стало обыденностью. Внутри разных AI-агентов могут использоваться одни и те же модели, но результаты будут сильно отличаться.
Например, есть мнение, что Cursor лучше и быстрее справится с написанием качественного UI, Claude Code покажет себя лучше в проектировании архитектуры приложения, а WindSurf лучше остальных создаст прототип системы.
Почему одна и та же модель в разных агентах дает разный результат? Давайте разбираться.

UPD: В дальнейшем в качестве перевода слова harness буду использовать слово "обвязка". Спасибо @suor в комментариях.
Пара слов обо мне
Меня зовут Евгений. Я разработчик и лид ML-команды. На работе и в свободное время занимаюсь проектами, связанными с агентами, LLM и обработкой естественного языка в целом. Совсем недавно начал вести тг канал "В погоне за NLP" (@chasing_nlp), где делюсь практическим опытом и рассказываю про техническую часть AI и ML.
Часть 1. LLM - мозг системы
По своей сути большая языковая модель — это модель генерации текста. У неё одна задача: по последовательности токенов предсказывать следующий. В чистом виде она не имеет состояния, памяти, инструментов или доступа к файловой системе. Каждое новое обращение к языковой модели не зависит от предыдущих. У нее есть только текст текущего запроса и ее внутренние знания.
Часть 2. Agent и ReAct
Чтобы большая языковая модель могла решать сложные задачи, ее оборачивают в архитектуру агента: добавляют инструменты, память и цикл выполнения. Один из базовых шаблонов построения агентов — ReAct (Reason + Act). Он состоит из четырёх компонент:
Reason - модель получает запрос и определяет, что необходимо сделать дальше.
Act - вызов инструмента, выполнение действия.
Observe - результат выполнения инструмента возвращается в модель как контекст.
Repeat - модель обрабатывает полученную информацию и возвращается к первому шагу, пока задача не будет выполнена.

Этот цикл отличает агента от диалоговой модели (чат-бот без дополнительных возможностей). Модель отвечает на запрос. Агент выполняет действия, анализирует их, адаптируется - и отвечает.
Для качественной работы такого цикла необходимо согласованное взаимодействие большой языковой модели, памяти, инструментов и механизмов верификации.
Часть 3. Agent Harness
Лаконичное определение даёт команда LangChain:
Агент = Модель + Обвязка
Обвязка (Harness) — это все, что не является самой моделью: любой кусок кода, конфиг или логика исполнения. Модель сама по себе не является агентом. Она становится таковым, когда обвязка обеспечивает модель состоянием, инструментами, петлёй обратной связи, ограничениями и механизмами верификации действий.
Иначе говоря, обвязка — это программная инфраструктура вокруг LLM, ответственная за всё поведение системы кроме размышлений модели. Она выступает посредником между LLM и внешним миром: инструментами, файловой системой, памятью, состоянием и пользователем.
Фактически все AI кодинг агенты — Claude Code, OpenCode, Codex, Cursor и др. — это разные реализации обвязки. Внутри агента можно сменить модель, но инженерная ценность продукта именно в самой обвязке, т.е. в том, как именно эта модель используется.
P.S. Обвязки создаются под конкретную задачу, а не только для кодинг агентов. Так, например, другую логику работы будут иметь шоппинг агенты или агенты для глубоких исследований.
Часть 4. Почему одна и та же LLM ведёт себя по-разному в разных кодинг агентах
Когда вы переходите из Claude Code в Cursor или любой другой кодинг агент, вы меняете не просто интерфейс, а всю систему вокруг модели. У каждого агента своя обвязка: свои правила, инструменты, способы управления контекстом, подходы к планированию.
Что меняется:
Системные промпты. Каждый агент использует собственные инструкции, определяющие поведение модели: уровень автономности, стиль ответов, склонность к декомпозиции задач.
Управление контекстным окном. Контекстное окно ограничено. Каждый агент по-своему работает с контекстом. Система может делать выжимку определённых частей, выгружать часть на диск или подгружать с диска по мере необходимости.
Доступные инструменты. Набор инструментов для каждого агента свой - он реализуется командой разработчиков конкретного продукта: bash, поиск по файлам, навигация по проекту, запуск тестов и так далее.
Автономность. Определяется системными промптами и влияет на ход решения задач. Например, Claude Code может быть заточен под автономность, Cursor - под разработку с акцентом на участие человека через интерфейс IDE.
Механизмы верификации. Борис Черный, создатель Claude Code, говорит: «Самое важное для получения отличных результатов - дать Claude способ верифицировать свою работу. Если у Claude есть петля обратной связи, качество финального результата вырастет в 2–3 раза».
Изолированная среда исполнения кода. Возможности внутри среды определяются разработчиками системы.
Цикл планирования. Организует работу агента по шагам.

Часть 5. Иерархия LLM-инжиниринга
Область разработки проектов с LLM развивалась по следующему пути.
Промпт-инжиниринг — с этого начинали почти все. Прописываем качественные инструкции, добавляем примеры работы, заставляем подумать шаг за шагом и качество ответов растет.
Инжиниринг контекста — на этом этапе мы думали о том, какой контекст передавать в модель, как саммаризовать длинный диалог, как добавить информацию из предыдущих сессий, как подготовить релевантный контекст для RAG-систем.
Харнесс инжиниринг или инжиниринг обвязок — тут складывается полная картина. Это уже приложение с LLM под капотом, способное решать сложные задачи. Здесь мы пытаемся контролировать всё: как и когда загружается контекст, какие инструменты доступны, как агент управляет памятью и планирует выполнение задач.

Сейчас все чаще разработчики задачаются не только вопросом "какую именно LLM использовать?", а еще и вопросом "в какой обвязке использовать LLM?". При грамотном проектировании обвязки вы можете свободно изменять модель. Вышла новая SOTA - меняем текущую LLM на более качественную. Все будет работать как прежде, только с лучшим мозгом. Остальной код можно не трогать.
Стоит отметить, что под инженерией обвязок понимается не только добавление новых возможностей для использования LLM. По мере улучшения используемых моделей возможно и удаление/изменение части системы т.к. модель становится достаточно сильной, чтобы взять на себя часть работы текущей обвязки. Например, пока модели не могли качественно вызывать инструменты, для исправления ситуации активно использовался подход SGR (он все еще используется во многих других сценариях), теперь в некоторых системах от него можно отказаться в пользу упрощения.
Бонус: аналогия
Представьте кухню в ресторане.

Шеф-повар - это LLM. Невероятно способный, знает множество рецептов, имеет огромный опыт и может приготовить почти все, что вы попросите, имея под рукой необходимые инструменты. Однако, в одиночку, в пустой кухне без продуктов, кухонных принадлежностей и техники он не может ничего - только делиться своим опытом с другими людьми и рассказывать, как он умеет готовить, забавные факты о кулинарном мире и своей жизни.
Кухня - это обвязка. Именно она определяет, что и как может быть приготовлено:
Духовка, сковородки, ножи - это инструменты: без них даже мишленовский шеф не приготовит достойное блюдо.
Су-шеф и рядовые повара - субагенты: исполнители, которым шеф делегирует задачи. Кто-то готовит мясо, кто-то рыбу, кто-то отклеивает этикетки от бананов. Шеф оркестрирует, повара работают параллельно.
Рецепты и мизанплас - Правильно подготовленная информация и расставленные по местам вещи в нужный момент используются шефом и поварами для выполнения задач.
Кладовка и холодильник - файловая система и память: без них для каждого блюда пришлось бы закупать ингредиенты заново.
Санитарные нормы и сторонние ограничения - цензор и изолированные среды разработки для безопасного решения задач.
Один и тот же шеф покажет совершенно разный результат на разных кухнях. Поместите его на кухню студенческого общежития - получите вкусную студенческую еду. Поместите на полностью оснащенную профессиональную кухню с командой поваров и заполненным холодильником - получите нечто выдающееся.
Для приготовления изысканных и сложных блюд часто требуется полноценная команда и оборудованная кухня. Для приготовления пельменей хватит студента и кухни в общежитии.
От инструмента зависит не только качество, но и стоимость блюд. Выбирайте модель и обвязку под свою задачу. Тратьте токены с умом.
Заключение
Когда вы замечаете, что одно AI-приложение для разработки работает лучше другого, то, возможно, вам не кажется. Причина - в разных обвязках вокруг модели.
Обвязка контролирует, что модель знает, что она может делать, как подробно может декомпозировать и планировать задачи и может ли выполнять самопроверку. Измени обвязку и ты изменишь агента, даже если модель не изменилась (интересный пример).
P.S. Спасибо за прочтение статьи. Также приглашаю в свой тг-канал "В погоне за NLP" (@chasing_nlp). Там буду публиковать анонсы новых статей и свой опыт разработки.
Список источников
Комментарии (8)

thethee
08.04.2026 18:00Про механизмы верификации в статье написано буквально в двух местах:
Анонс того что именно содержится в харнессе
Глубокая цитата Конфуция на эту тему
А что это все таки за механизмы такие? Что значит "верифицировать"? Возможность запустить только что написанные тесты? Возможность запустить саму программу?
Чем это отличается от инструментов, которые покрыты другим пунктом?

chasing_nlp Автор
08.04.2026 18:00Под верификацией тут понимается именно проверка написанного агентом кода. Так агент может убедиться, что написанный код отрабатывает верно и в случае необходимости исправить ошибки.
Смысл верификации один, но реализована она может быть с помощью разных инструментов. Набор из оригинального поста "Конфуция":
Запуск bash команды
Прогон тестов
Тестирования приложения в браузере или мобильном симуляторе
Таким образом, верификация имеется в виду как концепт, инструменты - как способ реализации верификации.
d3d14
Системный промпт для модели задается в агенте (обвязке)?
chasing_nlp Автор
Именно так. Еще агент может вызывать субагентов (subagents) со своими системными промптами.
Ради интереса можно посмотреть системные промпты различных AI-инструментов вот тут по ссылке: https://github.com/x1xhlol/system-prompts-and-models-of-ai-tools/tree/main
d3d14
Интересно. Просто я замечал заметно разное поведение одной и той же модели в разных агентах. Не уровень "мышления", а именно разные установки. Я то думал, что системный промпт им задается на серверах производителя.
chasing_nlp Автор
Системный промпт на серверах производителя тоже может внедряться непосредственно перед попаданием полного промпта в модель. Это нужно, например, для соблюдения политик компании и ввода ограничений на поведение модели. Он как раз может быть одним для всех агентов, которые ее используют.
Однако за разное поведение одной и той же модели в разных агентах в частности отвечают системные промпты агента для этой модели.