Skills Over MCP
Проблема
Подумайте о любом продукте, которым вы когда-либо пользовались… программном или нет. К большинству из них прилагается инструкция, которая помогает разобраться, как им пользоваться.
Для продуктов для разработчиков это обычно выглядит как документация, руководства, примеры и, возможно, руководства по устранению неполадок. Компании, которые хорошо справляются с этим, часто хвалят за их внимание к Developer Experience (опыту разработчика).
Но теперь мы просим наших агентов становиться пользователями продуктов от нашего имени. Мы даём им MCP-сервер, который по сути предоставляет список названий инструментов и их описаний, и ожидаем, что они разберутся без ошибок и бессмысленных действий. Это ужасный Agent Experience (опыт агента).
Поэтому рабочая группа изучает, как предоставлять агентам инструкционный контент вместе с соответствующими MCP-серверами.
Безусловно, Skills (навыки) уже решают проблему обучения агента выполнению задачи способом, позволяющим избежать перегрузки контекста. Стандарт использует методы прогрессивного раскрытия информации, которые помогают агенту найти нужный навык в нужный момент, не забивая контекстное окно всеми мелкими деталями, когда они не нужны.
Это сразу же напомнило мне о выходе Playwright CLI в начале этого года. Сам CLI был популярен, но команда также выпустила навык Playwright CLI. Если вы установили CLI и навык, ваш агент теперь имел всё необходимое для безупречного выполнения задач, не гадая о структуре и формате команд и аргументов CLI. И это было удивительно, учитывая, что это был совершенно новый продукт, и его не было в обучающих данных LLM. Это делает агента очень довольным, а значит, и человека тоже, так как сессии проходят быстрее, ошибок меньше, а расход токенов снижается.
Но всё же оставалась некоторая разделенность. CLI и навык нужно устанавливать и поддерживать по отдельности, так как это две разные вещи. Это не совсем похоже на поставку инструкции вместе с продуктом.
Поэтому основная предпосылка, которую исследует рабочая группа Skills Over MCP, заключается в следующем: что, если мы найдём способ поставлять MCP-серверы вместе с сопутствующими навыками? Это дало бы агенту как инструменты, необходимые для выполнения задач, так и операционные знания, чтобы делать это эффективно. По сути, поставлять инструкцию вместе с продуктом.
Предлагаемое решение
Вместо того чтобы добавлять в протокол ещё один новый примитив (что рабочая группа изначально рассматривала), они планируют предоставлять Skills как контент через существующий примитив Resources. Resources — это неизменяемые (только для чтения) фрагменты данных, которые позволяют агентам подключаться к внешним документам, базам данных и т. д. По сути, это книга только для чтения, которую агент может использовать для изучения новых фактов. Так что для Skills это идеально!
Предложение — SEP-2640: Расширение Skills с идентификатором расширения:
io.modelcontextprotocol/skills
Учитывая структуру (форму) Skills:
my-skill/
├── SKILL.md
├── scripts/
│ └── helper.py
├── references/
│ └── workflow.md
├── assets/
│ └── template.md
└── examples/
└── example.mdЭтот пакет Skills может быть предоставлен как коллекция ресурсов с использованием схемы URI skill://.
skill://my-skill/SKILL.md skill://my-skill/scripts/helper.py skill://my-skill/references/workflow.md skill://my-skill/assets/template.md skill://my-skill/examples/example.md
Прелесть этого подхода в том, что MCP не нужно понимать, что такое навык (skill). С точки зрения протокола, это просто ресурсы. Сам формат навыка остаётся в ведении спецификации Agent Skills.
Сервер не ограничен предоставлением одного единственного навыка. Он может предоставлять десятки (или даже сотни) навыков. Например, MCP-сервер Stripe мог бы легко включать в себя следующие навыки:
skill://subscription-management/SKILL.md skill://refund-processing/SKILL.md skill://payment-disputes/SKILL.md skill://billing-investigation/SKILL.md
Это сразу же создаёт проблему обнаружения (discovery). Мы не хотим, чтобы агент читал каждый навык с каждого подключённого сервера только для того, чтобы выяснить, что доступно.
Чтобы решить эту проблему, в предложении определяется общеизвестный ресурс как опциональный каталог навыков сервера:
skill://index.json
Вместо того чтобы загружать каждый файл SKILL.md, хост может прочитать индексный файл и получить лёгкую метаинформацию (например, название, описание, расположение) о доступных навыках. Это соответствует технике обнаружения, представленной в спецификации Agent Skills.
{
"skills": [
{
"url": "skill://refund-processing/SKILL.md",
"frontmatter": {
"name": "refund-processing",
"description": "Use this skill when issuing refunds, handling partial refunds, or investigating refund status."
}
},
{
"url": "skill://payment-disputes/SKILL.md",
"frontmatter": {
"name": "payment-disputes",
"description": "Use this skill when investigating chargebacks, gathering evidence, or responding to disputes."
}
}
]
}Затем для серверов с ещё большим количеством навыков можно использовать шаблон вместо перечисления каждого отдельного навыка:
{
"type": "mcp-resource-template",
"description": "Stripe product area skill",
"url": "skill://stripe/{product_area}/{skill_name}/SKILL.md"
}Как клиенты должны использовать навыки
Представьте, что вы подключили MCP-сервер GitHub к goose (MCP-клиенту). В момент установки соединения goose проверяет, поддерживает ли сервер io.modelcontextprotocol/skills.
Если поддерживает, goose читает skill://index.json и получает лёгкий каталог (например, названия навыков, описания и URI). Этот каталог попадает в контекст, но не полное содержимое навыков. Таким образом, модель знает, что навыки существуют, но не знает, что внутри них.
Затем, когда пользователь просит goose проверить пул-реквест, модель видит в каталоге навык pr-review вместе с его описанием, понимает, что он релевантен, и вызывает read_resource, чтобы загрузить skill://github/pr-review/SKILL.md.
Модель читает навык, следует по необходимым ссылкам и начинает подгружать вспомогательные файлы по мере необходимости.
Этот поток — прогрессивное раскрытие информации на практике: сначала небольшая метаинформация, затем полные инструкции только когда они нужны.
Некоторые открытые вопросы
Это всё ещё активная работа, и остаётся множество вопросов, на которые нужно ответить.
Будут ли клиенты добавлять поддержку Resources?
Весь этот подход зависит от того, реализуют ли клиенты функцию Resources на самом деле; многие из них сейчас этого не делают. Если Skills over MCP получит распространение, клиентам придётся рассматривать обнаружение и чтение ресурсов как часть обычного рабочего процесса агента.
Будут ли модели действительно использовать навыки?
Хост отвечает за то, чтобы предоставить каталог навыков модели, но одного предоставления недостаточно. Ранние эксперименты рабочей группы показали, что модели часто игнорировали доступные навыки и пытались использовать инструменты напрямую, иногда терпя неудачу, прежде чем в итоге находили навык. Это сводит на нет смысл предоставления навыка, если агент всё равно будет действовать вслепую. Рабочая группа обнаружила, что добавление инструкции сервера, предписывающей агенту сначала прочитать навык, помогало, но даже в этом случае соблюдение инструкции начинает ухудшаться по мере роста контекста. Какая часть этой нагрузки ложится на хост, клиент или автора навыка — всё ещё прорабатывается.
Как работает доверие?
Хотя навык — это «всего лишь инструкции», инструкции изменяют поведение агента значительным образом. Если MCP-сервер предоставляет навык, должен ли хост доверять ему автоматически? Должны ли пользователи видеть, откуда взялся навык? Должны ли корпоративные администраторы иметь возможность одобрять, блокировать или закреплять конкретные навыки?
Как обрабатываются пересекающиеся навыки?
Представьте, что MCP-сервер Stripe поставляет общий навык обработки возвратов, который объясняет, как работают возвраты в Stripe, но у вашей компании также есть внутренний навык обработки возвратов со своими собственными правилами: когда ваша компания разрешает возвраты, кто должен утверждать и какие примечания оставлять. Хостам понадобится способ обработки наслоения, приоритетов или, по крайней мере, видимости источника.
Автор: Angie Jones
Оригинал: https://aaif.io/blog/skills-over-mcp/
Подпишитесь на канал Agentic Enterpise — о жизни ИИ-агентов в кровавом энтерпрайзе
Comments
Post a Comment