chore(i18n): refresh uk translations
This commit is contained in:
parent
daa2a7059d
commit
34b1c41010
@ -1,55 +1,55 @@
|
||||
---
|
||||
read_when:
|
||||
- Додавання або зміна Skills
|
||||
- Зміна правил gating або завантаження Skills
|
||||
summary: 'Skills: керовані чи workspace, правила gating і wiring конфігурації/env'
|
||||
- Додавання або змінення Skills
|
||||
- Змінення правил гейтінгу Skills, списків дозволів або правил завантаження
|
||||
- Розуміння пріоритету Skills і поведінки знімків
|
||||
sidebarTitle: Skills
|
||||
summary: 'Skills: керовані чи робочого простору, правила гейтінгу, списки дозволів агентів і налаштування конфігурації'
|
||||
title: Skills
|
||||
x-i18n:
|
||||
generated_at: "2026-04-25T22:45:30Z"
|
||||
generated_at: "2026-04-26T05:48:57Z"
|
||||
model: gpt-5.4
|
||||
provider: openai
|
||||
source_hash: 22741e7f3ae7117675b73056ae8148f7864dac210df1a63ed19903525df7d823
|
||||
source_hash: 19fd880e88051db9d4d9090a64123a2dc5a16a6211fa46879ddecaa86f25149c
|
||||
source_path: tools/skills.md
|
||||
workflow: 15
|
||||
---
|
||||
|
||||
OpenClaw використовує **сумісні з [AgentSkills](https://agentskills.io)** теки навичок, щоб навчати агента користуватися інструментами. Кожна навичка — це директорія, що містить `SKILL.md` з YAML frontmatter та інструкціями. OpenClaw завантажує **вбудовані навички** плюс необов’язкові локальні перевизначення й фільтрує їх під час завантаження на основі середовища, конфігурації та наявності бінарних файлів.
|
||||
OpenClaw використовує сумісні з **[AgentSkills](https://agentskills.io)** теки skills, щоб навчати агента користуватися інструментами. Кожен skill — це директорія, що містить `SKILL.md` з YAML frontmatter та інструкціями. OpenClaw завантажує вбудовані skills, а також необов’язкові локальні перевизначення, і фільтрує їх під час завантаження залежно від середовища, конфігурації та наявності бінарних файлів.
|
||||
|
||||
## Розташування та пріоритет
|
||||
|
||||
OpenClaw завантажує навички з таких джерел:
|
||||
OpenClaw завантажує skills з таких джерел, **від найвищого пріоритету до найнижчого**:
|
||||
|
||||
1. **Додаткові теки навичок**: налаштовуються через `skills.load.extraDirs`
|
||||
2. **Вбудовані навички**: постачаються разом з інсталяцією (npm package або OpenClaw.app)
|
||||
3. **Керовані/локальні навички**: `~/.openclaw/skills`
|
||||
4. **Персональні навички агента**: `~/.agents/skills`
|
||||
5. **Навички агента проєкту**: `<workspace>/.agents/skills`
|
||||
6. **Навички workspace**: `<workspace>/skills`
|
||||
| # | Джерело | Шлях |
|
||||
| --- | --------------------- | -------------------------------- |
|
||||
| 1 | Skills робочого простору | `<workspace>/skills` |
|
||||
| 2 | Skills агента проєкту | `<workspace>/.agents/skills` |
|
||||
| 3 | Особисті skills агента | `~/.agents/skills` |
|
||||
| 4 | Керовані/локальні skills | `~/.openclaw/skills` |
|
||||
| 5 | Вбудовані skills | постачаються разом з установкою |
|
||||
| 6 | Додаткові теки skills | `skills.load.extraDirs` (config) |
|
||||
|
||||
Якщо назва навички конфліктує, пріоритет такий:
|
||||
Якщо назва skill конфліктує, перемагає джерело з найвищим пріоритетом.
|
||||
|
||||
`<workspace>/skills` (найвищий) → `<workspace>/.agents/skills` → `~/.agents/skills` → `~/.openclaw/skills` → вбудовані навички → `skills.load.extraDirs` (найнижчий)
|
||||
## Skills для окремого агента та спільні skills
|
||||
|
||||
## Навички для окремого агента vs спільні навички
|
||||
У конфігураціях **з кількома агентами** кожен агент має власний робочий простір:
|
||||
|
||||
У конфігураціях **з кількома агентами** кожен агент має власний workspace. Це означає:
|
||||
| Область | Шлях | Видимість |
|
||||
| --------------------- | ------------------------------------------- | -------------------------- |
|
||||
| Для окремого агента | `<workspace>/skills` | Лише для цього агента |
|
||||
| Агент проєкту | `<workspace>/.agents/skills` | Лише для агента цього workspace |
|
||||
| Особистий агент | `~/.agents/skills` | Для всіх агентів на цій машині |
|
||||
| Спільні керовані/локальні | `~/.openclaw/skills` | Для всіх агентів на цій машині |
|
||||
| Спільні додаткові теки | `skills.load.extraDirs` (найнижчий пріоритет) | Для всіх агентів на цій машині |
|
||||
|
||||
- **Навички для окремого агента** зберігаються в `<workspace>/skills` лише для цього агента.
|
||||
- **Навички агента проєкту** зберігаються в `<workspace>/.agents/skills` і застосовуються до цього workspace перед звичайною текою workspace `skills/`.
|
||||
- **Персональні навички агента** зберігаються в `~/.agents/skills` і застосовуються до всіх workspace на цій машині.
|
||||
- **Спільні навички** зберігаються в `~/.openclaw/skills` (керовані/локальні) і видимі **всім агентам** на цій машині.
|
||||
- **Спільні теки** також можна додати через `skills.load.extraDirs` (найнижчий пріоритет), якщо ви хочете мати спільний набір навичок, який використовують кілька агентів.
|
||||
Однакова назва в кількох місцях → перемагає джерело з найвищим пріоритетом. Workspace має пріоритет над agent проєкту, той — над personal-agent, далі — над managed/local, далі — над bundled, далі — над extra dirs.
|
||||
|
||||
Якщо та сама назва навички існує в кількох місцях, застосовується звичайний пріоритет: перемагає workspace, потім навички агента проєкту, потім персональні навички агента, потім керовані/локальні, потім вбудовані, потім extra dirs.
|
||||
## Списки дозволених skills для агентів
|
||||
|
||||
## Allowlist навичок агента
|
||||
|
||||
**Розташування** навички та **видимість** навички — це окремі механізми керування.
|
||||
|
||||
- Розташування/пріоритет визначає, яка копія однойменної навички перемагає.
|
||||
- Allowlist агента визначає, які з видимих навичок агент реально може використовувати.
|
||||
|
||||
Використовуйте `agents.defaults.skills` для спільної базової конфігурації, а потім перевизначайте для окремих агентів через `agents.list[].skills`:
|
||||
**Розташування** skill і **видимість** skill — це різні механізми керування.
|
||||
Розташування/пріоритет визначає, яка копія skill з однаковою назвою перемагає; списки дозволів агентів визначають, які skills агент узагалі може використовувати.
|
||||
|
||||
```json5
|
||||
{
|
||||
@ -59,81 +59,78 @@ OpenClaw завантажує навички з таких джерел:
|
||||
},
|
||||
list: [
|
||||
{ id: "writer" }, // успадковує github, weather
|
||||
{ id: "docs", skills: ["docs-search"] }, // замінює значення за замовчуванням
|
||||
{ id: "locked-down", skills: [] }, // без навичок
|
||||
{ id: "docs", skills: ["docs-search"] }, // замінює defaults
|
||||
{ id: "locked-down", skills: [] }, // без skills
|
||||
],
|
||||
},
|
||||
}
|
||||
```
|
||||
|
||||
Правила:
|
||||
<AccordionGroup>
|
||||
<Accordion title="Правила списків дозволів">
|
||||
- Не вказуйте `agents.defaults.skills`, якщо за замовчуванням skills не мають бути обмежені.
|
||||
- Не вказуйте `agents.list[].skills`, щоб успадкувати `agents.defaults.skills`.
|
||||
- Установіть `agents.list[].skills: []`, щоб не дозволити жодного skill.
|
||||
- Непорожній список `agents.list[].skills` є **остаточним** набором для цього агента — він не об’єднується з defaults.
|
||||
- Ефективний список дозволів застосовується під час побудови prompt, виявлення slash-команд skills, синхронізації sandbox і знімків skills.
|
||||
</Accordion>
|
||||
</AccordionGroup>
|
||||
|
||||
- Не вказуйте `agents.defaults.skills`, якщо за замовчуванням навички не мають бути обмежені.
|
||||
- Не вказуйте `agents.list[].skills`, щоб успадкувати `agents.defaults.skills`.
|
||||
- Встановіть `agents.list[].skills: []`, щоб не було жодних навичок.
|
||||
- Непорожній список `agents.list[].skills` є остаточним набором для цього агента; він не об’єднується зі значеннями за замовчуванням.
|
||||
## Plugins і skills
|
||||
|
||||
OpenClaw застосовує ефективний набір навичок агента під час побудови prompt, виявлення slash-command навичок, синхронізації sandbox і знімків навичок.
|
||||
Plugins можуть постачати власні skills, перелічуючи директорії `skills` в
|
||||
`openclaw.plugin.json` (шляхи відносно кореня plugin). Skills plugin завантажуються, коли plugin увімкнено. Це правильне місце для посібників з використання інструментів, які надто довгі для опису інструмента, але мають бути доступні щоразу, коли plugin встановлено — наприклад, plugin браузера постачає skill `browser-automation` для багатокрокового керування браузером.
|
||||
|
||||
## Plugins + навички
|
||||
Директорії skills plugin об’єднуються в той самий шлях із низьким пріоритетом, що й
|
||||
`skills.load.extraDirs`, тому skill з такою самою назвою з bundled, managed, agent або
|
||||
workspace перевизначає їх. Їх можна гейтінгувати через
|
||||
`metadata.openclaw.requires.config` у записі конфігурації plugin.
|
||||
|
||||
Plugins можуть постачати власні навички, вказуючи директорії `skills` у
|
||||
`openclaw.plugin.json` (шляхи відносно кореня plugin). Навички plugin завантажуються, коли plugin увімкнений. Це правильне місце для операційних інструкцій, специфічних для інструмента, які надто довгі для опису інструмента, але мають бути доступні щоразу, коли plugin встановлено; наприклад, browser plugin постачає навичку
|
||||
`browser-automation` для багатокрокового керування браузером. Наразі ці
|
||||
директорії об’єднуються в той самий шлях із низьким пріоритетом, що й
|
||||
`skills.load.extraDirs`, тому однойменна вбудована, керована, агентська або
|
||||
workspace-навішка перевизначає їх.
|
||||
Ви можете керувати ними через `metadata.openclaw.requires.config` у записі конфігурації plugin.
|
||||
Див. [Plugins](/uk/tools/plugin) для виявлення/конфігурації і [Tools](/uk/tools) для поверхні
|
||||
інструментів, яку пояснюють ці навички.
|
||||
Див. [Plugins](/uk/tools/plugin) для виявлення/конфігурації та [Tools](/uk/tools) для поверхні інструментів, якої навчають ці skills.
|
||||
|
||||
## Skill Workshop
|
||||
|
||||
Необов’язковий експериментальний plugin Skill Workshop може створювати або оновлювати навички workspace з повторно використовуваних процедур, помічених під час роботи агента. Його вимкнено за замовчуванням, і його потрібно явно ввімкнути через
|
||||
Необов’язковий експериментальний plugin **Skill Workshop** може створювати або оновлювати skills робочого простору на основі повторно використовуваних процедур, виявлених під час роботи агента. Він вимкнений за замовчуванням і має бути явно увімкнений через
|
||||
`plugins.entries.skill-workshop`.
|
||||
|
||||
Skill Workshop записує лише до `<workspace>/skills`, сканує згенерований вміст,
|
||||
підтримує очікування схвалення або автоматичні безпечні записи, поміщає небезпечні
|
||||
пропозиції в карантин і оновлює знімок навичок після успішних записів, щоб нові
|
||||
навички могли ставати доступними без перезапуску Gateway.
|
||||
Skill Workshop записує дані лише до `<workspace>/skills`, сканує згенерований
|
||||
вміст, підтримує відкладене схвалення або автоматичний безпечний запис, поміщає небезпечні пропозиції в карантин і оновлює знімок skill після успішного запису, щоб нові skills ставали доступними без перезапуску Gateway.
|
||||
|
||||
Використовуйте його, коли хочете, щоб такі виправлення, як «наступного разу перевіряй attribution GIF», або важко здобуті процеси, як-от контрольні списки медіа-QA, стали стійкими процедурними інструкціями. Починайте з режиму очікування схвалення; автоматичні записи використовуйте лише в довірених workspace після перевірки його пропозицій. Повний посібник:
|
||||
[Skill Workshop Plugin](/uk/plugins/skill-workshop).
|
||||
Використовуйте його для виправлень на кшталт _"наступного разу перевіряй атрибуцію GIF"_ або для важко здобутих робочих процесів, таких як контрольні списки QA для медіа. Починайте з відкладеного схвалення; автоматичний запис використовуйте лише в довірених робочих просторах після перевірки його пропозицій. Повний посібник: [plugin Skill Workshop](/uk/plugins/skill-workshop).
|
||||
|
||||
## ClawHub (встановлення + синхронізація)
|
||||
## ClawHub (установлення та синхронізація)
|
||||
|
||||
ClawHub — це публічний реєстр навичок для OpenClaw. Переглянути можна на
|
||||
[https://clawhub.ai](https://clawhub.ai). Використовуйте вбудовані команди `openclaw skills`
|
||||
для пошуку/встановлення/оновлення навичок або окремий CLI `clawhub`, коли
|
||||
потрібні процеси публікації/синхронізації.
|
||||
Повний посібник: [ClawHub](/uk/tools/clawhub).
|
||||
[ClawHub](https://clawhub.ai) — це публічний реєстр skills для OpenClaw.
|
||||
Використовуйте нативні команди `openclaw skills` для виявлення/установлення/оновлення або окремий CLI `clawhub` для робочих процесів публікації/синхронізації. Повний посібник:
|
||||
[ClawHub](/uk/tools/clawhub).
|
||||
|
||||
Типові сценарії:
|
||||
| Дія | Команда |
|
||||
| ------------------------------------ | -------------------------------------- |
|
||||
| Установити skill у workspace | `openclaw skills install <skill-slug>` |
|
||||
| Оновити всі встановлені skills | `openclaw skills update --all` |
|
||||
| Синхронізація (сканування + публікація оновлень) | `clawhub sync --all` |
|
||||
|
||||
- Встановити навичку у ваш workspace:
|
||||
- `openclaw skills install <skill-slug>`
|
||||
- Оновити всі встановлені навички:
|
||||
- `openclaw skills update --all`
|
||||
- Синхронізація (сканування + публікація оновлень):
|
||||
- `clawhub sync --all`
|
||||
Нативна команда `openclaw skills install` установлює до активної директорії
|
||||
`skills/` workspace. Окремий CLI `clawhub` також установлює до
|
||||
`./skills` у поточному робочому каталозі (або використовує налаштований workspace OpenClaw як запасний варіант). OpenClaw підхопить це як
|
||||
`<workspace>/skills` у наступній сесії.
|
||||
|
||||
Вбудована команда `openclaw skills install` встановлює в активну директорію workspace `skills/`.
|
||||
Окремий CLI `clawhub` також встановлює в `./skills` у вашій
|
||||
поточній робочій директорії (або використовує fallback до налаштованого workspace OpenClaw).
|
||||
OpenClaw підхопить це як `<workspace>/skills` у наступній сесії.
|
||||
## Безпека
|
||||
|
||||
## Примітки щодо безпеки
|
||||
<Warning>
|
||||
Ставтеся до сторонніх skills як до **ненадійного коду**. Прочитайте їх перед увімкненням.
|
||||
Для ненадійних вхідних даних і ризикованих інструментів віддавайте перевагу запускам у sandbox. Див.
|
||||
[Sandboxing](/uk/gateway/sandboxing) для елементів керування на боці агента.
|
||||
</Warning>
|
||||
|
||||
- Сприймайте сторонні навички як **ненадійний код**. Прочитайте їх перед увімкненням.
|
||||
- Для ненадійних вхідних даних і ризикованих інструментів віддавайте перевагу запуску в sandbox. Див. [Sandboxing](/uk/gateway/sandboxing).
|
||||
- Виявлення навичок у workspace і extra-dir приймає лише корені навичок та файли `SKILL.md`, чий розв’язаний realpath залишається всередині налаштованого кореня.
|
||||
- Встановлення залежностей навичок через Gateway (`skills.install`, onboarding і UI налаштувань Skills) запускають вбудований dangerous-code scanner перед виконанням метаданих інсталятора. Знахідки рівня `critical` за замовчуванням блокують виконання, якщо виклик явно не встановлює dangerous override; підозрілі знахідки все ще лише попереджають.
|
||||
- `openclaw skills install <slug>` відрізняється: ця команда завантажує теку навички ClawHub у workspace і не використовує описаний вище шлях через метадані інсталятора.
|
||||
- `skills.entries.*.env` і `skills.entries.*.apiKey` інжектують секрети в процес **host**
|
||||
для цього ходу агента (а не в sandbox). Не допускайте потрапляння секретів у prompt і логи.
|
||||
- Для ширшої моделі загроз і контрольних списків див. [Security](/uk/gateway/security).
|
||||
- Виявлення skills у workspace і в extra-dir приймає лише корені skills і файли `SKILL.md`, чий обчислений realpath залишається всередині налаштованого кореня.
|
||||
- Установлення залежностей skills через Gateway (`skills.install`, онбординг і UI налаштувань Skills) запускають вбудований сканер небезпечного коду перед виконанням метаданих установлення. Знахідки рівня `critical` блокуються за замовчуванням, якщо викликач явно не встановить dangerous override; підозрілі знахідки лише попереджають.
|
||||
- `openclaw skills install <slug>` — це інше: команда завантажує теку skill із ClawHub у workspace і не використовує описаний вище шлях метаданих установлення.
|
||||
- `skills.entries.*.env` і `skills.entries.*.apiKey` інжектують секрети в **host**-процес для цього ходу агента (а не в sandbox). Не допускайте потрапляння секретів у prompts і журнали.
|
||||
|
||||
## Формат (AgentSkills + сумісний із Pi)
|
||||
Для ширшої моделі загроз і контрольних списків див. [Security](/uk/gateway/security).
|
||||
|
||||
## Формат SKILL.md
|
||||
|
||||
`SKILL.md` має містити щонайменше:
|
||||
|
||||
@ -144,26 +141,33 @@ description: Generate or edit images via a provider-backed image workflow
|
||||
---
|
||||
```
|
||||
|
||||
Примітки:
|
||||
OpenClaw дотримується специфікації AgentSkills щодо структури/призначення. Парсер, який використовує вбудований агент, підтримує лише **однорядкові** ключі frontmatter;
|
||||
`metadata` має бути **однорядковим** JSON-об’єктом. Використовуйте `{baseDir}` в інструкціях, щоб посилатися на шлях до теки skill.
|
||||
|
||||
- Ми дотримуємося специфікації AgentSkills щодо структури/призначення.
|
||||
- Парсер, який використовує вбудований агент, підтримує лише **однорядкові** ключі frontmatter.
|
||||
- `metadata` має бути **однорядковим JSON-об’єктом**.
|
||||
- Використовуйте `{baseDir}` в інструкціях, щоб посилатися на шлях до теки навички.
|
||||
- Необов’язкові ключі frontmatter:
|
||||
- `homepage` — URL, який показується як “Website” в macOS UI Skills (також підтримується через `metadata.openclaw.homepage`).
|
||||
- `user-invocable` — `true|false` (типове значення: `true`). Якщо `true`, навичка доступна як slash-command користувача.
|
||||
- `disable-model-invocation` — `true|false` (типове значення: `false`). Якщо `true`, навичка виключається з model prompt (але все ще доступна через виклик користувачем).
|
||||
- `command-dispatch` — `tool` (необов’язково). Якщо встановлено `tool`, slash-command минає модель і напряму диспетчеризується до інструмента.
|
||||
- `command-tool` — назва інструмента, який слід викликати, коли встановлено `command-dispatch: tool`.
|
||||
- `command-arg-mode` — `raw` (типове значення). Для диспетчеризації до інструмента передає сирий рядок args до інструмента (без парсингу в core).
|
||||
### Необов’язкові ключі frontmatter
|
||||
|
||||
Інструмент викликається з параметрами:
|
||||
`{ command: "<raw args>", commandName: "<slash command>", skillName: "<skill name>" }`.
|
||||
<ParamField path="homepage" type="string">
|
||||
URL, що відображається як "Website" в UI Skills для macOS. Також підтримується через `metadata.openclaw.homepage`.
|
||||
</ParamField>
|
||||
<ParamField path="user-invocable" type="boolean" default="true">
|
||||
Якщо значення `true`, skill доступний як slash-команда користувача.
|
||||
</ParamField>
|
||||
<ParamField path="disable-model-invocation" type="boolean" default="false">
|
||||
Якщо значення `true`, skill виключається з prompt моделі (але все ще доступний через виклик користувачем).
|
||||
</ParamField>
|
||||
<ParamField path="command-dispatch" type='"tool"'>
|
||||
Якщо встановлено `tool`, slash-команда оминає модель і напряму викликає інструмент.
|
||||
</ParamField>
|
||||
<ParamField path="command-tool" type="string">
|
||||
Назва інструмента для виклику, коли встановлено `command-dispatch: tool`.
|
||||
</ParamField>
|
||||
<ParamField path="command-arg-mode" type='"raw"' default="raw">
|
||||
Для dispatch інструмента передає необроблений рядок args до інструмента (без парсингу ядром). Інструмент викликається з `{ command: "<raw args>", commandName: "<slash command>", skillName: "<skill name>" }`.
|
||||
</ParamField>
|
||||
|
||||
## Gating (фільтри під час завантаження)
|
||||
## Гейтінг (фільтри під час завантаження)
|
||||
|
||||
OpenClaw **фільтрує навички під час завантаження** за допомогою `metadata` (однорядковий JSON):
|
||||
OpenClaw фільтрує skills під час завантаження за допомогою `metadata` (однорядковий JSON):
|
||||
|
||||
```markdown
|
||||
---
|
||||
@ -182,33 +186,54 @@ metadata:
|
||||
|
||||
Поля в `metadata.openclaw`:
|
||||
|
||||
- `always: true` — завжди включати навичку (пропустити інші gate).
|
||||
- `emoji` — необов’язкове emoji, яке використовується в macOS UI Skills.
|
||||
- `homepage` — необов’язковий URL, який показується як “Website” в macOS UI Skills.
|
||||
- `os` — необов’язковий список платформ (`darwin`, `linux`, `win32`). Якщо вказано, навичка доступна лише на цих ОС.
|
||||
- `requires.bins` — список; кожен елемент має існувати в `PATH`.
|
||||
- `requires.anyBins` — список; принаймні один елемент має існувати в `PATH`.
|
||||
- `requires.env` — список; змінна середовища має існувати **або** бути надана в конфігурації.
|
||||
- `requires.config` — список шляхів `openclaw.json`, які мають бути truthy.
|
||||
- `primaryEnv` — назва змінної середовища, пов’язаної з `skills.entries.<name>.apiKey`.
|
||||
- `install` — необов’язковий масив специфікацій інсталятора, який використовується в macOS UI Skills (brew/node/go/uv/download).
|
||||
<ParamField path="always" type="boolean">
|
||||
Якщо значення `true`, skill завжди включається (інші gate-умови пропускаються).
|
||||
</ParamField>
|
||||
<ParamField path="emoji" type="string">
|
||||
Необов’язковий emoji, що використовується в UI Skills для macOS.
|
||||
</ParamField>
|
||||
<ParamField path="homepage" type="string">
|
||||
Необов’язковий URL, що показується як "Website" в UI Skills для macOS.
|
||||
</ParamField>
|
||||
<ParamField path="os" type='"darwin" | "linux" | "win32"' >
|
||||
Необов’язковий список платформ. Якщо задано, skill доступний лише на цих ОС.
|
||||
</ParamField>
|
||||
<ParamField path="requires.bins" type="string[]">
|
||||
Кожен має існувати в `PATH`.
|
||||
</ParamField>
|
||||
<ParamField path="requires.anyBins" type="string[]">
|
||||
Принаймні один має існувати в `PATH`.
|
||||
</ParamField>
|
||||
<ParamField path="requires.env" type="string[]">
|
||||
Змінна середовища має існувати або бути надана в config.
|
||||
</ParamField>
|
||||
<ParamField path="requires.config" type="string[]">
|
||||
Список шляхів `openclaw.json`, які мають бути truthy.
|
||||
</ParamField>
|
||||
<ParamField path="primaryEnv" type="string">
|
||||
Назва змінної середовища, пов’язаної з `skills.entries.<name>.apiKey`.
|
||||
</ParamField>
|
||||
<ParamField path="install" type="object[]">
|
||||
Необов’язкові специфікації інсталятора, що використовуються в UI Skills для macOS (brew/node/go/uv/download).
|
||||
</ParamField>
|
||||
|
||||
Якщо `metadata.openclaw` відсутній, skill завжди вважається доступним (якщо
|
||||
його не вимкнено в config або не заблоковано через `skills.allowBundled` для bundled skills).
|
||||
|
||||
<Note>
|
||||
Застарілі блоки `metadata.clawdbot` усе ще підтримуються, коли
|
||||
`metadata.openclaw` відсутній, тож старіші встановлені навички зберігають свої
|
||||
gate залежностей і підказки для інсталятора. Для нових і оновлених навичок слід використовувати
|
||||
`metadata.openclaw` відсутній, тож старіші встановлені skills зберігають свої
|
||||
gate-умови залежностей і підказки для інсталятора. Нові та оновлені skills мають використовувати
|
||||
`metadata.openclaw`.
|
||||
</Note>
|
||||
|
||||
Примітка щодо sandboxing:
|
||||
### Примітки щодо sandboxing
|
||||
|
||||
- `requires.bins` перевіряється на **host** під час завантаження навички.
|
||||
- Якщо агент працює в sandbox, бінарний файл також має існувати **всередині контейнера**.
|
||||
Встановіть його через `agents.defaults.sandbox.docker.setupCommand` (або власний образ).
|
||||
`setupCommand` виконується один раз після створення контейнера.
|
||||
Для встановлення пакетів також потрібні мережевий egress, записувана коренева FS і root-користувач у sandbox.
|
||||
Приклад: навичка `summarize` (`skills/summarize/SKILL.md`) потребує CLI `summarize`
|
||||
у контейнері sandbox, щоб працювати там.
|
||||
- `requires.bins` перевіряється на **host** під час завантаження skill.
|
||||
- Якщо агент працює в sandbox, бінарний файл також має існувати **всередині контейнера**. Установіть його через `agents.defaults.sandbox.docker.setupCommand` (або використайте власний образ). `setupCommand` виконується один раз після створення контейнера. Установлення пакетів також потребує вихідного мережевого доступу, доступної для запису кореневої ФС і root-користувача в sandbox.
|
||||
- Приклад: skill `summarize` (`skills/summarize/SKILL.md`) потребує CLI `summarize` у контейнері sandbox, щоб працювати там.
|
||||
|
||||
Приклад інсталятора:
|
||||
### Специфікації інсталятора
|
||||
|
||||
```markdown
|
||||
---
|
||||
@ -235,29 +260,25 @@ metadata:
|
||||
---
|
||||
```
|
||||
|
||||
Примітки:
|
||||
<AccordionGroup>
|
||||
<Accordion title="Правила вибору інсталятора">
|
||||
- Якщо вказано кілька інсталяторів, gateway вибирає один бажаний варіант (brew, якщо доступний, інакше node).
|
||||
- Якщо всі інсталятори мають тип `download`, OpenClaw перелічує кожен запис, щоб ви могли бачити доступні артефакти.
|
||||
- Специфікації інсталятора можуть містити `os: ["darwin"|"linux"|"win32"]`, щоб фільтрувати варіанти за платформою.
|
||||
- Інсталяції Node враховують `skills.install.nodeManager` у `openclaw.json` (типово: npm; варіанти: npm/pnpm/yarn/bun). Це впливає лише на встановлення skills; середовище виконання Gateway все одно має бути Node — Bun не рекомендується для WhatsApp/Telegram.
|
||||
- Вибір інсталятора через Gateway базується на пріоритетах: коли специфікації встановлення змішують різні типи, OpenClaw віддає перевагу Homebrew, якщо ввімкнено `skills.install.preferBrew` і існує `brew`, потім `uv`, потім налаштований менеджер node, потім інші запасні варіанти, як-от `go` або `download`.
|
||||
- Якщо всі специфікації встановлення мають тип `download`, OpenClaw показує всі варіанти завантаження замість зведення до одного бажаного інсталятора.
|
||||
</Accordion>
|
||||
<Accordion title="Деталі для кожного інсталятора">
|
||||
- **Інсталяції Go:** якщо `go` відсутній, а `brew` доступний, gateway спочатку встановлює Go через Homebrew і, за можливості, встановлює `GOBIN` у `bin` від Homebrew.
|
||||
- **Інсталяції через download:** `url` (обов’язково), `archive` (`tar.gz` | `tar.bz2` | `zip`), `extract` (типово: auto, якщо виявлено архів), `stripComponents`, `targetDir` (типово: `~/.openclaw/tools/<skillKey>`).
|
||||
</Accordion>
|
||||
</AccordionGroup>
|
||||
|
||||
- Якщо вказано кілька інсталяторів, 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 базується на пріоритетах, а не лише на node:
|
||||
коли специфікації інсталяції змішують різні типи, OpenClaw віддає перевагу Homebrew, якщо
|
||||
увімкнено `skills.install.preferBrew` і існує `brew`, потім `uv`, потім
|
||||
налаштований node manager, а потім інші fallback-варіанти, як-от `go` або `download`.
|
||||
- Якщо кожна специфікація інсталяції має тип `download`, OpenClaw показує всі варіанти завантаження
|
||||
замість зведення до одного пріоритетного інсталятора.
|
||||
- Інсталяції Go: якщо `go` відсутній, а `brew` доступний, gateway спочатку встановлює Go через Homebrew і за можливості встановлює `GOBIN` у `bin` від Homebrew.
|
||||
- Інсталяції через download: `url` (обов’язково), `archive` (`tar.gz` | `tar.bz2` | `zip`), `extract` (типове значення: auto, якщо архів виявлено), `stripComponents`, `targetDir` (типове значення: `~/.openclaw/tools/<skillKey>`).
|
||||
## Перевизначення конфігурації
|
||||
|
||||
Якщо `metadata.openclaw` відсутній, навичка завжди вважається допустимою (якщо
|
||||
її не вимкнено в конфігурації або не заблоковано через `skills.allowBundled` для вбудованих навичок).
|
||||
|
||||
## Перевизначення конфігурації (`~/.openclaw/openclaw.json`)
|
||||
|
||||
Вбудовані/керовані навички можна вмикати або вимикати та передавати їм значення env:
|
||||
Вбудовані та керовані skills можна вмикати/вимикати та передавати їм значення env
|
||||
через `skills.entries` у `~/.openclaw/openclaw.json`:
|
||||
|
||||
```json5
|
||||
{
|
||||
@ -265,7 +286,7 @@ metadata:
|
||||
entries: {
|
||||
"image-lab": {
|
||||
enabled: true,
|
||||
apiKey: { source: "env", provider: "default", id: "GEMINI_API_KEY" }, // або plaintext-рядок
|
||||
apiKey: { source: "env", provider: "default", id: "GEMINI_API_KEY" }, // або простий текстовий рядок
|
||||
env: {
|
||||
GEMINI_API_KEY: "GEMINI_KEY_HERE",
|
||||
},
|
||||
@ -281,68 +302,73 @@ metadata:
|
||||
}
|
||||
```
|
||||
|
||||
Примітка: якщо назва навички містить дефіси, візьміть ключ у лапки (JSON5 дозволяє ключі в лапках).
|
||||
<ParamField path="enabled" type="boolean">
|
||||
`false` вимикає skill, навіть якщо він вбудований або встановлений.
|
||||
</ParamField>
|
||||
<ParamField path="apiKey" type='string | { source, provider, id }'>
|
||||
Зручне скорочення для skills, які оголошують `metadata.openclaw.primaryEnv`. Підтримує простий текст або SecretRef.
|
||||
</ParamField>
|
||||
<ParamField path="env" type="Record<string, string>">
|
||||
Інжектується лише якщо змінна ще не встановлена в процесі.
|
||||
</ParamField>
|
||||
<ParamField path="config" type="object">
|
||||
Необов’язковий контейнер для користувацьких полів окремого skill. Користувацькі ключі мають розміщуватися тут.
|
||||
</ParamField>
|
||||
<ParamField path="allowBundled" type="string[]">
|
||||
Необов’язковий список дозволу лише для **вбудованих** skills. Якщо задано, доступними будуть лише вбудовані skills зі списку (managed/workspace skills не зачіпаються).
|
||||
</ParamField>
|
||||
|
||||
Якщо вам потрібне стандартне генерування/редагування зображень безпосередньо в OpenClaw, використовуйте core-інструмент
|
||||
`image_generate` разом із `agents.defaults.imageGenerationModel`, а не
|
||||
вбудовану навичку. Наведені тут приклади навичок призначені для власних або сторонніх workflow.
|
||||
Якщо назва skill містить дефіси, беріть ключ у лапки (JSON5 дозволяє ключі
|
||||
в лапках). Ключі конфігурації за замовчуванням відповідають **назві skill** — якщо skill
|
||||
визначає `metadata.openclaw.skillKey`, використовуйте цей ключ у `skills.entries`.
|
||||
|
||||
Для нативного аналізу зображень використовуйте інструмент `image` разом із `agents.defaults.imageModel`.
|
||||
Для нативного генерування/редагування зображень використовуйте `image_generate` разом із
|
||||
`agents.defaults.imageGenerationModel`. Якщо ви обираєте `openai/*`, `google/*`,
|
||||
`fal/*` або іншу модель зображень, специфічну для провайдера, також додайте auth/API
|
||||
ключ цього провайдера.
|
||||
<Note>
|
||||
Для стандартного генерування/редагування зображень усередині OpenClaw використовуйте основний
|
||||
інструмент `image_generate` разом із `agents.defaults.imageGenerationModel` замість
|
||||
вбудованого skill. Приклади skills тут наведені для користувацьких або сторонніх
|
||||
робочих процесів. Для нативного аналізу зображень використовуйте інструмент `image` з
|
||||
`agents.defaults.imageModel`. Якщо ви вибираєте `openai/*`, `google/*`,
|
||||
`fal/*` або іншу модель зображень, специфічну для провайдера, також додайте
|
||||
автентифікацію/API key цього провайдера.
|
||||
</Note>
|
||||
|
||||
Ключі конфігурації за замовчуванням відповідають **назві навички**. Якщо навичка визначає
|
||||
`metadata.openclaw.skillKey`, використовуйте цей ключ у `skills.entries`.
|
||||
## Інжекція середовища
|
||||
|
||||
Правила:
|
||||
Коли запускається робота агента, OpenClaw:
|
||||
|
||||
- `enabled: false` вимикає навичку, навіть якщо вона вбудована/встановлена.
|
||||
- `env`: інжектується **лише якщо** змінна ще не встановлена в процесі.
|
||||
- `apiKey`: зручний механізм для навичок, які оголошують `metadata.openclaw.primaryEnv`.
|
||||
Підтримує plaintext-рядок або об’єкт SecretRef (`{ source, provider, id }`).
|
||||
- `config`: необов’язковий набір для користувацьких полів окремої навички; користувацькі ключі мають бути лише тут.
|
||||
- `allowBundled`: необов’язковий allowlist **лише** для вбудованих навичок. Якщо його задано, допустимими є лише
|
||||
вбудовані навички зі списку (керовані/navички workspace це не зачіпає).
|
||||
|
||||
## Інжекція середовища (для кожного запуску агента)
|
||||
|
||||
Коли починається запуск агента, OpenClaw:
|
||||
|
||||
1. Зчитує метадані навичок.
|
||||
2. Застосовує будь-які `skills.entries.<key>.env` або `skills.entries.<key>.apiKey` до
|
||||
`process.env`.
|
||||
3. Будує system prompt з **допустимими** навичками.
|
||||
1. Зчитує metadata skill.
|
||||
2. Застосовує `skills.entries.<key>.env` і `skills.entries.<key>.apiKey` до `process.env`.
|
||||
3. Будує системний prompt з **доступними** skills.
|
||||
4. Відновлює початкове середовище після завершення запуску.
|
||||
|
||||
Це **обмежено запуском агента**, а не є глобальним shell-середовищем.
|
||||
Інжекція середовища **обмежена запуском агента**, а не є глобальним shell-середовищем.
|
||||
|
||||
Для вбудованого backend `claude-cli` OpenClaw також матеріалізує той самий
|
||||
допустимий знімок як тимчасовий plugin Claude Code і передає його через
|
||||
`--plugin-dir`. Тоді Claude Code може використовувати власний нативний resolver навичок, тоді як
|
||||
OpenClaw усе одно керує пріоритетом, allowlist-ами окремих агентів, gating і
|
||||
інжекцією env/API key через `skills.entries.*`. Інші CLI backend використовують лише каталог prompt.
|
||||
Для вбудованого бекенда `claude-cli` OpenClaw також матеріалізує той самий
|
||||
доступний знімок як тимчасовий plugin Claude Code і передає його через
|
||||
`--plugin-dir`. Тоді Claude Code може використовувати власний нативний resolver skills, тоді як
|
||||
OpenClaw і далі контролює пріоритет, списки дозволів для окремих агентів, гейтінг і
|
||||
інжекцію env/API key через `skills.entries.*`. Інші CLI-бекенди використовують лише каталог prompt.
|
||||
|
||||
## Знімок сесії (продуктивність)
|
||||
## Знімки та оновлення
|
||||
|
||||
OpenClaw створює знімок допустимих навичок **на початку сесії** і повторно використовує цей список для наступних ходів у тій самій сесії. Зміни в навичках або конфігурації набирають чинності під час наступної нової сесії.
|
||||
OpenClaw створює знімок доступних skills **на початку сесії** і
|
||||
повторно використовує цей список для наступних ходів у тій самій сесії. Зміни в
|
||||
skills або config набирають чинності в наступній новій сесії.
|
||||
|
||||
Навички також можуть оновлюватися всередині сесії, коли увімкнено watcher навичок або коли з’являється новий допустимий віддалений Node (див. нижче). Сприймайте це як **гаряче перезавантаження**: оновлений список буде підхоплено на наступному ході агента.
|
||||
Skills можуть оновлюватися посеред сесії у двох випадках:
|
||||
|
||||
Якщо для цієї сесії змінюється ефективний allowlist навичок агента, OpenClaw
|
||||
оновлює знімок, щоб видимі навички залишалися узгодженими з поточним
|
||||
агентом.
|
||||
- Увімкнено спостерігач skills.
|
||||
- З’являється новий доступний віддалений Node.
|
||||
|
||||
## Віддалені macOS Node (Linux Gateway)
|
||||
Сприймайте це як **гаряче перезавантаження**: оновлений список підхоплюється на
|
||||
наступному ході агента. Якщо ефективний список дозволених skills агента змінюється для
|
||||
цієї сесії, OpenClaw оновлює знімок, щоб видимі skills залишалися узгодженими
|
||||
з поточним агентом.
|
||||
|
||||
Якщо Gateway працює на Linux, але підключено **macOS Node** **з дозволеним `system.run`** (налаштування безпеки Exec approvals не встановлене в `deny`), OpenClaw може вважати навички лише для macOS допустимими, коли потрібні бінарні файли присутні на цьому Node. Агент повинен виконувати такі навички через інструмент `exec` з `host=node`.
|
||||
### Спостерігач skills
|
||||
|
||||
Це спирається на те, що Node повідомляє про свою підтримку команд, а також на перевірку бінарних файлів через `system.which` або `system.run`. Node, які перебувають offline, не роблять віддалені навички видимими. Якщо підключений Node перестає відповідати на перевірки бінарних файлів, OpenClaw очищає кешовані збіги бінарних файлів, щоб агенти більше не бачили навички, які наразі неможливо виконати там.
|
||||
|
||||
## Watcher навичок (автооновлення)
|
||||
|
||||
За замовчуванням OpenClaw відстежує теки навичок і оновлює знімок навичок, коли змінюються файли `SKILL.md`. Налаштування виконується в `skills.load`:
|
||||
За замовчуванням OpenClaw стежить за теками skills і оновлює знімок skills,
|
||||
коли змінюються файли `SKILL.md`. Налаштовується в `skills.load`:
|
||||
|
||||
```json5
|
||||
{
|
||||
@ -355,44 +381,56 @@ OpenClaw створює знімок допустимих навичок **на
|
||||
}
|
||||
```
|
||||
|
||||
## Вплив на токени (список навичок)
|
||||
### Віддалені вузли macOS (Linux gateway)
|
||||
|
||||
Коли навички допустимі, OpenClaw інжектує компактний XML-список доступних навичок у system prompt (через `formatSkillsForPrompt` у `pi-coding-agent`). Вартість детермінована:
|
||||
Якщо Gateway працює на Linux, але підключено **вузол macOS** з дозволеним
|
||||
`system.run` (налаштування безпеки Exec approvals не встановлено на `deny`),
|
||||
OpenClaw може вважати skills лише для macOS доступними, якщо потрібні
|
||||
бінарні файли присутні на цьому вузлі. Агент має виконувати такі skills
|
||||
через інструмент `exec` з `host=node`.
|
||||
|
||||
- **Базовий overhead (лише коли є ≥1 навичка):** 195 символів.
|
||||
- **На одну навичку:** 97 символів + довжина XML-escaped значень `<name>`, `<description>` і `<location>`.
|
||||
Це спирається на те, що вузол повідомляє про підтримку команд і на перевірку
|
||||
бінарних файлів через `system.which` або `system.run`. Вузли, що перебувають офлайн, **не** роблять
|
||||
доступними skills, які можна виконувати лише віддалено. Якщо підключений вузол перестає відповідати на перевірки бінарних файлів, OpenClaw очищує кешовані збіги бінарних файлів, щоб агенти більше не бачили skills, які наразі не можна там виконати.
|
||||
|
||||
## Вплив на токени
|
||||
|
||||
Коли skills доступні, OpenClaw інжектує компактний XML-список доступних
|
||||
skills у системний prompt (через `formatSkillsForPrompt` у
|
||||
`pi-coding-agent`). Вартість детермінована:
|
||||
|
||||
- **Базові накладні витрати** (лише коли ≥1 skill): 195 символів.
|
||||
- **На кожен skill:** 97 символів + довжина значень `<name>`, `<description>` і `<location>`, екранованих для XML.
|
||||
|
||||
Формула (символи):
|
||||
|
||||
```
|
||||
```text
|
||||
total = 195 + Σ (97 + len(name_escaped) + len(description_escaped) + len(location_escaped))
|
||||
```
|
||||
|
||||
Примітки:
|
||||
XML-екранування розширює `& < > " '` до сутностей (`&`, `<` тощо),
|
||||
збільшуючи довжину. Кількість токенів залежить від токенізатора моделі. Груба
|
||||
оцінка в стилі OpenAI — приблизно 4 символи на токен, тому **97 символів ≈ 24 токени** на
|
||||
кожен skill плюс фактична довжина ваших полів.
|
||||
|
||||
- XML escaping розширює `& < > " '` у сутності (`&`, `<` тощо), що збільшує довжину.
|
||||
- Кількість токенів залежить від tokenizer моделі. Груба оцінка в стилі OpenAI — приблизно 4 символи на токен, тож **97 символів ≈ 24 токени** на навичку плюс фактична довжина ваших полів.
|
||||
## Життєвий цикл керованих skills
|
||||
|
||||
## Життєвий цикл керованих навичок
|
||||
OpenClaw постачає базовий набір skills як **вбудовані skills** разом з
|
||||
установкою (npm package або OpenClaw.app). `~/.openclaw/skills` існує для
|
||||
локальних перевизначень — наприклад, щоб зафіксувати версію або виправити skill без
|
||||
зміни вбудованої копії. Skills workspace належать користувачу й перевизначають
|
||||
обидва варіанти у разі конфлікту назв.
|
||||
|
||||
OpenClaw постачає базовий набір навичок як **вбудовані навички** у складі
|
||||
інсталяції (npm package або OpenClaw.app). `~/.openclaw/skills` існує для локальних
|
||||
перевизначень (наприклад, щоб зафіксувати версію/пропатчити навичку без зміни вбудованої
|
||||
копії). Навички workspace належать користувачу й перевизначають обидва варіанти у разі конфлікту назв.
|
||||
## Шукаєте більше skills?
|
||||
|
||||
## Довідник конфігурації
|
||||
|
||||
Див. [Skills config](/uk/tools/skills-config), щоб ознайомитися з повною схемою конфігурації.
|
||||
|
||||
## Шукаєте більше навичок?
|
||||
|
||||
Перегляньте [https://clawhub.ai](https://clawhub.ai).
|
||||
|
||||
---
|
||||
Перегляньте [https://clawhub.ai](https://clawhub.ai). Повна схема
|
||||
конфігурації: [Конфігурація Skills](/uk/tools/skills-config).
|
||||
|
||||
## Пов’язане
|
||||
|
||||
- [Creating Skills](/uk/tools/creating-skills) — створення власних навичок
|
||||
- [Skills Config](/uk/tools/skills-config) — довідник із конфігурації навичок
|
||||
- [Slash Commands](/uk/tools/slash-commands) — усі доступні slash-command
|
||||
- [ClawHub](/uk/tools/clawhub) — публічний реєстр skills
|
||||
- [Створення skills](/uk/tools/creating-skills) — створення користувацьких skills
|
||||
- [Plugins](/uk/tools/plugin) — огляд системи plugin
|
||||
- [plugin Skill Workshop](/uk/plugins/skill-workshop) — генерування skills з роботи агента
|
||||
- [Конфігурація Skills](/uk/tools/skills-config) — довідник з конфігурації skills
|
||||
- [Slash-команди](/uk/tools/slash-commands) — усі доступні slash-команди
|
||||
|
||||
Loading…
Reference in New Issue
Block a user