Skip to main content

Skills в OpenClaw

Skills в OpenClaw — это механизм инъекции знаний и инструкций в системный промпт агента. По сути, это способ научить LLM-агента пользоваться конкретными инструментами, не хардкодя логику, а подкладывая ему контекстуальные инструкции в рантайме.

Как это устроено

Каждый skill — это директория, содержащая файл SKILL.md с YAML-frontmatter и текстовыми инструкциями. OpenClaw загружает встроенные (bundled) скиллы плюс опциональные локальные переопределения, и фильтрует их на этапе загрузки в зависимости от окружения, конфигурации и наличия нужных бинарников. Формат совместим со спецификацией AgentSkills (agentskills.io) — это открытый стандарт описания навыков для агентов. Минимальный SKILL.md выглядит так:
---
name: nano-banana-pro
description: Generate or edit images via Gemini 3 Pro Image
---
(далее — текстовые инструкции для модели)

Приоритет загрузки (precedence)

Скиллы загружаются из трёх мест: bundled skills (поставляются с инсталляцией), managed/local skills (~/.openclaw/skills) и workspace skills (<workspace>/skills). При конфликте имён приоритет: workspace (высший) → managed/local → bundled (низший). Это классическая схема override, аналогичная тому, как работают конфиги в большинстве систем — позволяет пропатчить или заменить встроенный скилл, не трогая исходный пакет.

Gating — фильтрация на этапе загрузки

Это, пожалуй, самая интересная часть с инженерной точки зрения. OpenClaw фильтрует скиллы на этапе загрузки, используя поле metadata (однострочный JSON) внутри frontmatter. Можно задать условия:
  • requires.bins — список бинарников, которые должны быть в PATH
  • requires.env — переменные окружения (например, API-ключи)
  • requires.config — пути в openclaw.json, которые должны быть truthy
  • os — ограничение по ОС (darwin, linux, win32)
  • always: true — всегда включать скилл, игнорируя остальные гейты
Это позволяет делать conditional prompt engineering — модель получает только те инструкции, которые она реально может выполнить в текущем окружении. Нет смысла инжектить инструкции по работе с ffmpeg, если его нет в контейнере.

Инъекция окружения и изоляция

Когда запускается агентский ран, OpenClaw читает метаданные скиллов, применяет env и apiKey из конфига к process.env, собирает системный промпт с eligible-скиллами, и восстанавливает оригинальное окружение после завершения рана. То есть секреты инжектятся скоупленно на время одного вызова агента — это не глобальные переменные шелла.

Token impact

Базовый оверхед при наличии хотя бы одного скилла — 195 символов. На каждый скилл дополнительно тратится примерно 97 символов плюс длина escaped-полей name, description и location. Грубая оценка — ~24 токена на скилл только на «обёртку», плюс сами инструкции внутри. Это важно учитывать для бюджета контекстного окна, особенно если скиллов много.

Session snapshot и hot reload

OpenClaw делает снимок eligible-скиллов при старте сессии и переиспользует этот список для последующих ходов в рамках одной сессии. При этом есть skills watcher, который мониторит изменения в SKILL.md и обновляет снимок — по сути, hot reload без перезапуска сессии.

Мультиагентность

В мультиагентных сетапах у каждого агента свой workspace, то есть per-agent скиллы живут в <workspace>/skills конкретного агента, а shared скиллы в ~/.openclaw/skills видны всем агентам на машине.