раздел 01
Модель плюс обвязка
Возьмите одну и ту же модель. Дайте её двум командам. Одна получит чистый, рабочий код, другая - кашу с теми же повторяющимися ошибками. Модель не виновата - она у обеих одинаковая. Разница в harness.
Модель рассуждает. Harness действует. Качество агента - это качество не только мозга, но и рук, глаз и правил, которыми вы его обвязали.
Почему результат расходится
Кодинг-агент недетерминирован и не знает вашего контекста. На один и тот же запрос он может ответить по-разному, и сам по себе не в курсе ваших соглашений, структуры проекта, того, что у вас уже сломано. Всё это даёт обвязка:
Модель рассуждает - harness действует
Сама модель только генерирует текст. Чтобы прочитать файл, запустить тест, сходить в базу - нужны инструменты. Их даёт обвязка. Она же решает, что показать модели на каждом шаге, выполняет действия, проверяет результат и хранит состояние между запусками. Без обвязки модель - это собеседник, а не работник.
Обвязка часто важнее выбора модели
Привычка звучит так: «результат плохой - возьму модель посильнее». Но если агент ошибается из-за того, что не видит ваших соглашений и его ошибки никто не ловит, более умная модель проблему не решит. Сначала собирают обвязку, и только потом, если упёрлись в потолок, меняют модель. Фокус сместился с «какая модель» на «как собрана обвязка».
Готовые harness-ы
Claude Code, Cursor, Codex - это и есть готовые harness-ы вокруг модели. Они уже включают инструменты, цикл работы агента (agent loop), управление контекстом, проверки. Вы не пишете обвязку с нуля - вы настраиваете готовую под свой проект.
Обвязка model-agnostic
Важная черта: обвязка обычно не привязана к одной модели (model-agnostic). Модель внутри harness можно поменять - инструменты, инструкции, проверки остаются. Это и подтверждает мысль: вы вкладываетесь в обвязку, а модель под ней - сменный компонент.