3,583 papers
arXiv:2610.39685 76 29 окт. 2026 г. FREE

Harness vs модель: слабая модель ставит потолок, а настройки агента работают только на сильной

КЛЮЧЕВАЯ СУТЬ
Парадокс: можно неделю переписывать инструкции агента, а результат не сдвинется с места. Метод позволяет быстро понять, что чинить: модель или обвязку (инструкции, скилы, роли субагентов). Авторы меняли по одному элементу обвязки и отдельно саму модель, чтобы увидеть вклад каждого. Агента они собрали на готовом фреймворке OpenClaw: один оркестратор и несколько субагентов со своими скилами (готовыми скриптами). Слабая модель задаёт потолок, который настройками не пробить.
Адаптировать под запрос

⚠️ Оговорка: текст статьи обрывается на описании скилов (раздел 3.2). Таблицы результатов и раздел про метаматериал не попали в материал. Выводы ниже опираются на абстракт и описание устройства агента. Конкретных цифр по каждому элементу у меня нет.

⚡

TL;DR

Агент = модель + «обвязка» (harness): конфигурационные файлы с инструкциями, каталог скилов (готовых скриптов, которые агент вызывает), файл со знаниями, роли субагентов. Авторы собрали агента на готовом фреймворке OpenClaw и по очереди меняли отдельные элементы обвязки и саму модель. Так они увидели, что даёт каждый элемент.

Главная находка: слабая модель задаёт потолок, который не пробить никакой настройкой. Можно часами переписывать инструкции, добавлять скилы и делить работу на субагентов. Если модель слабая, результат не вырастет. Настройки начинают давать эффект только когда модель достаточно сильна, чтобы ими пользоваться. Поэтому типичный сценарий «агент не справляется, давай усложним инструкцию» часто тратит время зря: сначала проверь модель.

Конструкция агента в статье такая: один оркестратор и несколько субагентов с ролями. Каждый субагент получает задачу, работает в своём контексте и возвращает только итоговое сообщение. Друг с другом субагенты не общаются. В конфигурации прописаны скилы, их назначение и то, какой скил какому субагенту доступен.

🔬

Схема метода

ШАГ 1: Оркестратор получает задачу → пишет задачу в контекст субагента
ШАГ 2: Субагент (своя роль + свой набор скилов) работает в цикле:
        рассуждение → вызов скила → результат возвращается в контекст → снова рассуждение
ШАГ 3: Субагент возвращает ТОЛЬКО финальное сообщение → оркестратор собирает ответ

Внутри субагента скилы двух типов:
  «Измерители» (примитивы): превращают данные в признаки
  «Детекторы»: по признакам выносят решение (по одному на тип проблемы)

Что настраивается текстом: конфигурация (каталог скилов + как ими пользоваться),
файл знаний (агент читает его сам, если решит), роли и права субагентов.
🚀

Пример применения

Задача: Селлер на Wildberries каждое утро получает CSV-выгрузку продаж и остатков по 400 SKU. Перед отчётом нужно проверить данные: дубли строк, нули вместо реальных значений, резкие скачки цены, пропущенные дни. Раньше это делал стажёр глазами. Теперь это делает агент (Claude Code или Cursor) со скриптами-детекторами.

Важная деталь: в статье скил, лежащий в рабочей папке, не считается доступным. Его нужно описать в конфигурации и «объявить» агенту. Поэтому в файле инструкций каждый скрипт описан отдельно.

Промпт (файл AGENTS.md):


Ты — субагент контроля качества выгрузок Wildberries. Твоя задача — найти
дефекты в данных ДО построения отчёта. Ты ничего не исправляешь, только
сообщаешь.



Измерители (запускай первыми):
- scripts/profile_columns.py — статистика по колонкам: пропуски, мин/макс, число уникальных
- scripts/daily_series.py — ряд «значение по дням» для заданной колонки
Детекторы (запускай по результатам измерителей):
- scripts/detect_duplicates.py — дубли строк по ключу (SKU + дата)
- scripts/detect_zero_runs.py — подряд идущие нули в продажах/остатках
- scripts/detect_price_jumps.py — скачки цены больше 30% за день
- scripts/detect_gaps.py — пропущенные даты



1. Запусти оба измерителя на файле {путь_к_файлу}.
2. По признакам реши, какие детекторы нужны. Запусти только их.
3. Не угадывай по глазам: каждый вывод должен опираться на результат скрипта.



Справка по полям выгрузки: docs/wb_fields.md. Читай её, только если
не понимаешь смысл колонки.



Для каждой найденной проблемы: тип, SKU, диапазон дат, результат скрипта.
Если проблем нет — так и напиши: «Дефектов не найдено».

Результат: Агент сначала запустит скрипты-измерители, потом выберет подходящие детекторы и выдаст список дефектов по структуре из блока . Если модель слабая, она, скорее всего, будет пропускать скилы или «угадывать» ответ без запуска. Это сигнал менять модель, а не переписывать AGENTS.md.

🧠

Почему это работает

Слабость LLM: модель читает инструкции и решает, что делать дальше. Если ей не хватает способности планировать и разбирать результаты инструментов, тонкая настройка ничего не исправляет. Каталог из 13 скилов она просто не использует как нужно.

Сильная сторона: модель хорошо вызывает готовые инструменты и разбирает их вывод. Скрипт-детектор считает точно, как калькулятор. Модели остаётся выбрать, что запустить, и объяснить результат.

Как метод это использует: точный счёт отдан скриптам, выбор и интерпретация — модели. Двухступенчатая схема «измерители → детекторы» не даёт модели «смотреть на данные глазами». Контекст разделён: субагент видит только свою задачу, а к оркестратору возвращается только итоговое сообщение.

Рычаги управления: - Модель — главный рычаг. Если результат плох, сначала подними модель или уровень reasoning (настройка «сколько думать»), потом правь инструкции. - Каталог скилов в конфигурации — самая «весомая» часть инструкций. Скил надо описать и объявить, одного наличия файла мало. - Файл знаний вместо подгрузки в контекст — агент читает его только если решит. Это экономит контекст. - Число субагентов — увеличивай только если задача этого требует. По обзору в статье, один агент, решающий задачу так же хорошо, лучше мультиагентной схемы: передача текстом даёт потери и ошибки, которые тянутся дальше. - Права субагентов — каждому свой набор скилов.

📋

Шаблон промпта


Ты — {роль_субагента}. Твоя задача — {что_делать}. Чего не делаешь: {границы}.



Измерители (запускай первыми):
- {путь_к_скилу_1} — {что_делает}
- {путь_к_скилу_2} — {что_делает}
Детекторы / исполнители (запускай по результатам измерителей):
- {путь_к_скилу_3} — {что_делает, когда применять}
- {путь_к_скилу_4} — {что_делает, когда применять}



1. Запусти измерители на {входные_данные}.
2. По признакам реши, какие следующие скилы нужны. Запусти только их.
3. Каждый вывод опирай на результат скила, не угадывай.



Справочный файл: {путь_к_файлу_знаний}. Читай его, только если {условие}.



{формат_ответа}. Если ничего не найдено — так и напиши.

Если нужен оркестратор, добавь в его файл инструкций:


Ты — оркестратор. Задачу {общая_задача} раздели между субагентами:
- {субагент_1}: {задача}, доступные скилы: {список}
- {субагент_2}: {задача}, доступные скилы: {список}
Каждому субагенту пиши задачу целиком: он не видит твой контекст.
Субагенты не общаются друг с другом. Собери ответ из их финальных сообщений.

Подставь свои скрипты и пути к файлам, роли, формат ответа и условие чтения файла знаний.

🚀 Быстрый старт — вставь в чат:

Вот шаблон файла инструкций для агента со скилами. Адаптируй под мою задачу: [твоя задача].
Задавай вопросы, чтобы заполнить поля.

[вставить шаблон выше]

LLM спросит, какие у тебя есть скрипты или инструменты, что на входе и что должно быть на выходе. Ещё она спросит, нужны ли отдельные субагенты. Эти вопросы нужны, потому что в методе каждый скил должен быть описан и объявлен агенту, иначе он им не воспользуется.

⚠️

Ограничения

⚠️ Материал неполный: доступный текст обрывается до результатов. Я не могу показать, какой именно элемент обвязки дал какой прирост. Об этом сказано только в абстракте.

⚠️ Одно семейство моделей: все эксперименты на моделях одного семейства (GPT 5.6). Что слабая модель задаёт потолок — общая закономерность. Где именно проходит граница «достаточно сильной», у других моделей может быть иначе.

⚠️ Синтетические данные и узкая область: тест на 50 искусственных записях с точно известными дефектами. На реальных, «грязных» данных результат может быть хуже.

⚠️ Скилы — это код: в статье это Python-функции. Читателю без программирования придётся просить LLM написать скрипты, либо использовать готовые инструменты.

⚠️ Часть советов взята из обзора литературы: например, «мультиагентность не улучшение сама по себе» авторы описывают по чужим работам, не проверяя сами.

🔍

Как исследовали

Авторы взяли два типичных акустических задания. Первое: найти и локализовать дефекты в записях шума салона электромобиля. Данные синтетические, поэтому правильный ответ известен точно. В набор вошли 50 записей, 25 чистых и 25 с одним из девяти типов дефектов (выбросы, обрезание сигнала, провалы и другие). Баланс 50/50 нужен, чтобы агент, говорящий «всё чисто», получал только половину очков.

Восемь промптов шли по нарастанию сложности: от «есть ли проблема?» до «какие типы и в каких интервалах?». Часть работала с одной записью, часть с пачкой из 50. В остальном исследователи меняли по одному элементу: конфигурацию, знания и модель. Так видно вклад каждого.

Второе задание: агент проектирует вентилируемую ячейку метаматериала с нужным ослаблением шума. Здесь менялось, какая часть работы дана агенту в виде готового скила, а остальное оставалось неизменным.

Главный вывод в абстракте: на первом задании агент находит дефекты почти безошибочно. Слабая модель ограничивает результат, и никакой дизайн обвязки этого не исправит. Настройки работают только на достаточно сильной модели. Отдельно авторы пишут, что подробно проверяли именно то, что доступно эксперту без инженерной работы над обвязкой: знания, конфигурацию и скилы.

💡

Адаптации и экстраполяции

🔧 Техника: добавить лесенку сложности → найти, где агент ломается

Авторы проверяли агента восемью промптами с нарастающей детальностью. Сделай так же со своим агентом, прежде чем доверять ему рабочую задачу:

Тест 1: «Есть ли в этой выгрузке проблемы?» (да/нет)
Тест 2: «Какие типы проблем?»
Тест 3: «Какие типы и в каких датах?»
Тест 4: то же для пачки из 50 файлов

Там, где точность падает, смотри в первую очередь на модель, а не на инструкции.

Экстраполяция: «сначала модель, потом инструкции». Это моя вариация, а не метод статьи. Прогони эталонную задачу на самой сильной доступной модели с минимальным AGENTS.md. Если результат плохой, дело не в инструкциях. Если хороший, постепенно упрощай модель и смотри, где качество падает. Так ты отделяешь вклад модели от вклада настроек.

🔗

Ресурсы

  • Работа: Practical Assessment of Agentic Systems in Acoustics (препринт)
  • Авторы: Arne Hildenbrand, Philipp Diel, Zhuo Cao, Hanno Scharr, Stefan Pischinger, Steffen Marburg
  • Организации: Technical University of Munich; RWTH Aachen University; Forschungszentrum Jülich
  • Фреймворк: OpenClaw (open-source агентная инфраструктура)
  • Упомянутые работы: ReAct (Yao et al., 2023); обзоры агентных систем Fang et al., Tran et al., Sapkota et al.

📋 Дайджест исследования

Ключевая суть

Парадокс: можно неделю переписывать инструкции агента, а результат не сдвинется с места. Метод позволяет быстро понять, что чинить: модель или обвязку (инструкции, скилы, роли субагентов). Авторы меняли по одному элементу обвязки и отдельно саму модель, чтобы увидеть вклад каждого. Агента они собрали на готовом фреймворке OpenClaw: один оркестратор и несколько субагентов со своими скилами (готовыми скриптами). Слабая модель задаёт потолок, который настройками не пробить.

Принцип работы

Агент = модель + обвязка. Обвязка — это текстовые файлы: каталог скилов, файл знаний, роли и права субагентов. Работает это так: 1. Оркестратор получает задачу и пишет её в контекст субагента. 2. Субагент крутит цикл: думает, вызывает скил, читает результат, думает дальше. 3. Наружу он отдаёт только финальное сообщение. Друг с другом субагенты не общаются. Скилы бывают двух видов. «Измерители» превращают данные в признаки. «Детекторы» по признакам выносят решение, по одному на тип проблемы. Точный счёт отдан скриптам, модели остаётся выбрать, что запустить, и объяснить результат. Это как калькулятор и бухгалтер: считает первый, а решает второй.

Почему работает

Слабая модель плохо планирует и плохо разбирает вывод инструментов. Каталог из 13 скилов она использует не по делу или не использует вовсе. Инструкция — это просто текст, который модель должна понять и применить, и слабой модели нечем его применять. Поэтому дописывать правила в такой ситуации бесполезно. Есть и вторая причина. Скил, который просто лежит в папке, агент не считает доступным. Его надо описать в конфигурации. Каталог скилов — самая «весомая» часть инструкций. Про мультиагентность авторы пишут осторожно, и это вывод из чужих работ, сами они его не проверяли. Если один агент справляется, схема с несколькими обычно хуже. Передача текстом даёт потери, а ошибки тянутся дальше. Честная оговорка: текст статьи обрывается до таблиц. Сколько именно даёт каждый элемент, я не знаю, цифр нет.

Когда применять

Агенты на готовых фреймворках (Claude Code, Cursor, OpenClaw) → настройка рабочего процесса → особенно когда «агент не справляется» и рука тянется дописать ещё один абзац в инструкцию. Хорошо ложится на задачи, где есть чёткие скрипты: проверка данных, поиск дефектов, разбор логов. НЕ подходит, если у задачи нет проверяемых инструментов и всё держится на тексте. Результаты получены на одном семействе моделей и на 50 синтетических записях, так что на грязных реальных данных будет хуже.

Мини-рецепт

1. Сначала смени модель: прогони ту же задачу на самой сильной, какая есть. Подними и настройку «сколько думать» (уровень reasoning).
2. Сравни: стало лучше — значит, потолком была модель, а не инструкции.
3. Объяви каждый скил: в файле инструкций опиши каждый скрипт отдельно, с путём и назначением. Одного наличия файла мало.
4. Раздели скилы на два типа: измерители запускаются первыми, детекторы идут по их результатам. Задай роль: субагент контроля качества данных
5. Спрячь справку в файл знаний: напиши «читай, только если не понимаешь колонку». Контекст не забьётся.
6. Субагентов добавляй в последнюю очередь: только если задача реально делится. Каждому дай свой набор скилов и пиши задачу целиком, он не видит твой контекст.
7. Проверь на мини-тесте: возьми 50 записей с заранее известными дефектами, как в статье, и посмотри, всё ли найдено.

Примеры

[ПЛОХО]: Агент пропускает дубли в выгрузке, и ты дописываешь в инструкцию: `Будь очень внимательным, обязательно проверяй дубли, нули и скачки цены` [ХОРОШО]: Сначала меняешь модель на более сильную и повышаешь уровень рассуждений. Потом даёшь агенту структуру: `Измерители (запускай первыми): scripts/profile_columns.py — пропуски, мин/макс, уникальные значения. Детекторы (по результатам измерителей): scripts/detect_duplicates.py — дубли по ключу товарная позиция (SKU) + дата. Не угадывай по глазам: каждый вывод опирай на результат скрипта.` [ПЛОХО]: `Проверь данные в папке scripts, там лежат нужные скрипты` [ХОРОШО]: `Детекторы: scripts/detect_zero_runs.py — подряд идущие нули в продажах, scripts/detect_gaps.py — пропущенные даты. Справка по полям: docs/wb_fields.md, читай её, только если не понимаешь смысл колонки.`
Источник: Practical Assessment of Agentic Systems in Acoustics
ArXiv ID: 2610.39685 | Сгенерировано: 2026-10-30 17:20

Концепты не выделены.

📖 Простыми словами

Practical Assessment of Agentic Systems in Acoustics

arXiv: 2610.39685

Полноценный AI-агент — это не просто «умная сетка», а модель плюс обвязка: конфигурации, системные инструкции и пачка внешних скриптов. Авторы прогнали тесты на фреймворке OpenClaw и вскрыли базовую проблему: если у самой LLM хромает логика планирования, никакие костыли не помогут. Модель читает инструкции, но намертво спотыкается о выводы своих же инструментов, превращая систему в бесполезный мусор.

Это как нанять стажёра без опыта и выдать ему чемодан с профессиональным софтом. Формально он упакован, но вместо работы просто зависнет над первой же ошибкой. Инструменты есть, регламент лежит на столе, но способности рассуждать ноль — в итоге процесс встал, а ты разгребаешь косяки руками.

Что реально выяснили в тестах: каталог из 13 скилов полностью бесполезен, если базовый интеллект не тянет роль диспетчера. Систему заводят три вещи: модель с мощным планированием, выверенная обвязка инструментов и строгие роли субагентов. Агент обязан не просто наугад запускать готовый код, а критически разбирать выхлоп каждого шага перед следующим действием.

Смотрели на акустических данных, но механика абсолютно универсальна. Возьми селлера на маркетплейсе: каждое утро валится таблица на 400 SKU с кривыми ценниками, нулями и дублями строк. Вместо того чтобы сажать человека отсматривать ячейки глазами, задачу скармливают агенту на Claude Code со скриптами-детекторами. Он находит аномалии за секунды, потому что умеет применять скрипты по цепочке.

Главный вывод: хватит надеяться на тонкую настройку промптов для слабых сеток — это тупик. Архитектура решает всё, но только если в центре стоит сильный планировщик. Собирай модульную обвязку, тестируй компоненты по отдельности и помни: инструменты без внятной логики — слитый бюджет.

Работа с исследованием

Адаптируйте исследование под ваши задачи или создайте готовый промпт на основе техник из исследования.

0 / 2000
~0.5-2 N-токенов ~10-30с
~0.3-1 N-токенов ~5-15с