Harness: что происходит между «ИИ, сделай» и реально выполненной задачейДопустим, вы поручили ИИ найти квартиру: до 80 тысяч, с котом, не дальше 15 минут от метро.
Он открыл объявления. В одном цена без комиссии, в другом нельзя животных, в третьем «15 минут» — на машине. Потом сайт завис, а половина найденного перестала помещаться в контекст.
Кто хранит найденное, запускает браузер и возвращает агенту ошибку, чтобы тот мог продолжить?Для этого нужен
harness — программная обвязка вокруг модели. Модель выбирает следующий шаг, обвязка выполняет его и возвращает результат. В развитом harness есть сохранение прогресса, ограничения и проверки.
Для такого поиска можно собрать цикл:
Модель запрашивает открытие объявления.
Harness запускает браузер и передаёт содержимое.
Модель извлекает цену и условия.
Harness сохраняет данные и результаты проверок.
Цикл продолжается до выполнения задачи или достижения лимита.
Упрощённый псевдокод выглядит так:
state = load_progress()
for step in range(30): >action = model(task, state)
if action.type == "finish": >if check_result(state): >>break state.add("Результат не прошёл проверку") continue result = tools.execute(action) state.add(result) save_progress(state)
Здесь
30 шагов — ограничитель расходов, tools — доступные действия, state — накопленные результаты, а check_result — проверка условий завершения. Например, у каждой квартиры должны быть ссылка, полная цена и подтверждённые условия проживания с животными.
Где это пишется? В обычном проекте на Python, TypeScript или другом языке. Пример структуры своего harness:
agent/ loop.py — цикл работы tools.py — браузер, поиск, API state.py — сохранение прогресса checks.py — проверка результата policy.py — права и лимиты
Где посмотреть настоящий код:•
mini-swe-agent — компактный пример цикла «модель → команда Bash → результат → модель». На нём удобно разбирать сам механизм. (
github.com)
•
Примеры Anthropic — механизмы для длительной работы: обработчики событий и отдельный агент, который проверяет результат. (
github.com)
Одна и та же модель с разной обвязкой получает разные возможности: где-то она лишь описывает, как искать квартиру, а где-то действительно открывает объявления, ведёт таблицу и отмечает непроверенные условия.