sidebar_position: 2 title: "Skills System" description: "On-demand knowledge documents — progressive disclosure, agent-managed skills, and the Skills Hub" lang: ru
Система навыков
Навыки — это документы знаний, которые агент может загрузить по требованию. Они следуют шаблону прогрессивного раскрытия для минимизации использования токенов и совместимы с открытым стандартом agentskills.io.
Все навыки хранятся в ~/.hermes/skills/ — основном каталоге и источнике истины. При новой установке связанные навыки копируются из репозитория. Сюда также относятся навыки, установленные в хабе и созданные агентом. Агент может изменить или удалить любой навык.
Вы также можете указать Гермесу внешние каталоги навыков — дополнительные папки, сканируемые наряду с локальной. См. Внешние каталоги навыков ниже.
См. также:
Использование навыков
Каждый установленный навык автоматически доступен с помощью косой черты:
# In the CLI or any messaging platform:
/gif-search funny cats
/axolotl help me fine-tune Llama 3 on my dataset
/github-pr-workflow create a PR for the auth refactor
/plan design a rollout for migrating our auth provider
# Just the skill name loads it and lets the agent ask what you need:
/excalidraw
Хорошим примером является встроенный навык plan. Запуск /plan [request] загружает инструкции навыка, сообщая Hermes при необходимости проверить контекст, написать план реализации уценки вместо выполнения задачи и сохранить результат в .hermes/plans/ относительно активной рабочей области/бэкэнд-рабочего каталога.
Вы также можете взаимодействовать с навыками посредством естественного разговора:
hermes chat --toolsets skills -q "What skills do you have?"
hermes chat --toolsets skills -q "Show me the axolotl skill"
Прогрессивное раскрытие информации
Навыки используют шаблон загрузки с эффективным использованием токенов:
Level 0: skills_list() → [{name, description, category}, ...] (~3k tokens)
Level 1: skill_view(name) → Full content + metadata (varies)
Level 2: skill_view(name, path) → Specific reference file (varies)
Агент загружает полный контент навыков только тогда, когда он действительно в этом нуждается.
Формат SKILL.md
---
name: my-skill
description: Brief description of what this skill does
version: 1.0.0
platforms: [macos, linux] # Optional — restrict to specific OS platforms
metadata:
hermes:
tags: [python, automation]
category: devops
fallback_for_toolsets: [web] # Optional — conditional activation (see below)
requires_toolsets: [terminal] # Optional — conditional activation (see below)
config: # Optional — config.yaml settings
- key: my.setting
description: "What this controls"
default: "value"
prompt: "Prompt for setup"
---
# Skill Title
## When to Use
Trigger conditions for this skill.
## Procedure
1. Step one
2. Step two
## Pitfalls
- Known failure modes and fixes
## Verification
How to confirm it worked.
Навыки, специфичные для платформы
Навыки могут ограничиваться конкретными операционными системами с помощью поля platforms:
| Значение | Матчи |
|---|---|
macos |
macOS (Дарвин) |
linux |
Линукс |
windows |
Окна |
platforms: [macos] # macOS only (e.g., iMessage, Apple Reminders, FindMy)
platforms: [macos, linux] # macOS and Linux
Если этот навык установлен, он автоматически скрывается из системной подсказки skills_list() и команд косой черты на несовместимых платформах. Если этот параметр опущен, навык загружается на всех платформах.
Условная активация (запасные навыки)
Навыки могут автоматически отображаться или скрываться в зависимости от того, какие инструменты доступны в текущем сеансе. Это наиболее полезно для запасных навыков — бесплатных или локальных альтернатив, которые должны появляться только тогда, когда премиум-инструмент недоступен.
metadata:
hermes:
fallback_for_toolsets: [web] # Show ONLY when these toolsets are unavailable
requires_toolsets: [terminal] # Show ONLY when these toolsets are available
fallback_for_tools: [web_search] # Show ONLY when these specific tools are unavailable
requires_tools: [terminal] # Show ONLY when these specific tools are available
| Поле | Поведение |
|---|---|
fallback_for_toolsets |
Навык скрыт, когда доступны перечисленные наборы инструментов. Показано, когда они отсутствуют. |
fallback_for_tools |
То же, но проверяется отдельные инструменты, а не наборы инструментов. |
requires_toolsets |
Навык скрыт, когда перечисленные наборы инструментов недоступны. Показано, когда они присутствуют. |
requires_tools |
То же, но проверяет отдельные инструменты. |
Пример: Встроенный навык duckduckgo-search использует fallback_for_toolsets: [web]. Если у вас установлен FIRECRAWL_API_KEY, доступен набор веб-инструментов и агент использует web_search — навык DuckDuckGo остается скрытым. Если ключ API отсутствует, набор веб-инструментов недоступен, а навык DuckDuckGo автоматически отображается в качестве резервного варианта.
Навыки без каких-либо условных полей ведут себя точно так же, как и раньше — они всегда отображаются.
Безопасная настройка при загрузке
Навыки могут объявлять необходимые переменные среды, не исчезая из поля зрения:
required_environment_variables:
- name: TENOR_API_KEY
prompt: Tenor API key
help: Get a key from https://developers.google.com/tenor
required_for: full functionality
При обнаружении отсутствующего значения Hermes безопасно запрашивает его только тогда, когда навык действительно загружен в локальный CLI. Вы можете пропустить настройку и продолжить использование навыка. Обмен сообщениями никогда не запрашивает секреты в чате — вместо этого они советуют вам использовать hermes setup или ~/.hermes/.env локально.
После установки объявленные переменные окружения автоматически передаются в песочницы execute_code и terminal — сценарии навыка могут использовать $TENOR_API_KEY напрямую. Для переменных окружения, не требующих навыков, используйте параметр конфигурации terminal.env_passthrough. Подробности см. в разделе Передача переменных среды.
Настройки конфигурации навыков
Навыки также могут объявлять несекретные настройки конфигурации (пути, настройки), хранящиеся в config.yaml:
metadata:
hermes:
config:
- key: myplugin.path
description: Path to the plugin data directory
default: "~/myplugin-data"
prompt: Plugin data directory path
Настройки хранятся в папке skills.config в вашем config.yaml. hermes config migrate запрашивает ненастроенные параметры, а hermes config show отображает их. Когда навык загружается, его разрешенные значения конфигурации вводятся в контекст, поэтому агент автоматически узнает настроенные значения.
Подробности см. в Настройки навыков и Создание навыков — настройки конфигурации.
Структура каталога навыков
~/.hermes/skills/ # Single source of truth
├── mlops/ # Category directory
│ ├── axolotl/
│ │ ├── SKILL.md # Main instructions (required)
│ │ ├── references/ # Additional docs
│ │ ├── templates/ # Output formats
│ │ ├── scripts/ # Helper scripts callable from the skill
│ │ └── assets/ # Supplementary files
│ └── vllm/
│ └── SKILL.md
├── devops/
│ └── deploy-k8s/ # Agent-created skill
│ ├── SKILL.md
│ └── references/
├── .hub/ # Skills Hub state
│ ├── lock.json
│ ├── quarantine/
│ └── audit.log
└── .bundled_manifest # Tracks seeded bundled skills
Внешние каталоги навыков
Если у вас есть навыки за пределами Hermes — например, общий каталог ~/.agents/skills/, используемый несколькими инструментами искусственного интеллекта, — вы можете поручить Hermes сканировать и эти каталоги.
Добавьте external_dirs в раздел skills в ~/.hermes/config.yaml:
skills:
external_dirs:
- ~/.agents/skills
- /home/shared/team-skills
- ${SKILLS_REPO}/skills
Пути поддерживают расширение ~ и замену переменных среды ${VAR}.
Как это работает
- Только чтение: внешние каталоги сканируются только на предмет обнаружения навыков. Когда агент создает или редактирует навык, он всегда записывает на адрес
~/.hermes/skills/. - Локальный приоритет: если одно и то же имя навыка существует как в локальном, так и во внешнем каталоге, побеждает локальная версия.
- Полная интеграция: внешние навыки отображаются в индексе системных подсказок
skills_list,skill_viewи в виде косой черты/skill-name— ничем не отличаясь от локальных навыков. - Несуществующие пути автоматически пропускаются: Если настроенный каталог не существует, Hermes игнорирует его без ошибок. Полезно для дополнительных общих каталогов, которые могут присутствовать не на каждой машине.
Пример
~/.hermes/skills/ # Local (primary, read-write)
├── devops/deploy-k8s/
│ └── SKILL.md
└── mlops/axolotl/
└── SKILL.md
~/.agents/skills/ # External (read-only, shared)
├── my-custom-workflow/
│ └── SKILL.md
└── team-conventions/
└── SKILL.md
Все четыре навыка отображаются в вашем индексе навыков. Если вы создадите новый навык под названием my-custom-workflow локально, он затенит внешнюю версию.
Навыки, управляемые агентом (инструмент Skill_manage)
Агент может создавать, обновлять и удалять свои собственные навыки с помощью инструмента skill_manage. Это процедурная память агента: когда он определяет нетривиальный рабочий процесс, он сохраняет подход как навык для будущего повторного использования.
Когда агент создает навыки
- После успешного выполнения сложной задачи (5+ вызовов инструментов)
- Когда он сталкивается с ошибками или тупиками и находит рабочий путь
- Когда пользователь исправил свой подход
- Когда обнаружился нетривиальный рабочий процесс
Действия
| Действие | Использовать для | Ключевые параметры |
|---|---|---|
create |
Новый навык с нуля | name, content (полный SKILL.md), опционально category |
patch |
Целевые исправления (предпочтительно) | name, old_string, new_string |
edit |
Основные структурные изменения | name, content (полная замена SKILL.md) |
delete |
Полностью удалить навык | name |
write_file |
Добавить/обновить вспомогательные файлы | name, file_path, file_content |
remove_file |
Удалить вспомогательный файл | name, file_path |
:::совет
Действие patch предпочтительнее для обновлений — оно более эффективно использует токены, чем edit, поскольку при вызове инструмента отображается только измененный текст.