Harness-инжиниринг: что это такое и как он работает

Простое объяснение того, что такое harness для ИИ и как harness-инжиниринг определяет возможности ИИ-агентов.

Diagram of an AI harness: an AI model that reads and writes text sits at the center, connected to six parts: agent loop, context management, tools, memory, permissions, and verification.

Что такое harness-инжиниринг

Harness-инжиниринг — это создание harness для ИИ-инструмента, то есть всех частей инструмента, кроме самой ИИ-модели.

Модель — это ИИ-система, обученная на больших объемах текста, чтобы понимать и писать тексты на естественном языке. Примеры ИИ-моделей: GPT от OpenAI, Claude от Anthropic и Gemini от Google.

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

Harness нужен даже простому чат-ассистенту. Модель забывает каждый обмен репликами сразу после ответа, поэтому harness хранит историю разговора. Если человек спрашивает о Париже, а затем уточняет: «Какое у него население?», harness отправляет модели оба вопроса вместе. Так модель понимает, что «у него» означает Париж.

Harness-инжиниринг — одна из причин, по которым два инструмента на основе одной и той же модели могут работать настолько по-разному. Например, в одном независимом тесте исследователи оставили модель (GPT5) прежней и изменили только harness — и результат модели в тесте по программированию изменился на величину до 11%.

Разработчики ИИ-моделей, такие как Anthropic и OpenAI, создают harness для собственных ИИ-продуктов, например Claude Code и Codex. А компании, которые разрабатывают ИИ-продукты, проектируют harness под выбранные базовые модели. Часть harness формируют и сами пользователи ИИ-инструментов. Многие инструменты позволяют добавлять постоянные инструкции, подключать приложения и выбирать, какие действия требуют их одобрения, прежде чем инструмент продолжит работу.

Harness-инжиниринг для ИИ-агентов

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

У большинства агентных harness шесть основных частей:

1. Агентный цикл

Агентный цикл — это код внутри harness, который шаг за шагом продвигает задачу вперед.

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

Harness распознает запрос, выполняет поиск и добавляет результаты к тому, что видит модель. Модель читает их и решает, что делать дальше.

2. Управление контекстом

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

Все это модель получает из контекстного окна — текста, который harness передает ей перед каждым ответом. В него входят, например, инструкции, запрос, история разговора и результаты поиска.

Окно вмещает лишь фиксированный объем текста. И даже до того, как оно заполнится, модели иногда упускают информацию, затерянную в середине длинных входных данных.

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

3. Инструменты

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

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

4. Память

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

5. Разрешения

Разрешения — это правила о том, к чему агент имеет доступ и что он может делать. Правила доступа определяют, какие файлы, приложения или веб-сайты он может открывать. Правила одобрения определяют, какие действия требуют подтверждения человека, например отправка сообщения или покупка.

Часть этих правил задает в коде harness компания, которая создает агента. Затем администраторы организации могут добавить собственные правила, а отдельные пользователи — выбрать, например, какие аккаунты подключить.

6. Верификация

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

  • Фиксированные правила — конкретные тесты, которые всякий раз дают одинаковый результат («пройден» или «не пройден»), например проверка того, что каждая цифра в отчете встречается в документе, который агент действительно прочитал.
  • Проверка другой ИИ-моделью, которая читает результат работы и оценивает его. Она может выявить проблемы, которые трудно сформулировать в виде правила, например резюме, в котором упущен важный момент.

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

Примеры harness-инжиниринга

Подготовка к встрече с клиентом

Задача: Аккаунт-менеджер просит агента подготовить брифинг к завтрашней встрече с клиентом с перечнем открытых вопросов и черновиком повестки.

Что делает harness:

  • Через коннектор почты агент ищет в почтовом ящике менеджера переписку с клиентом.
  • Разрешения позволяют ему читать письма, но не отправлять их.
  • Управление контекстом передает модели только переписку с этим клиентом за последние три месяца, а не весь почтовый ящик.
  • Агентный цикл выполняет несколько раундов поиска и чтения, а модель группирует найденное по открытым вопросам.
  • Затем верификация проверяет, что каждый вопрос в брифинге связан с реальным письмом.

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

Обновление ежемесячного отчета о продажах

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

Что делает harness:

  • Память загружает заметки из сеанса прошлого месяца, включая формат отчета и просьбу руководителя округлять цифры до тысяч.
  • Файловый инструмент открывает таблицу продаж на общем диске команды.
  • Разрешения позволяют агенту редактировать черновик отчета, но не исходную таблицу, поэтому первоначальные цифры нельзя изменить по ошибке.
  • Верификация проверяет, что итоговые суммы в отчете совпадают с данными таблицы.

Возможный результат: Отчет приходит в том же формате, что и в прошлом месяце, и пользователю не нужно объяснять его заново.

Сортировка общего почтового ящика

Задача: Команда поддержки просит агента распределить утренние входящие запросы по темам и подготовить черновики ответов на типовые.

Что делает harness:

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

Возможный результат: Команда начинает день с уже рассортированными запросами и ответами, ожидающими проверки.

Исправление ошибки на сайте

Задача: Разработчик просит агента для программирования исправить ошибку, из-за которой не работает кнопка оформления заказа.

Что делает harness:

  • Агент работает в песочнице — изолированной копии кода, где его изменения не могут повлиять на работающий сайт.
  • Инструмент для работы с кодом позволяет модели читать и редактировать файлы.
  • После каждого изменения верификация запускает автоматические тесты проекта.
  • Все сбои возвращаются модели в виде новой информации.

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

Harness-инжиниринг, промпт-инжиниринг и контекст-инжиниринг: в чем разница

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

Термин

Кто обычно этим занимается

Пример из задачи по исследованию конкурентов

Промпт-инжиниринг

Любой, кто пишет запрос

Просьба сделать «одну строку на каждого конкурента и один столбец на каждый тарифный план»

Контекст-инжиниринг

Разработчики harness, а также пользователи, которые прикрепляют файлы или шаблоны

Передача модели страницы с ценами каждого конкурента и шаблона таблицы, принятого в команде

Harness-инжиниринг

Компании, создающие ИИ-продукты, а также команды и пользователи, которые выбирают настройки и предпочтения и загружают информацию

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

Как пользователи могут влиять на harness ИИ-инструмента

Большую часть harness агента создает компания-разработчик агента, но многие ИИ-продукты позволяют пользователям настраивать его часть с помощью таких параметров, как пользовательские инструкции, подключенные приложения и правила одобрения.

Пользователи могут влиять на harness агента и улучшать результаты его работы четырьмя способами:

1. Постоянные инструкции

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

Многие ИИ-продукты предлагают постоянные инструкции на двух уровнях. Инструкции для всего аккаунта подходят для того, что относится ко всей работе, например для предпочтений в орфографии. Инструкции проекта подходят для отдельного клиента или рабочего процесса, чтобы указания для одного не переносились на другой.

Постоянные инструкции одинаково работают в чат-ассистентах и агентах, но агенты зависят от них сильнее. В чате человек может поправить ИИ после каждого ответа. Агент же может выполнить множество шагов, прежде чем кто-то увидит его работу, поэтому заранее заданные инструкции — один из немногих способов направлять его по ходу дела.

Как писать эффективные постоянные инструкции

  • Начните с короткой инструкции, например: «Я менеджер по маркетингу в компании — разработчике ПО. Пиши простым английским языком, делай резюме не длиннее 200 слов и используй американскую орфографию».
  • Дополняйте их, когда ИИ ошибается. Если ИИ продолжает округлять цифры, которые команде нужны в точном виде, добавьте об этом строку.
  • Формулируйте инструкции конкретно: «Указывай точные цифры, никогда не округляй» работает лучше, чем «Будь точен».
  • Держите список коротким и удаляйте строки, которые перестали быть полезными: каждая строка занимает место в контекстном окне.

2. Подключенные приложения

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

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

Как безопасно подключать приложения

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

3. Настройки одобрения

Настройки одобрения определяют, какие действия требуют подтверждения человека, прежде чем ИИ продолжит работу. Некоторые одобрения встроены в продукт, а в некоторых продуктах можно выбрать, какие еще действия требуют одобрения.

Как задать правила подтверждения

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

4. Стандарты и проверки

В большинство ИИ-продуктов уже встроены определенные стандарты. Например, Perplexity сопровождает ответы ссылками на источники, чтобы каждое утверждение можно было проверить. Стандарты, которые задает пользователь, восполняют то, чего продукт не может знать сам, например предпочтительный формат отчетов в команде.

Как задать стандарты для работы ИИ

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

Как Perplexity подходит к созданию harness для агентов

Perplexity Computer работает на harness, не привязанном к конкретной модели, который объединяет более 20 передовых моделей в одной системе. Он разбивает каждую задачу на подзадачи, передает их субагентам (отдельным агентам, каждый из которых берет на себя одну часть) и направляет каждую часть работы наиболее подходящей для нее модели.

Узнайте, как настроить инструкции, файлы и коннекторы, в руководстве по проектам Perplexity.

Часто задаваемые вопросы

Кто такой harness-инженер?

Harness-инженер проектирует и поддерживает систему, которая позволяет ИИ-модели надежно выполнять работу. Например, он может добавить агенту новый инструмент, выяснить, почему агент раз за разом повторяет одну и ту же ошибку, или ужесточить проверки, которые агент выполняет перед завершением задачи. Это пока не устоявшееся название должности, хотя со временем ситуация может измениться. Обычно такой работой занимаются инженеры-программисты в ИИ-компаниях или в командах, которые создают агентов. В промышленности английское название harness engineer носит специалист, который проектирует жгуты проводов — связанные в пучки кабели внутри автомобилей и другой техники.

Что такое harness агента?

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

Есть ли harness у каждого ИИ-инструмента?

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

Разработчики также могут использовать модель, отправляя ей запросы из собственного ПО через API (соединение, которое позволяет одной программе отправлять запросы другой). В этом случае роль harness выполняет собственный код разработчика.

Сделают ли более совершенные модели harness ненужным?

Более совершенным моделям может потребоваться меньше пошаговых указаний, поэтому часть задач, которые harness выполняет сегодня, может отпасть. Но сама по себе модель лишь превращает текст в текст. У нее нет подключения к интернету и доступа к другим приложениям. Доступ к файлам, выполнение действий и соблюдение правил подтверждения — все это происходит в ПО вокруг модели, поэтому, скорее всего, эта работа останется за harness, какими бы мощными ни становились модели.