Из чего состоит харнесс? Часть 2
В прошлом посте разобрали, что такое харнесс и как управлять контекстом. Остались скиллы, инструменты и оркестрация. 2. Скиллы
Это какая-нибудь регулярная процедура, которую агент должен регулярно выполнять.
Например, вы любите готовить и хотите получать по запросу /new_recipe новый рецепт под те ингредиенты, которые есть у вас в холодильнике. Описываете эту задачу:
взять список ингредиентов -> посмотреть на уже отданные рецепты -> сходить в интернет -> найти новый рецепт -> проверить его на осмысленность -> отдать пользователю.
Обсуждаете ее с LLM и просите упаковать в скилл.
В результате вы сможете каждый раз получать новый рецепт блюда конкретно под ваш запрос.
Пример абстрактный, но суть, я думаю, понятна. Основная идея - любую задачу можно упаковать в скилл.
Главный смысл скилла как раз в контексте.
Он лежит снаружи и не занимает места в окне, пока его не вызвали. Поэтому скиллов можно держать хоть сотню, и на бюджет внимания это никак не давит.
3. Инструменты
Другими словами - это руки агента.
Слой инструментов занимается регистрацией, валидацией схем, извлечением аргументов, изолированным выполнением, захватом результатов и форматированием их в наблюдения, читаемые LLM.
Claude Code предоставляет инструменты по шести категориям: файловые операции, поиск, выполнение, веб-доступ, анализ кода и запуск субагентов.
Сюда же я бы отнес и MCP-коннекторы, позволяющие получить доступ к сторонним сервисам (Google Sheets, таск-трекеры, мессенджеры и тд).
4. Оркестрация
Когда у вас реализованы первые 3 пункта, вы получаете эффективную рабочую лошадку для решения конкретной задачи. Но настоящая магия начинается, когда вы внедряете оркестрацию.
На этом этапе вы можете управлять логикой принятия решений и точечно настраивать работу над каждой конкретной задачей, не теряя в общей эффективности.
Например, чтобы делать дашборды, строить пайплайны и дизайнить а/б тесты, нужны 3 разных субагента или скилла.
Может возникнуть вопрос: Когда делать скилл, а когда субагент?
Скилл берите, когда важна повторяемость шагов и результат нужен вам в основном окне.
Субагента - когда задача съест кучу контекста (перелопатить репозиторий, прочитать 50 отчетов), а наверх нужен только вывод.
Вернемся к орекстрации.
Без оркестрации харнесс не сможет надежно определять, для какой задачи какого субагента вызвать.
Однако если вы опишете ему правила вызова вместе с набором ключевых слов, которые появляются в контексте, то он будет отдавать приоритет вызову целевых агентов.
Он не будет это делать в 100 случаях из 100, т.к. промпт - это все-таки рекомендация, а не обязательное условие.
Если вы хотите сделать этот процесс надежнее, то придется настраивать workflow (например, в n8n) с обязательными триггерами.
У этого подхода есть минус: он работает на конкретных триггерах и требует жестких условий, поэтому я лично его не использую.
Между этими подходами есть промежуточный вариант, который решает проблемы с надежностью, но не теряет в гибкости. Он строится на руках и цепочках.
Хуки.
Это код, который выполняется на событие, например перед вызовом инструмента, после записи файла или в начале сессии. Хук просто срабатывает.
Цепочки внутри скилла.
Один скилл в конце своей работы сам вызывает следующий. У меня так собран пайплайн для постов.
Команда написания черновика в конце сама дергает факт-чекинг, потом ревью, потом редактуру.
Последовательность прописана заранее, модель ее не выбирает.
Ставьте 🔥, если хотите поподробнее узнать про мой кейс реализации харнесса для задач аналитики. Разберу в отдельном посте. *Ставьте 🧡, если хотите больше постов про работу с ИИ.
А если хотите освежить знания в статистике или метриках, загляните на* https://data-slice.ru/
· вчера
управление контекстом — больная тема, у меня похожая логика в подготовке досье перед B2B-заходом: нужно из кучи разрозненных данных о компании и ЛПР собрать именно тот контекст, который решает задачу «чем зацепить», а не всё подряд. Интересно, как вы разграничиваете, что оставить в контексте, а что отсечь как шум?
0
ответить
коммент скрыт — часть юзеров считает его токсичным или некорректным
коммент удалён