Harness Bench: как тестировать связку модель + harness и не потерять 30%
Вы выбрали модель для AI-агента. Запустили в production — и результаты упали на 20–30% по сравнению с тестами. Причина не в модели, а в программной обвязке, которая передаёт ей команды и инструменты. Эту обвязку называют агентским harness, и от неё зависит, сколько задач агент решит правильно.
Источник: Habr
Команда R&D-лаборатории red_mad_robot выпустила открытый фреймворк Harness Bench, который позволяет тестировать связки «модель + harness» в одинаковых условиях и видеть, где обвязка снижает результат. Если ваша команда выбирает между Hermes, OpenClaw, OpenCode или пишет свою обвязку, этот инструмент стоит проверить до того, как решение попадёт в продакшен.
Что такое агентский harness и почему его нужно тестировать отдельно
Модель большого языка (LLM) сама по себе умеет только предсказывать следующий токен — генерировать текст. Чтобы она могла планировать шаги, писать и запускать код, искать информацию в интернете, ей нужна программная обвязка — harness. Он обращается к модели, предоставляет ей инструменты и среду выполнения.
Раньше такие обвязки писали вручную под каждую задачу. Сейчас есть готовые фреймворки: Hermes, OpenClaw, OpenCode. Они дают оркестрацию и песочницы «из коробки», но ведут себя по-разному. Одна и та же модель, обёрнутая в разные harness, может показывать совершенно разные результаты.
Создатели SWE-bench выпустили отдельную версию SWE-bench Verified и обнаружили, что разница в результатах одной модели на разных harness достигает десятков процентов. В мае 2026 года появился проект WildClawBench, который пытается отделить интеллект модели от качества обвязки. Anthropic в своих гайдах подчеркнул: оценивать агента нужно в реальной среде, где он будет ошибаться и восстанавливать контекст.
Проблема в том, что стандартные бенчмарки вроде SimpleQA или SWE-bench создавались под completion-модели — они жёстко привязаны к статичному формату и не рассчитаны на автономный многошаговый цикл AI-агента.
Как устроен Harness Bench: три независимые оси вместо монолита
Авторы Harness Bench отказались от монолитной архитектуры, вдохновившись подходом Inspect AI. Система держится на трёх принципах:
- Независимые оси — компоненты не знают друг о друге и стыкуются только при запуске.
- Инфраструктура как данные — окружение задачи описано прямо в её данных, а не настраивается вручную.
- Жёсткая изоляция сред — всё работает в отдельных контейнерах (Docker-out-of-Docker), агент получает доступ к рабочей среде только через MCP.
Архитектура разложена на три оси:
| Ось | Вопрос | Что делает |
|---|---|---|
| Harness | Кто выполняет | Получает сообщения от оркестратора, доставляет их агенту и возвращает ответ. Суть задачи ему неизвестна. |
| Benchmark | Что выполняется | Готовит задачи и разворачивает под каждую своё окружение. Кто будет их решать — не имеет значения. |
| Scorer | Как оценивается | Проверяет результат. |
Такое разделение позволяет подключать новые бенчмарки без переписывания половины системы. Если вы хотите прогнать свою модель через SWE-bench, SimpleQA или другой стандарт, вам не нужно писать адаптер с нуля — достаточно описать окружение задачи в данных.
Что меняет Harness Bench для команды, собирающей AI-агента
Раньше вы выбирали модель по бенчмаркам, а harness — «на глаз» или по популярности. Harness Bench позволяет сделать выбор воспроизводимым и измеримым.
Практическое следствие: вы можете взять одну модель, прогнать её через три разных harness на одном наборе задач и увидеть, какая связка даёт лучший результат. И наоборот — зафиксировать harness и сравнить модели.
Это особенно важно, если ваша команда:
- выбирает между опенсорсными harness-фреймворками;
- пишет собственную обвязку и хочет проверить, не ухудшает ли она производительность модели;
- переходит с одной модели на другую и хочет понять, нужно ли менять harness.
Где лежат риски и ограничения
Фреймворк новый — статья на Habr опубликована 30 июня 2026 года. Это значит, что:
- Сообщество ещё не наработало практику. Возможны недокументированные ограничения, баги в адаптерах harness, неполная поддержка бенчмарков.
- Зависимость от Docker и MCP. Если ваша инфраструктура не использует контейнерную изоляцию или MCP, внедрение потребует дополнительных настроек.
- Стоимость прогонов. Запуск нескольких моделей на нескольких harness через несколько бенчмарков — это вычислительные ресурсы и время. Особенно если задачи многошаговые и требуют внешних вызовов.
- Свежесть бенчмарков. Стандарты вроде SWE-bench обновляются. Нужно следить, чтобы версия бенчмарка в Harness Bench соответствовала актуальной.
Автор статьи — Андрей Иванов, NLP-исследователь red_mad_robot. Это даёт определённый уровень доверия, но не отменяет необходимости самостоятельной проверки.
Что можно проверить за неделю без перестройки компании
- Скачайте Harness Bench из репозитория (ссылка в статье на Habr). Убедитесь, что ваша среда поддерживает Docker-out-of-Docker.
- Выберите одну модель и два harness — например, ту модель, которую вы уже используете, и два harness из списка: Hermes, OpenClaw, OpenCode.
- Запустите прогон на одном бенчмарке — например, на SWE-bench или SimpleQA. Не гонитесь за полнотой, важно увидеть, работает ли фреймворк в вашей среде.
- Сравните результаты. Если разница между harness превышает 5–10%, это повод копнуть глубже: возможно, обвязка теряет контекст, неправильно передаёт инструменты или ломает формат ответа модели.
- Задокументируйте конфигурацию. Запишите версии harness, модели, бенчмарка и параметры запуска. Без этого результаты невоспроизводимы.
- Проверьте логи ошибок. В статье упоминаются баги опенсорсных обвязок, которые ломают автоматический прогон. Если прогон упал, это не обязательно проблема вашей настройки — возможно, баг в адаптере harness.
Что делать, если Harness Bench показал неожиданный результат
Не делайте вывод по одному прогону. Возможные причины разброса:
- Случайность генерации. Модели могут выдавать разный результат на одном и том же промпте. Запустите каждый сценарий 3–5 раз и возьмите среднее.
- Разная обработка инструментов. Один harness может передавать модели больше контекста о доступных инструментах, другой — меньше. Проверьте, как каждый harness формирует промпт.
- Разное управление памятью. В многошаговых задачах harness решает, сколько истории хранить и когда её обрезать. Это напрямую влияет на качество.
- Разная обработка ошибок. Один harness может корректно обработать таймаут или невалидный ответ модели, другой — упасть.
Если разница сохраняется после нескольких прогонов, это сигнал, что выбор harness не менее важен, чем выбор модели.
Источники
- Статья на Habr: Harness Bench: как оценить агентский harness и выбрать связку с моделью
- Прямая ссылка на статью (без UTM)
Темы журнала
Что почитать дальше
- Anthropic и выбор поставщика ИИ: как проверить, кто контролирует мощность и доступ
- Опрос Anthropic: 50% работы делает ИИ — но вам эти цифры не подходят
- Anthropic исследование Claude Code: 4% разницы — риск для production
- Claude пишет 80% кода в Anthropic: почему ревью стало узким местом
- Экспортные ограничения США на ИИ-модели Anthropic: проверьте стэк до блокировки