Что такое harness и как нейросеть становится агентом

Что такое harness и как нейросеть становится агентом AI-агенты и автоматизация
Harness это обвязка вокруг языковой модели: цикл, инструменты, память и права доступа. Разбираем анатомию агента, тонкий и толстый harness и роль самопроверок.
Дмитрий Губанов
Пишу про то, чем занимаюсь сам более 15 лет - скрипты для облегчения работы в соцсетях и мессенджерах Телеграм и MAX, AI-автоматизация маркетинга, контекстная реклама и аналитика.

Cursor пишет целые модули, Claude Code чинит баги по одной фразе, а ассистент в редакторе сам лезет в базу и приносит готовый отчет. А внутри сидит та же языковая модель, которая умеет ровно одно, предсказывать следующее слово. Откуда у нее берутся руки, память и упорство дотащить дело до конца, на первый взгляд непонятно. Весь фокус в тонком слое поверх модели, его в индустрии и прозвали harness.

Harness (обвязка) - это весь код вокруг языковой модели: цикл, набор инструментов, память, песочница и права доступа. Сама LLM только предсказывает токены, агентом ее делает именно обвязка. Насколько она важна, видно по цифрам: на одной и той же модели смена harness двигала агента более чем на 20 позиций в бенчмарке TerminalBench. Формула простая, модель плюс harness равно агент.

Коротко

  • Модель только генерирует текст. Действовать в реальном мире ее заставляет harness - слой кода вокруг нее.
  • Сердце обвязки - цикл: подумал, вызвал инструмент, посмотрел результат, скорректировал курс, повторил.
  • Тонкий harness опирается на сильную модель, толстый берет логику на себя, чтобы вытянуть слабую.
  • Главный враг агента - раздутый контекст. Хороший harness подсовывает модели только то, что нужно сейчас.
  • Для рутинного постинга агент избыточен: повторяемую задачу дешевле и надежнее отдать узкому боту.

Что такое harness простыми словами

Harness - это обвязка вокруг большой языковой модели, все, что крутится около нее, а не она сама. В переводе с английского слово значит "сбруя" или "упряжь", и метафора тут на удивление точная: модель это сила, а обвязка задает направление и не дает разнести округу.

Что такое harness и как нейросеть становится агентом

Сама по себе LLM это математический алгоритм, и только. Команды она не запускает, не помнит, что сгенерировала пять минут назад, за пределы своего текстового окна не выходит. Все, что она делает, получает стартовый текст, предсказывает следующий токен, возвращает его в контекст и крутит так дальше, пока не выпадет токен остановки. Чтобы эта слепая генерация превратилась в работу, модель надо зациклить саму на себя и дать ей инструменты. Вот это и есть harness.

Слои важно не путать. Сама модель это еще не harness, а обвязка без модели вообще пустой каркас, ей нечем думать. Агент рождается на стыке, когда живую модель сажают в обвязку, а та дает ей состояние, инструменты, петлю обратной связи и рамки. Если хочется освежить базу, у нас есть отдельный разбор, чем AI-агент отличается от нейросети и чат-бота.

Схема Aisha: модель плюс harness равно агент, слои обвязки вокруг LLM
Ядро - языковая модель, вокруг нее слои обвязки. Вместе они дают агента

Чтобы стало совсем наглядно, инженеры любят две метафоры. Первая - автомобиль: модель тут двигатель, harness - это колеса, руль и трансмиссия, а промпт - водитель, который говорит, куда ехать. Вторая - компьютер: модель это процессор, обвязка - материнская плата, память, диск и операционная система, а пользователь за клавиатурой - запрос. Двигатель без машины никуда не везет, как ни газуй.

Само слово пришло из обычного тестирования софта, где "testing harness" значил тестовый стенд для проверки куска кода. В мир нейросетей термин затащили через системы оценки моделей - например, известный LM Evaluation Harness от EleutherAI. А ближе к 2026 году инженеры из OpenAI, Anthropic и LangChain стали официально называть этим словом саму архитектуру агентов.

Зачем агенту цикл и при чем тут надежность

Цикл нужен, чтобы модель не строила весь план вслепую, а сверялась с реальностью после каждого шага. Самый ходовой паттерн такого зацикливания называется ReAct (Reasoning plus Action). Модель думает над задачей, выбирает инструмент (поиск, терминал, запрос к базе), harness выполняет вызов и возвращает результат обратно в контекст. Дальше модель снова думает, оценивает, что вышло, и решает, какой шаг следующий. И так по кругу, пока задача не закрыта или не сработал стоп.

Тут напрашивается вопрос, почему нельзя попросить модель выдать всю цепочку действий разом, одним длинным сообщением. Ответ лежит в теории надежности, в законе Лусера (Lusser`s law). Он выведен задолго до нейросетей и гласит простую вещь: надежность последовательной цепочки без самопроверок равна произведению надежностей звеньев.

Флоу цикла ReAct в harness Aisha: запрос, мысль, действие, наблюдение, повтор, стоп
Цикл крутится, пока задача не закрыта: думаю, делаю, смотрю результат, повторяю

Посчитаем на пальцах. Пусть агент делает 10 шагов подряд, и каждый отдельный шаг верен в 99 случаях из 100. Кажется, почти идеально. Но 0,99 в десятой степени - это уже около 0,90, то есть итоговая вероятность успеха проседает до 90 процентов. Чем длиннее цепочка без проверок, тем выше шанс, что где-то по дороге модель начнет фантазировать и совершит фатальную ошибку. Именно поэтому harness не дает генерировать план целиком. После каждого маленького шага он принудительно останавливает модель, скармливает ей настоящий результат (ответ сервера, ошибку компилятора, содержимое файла) и заставляет скорректировать курс. Самопроверка тут не бюрократия, а математическая необходимость.

На практике. Когда мы собирали собственный цикл для агента, главный выигрыш дал не выбор модели, а честная остановка после каждого инструмента. Стоит разрешить модели "договорить план до конца" без сверки с фактом, и она уверенно идет чинить файл, которого нет.

Из чего состоит harness: анатомия обвязки

Под капотом любая обвязка собрана из одних и тех же блоков, будь то Cursor, Claude Code или самописный скрипт на сто строк. Меняется реализация, но набор узлов один. Вот он целиком.

Системный промпт
базовое описание поведения агента, его роли и границ.
Правила проекта
точечные настройки под конкретную задачу: файлы вроде agents.md, cursorrules или памяти проекта.
Инструменты
руки агента: работа с файлами, терминал, SSH, браузер, доступ к базам.
Цикл и стоп-условия
тот самый ReAct, который крутит агента до цели или до лимита итераций.
Песочница и права
изолированное окружение и контроль доступа. Критичный для безопасности слой.
Менеджер сессий
хранит историю шагов, чтобы агент помнил, что делал на прошлом ходу.
Контекстная память
то, что подается в модель в момент генерации: куски кода, выдача из базы знаний, правила.
Наблюдаемость
видимость происходящего: какой инструмент вызван, какой файл прочитан, какой патч наложен.

Отдельно стоят скиллы и MCP, их часто валят в одну кучу, а это разные вещи. Скилл - это овеществленное знание модели, шпаргалка или исполняемый скрипт: например, "чтобы сжать видео, используй вот такие параметры ffmpeg". MCP (Model Context Protocol) сложнее. Это "ручки", через которые агент безопасно работает с закрытыми внешними системами, скажем, с корпоративным Confluence, и при этом API-токены не утекают в саму языковую модель. Если коротко, скилл учит модель что делать, а MCP дает ей безопасный канал куда ходить.

Про песочницу стоит сказать злее. Это не формальность из чек-листа безопасника. Стоит выдать агенту полные права в обход подтверждений (тот самый режим "dangerously skip permissions"), и он способен снести базу или положить боевой сервер, искренне считая, что выполняет задачу. Наблюдаемость работает в паре с песочницей: хорошая обвязка показывает каждый шаг вживую, чтобы человек успел нажать стоп, если агент свернул не туда.

Тонкий и толстый harness: в чем разница

Тонкий harness несет минимум логики и полагается на ум модели, толстый берет логику на себя ради слабых моделей. Выбор между ними напрямую зависит от того, насколько умную нейросеть вы ставите за спину агента.

Сравнение тонкого и толстого harness в материале Aisha
Тонкая обвязка верит модели, толстая делает работу за нее

Тонкий harness - это Claude Code или Cursor, за которыми стоят мощные модели. Дай такому агенту ссылку на базу знаний и попроси найти статью - встроенного плагина под эту базу у него нет, и не надо. Модель сама напишет скрипт на Python, разберется с API платформы, сделает запрос и вытащит нужное. Обвязка тут не мешает, она просто не лезет.

Толстый harness делают под слабые, локальные или опенсорсные модели, которые звезд с неба не хватают. Такая модель путает аргументы функции, если их больше трех, и не вытягивает сложный скрипт. Поэтому разработчик берет всю логику на себя: пишет кучу узких MCP-серверов и предельно простых инструментов с однозначными именами. Модели остается сказать "нажми кнопку А", а тяжелую работу harness делает сам.

Тонкий и толстый harness по основным критериям
Критерий Тонкий harness Толстый harness
На что опирается На ум сильной модели На логику в коде обвязки
Инструменты Немного универсальных (терминал, файлы) Много узких, с однозначными именами
Под какие модели Топовые облачные Слабые, локальные, on-premise
Цена ошибки Модель сама выкручивается Все предусматривает разработчик

Инженеры формулируют это так: умная модель компенсирует слабый harness, а умный harness вытягивает слабую модель. Вывод практичный: грамотная настройка обвязки способна заметно поднять качество ответов вообще без замены нейросети. Иногда дешевле причесать harness, чем платить за модель помощнее.

Восемь уровней агентности: от автодополнения до роев

Обвязки появились не вдруг, а доросли через несколько ступеней, и harness - примерно шестая из них. Удобная классификация (ее предлагали в инженерных блогах, например у Басима Али) выглядит так.

Лестница уровней агентности от автодополнения до автономных агентов, материал Aisha
Путь от подсказки по Tab до автономных агентов. Harness живет на шестой ступени
  1. Табы. Автодополнение строки по нажатию Tab. Самый базовый уровень.
  2. Агентные IDE. Даешь кусочек контекста, среда генерирует целый блок, например класс по интерфейсу.
  3. Контекст-инжиниринг. Разработчики начали вручную подсовывать модели куски текста, примеры и тестовые данные, задавая рамки генерации.
  4. Компаундинг. Системы научились сохранять удачные решения в файлы (agents.md и им подобные), чтобы в следующий раз читать готовое, а не гадать с нуля.
  5. MCP и скиллы. Сохраненные знания превратились во внешние инструменты, которые агент вызывает синхронно, один за другим.
  6. Harness-инженерия. Текущий этап. Полноценные обвязки, где модель сама работает с контекстом и правилами, динамически подключает MCP и крутится в цикле самопроверок.
  7. Фоновые агенты, рои. Ближайшее будущее. Сабагенты массово накидываются на одну задачу в несколько потоков, решают ее параллельно и сливают результат в общий отчет.
  8. Автономные агенты. Вершина. Системам не нужны команды человека, они сами знают, что делать. Пока к этому не готовы ни модели, ни обвязки.

Лестница полезна не как пророчество, а как карта. По ней видно, что harness - это не маркетинговое слово, а конкретная ступень зрелости, на которой агент перестает быть умным автодополнением и становится исполнителем. Кстати, шаги шестой ступени мы разбирали отдельно, на живом примере GitHub-набора для проектирования цикла агента с классами риска и проверками.

Как harness спасает контекст

Главная боль больших моделей - работа с контекстным окном, и хорошая обвязка лечит ее лучше, чем рост окна. У модели может быть окно на миллион токенов, но эффективно она держит в голове куда меньше, на практике ближе к нескольким десяткам тысяч. Дальше внимание расплывается.

Есть и отдельный эффект, его называют "проклятием середины" (lost in the middle). Если важный кусок (нужный фрагмент кода или описание инструмента) лежит в середине гигантского окна, качество ответа заметно проседает. Модель будто забывает то, что в центре, цепляясь за начало и конец. Хороший harness про это знает и не сваливает все в одну кучу.

Цифры говорят сами за себя. В одном из разборов команда Vercel выкинула из контекста около 80 процентов неиспользуемых инструментов перед отправкой запроса модели - и качество работы обвязки выросло в два-три раза. Отсюда главный враг производительности агента: раздутые правила. Разработчики любят написать один гигантский agents.md на тысячи строк, модель потом долго "прогревает" этот контекст, медленно отвечает и тупит. Современный подход обратный: резать инструкции на десятки мелких скиллов, грузить в контекст только их короткие описания, а модель пусть сама решит, какой скилл прочитать целиком под текущую задачу.

Было
один файл правил на тысячи строк, модель греет его на каждом запросе и вязнет.
Стало
десяток коротких скиллов, в контекст идут только заголовки, целиком читается нужный.
Эффект
меньше токенов на старте, быстрее ответ, меньше галлюцинаций на ровном месте.

Как агент работает в реальном времени

Проще один раз увидеть цикл на бытовой задаче, чем читать про него абзацами. Возьмем консольного агента и попросим: "создай файл test.txt, запиши в него слово test, потом выведи его вес". Дальше harness разбивает это на шаги и проходит их сам.

  1. Обвязка перехватывает запрос и заставляет модель составить план. Модель решает, что шагов три.
  2. Вызывается инструмент правки файла, он физически создает на диске пустой test.txt и рапортует модели: файл создан.
  3. Модель видит статус и отправляет команду записать внутрь строку test. Harness выполняет запись.
  4. Модель вызывает инструмент проверки размера, harness спрашивает операционную систему и возвращает ответ.
  5. Модель собирает все воедино: "файл test.txt создан, содержит слово test, весит 5 байт".

Пока агент гоняет этот цикл ошибок и проверок, человек может пить кофе, ни единого клика по дороге не требуется. И еще одна сильная штука современных обвязок - протокол ACP (Agent Client Protocol). Он позволяет встраивать консольных агентов в любые графические оболочки: подключить агента прямо внутрь редактора заметок Obsidian или IDE от JetBrains. Агент получает корневую папку редактора как свою домашнюю директорию и работает с вашими заметками и кодом всей мощью своих инструментов.

Нужен ли harness маркетологу

Честный ответ: напрямую почти никогда, а вот понимать его логику полезно, чтобы не переплачивать за сложность. Harness и агент оправданы там, где задача меняется от раза к разу: ресерч, аналитика, черновики под разные сегменты, разбор обращений. Там автономность и цикл самопроверок реально экономят время.

А вот рутину с понятным сценарием городить через агента - перебор. Выложить один пост сразу в Telegram, VK, Threads и MAX - это повторяемая операция без развилок, и ей не нужен ни ReAct, ни восемь слоев обвязки. Тут выигрывает узкий специализированный инструмент: по сути тонкая обвязка под одну задачу. Для перепоста из Telegram в MAX это бесплатный бот @pereposter_free_bot, для всех площадок разом - платный AIsha-Poster. Дешевле и надежнее, чем учить полноценного агента нажимать одни и те же кнопки. Если же хочется разобраться, где в SMM агент уместен, а где хватает автопостинга, мы раскладывали это в материале про выбор бота для постинга в соцсети.

Типичные ошибки при сборке обвязки

Harness имеет свойство разрастаться. Со временем агент обрастает сотнями инструментов, костылями под обработку текста и забытыми скриптами. Получается снежный ком, который съедает контекст и провоцирует галлюцинации. Вот грабли, на которые наступают чаще всего.

  • Гигантский файл правил. agents.md на тысячи строк греется вечность и топит важное в шуме. Лечится нарезкой на скиллы.
  • Пропуск прав доступа. Режим "пропустить все подтверждения" ради скорости рано или поздно стоит удаленной базы. Песочница не опция, а страховка.
  • Дублирующиеся инструменты. Отдельно "прочитать папку" и "прочитать файл" - это лишний выбор для модели и лишние токены. Такое сливают в один инструмент.
  • Цепочка без самопроверок. Длинная последовательность шагов без сверки с фактом обваливает надежность по закону Лусера. Останавливайте модель чаще.
  • Нет наблюдаемости. Если не видно, что агент делает прямо сейчас, поймать момент, когда он свернул не туда, уже не получится.

Чек-лист: ревизия harness

✓ правила нарезаны на скиллы, в контекст идут только описания
✓ дублирующиеся инструменты слиты, имена однозначные
✓ права доступа включены, опасные действия требуют подтверждения
✓ после каждого шага модель видит реальный результат
✓ каждый вызов инструмента и патч виден человеку вживую

Частые вопросы

Чем harness отличается от промпта?

Промпт говорит агенту, что делать в этот конкретный раз. Harness отвечает за то, чтобы агент действовал правильно каждый раз без новых указаний: дает цикл, инструменты, память и ограничения. Промпт - разовая команда, обвязка - постоянная инфраструктура вокруг модели.

Harness и агент - это одно и то же?

Нет. Агент - это модель плюс harness в работе. Сама обвязка без модели - пустой каркас, она ничего не генерирует. А модель без обвязки не умеет действовать, только предсказывает текст. Агентом систему делает именно их соединение.

Что такое тонкий и толстый harness?

Тонкий harness несет минимум логики и полагается на сильную модель, она сама пишет скрипты и разбирается с API. Толстый harness берет логику на себя ради слабых моделей: много узких инструментов с простыми именами, чтобы модели оставалось лишь нажать готовую кнопку.

Зачем агенту цикл, почему не выдать план разом?

Из-за надежности. По закону Лусера цепочка из 10 шагов с точностью 99 процентов на шаге дает итог около 90 процентов. Цикл заставляет модель сверяться с реальным результатом после каждого действия и исправлять курс, не накапливая ошибки.

Чем скилл отличается от MCP?

Скилл - это знание модели в готовом виде: текстовая шпаргалка или скрипт под конкретную операцию. MCP (Model Context Protocol) - это безопасный канал к закрытым внешним системам, через который агент работает с ними, не получая на руки секретные токены. Скилл учит что делать, MCP открывает куда ходить.

Нужен ли harness, чтобы постить в соцсети?

Для рутинного постинга нет. Выложить пост сразу на несколько площадок - повторяемая задача без развилок, ей хватает узкого бота-автопостера. Полноценный агент с обвязкой оправдан там, где задача меняется и нужны планирование и самопроверки, а не одни и те же действия по кругу.

Оцените статью