Sakhanda Wire
NVDA $230.86 +1.09% MSFT $512.80 -0.02% GOOGL $338.24 -1.70% META $725.93 +0.10% AMZN $248.23 -0.37%
← К новостям

Agent Harness против Agent Framework против MCP: какой слой отвечает за цикл, состояние, инструменты, разрешения и восстановление

Слова harness, framework и MCP используются взаимозаменяемо в обсуждениях архитектуры агентов. Это не одно и то же. Они находятся на разных уровнях, отвечают за разные задачи и всё чаще пересекаются на границах. В этой статье мы разделим их с помощью 1 вопроса. Какой уровень отвечает за цикл выполнения, состояние, транспорт инструментов, разрешения и восстановление?

3 категории

  • Agent harness: Harness — это система выполнения, которая оборачивает модель и превращает её в рабочего агента. В публикации OpenAI Codex как платформа (19 августа 2026 года) это определено напрямую. Harness управляет состоянием диалога, передаёт поток выполнения и использует инструменты. Он также применяет политики песочницы и подтверждений и переносит работу между итерациями. В документации Anthropic по Claude Code для того же используется термин agentic harness. Claude Agent SDK предоставляет «те же инструменты, цикл агента и управление контекстом, которые обеспечивают работу Claude Code». Harness задаёт определённую архитектуру. Он поставляет цикл, модель разрешений, песочницу и стратегию работы с контекстом как единое целое.
  • Agent framework: Framework — это библиотека примитивов для создания агентов. Она включает клиентов моделей, абстракции инструментов, оркестрацию графов, интерфейсы памяти и хуки наблюдаемости. Примеры: LangGraph, OpenAI Agents SDK и Microsoft Agent Framework, который достиг статуса 1.0 GA в апреле 2026 года. Framework предоставляет компоненты и каркас цикла. Политику определяете вы.
  • MCP: Model Context Protocol — это протокол передачи данных, а не среда выполнения. Он стандартизирует способ, которым приложение на базе LLM (хост) обнаруживает и вызывает возможности, предоставляемые серверами: инструменты, ресурсы и промпты. MCP использует сообщения JSON-RPC 2.0 между хостами, клиентами и серверами. С декабря 2025 года им управляет Agentic AI Foundation наряду с goose, AGENTS.md и теперь A2A. MCP не отвечает ни за цикл, ни за состояние агента. Он отвечает за контракт между агентом и его инструментами.

Матрица ответственности

В таблице каждая задача сопоставлена с уровнем, который по умолчанию за неё отвечает. «Отвечает» означает, что уровень определяет и обеспечивает соответствующее поведение. «Предоставляет» означает, что уровень предоставляет хук, но не определяет политику.

ОтветственностьAgent harnessAgent frameworkMCP
Цикл выполненияОтвечает: фиксированный, готовый для продукта цикл с ограничениями итераций и сжатием контекста.Отвечает за каркас: вы настраиваете завершение, передачи управления и ограничения итераций.Нет: только запрос/ответ.
Состояние и память агентаОтвечает: сессии, возобновление, разветвление, контрольные точки файлов.Предоставляет: чекпоинты, хранилища сессий, идентификаторы потоков.Отсутствует на уровне протокола начиная с 2026-07-28.
Транспорт инструментовИспользует: встроенные инструменты и MCP-клиент.Использует: функциональные инструменты и MCP-клиент.Отвечает: JSON-RPC через stdio или Streamable HTTP.
Разрешения и подтвержденияОтвечает: режимы разрешений, хуки, песочница.Предоставляет: защитные механизмы, прерывания, промежуточное ПО.Передаёт хосту: не может обеспечить.
ВосстановлениеОтвечает: возобновление сессии, откат чекпоинтов, сжатие.Предоставляет: устойчивое выполнение, воспроизведение, повторные попытки.Частично: расширение Tasks для длительных вызовов.
Изоляция и песочницаОтвечает: песочница ОС, рабочие деревья, контейнеры.Опционально: размещённые песочницы или микро-ВМ.Отсутствует.
Оркестрация нескольких агентовОтвечает за шаблоны: субагенты, динамические рабочие процессы.Отвечает за примитивы: графы, передачи управления, параллельные ветви.Отсутствует: взаимодействие агент-агент обеспечивает A2A.

Остальная часть статьи обосновывает каждую строку источниками.

Кто отвечает за цикл выполнения

Каждый агент работает в цикле. Передать контекст модели, прочитать ответ, выполнить вызовы инструментов, вернуть результаты, повторить. И harness, и framework реализуют этот цикл. Разница заключается в том, насколько сильно вы можете им управлять.

  • Цикл harness: Claude Agent SDK описывает свой цикл в 5 шагах. Получить промпт, оценить и ответить, выполнить инструменты, повторить, вернуть результат. Каждый полный цикл — это 1 итерация, а цикл завершается, когда Claude выдаёт ответ без вызовов инструментов. Хуки могут перехватывать, изменять или блокировать вызовы инструментов до их выполнения. Сам цикл нельзя переписать. Harness Codex предоставляет доступ к циклу через app-server — документированный протокол клиента. Приложения создают потоки, запускают итерации, получают события и обрабатывают запросы на подтверждение.
  • Цикл framework: Цикл OpenAI Agents SDK завершается при выдаче окончательного результата. При передаче управления он запускается снова, либо выполняет вызовы инструментов и продолжает работу. Превышение max_turns вызывает MaxTurnsExceeded, а срабатывание защитного механизма вызывает GuardrailTripwireTriggered. В LangGraph цикл определяется графом, который вы создаёте. Узлы, рёбра и условная маршрутизация задают поток управления.
  • MCP: У MCP нет цикла. Начиная со спецификации 2026-07-28 у него даже нет рукопожатия. Обмен initialize/initialized и заголовок Mcp-Session-Id были упразднены. Каждый запрос передаётся отдельно и содержит версию протокола и возможности клиента в _meta. Цикл хоста решает, когда вызвать tools/call. MCP лишь определяет, как этот вызов выглядит в протоколе.

Кто отвечает за состояние

  • Harness: Состояние хранится в harness и сохраняется между сессиями. Claude Agent SDK поддерживает сессии, которые впоследствии можно возобновить или разветвить. Контрольные точки файлов восстанавливают файлы в любое предыдущее состояние. Слой harness от Microsoft поставляется с FileMemoryProvider для заметок в рамках сессии и автоматического сжатия контекста, которое отслеживает использование токенов во время цикла. Anthropic развивает работу над долгоживущими harness ещё дальше. Состояние переносится между окнами контекста через артефакты на диске. Каждая новая сессия начинается без памяти о предыдущей.
  • Framework: Framework предоставляет примитивы состояния, но не определяет политику сохранения. Для устойчивого выполнения LangGraph требует подключить чекпоинтер и передать идентификатор потока. Он предлагает 3 режима устойчивости. "exit" сохраняет данные только при завершении графа, "async" записывает их во время выполнения следующего шага, а "sync" — перед каждым шагом. Ошибочный выбор означает потерю состояния при сбое в середине выполнения. OpenAI Agents SDK предлагает Sessions для автоматического хранения истории диалога с бэкендами SQLite, SQLAlchemy и зашифрованными хранилищами.
  • MCP: Выпуск от 2026-07-28 сделал ядро протокола не имеющим состояния. Рекомендация разработчиков однозначна. Если серверу требуется сохранять состояние между вызовами, создайте дескриптор с помощью инструмента. Модель передаёт его обратно в качестве аргумента. Состояние — проблема агента, а не протокола.

Кто отвечает за транспорт инструментов

Это единственная строка, за которую MCP отвечает полностью.

MCP определяет 3 примитива на стороне сервера: инструменты (функции, выполняемые моделью), ресурсы (контекст и данные) и промпты (шаблонизированные рабочие процессы). Клиенты могут предлагать механизм запроса данных, позволяющий серверу запросить у пользователя дополнительные сведения. Транспорт — JSON-RPC 2.0 через stdio или Streamable HTTP. Редакция 2026-07-28 сделала заголовки Mcp-Method и Mcp-Name обязательными для HTTP-запросов. Теперь шлюзы и ограничители частоты могут маршрутизировать запросы по заголовкам, не разбирая тела. Кроме того, ответы tools/list стали кэшируемыми с помощью ttlMs и cacheScope, а устаревший транспорт HTTP+SSE был объявлен устаревшим с 12-месячным переходным периодом.

Инициируемые сервером функции sampling, roots и logging теперь также объявлены устаревшими. Их заменяет Multi Round-Trip Requests (MRTR). Сервер возвращает resultType: "input_required", а клиент повторяет исходный вызов, прикрепляя ответы. Это важно для следующего пункта о разрешениях.

И harness, и framework работают поверх MCP в качестве клиентов. Claude Code и Claude Agent SDK подключаются к MCP-серверам. Они также позволяют определять пользовательские инструменты через встроенный MCP-сервер. Codex подключается к MCP-серверам, а пример Relay от OpenAI встраивает Codex рядом с панелью управления, работающей на MCP-инструментах, принадлежащих приложению. Microsoft Agent Framework 1.0 поставляется с поддержкой MCP и A2A. Протокол является общей основой. Статистика внедрения это подтверждает. Разработчики MCP сообщают почти о полумиллиарде загрузок SDK в месяц для SDK уровня Tier 1. TypeScript- и Python SDK каждый преодолели отметку в 1 млрд загрузок.

Кто отвечает за разрешения

Спецификация MCP однозначна в этом вопросе. Хосты должны получить явное согласие пользователя перед вызовом любого инструмента. Описания и аннотации инструментов следует считать ненадёжными, если сервер не является доверенным. И вот ключевое предложение: «сам MCP не может обеспечить соблюдение этих принципов безопасности на уровне протокола». Разрешения относятся к ответственности хоста.

Harness: Harness полностью отвечает за модель разрешений. Claude Code поставляется с 6 режимами разрешений: default, acceptEdits, plan, auto, dontAsk и bypassPermissions. Правила запрета блокируют действия во всех режимах, кроме bypassPermissions, который полностью пропускает слой разрешений. В режиме auto каждый вызов инструмента проходит через фоновый классификатор. Хуки добавляют пользовательскую логику в точках PreToolUse и PermissionRequest. Codex устроен аналогично. App-server может приостановить итерацию и отправить запрос на подтверждение, на который cлиент должен ответить до продолжения работы.

Framework: Framework предоставляет хук, но не политику. OpenAI Agents SDK имеет защитные механизмы для входных данных, выходных данных и инструментов, а tripwire останавливает выполнение. LangGraph использует interrupt() внутри узла, чтобы приостановиться для подтверждения, и Command(resume=...) для продолжения. Microsoft Agent Framework добавляет промежуточное ПО ToolApprovalAgent с правилами «больше не спрашивать». В каждом случае вы сами пишете логику подтверждения и интерфейс.

MCP: Теперь MCP передаёт запрос на подтверждение по сети через elicitation поверх MRTR. Например, Supabase планирует использовать этот механизм, чтобы инструменты могли подтвердить стоимость или деструктивный запрос перед выполнением. Сервер может спросить. Решить может только хост.

Кто отвечает за восстановление

Harness: Именно восстановление оправдывает использование harness. Claude Agent SDK может возобновить сессию и откатить изменения файлов до контрольной точки. При заполнении окна он сжимает контекст. Динамические рабочие процессы Claude Code возобновляются с места остановки, если терминал был закрыт. В публикации Anthropic о проектировании harness (март 2026 года) генератор отделяется от агента-оценщика, поскольку самопроверка склоняет результаты в положительную сторону. Публикация OpenAI о harness от февраля 2026 года показывает результат этой дисциплины. За 5 месяцев Codex создал около 1 500 объединённых pull request. Репозиторий достиг порядка 1 млн строк кода. Команда выросла с 3 до 7 инженеров, в среднем выполняя 3,5 PR на инженера в день. OpenAI также сообщает о влиянии harness на ARC-AGI-3. Сохранение рассуждений и сжатие контекста повысили результат GPT-5.6 Sol с 13,3% до 38,3%, одновременно сократив количество выходных токенов в 6 раз . Та же модель, другой harness, другой результат.

Framework: В документации по устойчивому выполнению LangGraph прямо указано, что восстановление зависит от детерминированности. Оборачивайте побочные эффекты в задачи, сохраняйте идемпотентность узлов, и запуск можно будет возобновить неделю спустя. OpenAI Agents SDK предоставляет error_handlers и сохраняет результаты завершённых защитных проверок при сбое запуска. Framework воспроизводит выполнение. Безопасность воспроизведения обеспечиваете вы.

MCP: Ответ MCP на длительные операции — расширение io.modelcontextprotocol/tasks, предложенное AWS и включающее основанные на опросе методы tasks/get и tasks/update. Это охватывает один длительный вызов инструмента. Восстановление агента на уровне системы сюда не входит.

Сравнение архитектур

                    +------------------------------------------+
  Приложение        |  Ваш продукт: интерфейс, записи,          |
                    |  бизнес-правила, процессы согласия         |
                    +------------------------------------------+
                          |                     |
                          v                     v
  Слой среды          +----------------+   +-----------------------+
  выполнения          |  AGENT HARNESS |   |  AGENT FRAMEWORK      |
  (выберите один      |  фиксированный |   |  компонуемый цикл     |
   или объедините)   |  цикл          |   |  чекпоинтеры           |
                    |  сессии        |   |  защитные механизмы/   |
                    |  разрешения    |   |  прерывания            |
                    |  песочница     |   |  графы, передачи       |
                    |  сжатие        |   |  управления,           |
                    |                |   |  промежуточное ПО,     |
                    |                |   |  трассировка           |
                    +----------------+   +-----------------------+
                          |                     |
                          +----------+----------+
                                     v
  Слой транспорта    +------------------------------------------+
                    |  MCP (JSON-RPC 2.0, stdio / Streamable   |
                    |  HTTP): инструменты, ресурсы, промпты,   |
                    |  elicitation, расширение Tasks            |
                    +------------------------------------------+
                                     |
                                     v
  Слой возможностей  +------------------------------------------+
                    |  MCP-серверы: GitHub, Figma, Supabase,   |
                    |  Sentry, Linear, внутренние API          |
                    +------------------------------------------+

OpenAI рисует почти идентичную схему для Relay. Приложение отвечает за продуктовый контекст, бизнес-правила и инструменты. Codex app-server предоставляет цикл агента и выполнение в песочнице.

Где категории пересекаются

Границы размываются в 3 направлениях:

  1. Framework поглощает harness: Microsoft Agent Framework теперь поставляется со слоем «Agent Harness». Он превращает любой чат-клиент в полноценный harness одним вызовом метода. В него входят сжатие контекста, файловая память, провайдер задач и режимы планирования и выполнения. Он также добавляет фоновых субагентов и исполнителя командной оболочки в песочнице. Microsoft описывает harness как «слой, где рассуждения модели встречаются с реальным выполнением». Поставщик framework признаёт, что одних базовых примитивов недостаточно.
  2. Harness превращается в платформу: OpenAI открыла исходный код harness Codex и теперь предлагает 3 уровня интеграции. codex exec запускает ограниченные задачи, Codex SDK предоставляет программный контроль, а app-server встраивает цикл в продукт. Claude Agent SDK от Anthropic делает то же самое для Claude Code. DeepSeek выпустила DeepSeek Harness v0.1 13 августа 2026 года по лицензии MIT. Его принцип заключается в том, что каждый компонент, включая цикл, является плагином. Как только harness становится библиотекой с документированным протоколом, он начинает конкурировать с framework.
  3. MCP получает функции, напоминающие агентов: Elicitation, MRTR, расширение Tasks, Skills over MCP и MCP Apps расширяют границы протокола. Это шаблоны взаимодействия, которые раньше относились к среде выполнения. Однако разработчики провели границу. Roots, sampling и logging объявлены устаревшими, а ядро теперь работает по модели запрос/ответ. MCP стандартизирует интерфейс, но не превращается в агента.

Есть один термин, который не пересекается с остальными: A2A. Взаимодействие агент-агент — это отдельный протокол, который теперь также находится под управлением Agentic AI Foundation. MCP соединяет агента с инструментами. A2A соединяет агента с другими агентами.

Как собрать стек

Решение сводится к 3 вопросам:

  • Хотите ли вы самостоятельно управлять циклом? Начните с framework, если вам нужен пользовательский поток управления или граф, который можно тестировать по узлам. LangGraph, OpenAI Agents SDK и Microsoft Agent Framework позволяют формировать цикл. Будьте готовы самостоятельно написать политику разрешений, политику сохранения и песочницу.
  • Нужен ли вам проверенный цикл со встроенными разрешениями и восстановлением? Harness позволит быстрее продвинуться, если задача похожа на программирование, операции или исследования. Claude Agent SDK и Codex app-server по умолчанию поставляются с сессиями, подтверждениями, песочницами и сжатием. В обмен на производственное поведение вы отказываетесь от контроля над циклом. Собственная статистика OpenAI показывает, что проектирование harness может изменить результаты тестов на 25 пунктов для одной и той же модели.
  • Какие инструменты нужны агенту? Независимо от выбранного уровня ответ — MCP. Его поддерживают каждый harness и все основные framework. Статeless-ядро версии 2026-07-28 означает, что удалённый MCP-сервер теперь является обычной HTTP-нагрузкой за балансировщиком. Создайте набор инструментов один раз и повторно используйте его в разных средах выполнения.
  • Типичная производственная архитектура в конце 2026 года — гибридная. Framework оркестрирует внешний граф. Harness выполняет каждый ресурсоёмкий шаг в собственной песочнице. MCP передаёт каждый вызов инструмента. Категории — это уровни, а не конкуренты.

Ключевые выводы

  • Harness объединяет в 1 ориентированную на конкретную архитектуру систему цикл, состояние, разрешения и восстановление.
  • Framework предоставляет те же хуки, но оставляет политику, сохранение и песочницу на ваше усмотрение.
  • MCP отвечает только за транспорт инструментов и заявляет, что не может обеспечить согласие на уровне протокола.
  • Framework теперь поставляется со слоями harness, а harness — с SDK, поэтому граница между ними стирается.
  • Собирайте систему по уровням: framework или harness для цикла, MCP для каждого вызова инструмента.

Источники

Переведено автоматически с английского. Оригинал статьи — по ссылке ниже.

Впервые опубликовано изданием MarkTechPost

Читать оригинал на MarkTechPost ↗

Текст и изображения принадлежат MarkTechPost и приводятся здесь с указанием авторства и ссылкой на оригинальную публикацию.

← К новостям

Ещё новости

Все последние новости