Гайды

Навыки агента: как научить его повторяемой процедуре

Навык, инструмент и память — три разные сущности, которые постоянно смешивают. Разбираем границы и даём шаблон описания навыка, который модель действительно применит.

Одна и та же жалоба звучит по-разному: «он опять оформил отчёт не так», «он забыл, что я работаю с этим клиентом», «он не может выгрузить данные». Три жалобы — три разные проблемы, и лечатся они тремя разными способами. Первая — про навык, вторая — про память, третья — про инструмент.

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

#Что понадобится

  • Ассистент, у которого есть хоть какое-то место для постоянных инструкций: навыки, правила, системный промпт.
  • Одна процедура, которую вы делаете регулярно и каждый раз объясняете заново.
  • Готовность переписать её два-три раза: первая формулировка почти никогда не срабатывает.

#Три сущности и их границы

Сущность Что это Пример Где живёт Когда применяется
Инструмент Внешнее действие Прочитать файл, отправить запрос Код или внешний сервер Модель решает вызвать
Память Факт о мире или о вас «Работаю с клиентом Астра» Хранилище фактов Подмешивается по релевантности
Навык Записанная процедура «Отчёт делай так: сначала…» Текст инструкций Когда задача подходит под условие

Границы проверяются тремя вопросами.

Это действие или знание? Если для выполнения нужно что-то сделать вне текста — это инструмент. Формулировка «научи его выгружать данные» почти всегда означает «дай ему инструмент», а не «напиши навык».

Это правда о мире или способ работы? «Мой рабочий каталог — вот этот» — факт, место в памяти. «Начинай работу с проверки каталога» — процедура, место в навыке. Признак: факт может измениться сам по себе, процедура меняется только вашим решением.

Это применимо всегда или при условии? Безусловные инструкции — системный промпт. Условные — навык. Разница практическая: безусловная инструкция занимает контекст в каждом разговоре, включая те, где она бессмысленна.

Самая частая ошибка — записать процедуру в память. Память подмешивается по релевантности запросу, а процедура нужна не тогда, когда о ней спросили, а тогда, когда началась подходящая задача. Записанная в память процедура срабатывает случайно.

#Шаг 1. Определить условие применения

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

Плохо: «Оформление отчётов». Непонятно, когда это включается.

Хорошо: «Когда просят сделать или обновить отчёт по проекту».

Условие должно быть сформулировано так, как выглядит запрос пользователя, а не так, как называется навык. Модель сопоставляет условие с текстом запроса, а не с вашей внутренней классификацией.

#Шаг 2. Написать процедуру по шаблону

Шаблон, который стоит скопировать целиком:

НАЗВАНИЕ
  Короткое, по предметной области.

КОГДА ПРИМЕНЯТЬ
  Одно предложение, сформулированное как запрос пользователя.
  «Когда просят сделать или обновить отчёт по проекту.»

КОГДА НЕ ПРИМЕНЯТЬ
  Одно предложение. Обязательный пункт.
  «Не применяй к разовым выжимкам и к обычным вопросам.»

ПОРЯДОК ДЕЙСТВИЙ
  1. …
  2. …
  3. …
  Три-семь шагов. Каждый проверяем.

ЧЕГО НЕ ДЕЛАТЬ
  Два-три конкретных запрета, взятых из реальных ошибок.

ПРИЗНАК ЗАВЕРШЕНИЯ
  Как понять, что процедура выполнена.

Два блока в этом шаблоне обычно пропускают, и зря.

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

«Признак завершения» превращает процедуру в проверяемую. Без него модель считает работу выполненной тогда, когда закончился текст.

#Шаг 3. Ограничить объём

Навык — это текст, который попадает в контекст. Длинный навык вытесняет историю разговора и сам себя обесценивает.

Практические ориентиры: процедура на три-семь шагов, каждый шаг в одну-две строки. В Persona на один навык при сборке промпта отводится ограниченный объём — порядка восьми тысяч символов, а сам текст навыка при установке принимается не крупнее шестидесяти килобайт; всё, что длиннее, обрезается или отклоняется. Ваши числа могут отличаться, но предел должен существовать, иначе три подробных навыка съедят контекст целиком.

Если процедура не помещается в семь шагов — это, как правило, две процедуры с разными условиями применения.

#Шаг 4. Проверка результата

Навык считается рабочим, когда проходят три пробы.

  1. Положительная. Запрос, точно подходящий под условие. Ожидается: процедура применена, шаги видны в ответе.
  2. Отрицательная. Запрос из соседней области, не подходящий под условие. Ожидается: процедура не применена, ответ обычный. Это важнее первой пробы: навык, срабатывающий всегда, хуже отсутствующего.
  3. Граничная. Запрос, похожий на условие формулировкой, но по сути другой. Здесь вы увидите, насколько точно сформулировано условие.

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

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

#Что может пойти не так

Навык описывает действие, которого нет. «Выгрузи данные из системы» не выполнится, если нет инструмента выгрузки. Навык не создаёт возможностей — он упорядочивает существующие. Откуда берутся возможности — в разборе протокола подключения инструментов и в обзоре MCP-серверов по уровням доступа.

Навык конфликтует с системным промптом. Две инструкции об одном и том же в разных местах дают непредсказуемый результат. Проверьте, не написано ли уже то же самое в характере ассистента.

Навыков стало много. Каждый занимает контекст. Десять включённых навыков — это заметная доля окна, потраченная до начала разговора. Отключайте те, что не срабатывали месяц.

Навык записан в память. Симптом — процедура применяется, когда о ней спросили, и не применяется, когда она нужна. Лечится переносом в навыки.

Установка чужого навыка из сети. Текст навыка становится инструкцией для вашего ассистента. Даже если исполняемого кода в нём нет — а в Persona хранится и подмешивается только текст, ничего из репозитория не запускается, — этот текст всё равно влияет на поведение. Поэтому установка навыка отнесена у нас к классу риска «выполнение» и не входит в набор действий, которые модель может совершать автономно. Читайте, что ставите.

#Когда навык — неправильный ответ

Процедура выполняется один раз. Объясните её в разговоре. Навык окупается от третьего-четвёртого повторения.

Процедура полностью детерминирована. Если каждый шаг однозначен и не требует интерпретации — это скрипт, а не навык. Скрипт быстрее, дешевле и выполняется одинаково.

Нужен факт, а не порядок действий. «Мой часовой пояс — такой-то» — это память. Навык из этого делать не надо.

Процедура меняется каждую неделю. Поддержка навыка стоит времени; если содержание нестабильно, дешевле объяснять на месте.

Как навыки, память и инструменты соотносятся внутри одной системы — в разборе агентной архитектуры Persona. Общая рамка того, зачем агенту состояние вообще, — в базовой статье о том, что такое ИИ-агент.

#Частые вопросы

#Чем навык отличается от системного промпта?

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

#Чем навык отличается от памяти?

Навык — это способ действия, память — факт о мире. Ключевой признак: факт может измениться сам по себе, а процедура меняется только вашим решением. Записанная в память процедура срабатывает по релевантности запросу и потому применяется случайно. Разбор альтернативного подхода к хранению памяти в виде читаемых файлов — в материале про память в Hermes Agent.

#Сколько навыков можно держать включёнными?

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

#Можно ли ставить навыки, написанные другими?

Можно, но текст чужого навыка становится постоянной инструкцией вашему ассистенту, поэтому читать его надо целиком. Даже там, где исполняемый код заведомо не запускается, а хранится только текст, влияние на поведение остаётся полным.

#Почему навык не срабатывает?

Чаще всего условие применения сформулировано в терминах вашей классификации, а не в терминах запроса пользователя. Проверяется быстро: задайте запрос ровно теми словами, которыми вы обычно пишете, и посмотрите, применилась ли процедура.

Он может предписывать их вызов, но не создаёт их. Если в порядке действий упомянут инструмент, которого нет, шаг просто не выполнится. Сначала инструмент, потом навык, который говорит, когда и в каком порядке его применять.

#Вывод

Три сущности — три места: действие в инструмент, факт в память, порядок действий в навык. Смешение даёт систему, поведение которой невозможно объяснить, и чинится оно только разделением обратно.

Пишите навык по шаблону с обязательными блоками «когда не применять» и «признак завершения», проверяйте тремя пробами и раз в месяц отключайте то, что не срабатывало. Если процедура нужна один раз или полностью детерминирована — навык не нужен.

Хотите ИИ, который помнит вас?

Persona держит контекст между чатами и работает на вашем железе — если развернуть её у себя и подключить локальную модель.

Создать аккаунт