Запуск агентных скиллов на локальной LLM — штука, которая до недавнего времени требовала костылей. Mistral.rs v0.8.10 кладет конец этому безобразию. Теперь в проекте появился нативный эндпоинт /v1/skills, который позволяет определять и вызывать скиллы прямо через REST API. Никаких самодельных оркестраторов, никаких файловых прослоек. Просто HTTP-запрос и готовый ответ. Посмотрим, что под капотом.
Скиллы без архитектурного танца с бубном
В предыдущих версиях mistral.rs уже умел выполнять функции, но для агентных сценариев приходилось самостоятельно обрабатывать цепочки вызовов, учить модель пайплайнам. С версии 0.8.10 добавили специальный формат скилла — это JSON-схема с описанием действий, которые агент может выполнить. Модель сама решает, какой скилл активировать, а сервер берёт на себя диспетчеризацию.
Ключевое отличие от подходов вроде файловой системы как оркестратора или gskill.md — mistral.rs не требует внешнего рантайма. Скиллы живут прямо в процессе инференса.
Как это выглядит на практике
Определим скилл для поиска по локальным файлам. Создаём JSON-файл search_skill.json:
{
"name": "file_search",
"description": "Ищет файлы по шаблону в указанной директории",
"parameters": {
"type": "object",
"properties": {
"pattern": {"type": "string", "description": "Шаблон поиска, например *.log"},
"directory": {"type": "string", "description": "Путь к папке"}
},
"required": ["pattern", "directory"]
},
"handler": {
"type": "command",
"command": "find {{directory}} -name '{{pattern}}' 2>/dev/null"
}
}
Теперь регистрируем скилл в сервере. Отправляем POST на /v1/skills:
curl -X POST http://localhost:8080/v1/skills \
-H "Content-Type: application/json" \
-d @search_skill.json
Чтобы активировать скилл, в обычный чат-запрос добавляем поле skills:
curl -X POST http://localhost:8080/v1/chat/completions \
-H "Content-Type: application/json" \
-d '{
"model": "mistralai/Mistral-7B-Instruct-v0.3",
"messages": [{"role": "user", "content": "Найди все log-файлы в /var/log"}],
"skills": ["file_search"]
}'
Модель генерирует ответ, и если она решает вызвать скилл — сервер выполняет команду и подставляет результат. Агент не замечает подмены, просто видит уточнённый ответ. Звучит логично, но есть нюанс: скилл должен быть размечен как безопасный, иначе сервер его проигнорирует. За это отвечает флаг "safe": true в описании. Не советую так делать, если не хотите, чтобы модель случайно запустила rm -rf /.
Сравнение с альтернативами
| Инструмент | Способ определения скиллов | Выполнение | Зависимости |
|---|---|---|---|
| mistral.rs v0.8.10 | JSON-схема + REST API | встроенное, синхронное | только rust-runtime |
| Claude Skills | YAML/текст, сторонний сервер | через обёртку | Claude API + рантайм |
| OpenAPI-to-Skills | конвертация OpenAPI | через прокси-агента | отдельный сервис |
| Ollama (функции) | через инструменты в чате | внешний код | мост-приложение |
Как видите, у mistral.rs минимальные внешние зависимости. Всё работает в рамках одного процесса. Но за это приходится платить: скиллы выполняются синхронно, и если команда долгая — заблокируется очередь запросов. Для тяжёлых операций лучше использовать асинхронный обработчик через HTTP-колбэк, но в v0.8.10 такой опции нет, только команды и shell-скрипты.
Архитектура скиллов: что под капотом
Разработчики mistral.rs пошли по пути минимализма. Скилл — это не отдельный микросервис, а просто промпт с JSON-схемой, который модель использует для генерации аргументов. Сервер парсит ответ, проверяет безопасность и выполняет команду. Если команда завершилась ошибкой — модель получает сообщение об ошибке и может попросить пользователя уточнить запрос. В теории это работает так, но на практике первая версия API не поддерживает цепочки скиллов (skill-to-skill). Зато это открывает простор для экспериментов: вы можете комбинировать /v1/skills с Agent Browser Workspace, чтобы дать агенту доступ к вебу через скилл-запрос.
Кому это реально нужно
Инструмент рассчитан на три категории:
- Разработчики локальных AI-агентов, которые не хотят городить огород из Python-скриптов и файловых наблюдателей (как в Agent Skills на Python).
- Те, кто мигрирует с OpenClaw или Hermes Agent — переезд становится проще, когда всё упирается в один эндпоинт.
- Экспериментаторы, которым нужно быстро прототипировать мультиагентные сценарии без развёртывания kubernetes.
Однако если вам нужна сложная оркестрация с под-агентами и динамическим созданием скиллов — лучше посмотрите в сторону MCP и сабагентов. Там больше гибкости, хоть и больше головной боли.
Перспективы
Версия 0.8.10 — это только первый заход. Уже сейчас /v1/skills позволяет запускать одношаговые действия, но roadmap mistral.rs включает поддержку многошаговых сценариев и вложенных скиллов. Если темпы разработки сохранятся, к концу 2026 года мы рискуем увидеть полноценный агентный рантайм, встроенный прямо в инференс-сервер. И тогда вопрос «как собрать AI-агента из LEGO» перестанет быть актуальным — всё уже будет собрано за вас.
Пробуйте, ломайте, пишите фидбек. И не забывайте про флаг safe — он единственное, что стоит между вашим лэптопом и случайным шифрованием диска.