Использование кодовых агентов (Codex, Cursor, Claude Code) стало обыденностью. Внутри разных AI-агентов могут использоваться одни и те же модели, но результаты будут сильно отличаться.
Например, есть мнение, что Cursor лучше и быстрее справится с написанием качественного UI, Claude Code покажет себя лучше в проектировании архитектуры приложения, а WindSurf лучше остальных создаст прототип системы.
Почему одна и та же модель в разных агентах дает разный результат? Давайте разбираться.
P.S. я не нашел и не придумал перевод слова harness, который отражал бы суть и был понятен всем. Поэтому в дальнейшем буду использовать транслитерацию этого слова – харнесс. В комментариях можем обсудить наиболее подходящий перевод.
Пара слов обо мне
Меня зовут Евгений. Я разработчик и лид ML-команды. На работе и в свободное время занимаюсь проектами, связанными с агентами, LLM и обработкой естественного языка в целом. Совсем недавно начал вести тг канал “В погоне за NLP” (@chasing_nlp), где делюсь практическим опытом и рассказываю про техническую часть AI и ML.
Часть 1. LLM – мозг системы
По своей сути большая языковая модель — это модель генерации текста. У неё одна задача: по последовательности токенов предсказывать следующий. В чистом виде она не имеет состояния, памяти, инструментов или доступа к файловой системе. Каждое новое обращение к языковой модели не зависит от предыдущих. У нее есть только текст текущего запроса и ее внутренние знания.
Часть 2. Agent и ReAct
Чтобы большая языковая модель могла решать сложные задачи, ее оборачивают в архитектуру агента: добавляют инструменты, память и цикл выполнения. Один из базовых шаблонов построения агентов — ReAct (Reason + Act). Он состоит из четырёх компонент:
-
Reason – модель получает запрос и определяет, что необходимо сделать дальше.
-
Act – вызов инструмента, выполнение действия.
-
Observe – результат выполнения инструмента возвращается в модель как контекст.
-
Repeat – модель обрабатывает полученную информацию и возвращается к первому шагу, пока задача не будет выполнена.
Этот цикл отличает агента от диалоговой модели (чат-бот без дополнительных возможностей). Модель отвечает на запрос. Агент выполняет действия, анализирует их, адаптируется – и отвечает.
Для качественной работы такого цикла необходимо согласованное взаимодействие большой языковой модели, памяти, инструментов и механизмов верификации.
Часть 3. Agent Harness
Лаконичное определение даёт команда LangChain:
Агент = Модель + Харнесс
Харнесс (с англ. упряжь, обвязка, доспехи) — это все, что не является самой моделью: любой кусок кода, конфиг или логика исполнения. Модель сама по себе не является агентом. Она становится таковым, когда харнесс обеспечивает её состоянием, инструментами, петлёй обратной связи, ограничениями и механизмами верификации действий.
Иначе говоря, харнесс — это программная инфраструктура вокруг 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). Там буду публиковать анонсы новых статей и свой опыт разработки.
Список источников
Автор: chasing_nlp


