Skills

Skills

OpenClaw використовує сумісні з AgentSkills папки навичок, щоб навчити агента користуватися інструментами. Кожна навичка — це каталог, що містить SKILL.md із YAML frontmatter та інструкціями. OpenClaw завантажує вбудовані навички плюс необов'язкові локальні перевизначення і фільтрує їх під час завантаження на основі середовища, конфігурації та наявності бінарних файлів.

Розташування та пріоритет

OpenClaw завантажує навички з цих джерел, спочатку з найвищим пріоритетом:

# Джерело Шлях
1 Навички робочого простору <workspace>/skills
2 Навички агента проєкту <workspace>/.agents/skills
3 Особисті навички агента ~/.agents/skills
4 Керовані/локальні навички ~/.openclaw/skills
5 Вбудовані навички постачаються з інсталяцією
6 Додаткові папки навичок skills.load.extraDirs (config)

Якщо назва навички конфліктує, перемагає джерело з найвищим пріоритетом.

Власний каталог Codex CLI $CODEX_HOME/skills не є одним із цих коренів навичок OpenClaw. У режимі Codex harness локальні запуски app-server використовують ізольовані домашні каталоги Codex для кожного агента, тому особисті навички Codex CLI не завантажуються неявно. Використовуйте openclaw migrate codex --dry-run, щоб створити їхній інвентар, і openclaw migrate codex, щоб вибрати каталоги навичок через інтерактивну підказку з прапорцями перед копіюванням їх у поточний робочий простір агента OpenClaw. Для неінтерактивних запусків повторіть --skill <name> для точних навичок, які треба скопіювати.

Навички для окремого агента та спільні навички

У налаштуваннях із кількома агентами кожен агент має власний робочий простір:

Область Шлях Видимість
Для окремого агента <workspace>/skills Лише цей агент
Агент проєкту <workspace>/.agents/skills Лише агент цього робочого простору
Особистий агент ~/.agents/skills Усі агенти на цій машині
Спільні керовані/локальні ~/.openclaw/skills Усі агенти на цій машині
Спільні додаткові каталоги skills.load.extraDirs (найнижчий пріоритет) Усі агенти на цій машині

Однакова назва в кількох місцях → перемагає джерело з найвищим пріоритетом. Робочий простір переважає агента проєкту, той переважає особистого агента, той переважає керовані/локальні, ті переважають вбудовані, а ті переважають додаткові каталоги.

Дозволені списки навичок агента

Розташування навички та видимість навички — це окремі елементи керування. Розташування/пріоритет визначає, яка копія навички з однаковою назвою перемагає; дозволені списки агента визначають, які навички агент насправді може використовувати.

json5
{  agents: {    defaults: {      skills: ["github", "weather"],    },    list: [      { id: "writer" }, // inherits github, weather      { id: "docs", skills: ["docs-search"] }, // replaces defaults      { id: "locked-down", skills: [] }, // no skills    ],  },}
Правила дозволеного списку
  • Пропустіть agents.defaults.skills, щоб навички за замовчуванням були необмеженими.
  • Пропустіть agents.list[].skills, щоб успадкувати agents.defaults.skills.
  • Установіть agents.list[].skills: [], щоб не було навичок.
  • Непорожній список agents.list[].skills є остаточним набором для цього агента — він не об'єднується зі значеннями за замовчуванням.
  • Ефективний дозволений список застосовується до побудови prompt, виявлення slash-команд навичок, синхронізації sandbox і знімків навичок.

Plugins і навички

Plugins можуть постачати власні навички, перелічуючи каталоги skills в openclaw.plugin.json (шляхи відносно кореня Plugin). Навички Plugin завантажуються, коли Plugin увімкнено. Це правильне місце для операційних посібників, специфічних для інструментів, які занадто довгі для опису інструмента, але мають бути доступні щоразу, коли Plugin установлено, — наприклад, браузерний Plugin постачає навичку browser-automation для багатокрокового керування браузером.

Каталоги навичок Plugin об'єднуються в той самий шлях із низьким пріоритетом, що й skills.load.extraDirs, тому вбудована, керована, агентська або робоча навичка з такою самою назвою перевизначає їх. Ви можете обмежувати їх через metadata.openclaw.requires.config у записі конфігурації Plugin.

Див. Plugins для виявлення/конфігурації та Інструменти для поверхні інструментів, які пояснюють ці навички.

Skill Workshop

Необов'язковий експериментальний Plugin Skill Workshop може створювати або оновлювати навички робочого простору з повторно використовуваних процедур, помічених під час роботи агента. За замовчуванням він вимкнений і має бути явно ввімкнений через plugins.entries.skill-workshop.

Skill Workshop записує лише в <workspace>/skills, сканує згенерований вміст, підтримує відкладене схвалення або автоматичні безпечні записи, ізолює небезпечні пропозиції та оновлює знімок навичок після успішних записів, щоб нові навички ставали доступними без перезапуску Gateway.

Використовуйте його для виправлень на кшталт "наступного разу перевіряти атрибуцію GIF" або важко здобутих робочих процесів, як-от контрольні списки QA для медіа. Починайте з відкладеного схвалення; використовуйте автоматичні записи лише в довірених робочих просторах після перегляду його пропозицій. Повний посібник: Skill Workshop Plugin.

ClawHub (інсталяція та синхронізація)

ClawHub — це публічний реєстр навичок для OpenClaw. Використовуйте нативні команди openclaw skills для виявлення/інсталяції/оновлення або окремий CLI clawhub для робочих процесів публікації/синхронізації. Повний посібник: ClawHub.

Дія Команда
Установити навичку в робочий простір openclaw skills install <skill-slug>
Оновити всі встановлені навички openclaw skills update --all
Синхронізувати (сканування + публікація оновлень) clawhub sync --all

Нативна команда openclaw skills install установлює в каталог skills/ активного робочого простору. Окремий CLI clawhub також установлює в ./skills у поточному робочому каталозі (або повертається до налаштованого робочого простору OpenClaw). OpenClaw підхоплює це як <workspace>/skills під час наступного сеансу. Налаштовані корені навичок також підтримують один рівень групування, наприклад skills/<group>/<skill>/SKILL.md, щоб пов'язані сторонні навички можна було зберігати в спільній папці без широкого рекурсивного сканування.

Клієнти Gateway, яким потрібне приватне постачання не через ClawHub, можуть підготувати zip-архів навички за допомогою skills.upload.begin, skills.upload.chunk і skills.upload.commit, а потім установити зафіксоване завантаження через skills.install({ source: "upload", uploadId, slug, force?, sha256? }). Це явний шлях адміністративного завантаження для довірених клієнтів, а не звичайний потік openclaw skills install <slug> чи інсталяції ClawHub. Він вимкнений за замовчуванням і працює лише коли в openclaw.json встановлено skills.install.allowUploadedArchives: true. Режим завантаження все одно встановлює в стандартний каталог робочого простору агента skills/<slug>; внутрішня назва папки архіву ігнорується для кінцевої цілі інсталяції.

Сторінки навичок ClawHub показують найновіший стан сканування безпеки перед інсталяцією, зі сторінками деталей сканерів для VirusTotal, ClawScan і статичного аналізу. openclaw skills install <slug> залишається лише шляхом інсталяції; видавці усувають хибні спрацювання через панель ClawHub або clawhub skill rescan <slug>.

Безпека

  • Виявлення навичок робочого простору та додаткових каталогів приймає лише корені навичок і файли SKILL.md, чий розв'язаний realpath залишається всередині налаштованого кореня.
  • Приватні архівні інсталяції Gateway вимкнені за замовчуванням. Коли їх явно ввімкнено, вони потребують зафіксованого zip-завантаження, що містить SKILL.md, і повторно використовують ті самі засоби захисту від видобування архіву, обходу шляхів, symlink, force і rollback, що й інсталяції навичок ClawHub. Вони обмежуються skills.install.allowUploadedArchives; звичайні інсталяції ClawHub не потребують цього параметра.
  • Інсталяції залежностей навичок через Gateway (skills.install, onboarding та UI налаштувань Skills) запускають вбудований сканер небезпечного коду перед виконанням метаданих інсталятора. Знахідки critical блокують за замовчуванням, якщо викликач явно не встановить небезпечне перевизначення; підозрілі знахідки все ще лише попереджають.
  • openclaw skills install <slug> відрізняється — він завантажує папку навички ClawHub у робочий простір і не використовує шлях метаданих інсталятора вище.
  • skills.entries.*.env і skills.entries.*.apiKey інжектують секрети в host-процес для цього ходу агента (не в sandbox). Не допускайте секрети в prompts і журнали.

Для ширшої моделі загроз і контрольних списків див. Безпека.

Формат SKILL.md

SKILL.md має містити щонайменше:

markdown
---name: image-labdescription: Generate or edit images via a provider-backed image workflow---

OpenClaw дотримується специфікації AgentSkills щодо структури/призначення. Парсер, який використовує вбудований агент, підтримує лише однорядкові ключі frontmatter; metadata має бути однорядковим об'єктом JSON. Використовуйте {baseDir} в інструкціях, щоб посилатися на шлях папки навички.

Необов'язкові ключі frontmatter

homepagestring

URL, що відображається як "Вебсайт" в UI Skills для macOS. Також підтримується через metadata.openclaw.homepage.

user-invocablebooleandefault: true

Коли true, навичка доступна як користувацька slash-команда.

disable-model-invocationbooleandefault: false

Коли true, OpenClaw не додає інструкції навички до звичайного prompt агента. Навичка все одно встановлена й може бути явно запущена як slash-команда, якщо user-invocable також має значення true.

command-dispatch"tool"

Коли встановлено tool, slash-команда обходить модель і передається безпосередньо інструменту.

command-toolstring

Назва інструмента, який треба викликати, коли встановлено command-dispatch: tool.

command-arg-mode"raw"default: raw

Для dispatch інструмента пересилає сирий рядок аргументів до інструмента (без core-парсингу). Інструмент викликається з { command: "<raw args>", commandName: "<slash command>", skillName: "<skill name>" }.

Обмеження (фільтри під час завантаження)

OpenClaw фільтрує навички під час завантаження за допомогою metadata (однорядковий JSON):

markdown
---name: image-labdescription: Generate or edit images via a provider-backed image workflowmetadata:  {    "openclaw":      {        "requires": { "bins": ["uv"], "env": ["GEMINI_API_KEY"], "config": ["browser.enabled"] },        "primaryEnv": "GEMINI_API_KEY",      },  }---

Поля в metadata.openclaw:

alwaysboolean

Коли true, завжди включати навичку (пропустити інші перевірки).

emojistring

Необов’язковий emoji, який використовується в інтерфейсі macOS Skills.

homepagestring

Необов’язкова URL-адреса, що відображається як "Website" в інтерфейсі macOS Skills.

os"darwin" | "linux" | "win32"

Необов’язковий список платформ. Якщо задано, навичка доступна лише в цих ОС.

requires.binsstring[]

Кожен елемент має існувати в PATH.

requires.anyBinsstring[]

Принаймні один елемент має існувати в PATH.

requires.envstring[]

Змінна середовища має існувати або бути надана в конфігурації.

requires.configstring[]

Список шляхів openclaw.json, які мають бути істинними.

primaryEnvstring

Ім’я змінної середовища, пов’язане з skills.entries.<name>.apiKey.

installobject[]

Необов’язкові специфікації інсталятора, які використовуються інтерфейсом macOS Skills (brew/node/go/uv/download).

Якщо metadata.openclaw відсутній, навичка завжди доступна (якщо її не вимкнено в конфігурації або не заблоковано через skills.allowBundled для вбудованих навичок).

Нотатки щодо ізоляції

  • requires.bins перевіряється на хості під час завантаження навички.
  • Якщо агент працює в sandbox, бінарний файл також має існувати всередині контейнера. Встановіть його через agents.defaults.sandbox.docker.setupCommand (або власний образ). setupCommand запускається один раз після створення контейнера. Встановлення пакетів також потребує мережевого виходу, записуваної кореневої FS і користувача root у sandbox.
  • Приклад: навичці summarize (skills/summarize/SKILL.md) потрібен CLI summarize у sandbox-контейнері, щоб запускатися там.

Специфікації інсталятора

markdown
---name: geminidescription: Use Gemini CLI for coding assistance and Google search lookups.metadata:  {    "openclaw":      {        "emoji": "♊️",        "requires": { "bins": ["gemini"] },        "install":          [            {              "id": "brew",              "kind": "brew",              "formula": "gemini-cli",              "bins": ["gemini"],              "label": "Install Gemini CLI (brew)",            },          ],      },  }---
Правила вибору інсталятора
  • Якщо вказано кілька інсталяторів, gateway вибирає один бажаний варіант (brew, коли доступний, інакше node).
  • Якщо всі інсталятори мають тип download, OpenClaw показує кожен запис, щоб ви могли бачити доступні артефакти.
  • Специфікації інсталятора можуть містити os: ["darwin"|"linux"|"win32"], щоб фільтрувати варіанти за платформою.
  • Встановлення Node враховує skills.install.nodeManager в openclaw.json (типово: npm; варіанти: npm/pnpm/yarn/bun). Це впливає лише на встановлення навичок; середовище виконання Gateway все одно має бути Node - Bun не рекомендований для WhatsApp/Telegram.
  • Вибір інсталятора за підтримки Gateway керується пріоритетами: коли специфікації встановлення змішують типи, OpenClaw надає перевагу Homebrew, якщо skills.install.preferBrew увімкнено і brew існує, потім uv, потім налаштованому менеджеру node, потім іншим резервним варіантам, як-от go або download.
  • Якщо кожна специфікація встановлення має тип download, OpenClaw показує всі варіанти завантаження замість згортання до одного бажаного інсталятора.
Деталі за інсталятором
  • Встановлення Go: якщо go відсутній, а brew доступний, gateway спочатку встановлює Go через Homebrew і за можливості встановлює GOBIN у bin Homebrew.
  • Встановлення через завантаження: url (обов’язково), archive (tar.gz | tar.bz2 | zip), extract (типово: auto, коли виявлено архів), stripComponents, targetDir (типово: ~/.openclaw/tools/<skillKey>).

Перевизначення конфігурації

Вбудовані та керовані навички можна вмикати/вимикати й надавати їм значення середовища в skills.entries у ~/.openclaw/openclaw.json:

json5
{  skills: {    entries: {      "image-lab": {        enabled: true,        apiKey: { source: "env", provider: "default", id: "GEMINI_API_KEY" }, // or plaintext string        env: {          GEMINI_API_KEY: "GEMINI_KEY_HERE",        },        config: {          endpoint: "https://example.invalid",          model: "nano-pro",        },      },      peekaboo: { enabled: true },      sag: { enabled: false },    },  },}
enabledboolean

false вимикає навичку, навіть якщо вона вбудована або встановлена. Вбудована навичка coding-agent вмикається за бажанням: установіть skills.entries.coding-agent.enabled: true, перш ніж відкривати її агентам, а потім переконайтеся, що один із claude, codex, opencode або pi встановлений і автентифікований для власного CLI.

apiKeystring | { source, provider, id }

Зручність для навичок, які оголошують metadata.openclaw.primaryEnv. Підтримує відкритий текст або SecretRef.

env"Record<string,
configobject

Необов’язковий контейнер для власних полів окремої навички. Власні ключі мають бути тут.

allowBundledstring[]

Необов’язковий список дозволів лише для вбудованих навичок. Якщо задано, доступні лише вбудовані навички зі списку (керовані/робочі навички не зачіпаються).

Якщо назва навички містить дефіси, беріть ключ у лапки (JSON5 дозволяє ключі в лапках). Ключі конфігурації типово збігаються з назвою навички - якщо навичка визначає metadata.openclaw.skillKey, використовуйте цей ключ у skills.entries.

Ін’єкція середовища

Коли запуск агента починається, OpenClaw:

  1. Читає метадані навичок.
  2. Застосовує skills.entries.<key>.env і skills.entries.<key>.apiKey до process.env.
  3. Будує системний prompt з доступними навичками.
  4. Відновлює початкове середовище після завершення запуску.

Ін’єкція середовища обмежена запуском агента, а не глобальним shell-середовищем.

Для вбудованого бекенда claude-cli OpenClaw також матеріалізує той самий доступний знімок як тимчасовий plugin Claude Code і передає його з --plugin-dir. Тоді Claude Code може використовувати свій нативний резолвер навичок, поки OpenClaw усе ще керує пріоритетом, allowlist для кожного агента, gating і ін’єкцією env/API-ключів skills.entries.*. Інші CLI-бекенди використовують лише каталог prompt.

Знімки й оновлення

OpenClaw створює знімок доступних навичок під час старту сесії і повторно використовує цей список для наступних ходів у тій самій сесії. Зміни в навичках або конфігурації набирають чинності в наступній новій сесії.

Навички можуть оновлюватися посеред сесії у двох випадках:

  • Спостерігач навичок увімкнений.
  • З’являється новий доступний віддалений node.

Сприймайте це як гаряче перезавантаження: оновлений список підхоплюється на наступному ході агента. Якщо ефективний allowlist навичок агента змінюється для цієї сесії, OpenClaw оновлює знімок, щоб видимі навички лишалися узгодженими з поточним агентом.

Спостерігач Skills

Типово OpenClaw спостерігає за папками навичок і підвищує версію знімка навичок, коли файли SKILL.md змінюються. Налаштовується в skills.load:

json5
{  skills: {    load: {      extraDirs: ["~/Projects/agent-scripts/skills"],      allowSymlinkTargets: ["~/Projects/manager/skills"],      watch: true,      watchDebounceMs: 250,    },  },}

Використовуйте allowSymlinkTargets для навмисних схем із сусідніми репозиторіями, де вбудований корінь навички містить symlink, наприклад ~/.agents/skills/manager -> ~/Projects/manager/skills. Список цілей зіставляється після realpath-резолюції й має лишатися вузьким.

Віддалені macOS node (Linux gateway)

Якщо Gateway працює на Linux, але підключено macOS node з дозволеним system.run (безпеку схвалень Exec не встановлено в deny), OpenClaw може вважати навички лише для macOS доступними, коли потрібні бінарні файли присутні на цьому node. Агент має виконувати ці навички через інструмент exec з host=node.

Це залежить від того, що node повідомляє про підтримку команд, і від перевірки bin через system.which або system.run. Офлайн-node не роблять віддалені-only навички видимими. Якщо підключений node припиняє відповідати на bin probes, OpenClaw очищає свої кешовані bin-збіги, щоб агенти більше не бачили навичок, які зараз не можуть там виконуватися.

Вплив на токени

Коли навички доступні, OpenClaw ін’єктує компактний XML-список доступних навичок у системний prompt (через formatSkillsForPrompt у pi-coding-agent). Вартість детермінована:

  • Базові накладні витрати (лише коли є ≥1 навичка): 195 символів.
  • На навичку: 97 символів + довжина XML-екранованих значень <name>, <description> і <location>.

Формула (символи):

text
total = 195 + Σ (97 + len(name_escaped) + len(description_escaped) + len(location_escaped))

XML-екранування розширює & < > " ' до сутностей (&amp;, &lt; тощо), збільшуючи довжину. Кількість токенів залежить від tokenizer моделі. Груба оцінка в стилі OpenAI становить ~4 символи/токен, тож 97 символів ≈ 24 токени на навичку плюс фактичні довжини ваших полів.

Життєвий цикл керованих навичок

OpenClaw постачає базовий набір навичок як вбудовані навички разом із встановленням (npm-пакет або OpenClaw.app). ~/.openclaw/skills існує для локальних перевизначень - наприклад, фіксації версії або патчення навички без зміни вбудованої копії. Навички робочого простору належать користувачу й перевизначають обидва варіанти у разі конфліктів імен.

Шукаєте більше навичок?

Перегляньте https://clawhub.ai. Повна схема конфігурації: Конфігурація Skills.

Пов’язане

Was this useful?