Модуль 1 · Как устроен агент · урок 1 из 24
Что такое harness и почему это инженерная дисциплина
Модель у всех одна и та же. Результаты у команд разные, и разница почти целиком объясняется средой вокруг модели: что агент видит, чем может проверить себя, что ему запрещено и кто ловит ошибки до человека. Эту среду называют обвязкой агента (harness). Курс о том, как её строить, — для сеньоров, техлидов и техдиров, которые отвечают за то, чтобы агенты в команде давали предсказуемый результат, а не случайный.
Агент = модель + harness
Биргитта Бёкелер (Thoughtworks) в статье «Harness engineering for coding agent users» от 2 апреля 2026 приводит ставшее расхожим короткое определение: harness — всё в агенте, кроме самой модели. Формула «агент = модель + harness» снимает старый спор, «умная» ли модель. Оцениваете агента — оцениваете связку.
В этой связке два слоя:
- Внутренний harness поставляет вендор. У Codex это агентный цикл, сборка промпта, исполнение инструментов в песочнице (sandbox), компакция, MCP, навыки (skills), персистентность тредов. Майкл Болин из OpenAI в статье «Unrolling the Codex agent loop» называет harness именно цикл и логику исполнения, общие для CLI, IDE и облака.
- Внешний harness строите вы из возможностей агента: AGENTS.md, документация в репозитории, планы, линтеры, структурные тесты, хуки, окружения на задачу, evals.
Внутренний слой вы не меняете, но обязаны понимать: от него зависит, что дойдёт до модели и сколько это стоит. Этому посвящён первый модуль. Внешний слой — ваша зона ответственности, ему посвящён весь остальной курс.
Откуда термин
Отправная точка — статья Райана Лопополо «Harness engineering: leveraging Codex in an agent-first world» (OpenAI, 11 февраля 2026; есть официальный русский перевод). Команда пять месяцев делала внутренний продукт, где ни одна строка не написана руками. По их данным — около миллиона строк и около 1 500 PR, начинали три инженера, потом стало семь, в среднем 3,5 PR на инженера в день. Время, по оценке самой команды, — примерно десятая часть от ручной разработки.
Важно, что авторы пишут о старте: вначале прогресс был медленнее ожиданий. Причину они видят не в слабости модели, а в недоописанной среде — агенту не хватало инструментов, абстракций и структуры. Когда агент буксовал, решение почти никогда не звучало как «попробуй ещё раз». Вопрос был другой: какой возможности не хватает и как сделать её понятной и обязательной для агента. Девиз статьи — «Humans steer. Agents execute.»
Наш вывод. Эти цифры — опыт одной команды на greenfield-проекте, где среду строили под агентов с первого коммита. Сами авторы оговариваются: такое поведение не переносится на другие репозитории без сопоставимых вложений. Бенчмарком для своей команды их брать нельзя. Переносить стоит метод: провал агента — сигнал о дыре в среде, и чинят среду, а не результат.
Направляющие и датчики
Бёкелер делит внешний harness на два типа контролей, и эта рамка пройдёт через весь курс:
| Направляющие (guides, feedforward) | Датчики (sensors, feedback) | |
|---|---|---|
| Когда работают | До действия агента | После действия |
| Примеры | AGENTS.md, docs/, планы, спецификации, навыки | Тесты, линтеры, типы, структурные тесты, ревью-агент |
| Если есть только они | Правила, которые никто не проверяет | Агент снова и снова повторяет одни ошибки |
Вторая ось — вычислительные контроли (детерминированные и дешёвые: тесты, линтеры) против выводных (inferential: ревью моделью, LLM-as-judge). Первые надёжнее, вторые покрывают то, что не формализуется.
Почему это инженерия, а не набор советов
У среды для агентов те же свойства, что у любого кода:
- Она версионируется. Всё, чего агент не видит в репозитории, для него не существует — договорённость в чате бесполезна (подробно в уроке о системе записи).
- Она тестируется. Ссылки в документации, размер AGENTS.md, архитектурные границы проверяются в CI, а не на глаз.
- Она стареет. Anthropic в материале о harness для длинных задач прямо пишет: с каждой новой моделью конструкцию надо пересматривать, убирать то, что перестало нести нагрузку.
- У неё есть стоимость. Каждый токен инструкций занимает место в контексте и ломает или сохраняет кэш. Это считается, а не угадывается.
Как устроен курс
- Как устроен агент: агентный цикл, сборка промпта и кэш, контекстная инженерия, компакция.
- Направляющие: читаемость для агента, AGENTS.md как оглавление, система записи, планы исполнения, spec-driven development.
- Датчики и ограничения: инварианты, петли обратной связи, наблюдаемость, окружения, проверка поведения.
- Масштаб: длинные задачи, оркестрация, энтропия, мерж при большом потоке.
- Оценка и управление: evals, бенчмарки, самоулучшающийся harness, дорожная карта.
Мы опираемся на первоисточники — OpenAI, Anthropic, Thoughtworks — и в каждом уроке разделяем, что говорит источник и что мы советуем сами. Примеры — из работы агентства: PHP-сайт на OctoberCMS, мобильные приложения, GitLab CI, задачи из Kaiten.
Попробуйте сами
10–15 мин на рабочем месте- Выпишите внешний harness своего основного репозитория в две колонки: направляющие и датчики. Отметьте, какие датчики вычислительные, а какие выводные. Пустая колонка или перекос — первый кандидат на работу.
- Вспомните три последних случая, когда агент сделал не то. Для каждого ответьте на вопрос OpenAI: какой возможности не хватало — знания, инструмента или проверки? Запишите, где эта возможность должна жить в репозитории.
Коротко
- Harness — всё в агенте, кроме модели; результат определяет связка.
- Внутренний harness даёт Codex, внешний строит команда.
- Направляющие работают до действия, датчики — после; нужны оба.
- Провал агента — сигнал о дыре в среде; чинят среду.
- Цифры OpenAI — опыт одной команды на greenfield, переносится метод, а не показатели.