Skills
Скилы нужны для того, чтобы научить агента выполнять узкоспециализированные задачи. Это могут быть скилы по написанию текстов, архитектуре кода, использованию конкретных фреймворков, запуску команд, да и вообще о том, как модели общаться с пользователем.
Яркие примеры: • rtk • caveman • React best practices
Со скилами вы могли сталкиваться, если активно используете кодинг-агентов (Codex / Claude Code / Cursor / OpenCode / etc). В базе своей формула очень проста:
Skill = Context + Scripts
С точки зрения реализации, skill - это директория на системе
.agents/skills/ └── Pytest_Skill/ ├── SKILL.md └── scripts/ ├── run_pytest.sh └── list_tests.py
- Pytest_Skill - название скила
- SKILL.md - текстовая простыня, которую мы загрузим в контекст, когда агент захочет научиться работать с pytest
- scripts/ - директория со скриптами (python / shell), правила использования которых описаны в SKILL.md
Логично, что агент сам по себе не понимает, что такое скилы. Для этого ему нужна парочка инструментов:
class SkillsToolkit: def load_skill(skill_id: str) -> str: ...
def run_skill_script(skill_id: str, script: str) -> str: ...
Для того, чтобы модель знала, какие скилы у нее в принципе есть, ей в контекст нужно подложить информацию о них (по аналогии с инструментами):
[{ "name": "Pytest_Skill", "description": "Use this skill to test your python code", ... // всякие бесполезные поля }]
| assistant | | script result | | run script | // исполнение скрипта из набора скила | skill content | | load skill | // загрузка конкретного скила в контекст | user | | tools definitions | | skills metadata | // информация о доступных скилах | system |
Итого, скилы - это всего лишь:
- метаинформация в контексте
- пара инструментов
- директория на системе
Зато в совокупности это позволяет нам загружать в контекст огромные инструкции для очень специфичных задач по востребованию (а не держать их в контексте всегда).
Проблема тут в том, что после выполнения задачи нам такая большая инструкция в контексте не особо нужна. Да и слишком много скилов тоже регистрировать не стоит (их описание тоже забивает контекст). Но все эти проблемы отлично решаются сабагентами.
Последняя Rocket Science штука здесь - это загрузка нужных инструментов "на лету" из интернета. Что ж, это всего лишь вопрос пары дополнительных инструментов, которые ищут скилы на стоках по API:
class SkillSearchToolkit: async def search_skills(query: str, limit: int = 10) -> str: ...
async def install_skill(skill_id: str) -> str: ...
Мы просто динамически ищем скилы на https://skills.sh по API, качаем их с гита и ставим в локальную папку. Для этого у нас тоже есть готовый инструмент autogen.beta.tools.SkillSearchToolkit
Очень темное колдунство, не иначе.
· 30.04
Прикол скилов не только в том, что это "переиспользуемый системный промпт", но скорее в том, что он не загружен в контекст по умолчанию. По дефолту у тебя в контексте только описание скила. А агент сам решает, когда хочет загрузить его в контекст полностью
ответить
коммент удалён