chore(i18n): refresh uk translations
This commit is contained in:
parent
d030417e94
commit
fd06e1e407
@ -1,41 +1,41 @@
|
||||
---
|
||||
read_when:
|
||||
- Вам потрібен надійний резервний варіант, коли API-провайдери не працюють
|
||||
- Ви використовуєте Codex CLI або інші локальні AI CLI і хочете повторно використовувати їх
|
||||
- Ви хочете зрозуміти MCP-місток local loopback для доступу CLI бекенда до інструментів
|
||||
summary: 'CLI бекенди: локальний резервний AI CLI з необов’язковим MCP-містком для інструментів'
|
||||
title: CLI бекенди
|
||||
- Ви хочете надійний резервний варіант, коли постачальники API зазнають збою
|
||||
- Ви використовуєте Codex CLI або інші локальні CLI для AI і хочете повторно використовувати їх
|
||||
- Ви хочете зрозуміти міст локального loopback MCP для доступу інструментів до бекенду CLI
|
||||
summary: 'Бекенди CLI: локальний резервний CLI для AI з необов’язковим мостом інструментів MCP'
|
||||
title: Бекенди CLI
|
||||
x-i18n:
|
||||
generated_at: "2026-04-08T17:18:42Z"
|
||||
generated_at: "2026-04-10T12:46:33Z"
|
||||
model: gpt-5.4
|
||||
provider: openai
|
||||
source_hash: 9b458f9fe6fa64c47864c8c180f3dedfd35c5647de470a2a4d31c26165663c20
|
||||
source_hash: e122831eec29a5df302a7a72e57882c566398d29d6a79be924f601ce2f7a2291
|
||||
source_path: gateway/cli-backends.md
|
||||
workflow: 15
|
||||
---
|
||||
|
||||
# CLI бекенди (резервне середовище виконання)
|
||||
# Бекенди CLI (резервне середовище виконання)
|
||||
|
||||
OpenClaw може запускати **локальні AI CLI** як **лише текстовий резервний варіант**, коли API-провайдери недоступні,
|
||||
обмежені за частотою запитів або тимчасово працюють некоректно. Це навмисно консервативний підхід:
|
||||
OpenClaw може запускати **локальні CLI для AI** як **лише текстовий резервний варіант**, коли постачальники API недоступні,
|
||||
обмежені за частотою запитів або тимчасово працюють нестабільно. Це навмисно консервативний підхід:
|
||||
|
||||
- **Інструменти OpenClaw не інжектуються безпосередньо**, але бекенди з `bundleMcp: true`
|
||||
можуть отримувати інструменти шлюзу через loopback MCP-місток.
|
||||
- **Інструменти OpenClaw не впроваджуються напряму**, але бекенди з `bundleMcp: true`
|
||||
можуть отримувати інструменти шлюзу через міст локального loopback MCP.
|
||||
- **JSONL-стримінг** для CLI, які це підтримують.
|
||||
- **Сесії підтримуються** (щоб наступні звернення залишалися узгодженими).
|
||||
- **Зображення можна передавати далі**, якщо CLI приймає шляхи до зображень.
|
||||
- **Сесії підтримуються** (тому наступні ходи залишаються узгодженими).
|
||||
- **Зображення можна передавати наскрізно**, якщо CLI приймає шляхи до зображень.
|
||||
|
||||
Це розроблено як **страхувальна сітка**, а не як основний шлях. Використовуйте це, коли
|
||||
вам потрібні текстові відповіді у стилі «завжди працює» без залежності від зовнішніх API.
|
||||
Це задумано як **страхувальна сітка**, а не як основний шлях. Використовуйте це, коли ви
|
||||
хочете отримувати текстові відповіді у стилі «працює завжди» без залежності від зовнішніх API.
|
||||
|
||||
Якщо вам потрібне повноцінне середовище виконання harness із керуванням сесіями ACP, фоновими завданнями,
|
||||
прив’язкою до потоку/розмови та постійними зовнішніми сесіями кодування, натомість використовуйте
|
||||
[ACP Agents](/uk/tools/acp-agents). CLI бекенди — це не ACP.
|
||||
Якщо вам потрібне повноцінне середовище з керуванням сесіями ACP, фоновими завданнями,
|
||||
прив’язкою до потоку/розмови та постійними зовнішніми сесіями кодування, використовуйте
|
||||
[Агенти ACP](/uk/tools/acp-agents). Бекенди CLI — це не ACP.
|
||||
|
||||
## Швидкий старт для початківців
|
||||
|
||||
Ви можете використовувати Codex CLI **без жодної конфігурації** (вбудований плагін OpenAI
|
||||
реєструє стандартний бекенд):
|
||||
реєструє типовий бекенд):
|
||||
|
||||
```bash
|
||||
openclaw agent --message "hi" --model codex-cli/gpt-5.4
|
||||
@ -58,16 +58,16 @@ openclaw agent --message "hi" --model codex-cli/gpt-5.4
|
||||
}
|
||||
```
|
||||
|
||||
І це все. Ні ключів, ні додаткової конфігурації автентифікації, окрім самої CLI, не потрібно.
|
||||
От і все. Жодних ключів і жодної додаткової конфігурації автентифікації, окрім самої CLI.
|
||||
|
||||
Якщо ви використовуєте вбудований CLI бекенд як **основного провайдера повідомлень** на
|
||||
хості шлюзу, OpenClaw тепер автоматично завантажує відповідний вбудований плагін, коли ваша конфігурація
|
||||
явно посилається на цей бекенд у посиланні на модель або в
|
||||
Якщо ви використовуєте вбудований бекенд CLI як **основного постачальника повідомлень** на
|
||||
хості шлюзу, OpenClaw тепер автоматично завантажує вбудований плагін-власник, коли ваша конфігурація
|
||||
явно посилається на цей бекенд у посиланні моделі або в
|
||||
`agents.defaults.cliBackends`.
|
||||
|
||||
## Використання як резервного варіанта
|
||||
## Використання як резервного варіанту
|
||||
|
||||
Додайте CLI бекенд до свого списку резервних варіантів, щоб він запускався лише тоді, коли основні моделі не працюють:
|
||||
Додайте бекенд CLI до свого списку резервних варіантів, щоб він запускався лише тоді, коли основні моделі не працюють:
|
||||
|
||||
```json5
|
||||
{
|
||||
@ -88,20 +88,20 @@ openclaw agent --message "hi" --model codex-cli/gpt-5.4
|
||||
|
||||
Примітки:
|
||||
|
||||
- Якщо ви використовуєте `agents.defaults.models` (дозволений список), ви також маєте включити туди моделі CLI бекенда.
|
||||
- Якщо основний провайдер не працює (автентифікація, ліміти частоти запитів, тайм-аути), OpenClaw
|
||||
спробує CLI бекенд наступним.
|
||||
- Якщо ви використовуєте `agents.defaults.models` (дозволений список), ви також повинні включити туди моделі вашого бекенду CLI.
|
||||
- Якщо основний постачальник зазнає збою (автентифікація, обмеження швидкості, тайм-аути), OpenClaw
|
||||
спробує далі бекенд CLI.
|
||||
|
||||
## Огляд конфігурації
|
||||
|
||||
Усі CLI бекенди знаходяться тут:
|
||||
Усі бекенди CLI знаходяться в:
|
||||
|
||||
```
|
||||
agents.defaults.cliBackends
|
||||
```
|
||||
|
||||
Кожен запис має ключ у вигляді **ідентифікатора провайдера** (наприклад, `codex-cli`, `my-cli`).
|
||||
Ідентифікатор провайдера стає лівою частиною посилання на модель:
|
||||
Кожен запис має ключ у вигляді **id постачальника** (наприклад, `codex-cli`, `my-cli`).
|
||||
ID постачальника стає лівою частиною вашого посилання моделі:
|
||||
|
||||
```
|
||||
<provider>/<model>
|
||||
@ -131,7 +131,7 @@ agents.defaults.cliBackends
|
||||
sessionMode: "existing",
|
||||
sessionIdFields: ["session_id", "conversation_id"],
|
||||
systemPromptArg: "--system",
|
||||
// CLI у стилі Codex можуть натомість вказувати файл підказки:
|
||||
// CLI у стилі Codex можуть замість цього вказувати на файл підказки:
|
||||
// systemPromptFileConfigArg: "-c",
|
||||
// systemPromptFileConfigKey: "model_instructions_file",
|
||||
systemPromptWhen: "first",
|
||||
@ -147,11 +147,11 @@ agents.defaults.cliBackends
|
||||
|
||||
## Як це працює
|
||||
|
||||
1. **Вибирає бекенд** на основі префікса провайдера (`codex-cli/...`).
|
||||
2. **Створює системну підказку** з використанням тієї самої підказки OpenClaw + контексту робочого простору.
|
||||
3. **Виконує CLI** з ідентифікатором сесії (якщо підтримується), щоб історія залишалася узгодженою.
|
||||
4. **Аналізує вивід** (JSON або звичайний текст) і повертає фінальний текст.
|
||||
5. **Зберігає ідентифікатори сесій** для кожного бекенда, щоб наступні звернення повторно використовували ту саму CLI-сесію.
|
||||
1. **Вибирає бекенд** на основі префікса постачальника (`codex-cli/...`).
|
||||
2. **Будує системну підказку** з використанням тієї ж підказки OpenClaw і контексту робочого простору.
|
||||
3. **Запускає CLI** з ідентифікатором сесії (якщо підтримується), щоб історія залишалася узгодженою.
|
||||
4. **Розбирає вивід** (`JSON` або звичайний текст) і повертає фінальний текст.
|
||||
5. **Зберігає ідентифікатори сесій** для кожного бекенду, щоб наступні ходи повторно використовували ту саму CLI-сесію.
|
||||
|
||||
<Note>
|
||||
Вбудований бекенд Anthropic `claude-cli` знову підтримується. Співробітники Anthropic
|
||||
@ -162,9 +162,16 @@ agents.defaults.cliBackends
|
||||
|
||||
Вбудований бекенд OpenAI `codex-cli` передає системну підказку OpenClaw через
|
||||
перевизначення конфігурації Codex `model_instructions_file` (`-c
|
||||
model_instructions_file="..."`). Codex не надає прапорця на кшталт Claude
|
||||
`--append-system-prompt`, тому OpenClaw записує зібрану підказку до
|
||||
тимчасового файла для кожної нової сесії Codex CLI.
|
||||
model_instructions_file="..."`). Codex не надає прапорець у стилі Claude
|
||||
`--append-system-prompt`, тому OpenClaw записує зібрану підказку у
|
||||
тимчасовий файл для кожної нової сесії Codex CLI.
|
||||
|
||||
Вбудований бекенд Anthropic `claude-cli` отримує знімок навичок OpenClaw
|
||||
двома способами: компактний каталог навичок OpenClaw у доданій системній підказці та
|
||||
тимчасовий плагін Claude Code, переданий через `--plugin-dir`. Плагін містить
|
||||
лише допустимі навички для цього агента/сесії, тому рідний розпізнавач навичок Claude Code
|
||||
бачить той самий відфільтрований набір, який OpenClaw інакше рекламував би в
|
||||
підказці. Перевизначення skill env/API key, як і раніше, застосовуються OpenClaw до середовища дочірнього процесу під час виконання.
|
||||
|
||||
## Сесії
|
||||
|
||||
@ -172,20 +179,20 @@ model_instructions_file="..."`). Codex не надає прапорця на к
|
||||
`sessionArgs` (заповнювач `{sessionId}`), коли ідентифікатор потрібно вставити
|
||||
в кілька прапорців.
|
||||
- Якщо CLI використовує **підкоманду відновлення** з іншими прапорцями, установіть
|
||||
`resumeArgs` (замінює `args` під час відновлення) і за потреби `resumeOutput`
|
||||
(для відновлення не у форматі JSON).
|
||||
`resumeArgs` (замінює `args` під час відновлення) і, за потреби, `resumeOutput`
|
||||
(для відновлень не у форматі JSON).
|
||||
- `sessionMode`:
|
||||
- `always`: завжди надсилати ідентифікатор сесії (новий UUID, якщо нічого не збережено).
|
||||
- `existing`: надсилати ідентифікатор сесії, лише якщо він уже був раніше збережений.
|
||||
- `none`: ніколи не надсилати ідентифікатор сесії.
|
||||
- `always`: завжди надсилає ідентифікатор сесії (новий UUID, якщо нічого не збережено).
|
||||
- `existing`: надсилає ідентифікатор сесії лише якщо його вже було раніше збережено.
|
||||
- `none`: ніколи не надсилає ідентифікатор сесії.
|
||||
|
||||
Примітки щодо серіалізації:
|
||||
|
||||
- `serialize: true` зберігає впорядкованість запусків в одній лінії.
|
||||
- Більшість CLI серіалізують у межах однієї лінії провайдера.
|
||||
- OpenClaw скидає повторне використання збереженої CLI-сесії, коли змінюється стан автентифікації бекенда, зокрема після повторного входу, ротації токена або зміни облікових даних профілю автентифікації.
|
||||
- `serialize: true` зберігає впорядкованість запусків у тій самій смузі.
|
||||
- Більшість CLI серіалізують виконання в межах однієї смуги постачальника.
|
||||
- OpenClaw скидає повторне використання збереженої CLI-сесії, коли змінюється стан автентифікації бекенду, зокрема після повторного входу, ротації токена або зміни облікових даних профілю автентифікації.
|
||||
|
||||
## Зображення (передавання далі)
|
||||
## Зображення (наскрізна передача)
|
||||
|
||||
Якщо ваша CLI приймає шляхи до зображень, установіть `imageArg`:
|
||||
|
||||
@ -194,19 +201,19 @@ imageArg: "--image",
|
||||
imageMode: "repeat"
|
||||
```
|
||||
|
||||
OpenClaw записуватиме base64-зображення до тимчасових файлів. Якщо встановлено `imageArg`, ці
|
||||
шляхи передаватимуться як аргументи CLI. Якщо `imageArg` відсутній, OpenClaw додає
|
||||
шляхи до файлів у підказку (інжекція шляху), чого достатньо для CLI, які автоматично
|
||||
OpenClaw записуватиме зображення base64 у тимчасові файли. Якщо задано `imageArg`, ці
|
||||
шляхи передаються як аргументи CLI. Якщо `imageArg` відсутній, OpenClaw додає
|
||||
шляхи до файлів у підказку (ін’єкція шляху), чого достатньо для CLI, які автоматично
|
||||
завантажують локальні файли зі звичайних шляхів.
|
||||
|
||||
## Входи / виходи
|
||||
|
||||
- `output: "json"` (типово) намагається розібрати JSON і витягти текст + ідентифікатор сесії.
|
||||
- Для JSON-виводу Gemini CLI OpenClaw читає текст відповіді з `response` і
|
||||
використання з `stats`, коли `usage` відсутній або порожній.
|
||||
- `output: "jsonl"` аналізує JSONL-потоки (наприклад, Codex CLI `--json`) і витягує фінальне повідомлення агента та ідентифікатори сесії,
|
||||
- Для JSON-виводу Gemini CLI OpenClaw зчитує текст відповіді з `response`, а
|
||||
використання — з `stats`, коли `usage` відсутній або порожній.
|
||||
- `output: "jsonl"` розбирає потоки JSONL (наприклад Codex CLI `--json`) і витягує фінальне повідомлення агента, а також ідентифікатори сесії,
|
||||
якщо вони присутні.
|
||||
- `output: "text"` розглядає stdout як фінальну відповідь.
|
||||
- `output: "text"` трактує stdout як фінальну відповідь.
|
||||
|
||||
Режими введення:
|
||||
|
||||
@ -242,65 +249,65 @@ OpenClaw записуватиме base64-зображення до тимчас
|
||||
`gemini` у `PATH` (`brew install gemini-cli` або
|
||||
`npm install -g @google/gemini-cli`).
|
||||
|
||||
Примітки щодо JSON Gemini CLI:
|
||||
Примітки щодо JSON у Gemini CLI:
|
||||
|
||||
- Текст відповіді читається з поля JSON `response`.
|
||||
- Використання бере резервні дані з `stats`, якщо `usage` відсутній або порожній.
|
||||
- Текст відповіді зчитується з поля JSON `response`.
|
||||
- Показники використання беруться з `stats`, якщо `usage` відсутній або порожній.
|
||||
- `stats.cached` нормалізується в OpenClaw `cacheRead`.
|
||||
- Якщо `stats.input` відсутній, OpenClaw виводить кількість вхідних токенів із
|
||||
`stats.input_tokens - stats.cached`.
|
||||
|
||||
Перевизначайте лише за потреби (поширений випадок: абсолютний шлях `command`).
|
||||
Перевизначайте це лише за потреби (типовий випадок: абсолютний шлях `command`).
|
||||
|
||||
## Типові значення, що належать плагіну
|
||||
|
||||
Типові значення CLI бекенда тепер є частиною поверхні плагіна:
|
||||
Типові значення бекендів CLI тепер є частиною поверхні плагіна:
|
||||
|
||||
- Плагіни реєструють їх через `api.registerCliBackend(...)`.
|
||||
- `id` бекенда стає префіксом провайдера в посиланнях на моделі.
|
||||
- Конфігурація користувача в `agents.defaults.cliBackends.<id>` і далі перевизначає типове значення плагіна.
|
||||
- Очищення конфігурації, специфічне для бекенда, залишається на боці плагіна через необов’язковий
|
||||
гук `normalizeConfig`.
|
||||
- `id` бекенду стає префіксом постачальника в посиланнях моделей.
|
||||
- Конфігурація користувача в `agents.defaults.cliBackends.<id>` як і раніше перевизначає типове значення плагіна.
|
||||
- Очищення конфігурації, специфічне для бекенду, залишається у власності плагіна через необов’язковий
|
||||
хук `normalizeConfig`.
|
||||
|
||||
## Накладки Bundle MCP
|
||||
## Накладки bundle MCP
|
||||
|
||||
CLI бекенди **не** отримують виклики інструментів OpenClaw безпосередньо, але бекенд може
|
||||
Бекенди CLI **не** отримують виклики інструментів OpenClaw напряму, але бекенд може
|
||||
увімкнути згенеровану накладку конфігурації MCP за допомогою `bundleMcp: true`.
|
||||
|
||||
Поточна вбудована поведінка:
|
||||
|
||||
- `claude-cli`: згенерований суворий файл конфігурації MCP
|
||||
- `claude-cli`: згенерований строгий файл конфігурації MCP
|
||||
- `codex-cli`: вбудовані перевизначення конфігурації для `mcp_servers`
|
||||
- `google-gemini-cli`: згенерований файл системних налаштувань Gemini
|
||||
|
||||
Коли bundle MCP увімкнено, OpenClaw:
|
||||
|
||||
- запускає loopback HTTP MCP-сервер, який надає інструменти шлюзу процесу CLI
|
||||
- автентифікує місток за допомогою токена на сесію (`OPENCLAW_MCP_TOKEN`)
|
||||
- автентифікує міст за допомогою токена для кожної сесії (`OPENCLAW_MCP_TOKEN`)
|
||||
- обмежує доступ до інструментів поточною сесією, обліковим записом і контекстом каналу
|
||||
- завантажує увімкнені сервери bundle-MCP для поточного робочого простору
|
||||
- об’єднує їх із будь-якою наявною формою конфігурації/налаштувань MCP бекенда
|
||||
- переписує конфігурацію запуску, використовуючи режим інтеграції, що належить бекенду з відповідного розширення
|
||||
- завантажує увімкнені bundle-MCP сервери для поточного робочого простору
|
||||
- об’єднує їх з будь-якою наявною формою конфігурації/налаштувань MCP бекенду
|
||||
- переписує конфігурацію запуску з використанням режиму інтеграції, що належить бекенду з розширення-власника
|
||||
|
||||
Якщо жоден MCP-сервер не ввімкнено, OpenClaw однаково інжектує сувору конфігурацію, коли
|
||||
Якщо сервери MCP не увімкнено, OpenClaw все одно впроваджує строгу конфігурацію, коли
|
||||
бекенд використовує bundle MCP, щоб фонові запуски залишалися ізольованими.
|
||||
|
||||
## Обмеження
|
||||
|
||||
- **Немає прямих викликів інструментів OpenClaw.** OpenClaw не інжектує виклики інструментів у
|
||||
протокол CLI бекенда. Бекенди бачать інструменти шлюзу лише тоді, коли вони використовують
|
||||
- **Немає прямих викликів інструментів OpenClaw.** OpenClaw не впроваджує виклики інструментів у
|
||||
протокол бекенду CLI. Бекенди бачать інструменти шлюзу лише тоді, коли вони вмикають
|
||||
`bundleMcp: true`.
|
||||
- **Стримінг залежить від бекенда.** Деякі бекенди транслюють JSONL; інші буферизують
|
||||
- **Стримінг залежить від конкретного бекенду.** Деякі бекенди передають JSONL потоком; інші буферизують
|
||||
до завершення.
|
||||
- **Структуровані виходи** залежать від JSON-формату CLI.
|
||||
- **Сесії Codex CLI** відновлюються через текстовий вивід (без JSONL), що менш
|
||||
структуровано, ніж початковий запуск `--json`. Сесії OpenClaw усе одно працюють
|
||||
- **Сесії Codex CLI** відновлюються через текстовий вивід (без JSONL), що є менш
|
||||
структурованим, ніж початковий запуск `--json`. Сесії OpenClaw при цьому все одно працюють
|
||||
нормально.
|
||||
|
||||
## Усунення проблем
|
||||
## Усунення несправностей
|
||||
|
||||
- **CLI не знайдено**: установіть для `command` повний шлях.
|
||||
- **Неправильна назва моделі**: використовуйте `modelAliases`, щоб зіставити `provider/model` → модель CLI.
|
||||
- **Немає безперервності сесії**: переконайтеся, що встановлено `sessionArg` і що `sessionMode` не дорівнює
|
||||
`none` (Codex CLI наразі не може відновлюватися з JSON-виводом).
|
||||
- **Зображення ігноруються**: установіть `imageArg` (і переконайтеся, що CLI підтримує шляхи до файлів).
|
||||
- **Зображення ігноруються**: установіть `imageArg` (і перевірте, що CLI підтримує шляхи до файлів).
|
||||
|
||||
@ -1,64 +1,57 @@
|
||||
---
|
||||
read_when:
|
||||
- Додавання або зміна Skills
|
||||
- Зміна gating Skills або правил завантаження
|
||||
summary: 'Skills: керовані чи workspace, правила gating та підключення config/env'
|
||||
- Додавання або змінення Skills
|
||||
- Змінення правил гейтінгу або завантаження Skills
|
||||
summary: 'Skills: керовані чи робочого простору, правила гейтінгу та налаштування config/env'
|
||||
title: Skills
|
||||
x-i18n:
|
||||
generated_at: "2026-04-05T18:21:28Z"
|
||||
generated_at: "2026-04-10T12:46:26Z"
|
||||
model: gpt-5.4
|
||||
provider: openai
|
||||
source_hash: 6bb0e2e7c2ff50cf19c759ea1da1fd1886dc11f94adc77cbfd816009f75d93ee
|
||||
source_hash: b1eaf130966950b6eb24f859d9a77ecbf81c6cb80deaaa6a3a79d2c16d83115d
|
||||
source_path: tools/skills.md
|
||||
workflow: 15
|
||||
---
|
||||
|
||||
# Skills (OpenClaw)
|
||||
|
||||
OpenClaw використовує папки Skills, **сумісні з [AgentSkills](https://agentskills.io)**, щоб навчати агента користуватися інструментами. Кожна Skill — це каталог, що містить `SKILL.md` із YAML frontmatter та інструкціями. OpenClaw завантажує **вбудовані Skills** плюс необов’язкові локальні перевизначення та фільтрує їх під час завантаження на основі середовища, config і наявності бінарних файлів.
|
||||
OpenClaw використовує папки skill, **сумісні з [AgentSkills](https://agentskills.io)**, щоб навчати агента користуватися інструментами. Кожен skill — це каталог, що містить `SKILL.md` із YAML frontmatter та інструкціями. OpenClaw завантажує **вбудовані skills** разом з необов’язковими локальними перевизначеннями та фільтрує їх під час завантаження на основі середовища, конфігурації та наявності бінарних файлів.
|
||||
|
||||
## Розташування та пріоритет
|
||||
|
||||
OpenClaw завантажує Skills з таких джерел:
|
||||
OpenClaw завантажує skills із таких джерел:
|
||||
|
||||
1. **Додаткові папки Skills**: налаштовуються через `skills.load.extraDirs`
|
||||
2. **Вбудовані Skills**: постачаються разом із встановленням (npm package або OpenClaw.app)
|
||||
3. **Керовані/локальні Skills**: `~/.openclaw/skills`
|
||||
4. **Персональні Skills агента**: `~/.agents/skills`
|
||||
5. **Skills агента проєкту**: `<workspace>/.agents/skills`
|
||||
6. **Skills workspace**: `<workspace>/skills`
|
||||
1. **Додаткові папки skills**: налаштовуються через `skills.load.extraDirs`
|
||||
2. **Вбудовані skills**: постачаються разом з інсталяцією (npm package або OpenClaw.app)
|
||||
3. **Керовані/локальні skills**: `~/.openclaw/skills`
|
||||
4. **Особисті agent skills**: `~/.agents/skills`
|
||||
5. **Project agent skills**: `<workspace>/.agents/skills`
|
||||
6. **Skills робочого простору**: `<workspace>/skills`
|
||||
|
||||
Якщо назви Skills конфліктують, пріоритет такий:
|
||||
Якщо назва skill конфліктує, пріоритет такий:
|
||||
|
||||
`<workspace>/skills` (найвищий) → `<workspace>/.agents/skills` → `~/.agents/skills` → `~/.openclaw/skills` → вбудовані Skills → `skills.load.extraDirs` (найнижчий)
|
||||
`<workspace>/skills` (найвищий) → `<workspace>/.agents/skills` → `~/.agents/skills` → `~/.openclaw/skills` → вбудовані skills → `skills.load.extraDirs` (найнижчий)
|
||||
|
||||
## Skills для окремого агента чи спільні Skills
|
||||
## Skills для окремого агента та спільні skills
|
||||
|
||||
У конфігураціях **з кількома агентами** кожен агент має власний workspace. Це означає:
|
||||
У конфігураціях **multi-agent** кожен агент має власний робочий простір. Це означає:
|
||||
|
||||
- **Skills для окремого агента** знаходяться в `<workspace>/skills` лише для цього агента.
|
||||
- **Skills агента проєкту** знаходяться в `<workspace>/.agents/skills` і застосовуються до
|
||||
цього workspace перед звичайною папкою `skills/` workspace.
|
||||
- **Персональні Skills агента** знаходяться в `~/.agents/skills` і застосовуються в усіх
|
||||
workspace на цій машині.
|
||||
- **Спільні Skills** знаходяться в `~/.openclaw/skills` (керовані/локальні) і видимі
|
||||
**усім агентам** на цій самій машині.
|
||||
- **Спільні папки** також можна додати через `skills.load.extraDirs` (найнижчий
|
||||
пріоритет), якщо ви хочете мати спільний пакет Skills для кількох агентів.
|
||||
- **Skills для окремого агента** розміщуються в `<workspace>/skills` лише для цього агента.
|
||||
- **Project agent skills** розміщуються в `<workspace>/.agents/skills` і застосовуються до цього робочого простору перед звичайною папкою `skills/` робочого простору.
|
||||
- **Особисті agent skills** розміщуються в `~/.agents/skills` і застосовуються в усіх робочих просторах на цій машині.
|
||||
- **Спільні skills** розміщуються в `~/.openclaw/skills` (керовані/локальні) і видимі **всім агентам** на цій самій машині.
|
||||
- **Спільні папки** також можна додати через `skills.load.extraDirs` (найнижчий пріоритет), якщо ви хочете мати спільний набір skills, який використовується кількома агентами.
|
||||
|
||||
Якщо одна й та сама назва Skill існує в кількох місцях, застосовується звичайний
|
||||
пріоритет: workspace перемагає, далі Skills агента проєкту, потім персональні Skills агента,
|
||||
потім керовані/локальні, потім вбудовані, потім extra dirs.
|
||||
Якщо одна й та сама назва skill існує в кількох місцях, діє звичайний пріоритет: перемагає workspace, потім project agent skills, потім personal agent skills, потім managed/local, потім bundled, потім extra dirs.
|
||||
|
||||
## Allowlist Skills для агента
|
||||
## Allowlist skills для агентів
|
||||
|
||||
**Розташування** Skill і **видимість** Skill — це окремі механізми керування.
|
||||
**Розташування** skill і **видимість** skill — це окремі механізми керування.
|
||||
|
||||
- Розташування/пріоритет визначає, яка копія Skill з однаковою назвою перемагає.
|
||||
- Allowlist агента визначає, які видимі Skills агент реально може використовувати.
|
||||
- Розташування/пріоритет визначає, яка копія skill з однаковою назвою перемагає.
|
||||
- Allowlist агента визначає, які видимі skills агент фактично може використовувати.
|
||||
|
||||
Використовуйте `agents.defaults.skills` для спільної базової конфігурації, а потім перевизначайте для окремого агента через
|
||||
`agents.list[].skills`:
|
||||
Використовуйте `agents.defaults.skills` для спільної базової конфігурації, а потім перевизначайте для окремих агентів через `agents.list[].skills`:
|
||||
|
||||
```json5
|
||||
{
|
||||
@ -68,8 +61,8 @@ OpenClaw завантажує Skills з таких джерел:
|
||||
},
|
||||
list: [
|
||||
{ id: "writer" }, // успадковує github, weather
|
||||
{ id: "docs", skills: ["docs-search"] }, // замінює типові значення
|
||||
{ id: "locked-down", skills: [] }, // без Skills
|
||||
{ id: "docs", skills: ["docs-search"] }, // замінює defaults
|
||||
{ id: "locked-down", skills: [] }, // без skills
|
||||
],
|
||||
},
|
||||
}
|
||||
@ -77,95 +70,92 @@ OpenClaw завантажує Skills з таких джерел:
|
||||
|
||||
Правила:
|
||||
|
||||
- Не задавайте `agents.defaults.skills`, щоб типово не обмежувати Skills.
|
||||
- Не задавайте `agents.list[].skills`, щоб успадкувати `agents.defaults.skills`.
|
||||
- Установіть `agents.list[].skills: []`, щоб не було жодних Skills.
|
||||
- Непорожній список `agents.list[].skills` — це остаточний набір для цього агента; він
|
||||
не об’єднується з типовими значеннями.
|
||||
- Пропустіть `agents.defaults.skills`, якщо за замовчуванням skills не мають бути обмежені.
|
||||
- Пропустіть `agents.list[].skills`, щоб успадкувати `agents.defaults.skills`.
|
||||
- Установіть `agents.list[].skills: []`, щоб не дозволити жодних skills.
|
||||
- Непорожній список `agents.list[].skills` є остаточним набором для цього агента; він не об’єднується з defaults.
|
||||
|
||||
OpenClaw застосовує ефективний набір Skills агента під час побудови prompt, виявлення
|
||||
slash-команд Skills, синхронізації sandbox і знімків Skills.
|
||||
OpenClaw застосовує ефективний набір skills агента до побудови prompt, виявлення slash-command skill, синхронізації sandbox і snapshot skill.
|
||||
|
||||
## Plugins + Skills
|
||||
## Plugins + skills
|
||||
|
||||
Plugins можуть постачати власні Skills, перелічуючи каталоги `skills` у
|
||||
Plugins можуть постачати власні skills, вказуючи каталоги `skills` у
|
||||
`openclaw.plugin.json` (шляхи відносно кореня plugin). Skills plugin завантажуються,
|
||||
коли plugin увімкнено. Сьогодні ці каталоги об’єднуються в той самий
|
||||
шлях із низьким пріоритетом, що й `skills.load.extraDirs`, тож Skill з такою самою назвою з bundled,
|
||||
managed, agent або workspace перевизначає їх.
|
||||
Ви можете керувати ними через `metadata.openclaw.requires.config` на записі config
|
||||
plugin. Див. [Plugins](/tools/plugin) для виявлення/config і [Tools](/tools) для
|
||||
поверхні інструментів, якої навчають ці Skills.
|
||||
коли plugin увімкнено. Зараз ці каталоги об’єднуються в той самий шлях із
|
||||
низьким пріоритетом, що й `skills.load.extraDirs`, тому однойменний bundled,
|
||||
managed, agent або workspace skill перевизначає їх.
|
||||
Ви можете обмежувати їх через `metadata.openclaw.requires.config` у записі
|
||||
конфігурації plugin. Див. [Plugins](/uk/tools/plugin) для виявлення/конфігурації та [Tools](/uk/tools) для
|
||||
поверхні інструментів, які пояснюють ці skills.
|
||||
|
||||
## ClawHub (встановлення + синхронізація)
|
||||
## ClawHub (інсталяція + синхронізація)
|
||||
|
||||
ClawHub — це публічний реєстр Skills для OpenClaw. Перегляд:
|
||||
[https://clawhub.ai](https://clawhub.ai). Використовуйте нативні команди `openclaw skills`
|
||||
для пошуку/встановлення/оновлення Skills або окремий CLI `clawhub`, коли
|
||||
потрібні процеси publish/sync.
|
||||
Повний посібник: [ClawHub](/tools/clawhub).
|
||||
ClawHub — це публічний реєстр skills для OpenClaw. Переглянути його можна на
|
||||
[https://clawhub.ai](https://clawhub.ai). Використовуйте рідні команди `openclaw skills`
|
||||
для пошуку/інсталяції/оновлення skills або окремий CLI `clawhub`, якщо вам
|
||||
потрібні робочі процеси публікації/синхронізації.
|
||||
Повний посібник: [ClawHub](/uk/tools/clawhub).
|
||||
|
||||
Типові сценарії:
|
||||
Поширені сценарії:
|
||||
|
||||
- Встановити Skill у свій workspace:
|
||||
- Інсталювати skill у ваш робочий простір:
|
||||
- `openclaw skills install <skill-slug>`
|
||||
- Оновити всі встановлені Skills:
|
||||
- Оновити всі інстальовані skills:
|
||||
- `openclaw skills update --all`
|
||||
- Синхронізувати (сканування + publish оновлень):
|
||||
- Синхронізувати (сканування + публікація оновлень):
|
||||
- `clawhub sync --all`
|
||||
|
||||
Нативна команда `openclaw skills install` встановлює в каталог `skills/` активного workspace.
|
||||
Окремий CLI `clawhub` також встановлює в `./skills` у вашому
|
||||
поточному робочому каталозі (або використовує налаштований workspace OpenClaw як запасний варіант).
|
||||
OpenClaw підхопить це як `<workspace>/skills` у наступній сесії.
|
||||
Рідна команда `openclaw skills install` інсталює у каталог `skills/` активного робочого простору. Окремий CLI `clawhub` також інсталює у `./skills` у вашому
|
||||
поточному робочому каталозі (або використовує налаштований робочий простір OpenClaw як резервний варіант).
|
||||
Під час наступної сесії OpenClaw розпізнає це як `<workspace>/skills`.
|
||||
|
||||
## Примітки щодо безпеки
|
||||
|
||||
- Ставтеся до сторонніх Skills як до **ненадійного коду**. Читайте їх перед увімкненням.
|
||||
- Ставтеся до сторонніх skills як до **ненадійного коду**. Читайте їх перед увімкненням.
|
||||
- Для ненадійних вхідних даних і ризикованих інструментів надавайте перевагу запуску в sandbox. Див. [Sandboxing](/uk/gateway/sandboxing).
|
||||
- Виявлення Skills у workspace та extra-dir приймає лише корені Skills і файли `SKILL.md`, чий резольвлений realpath залишається в межах налаштованого кореня.
|
||||
- Встановлення залежностей Skills через Gateway (`skills.install`, onboarding і UI налаштувань Skills) запускають вбудований сканер небезпечного коду перед виконанням метаданих інсталятора. Знахідки рівня `critical` блокуються типово, якщо викликач явно не задав dangerous override; підозрілі знахідки все ще лише попереджають.
|
||||
- `openclaw skills install <slug>` — це інше: команда завантажує папку Skill із ClawHub у workspace й не використовує описаний вище шлях метаданих інсталятора.
|
||||
- `skills.entries.*.env` і `skills.entries.*.apiKey` ін’єктують секрети в **host** process
|
||||
для цього ходу агента (а не в sandbox). Тримайте секрети поза prompt і журналами.
|
||||
- Виявлення skills у workspace та extra-dir приймає лише корені skill і файли `SKILL.md`, чий визначений `realpath` залишається всередині налаштованого кореня.
|
||||
- Інсталяції залежностей skills через gateway (`skills.install`, onboarding і UI налаштувань Skills) запускають вбудований сканер небезпечного коду перед виконанням метаданих інсталятора. Знахідки `critical` блокуються за замовчуванням, якщо викликач явно не встановить dangerous override; підозрілі знахідки, як і раніше, лише попереджають.
|
||||
- `openclaw skills install <slug>` — це інше: команда завантажує папку skill з ClawHub у робочий простір і не використовує шлях метаданих інсталятора, описаний вище.
|
||||
- `skills.entries.*.env` і `skills.entries.*.apiKey` ін’єктують секрети в процес **host**
|
||||
для цього ходу агента (не в sandbox). Не допускайте потрапляння секретів у prompts і логи.
|
||||
- Для ширшої моделі загроз і контрольних списків див. [Security](/uk/gateway/security).
|
||||
|
||||
## Формат (AgentSkills + сумісний із Pi)
|
||||
## Формат (сумісний з AgentSkills + Pi)
|
||||
|
||||
`SKILL.md` має містити щонайменше:
|
||||
|
||||
```markdown
|
||||
---
|
||||
name: image-lab
|
||||
description: Генерація або редагування зображень через workflow зображень на основі провайдера
|
||||
description: Generate or edit images via a provider-backed image workflow
|
||||
---
|
||||
```
|
||||
|
||||
Примітки:
|
||||
|
||||
- Ми дотримуємося специфікації AgentSkills щодо структури/призначення.
|
||||
- Ми дотримуємося специфікації AgentSkills щодо структури та призначення.
|
||||
- Парсер, який використовує вбудований агент, підтримує лише **однорядкові** ключі frontmatter.
|
||||
- `metadata` має бути **однорядковим JSON-об’єктом**.
|
||||
- Використовуйте `{baseDir}` в інструкціях, щоб посилатися на шлях до папки Skill.
|
||||
- `metadata` має бути **однорядковим JSON object**.
|
||||
- Використовуйте `{baseDir}` в інструкціях, щоб посилатися на шлях до папки skill.
|
||||
- Необов’язкові ключі frontmatter:
|
||||
- `homepage` — URL, який показується як “Website” у UI Skills для macOS (також підтримується через `metadata.openclaw.homepage`).
|
||||
- `user-invocable` — `true|false` (типово: `true`). Якщо `true`, Skill доступна як slash-команда користувача.
|
||||
- `disable-model-invocation` — `true|false` (типово: `false`). Якщо `true`, Skill виключається з prompt моделі (але все ще доступна через виклик користувачем).
|
||||
- `command-dispatch` — `tool` (необов’язково). Якщо встановлено `tool`, slash-команда оминає модель і напряму диспетчеризується до інструмента.
|
||||
- `command-tool` — назва інструмента для виклику, коли встановлено `command-dispatch: tool`.
|
||||
- `command-arg-mode` — `raw` (типово). Для dispatch до інструмента передає сирий рядок args до інструмента (без парсингу core).
|
||||
- `homepage` — URL, що відображається як “Website” в macOS Skills UI (також підтримується через `metadata.openclaw.homepage`).
|
||||
- `user-invocable` — `true|false` (типове значення: `true`). Якщо `true`, skill доступний як slash command користувача.
|
||||
- `disable-model-invocation` — `true|false` (типове значення: `false`). Якщо `true`, skill виключається з model prompt (але все ще доступний через виклик користувачем).
|
||||
- `command-dispatch` — `tool` (необов’язково). Якщо встановлено `tool`, slash command оминає model і напряму передається інструменту.
|
||||
- `command-tool` — назва інструменту, який потрібно викликати, якщо встановлено `command-dispatch: tool`.
|
||||
- `command-arg-mode` — `raw` (типове значення). Для dispatch інструмента передає рядок сирих аргументів інструменту (без розбору на рівні core).
|
||||
|
||||
Інструмент викликається з параметрами:
|
||||
`{ command: "<raw args>", commandName: "<slash command>", skillName: "<skill name>" }`.
|
||||
|
||||
## Gating (фільтри під час завантаження)
|
||||
## Гейтінг (фільтри під час завантаження)
|
||||
|
||||
OpenClaw **фільтрує Skills під час завантаження** за допомогою `metadata` (однорядковий JSON):
|
||||
OpenClaw **фільтрує skills під час завантаження** за допомогою `metadata` (однорядковий JSON):
|
||||
|
||||
```markdown
|
||||
---
|
||||
name: image-lab
|
||||
description: Генерація або редагування зображень через workflow зображень на основі провайдера
|
||||
description: Generate or edit images via a provider-backed image workflow
|
||||
metadata:
|
||||
{
|
||||
"openclaw":
|
||||
@ -179,25 +169,25 @@ metadata:
|
||||
|
||||
Поля в `metadata.openclaw`:
|
||||
|
||||
- `always: true` — завжди включати Skill (пропустити інші бар’єри).
|
||||
- `emoji` — необов’язковий emoji, який використовується в UI Skills для macOS.
|
||||
- `homepage` — необов’язковий URL, який показується як “Website” у UI Skills для macOS.
|
||||
- `os` — необов’язковий список платформ (`darwin`, `linux`, `win32`). Якщо задано, Skill доступна лише на цих ОС.
|
||||
- `requires.bins` — список; кожен бінарний файл має існувати в `PATH`.
|
||||
- `requires.anyBins` — список; у `PATH` має існувати хоча б один.
|
||||
- `requires.env` — список; env-змінна має існувати **або** бути надана в config.
|
||||
- `requires.config` — список шляхів `openclaw.json`, які мають мати truthy-значення.
|
||||
- `primaryEnv` — назва env-змінної, пов’язаної з `skills.entries.<name>.apiKey`.
|
||||
- `install` — необов’язковий масив специфікацій інсталятора, який використовується в UI Skills для macOS (brew/node/go/uv/download).
|
||||
- `always: true` — завжди включати skill (пропустити інші умови).
|
||||
- `emoji` — необов’язковий emoji, який використовується в macOS Skills UI.
|
||||
- `homepage` — необов’язковий URL, що відображається як “Website” в macOS Skills UI.
|
||||
- `os` — необов’язковий список платформ (`darwin`, `linux`, `win32`). Якщо встановлено, skill доступний лише на цих ОС.
|
||||
- `requires.bins` — список; кожен має існувати в `PATH`.
|
||||
- `requires.anyBins` — список; принаймні один має існувати в `PATH`.
|
||||
- `requires.env` — список; змінна середовища має існувати **або** бути надана в config.
|
||||
- `requires.config` — список шляхів `openclaw.json`, які мають бути truthy.
|
||||
- `primaryEnv` — назва змінної середовища, пов’язаної з `skills.entries.<name>.apiKey`.
|
||||
- `install` — необов’язковий масив специфікацій інсталятора, який використовує macOS Skills UI (brew/node/go/uv/download).
|
||||
|
||||
Примітка про sandboxing:
|
||||
Примітка щодо sandboxing:
|
||||
|
||||
- `requires.bins` перевіряється на **хості** під час завантаження Skill.
|
||||
- `requires.bins` перевіряється на **host** під час завантаження skill.
|
||||
- Якщо агент працює в sandbox, бінарний файл також має існувати **всередині контейнера**.
|
||||
Установіть його через `agents.defaults.sandbox.docker.setupCommand` (або власний образ).
|
||||
Інсталюйте його через `agents.defaults.sandbox.docker.setupCommand` (або через власний образ).
|
||||
`setupCommand` запускається один раз після створення контейнера.
|
||||
Встановлення пакетів також потребує мережевого egress, записуваної root FS і користувача root у sandbox.
|
||||
Приклад: Skill `summarize` (`skills/summarize/SKILL.md`) потребує CLI `summarize`
|
||||
Для інсталяції пакетів також потрібні вихід у мережу, записувана root FS і користувач root у sandbox.
|
||||
Приклад: skill `summarize` (`skills/summarize/SKILL.md`) потребує `summarize` CLI
|
||||
у контейнері sandbox, щоб працювати там.
|
||||
|
||||
Приклад інсталятора:
|
||||
@ -205,7 +195,7 @@ metadata:
|
||||
```markdown
|
||||
---
|
||||
name: gemini
|
||||
description: Використовуйте Gemini CLI для допомоги з кодуванням і пошуку в Google.
|
||||
description: Use Gemini CLI for coding assistance and Google search lookups.
|
||||
metadata:
|
||||
{
|
||||
"openclaw":
|
||||
@ -219,7 +209,7 @@ metadata:
|
||||
"kind": "brew",
|
||||
"formula": "gemini-cli",
|
||||
"bins": ["gemini"],
|
||||
"label": "Установити Gemini CLI (brew)",
|
||||
"label": "Install Gemini CLI (brew)",
|
||||
},
|
||||
],
|
||||
},
|
||||
@ -229,27 +219,27 @@ metadata:
|
||||
|
||||
Примітки:
|
||||
|
||||
- Якщо перелічено кілька інсталяторів, gateway вибирає **один** бажаний варіант (brew, якщо доступний, інакше node).
|
||||
- Якщо всі інсталятори мають тип `download`, OpenClaw перелічує кожен запис, щоб ви могли бачити доступні артефакти.
|
||||
- Якщо вказано кілька інсталяторів, gateway вибирає **один** бажаний варіант (brew, якщо доступний, інакше node).
|
||||
- Якщо всі інсталятори мають тип `download`, OpenClaw показує кожен запис, щоб ви могли бачити доступні артефакти.
|
||||
- Специфікації інсталятора можуть містити `os: ["darwin"|"linux"|"win32"]`, щоб фільтрувати варіанти за платформою.
|
||||
- Встановлення через Node враховують `skills.install.nodeManager` в `openclaw.json` (типово: npm; варіанти: npm/pnpm/yarn/bun).
|
||||
Це впливає лише на **встановлення Skills**; runtime Gateway усе одно має бути на Node
|
||||
- Node-інсталяції враховують `skills.install.nodeManager` у `openclaw.json` (типово: npm; варіанти: npm/pnpm/yarn/bun).
|
||||
Це впливає лише на **інсталяції skills**; середовище виконання Gateway, як і раніше, має бути Node
|
||||
(Bun не рекомендується для WhatsApp/Telegram).
|
||||
- Вибір інсталятора через Gateway ґрунтується на пріоритетах, а не лише на node:
|
||||
коли специфікації встановлення змішують різні типи, OpenClaw надає перевагу Homebrew, якщо
|
||||
увімкнено `skills.install.preferBrew` і доступний `brew`, потім `uv`, потім
|
||||
налаштованому node manager, а потім іншим запасним варіантам, як-от `go` або `download`.
|
||||
- Якщо кожна специфікація встановлення має тип `download`, OpenClaw показує всі варіанти завантаження
|
||||
замість згортання до одного бажаного інсталятора.
|
||||
- Встановлення Go: якщо `go` відсутній і доступний `brew`, gateway спочатку встановлює Go через Homebrew і задає `GOBIN` у `bin` Homebrew, коли це можливо.
|
||||
- Встановлення через download: `url` (обов’язково), `archive` (`tar.gz` | `tar.bz2` | `zip`), `extract` (типово: auto, коли виявлено archive), `stripComponents`, `targetDir` (типово: `~/.openclaw/tools/<skillKey>`).
|
||||
- Вибір інсталятора через gateway залежить від пріоритетів, а не лише від node:
|
||||
коли специфікації інсталяції змішують різні типи, OpenClaw надає перевагу Homebrew, якщо
|
||||
увімкнено `skills.install.preferBrew` і існує `brew`, потім `uv`, потім
|
||||
налаштований node manager, а далі інші резервні варіанти, як-от `go` або `download`.
|
||||
- Якщо кожна специфікація інсталяції має тип `download`, OpenClaw показує всі варіанти завантаження
|
||||
замість зведення до одного бажаного інсталятора.
|
||||
- Go-інсталяції: якщо `go` відсутній, а `brew` доступний, gateway спочатку інсталює Go через Homebrew і за можливості встановлює `GOBIN` у `bin` Homebrew.
|
||||
- Download-інсталяції: `url` (обов’язково), `archive` (`tar.gz` | `tar.bz2` | `zip`), `extract` (типово: автоматично, якщо виявлено archive), `stripComponents`, `targetDir` (типово: `~/.openclaw/tools/<skillKey>`).
|
||||
|
||||
Якщо `metadata.openclaw` відсутнє, Skill завжди доступна (якщо її не
|
||||
вимкнено в config і якщо вона не заблокована через `skills.allowBundled` для bundled Skills).
|
||||
Якщо `metadata.openclaw` відсутній, skill завжди вважається допустимим (якщо
|
||||
його не вимкнено в config і якщо його не блокує `skills.allowBundled` для вбудованих skills).
|
||||
|
||||
## Перевизначення config (`~/.openclaw/openclaw.json`)
|
||||
|
||||
Вбудовані/керовані Skills можна вмикати/вимикати та надавати їм env-значення:
|
||||
Вбудовані/керовані skills можна вмикати або вимикати та передавати їм значення env:
|
||||
|
||||
```json5
|
||||
{
|
||||
@ -273,62 +263,68 @@ metadata:
|
||||
}
|
||||
```
|
||||
|
||||
Примітка: якщо назва Skill містить дефіси, беріть ключ у лапки (JSON5 дозволяє ключі в лапках).
|
||||
Примітка: якщо назва skill містить дефіси, візьміть ключ у лапки (JSON5 дозволяє ключі в лапках).
|
||||
|
||||
Якщо вам потрібна стандартна генерація/редагування зображень усередині самого OpenClaw, використовуйте core-інструмент
|
||||
`image_generate` з `agents.defaults.imageGenerationModel` замість
|
||||
bundled Skill. Приклади Skills тут призначені для власних або сторонніх workflows.
|
||||
Якщо вам потрібна стандартна генерація/редагування зображень безпосередньо в OpenClaw, використовуйте core-інструмент
|
||||
`image_generate` разом з `agents.defaults.imageGenerationModel`, а не
|
||||
вбудований skill. Наведені тут приклади skill призначені для користувацьких або сторонніх робочих процесів.
|
||||
|
||||
Для нативного аналізу зображень використовуйте інструмент `image` з `agents.defaults.imageModel`.
|
||||
Для нативної генерації/редагування зображень використовуйте `image_generate` з
|
||||
Для нативного аналізу зображень використовуйте інструмент `image` разом з `agents.defaults.imageModel`.
|
||||
Для нативної генерації/редагування зображень використовуйте `image_generate` разом з
|
||||
`agents.defaults.imageGenerationModel`. Якщо ви вибираєте `openai/*`, `google/*`,
|
||||
`fal/*` або іншу provider-специфічну модель зображень, також додайте auth/API
|
||||
`fal/*` або іншу модель зображень, прив’язану до конкретного провайдера, також додайте auth/API
|
||||
key цього провайдера.
|
||||
|
||||
Ключі config типово відповідають **назві Skill**. Якщо Skill визначає
|
||||
Ключі config за замовчуванням відповідають **назві skill**. Якщо skill визначає
|
||||
`metadata.openclaw.skillKey`, використовуйте цей ключ у `skills.entries`.
|
||||
|
||||
Правила:
|
||||
|
||||
- `enabled: false` вимикає Skill, навіть якщо вона bundled/встановлена.
|
||||
- `env`: ін’єктується **лише якщо** змінну ще не задано в process.
|
||||
- `apiKey`: зручний варіант для Skills, які оголошують `metadata.openclaw.primaryEnv`.
|
||||
- `enabled: false` вимикає skill, навіть якщо він вбудований/інстальований.
|
||||
- `env`: ін’єктується **лише якщо** змінна ще не встановлена в процесі.
|
||||
- `apiKey`: зручний варіант для skills, які оголошують `metadata.openclaw.primaryEnv`.
|
||||
Підтримує plaintext string або об’єкт SecretRef (`{ source, provider, id }`).
|
||||
- `config`: необов’язковий набір для користувацьких полів конкретної Skill; користувацькі ключі мають жити тут.
|
||||
- `allowBundled`: необов’язковий allowlist **лише для bundled** Skills. Якщо задано,
|
||||
доступними будуть лише bundled Skills зі списку (керовані/workspace Skills це не зачіпає).
|
||||
- `config`: необов’язковий набір для користувацьких полів конкретного skill; користувацькі ключі мають розміщуватися тут.
|
||||
- `allowBundled`: необов’язковий allowlist лише для **вбудованих** skills. Якщо його задано, допустимими є лише
|
||||
вбудовані skills зі списку (керовані/skills робочого простору не зачіпаються).
|
||||
|
||||
## Ін’єкція середовища (для кожного запуску агента)
|
||||
|
||||
Коли запускається агент, OpenClaw:
|
||||
Коли починається запуск агента, OpenClaw:
|
||||
|
||||
1. Зчитує метадані Skill.
|
||||
1. Зчитує метадані skill.
|
||||
2. Застосовує будь-які `skills.entries.<key>.env` або `skills.entries.<key>.apiKey` до
|
||||
`process.env`.
|
||||
3. Будує system prompt з **доступними** Skills.
|
||||
3. Будує системний prompt з **допустимими** skills.
|
||||
4. Відновлює початкове середовище після завершення запуску.
|
||||
|
||||
Це має **область дії запуску агента**, а не глобального shell-середовища.
|
||||
Це **обмежено запуском агента**, а не є глобальним середовищем shell.
|
||||
|
||||
Для вбудованого backend `claude-cli` OpenClaw також матеріалізує той самий
|
||||
знімок допустимих skills як тимчасовий плагін Claude Code і передає його через
|
||||
`--plugin-dir`. Тоді Claude Code може використовувати власний вбудований resolver skill, тоді як
|
||||
OpenClaw усе ще керує пріоритетом, allowlist для окремих агентів, гейтінгом і
|
||||
ін’єкцією env/API key через `skills.entries.*`. Інші CLI backend використовують лише каталог prompt.
|
||||
|
||||
## Знімок сесії (продуктивність)
|
||||
|
||||
OpenClaw створює знімок доступних Skills **на момент початку сесії** і повторно використовує цей список для наступних ходів у тій самій сесії. Зміни Skills або config починають діяти з наступної нової сесії.
|
||||
OpenClaw створює знімок допустимих skills **коли починається сесія** і повторно використовує цей список для наступних ходів у межах тієї самої сесії. Зміни в skills або config набувають чинності під час наступної нової сесії.
|
||||
|
||||
Skills також можуть оновлюватися посеред сесії, коли ввімкнено спостерігач Skills або коли з’являється нова доступна віддалена node (див. нижче). Думайте про це як про **гаряче перезавантаження**: оновлений список підхоплюється на наступному ході агента.
|
||||
Skills також можуть оновлюватися посеред сесії, коли ввімкнено watcher skills або коли з’являється новий допустимий віддалений вузол (див. нижче). Думайте про це як про **гаряче перезавантаження**: оновлений список буде підхоплено під час наступного ходу агента.
|
||||
|
||||
Якщо для цієї сесії змінюється ефективний allowlist Skills агента, OpenClaw
|
||||
оновлює знімок, щоб видимі Skills залишалися узгодженими з поточним
|
||||
Якщо ефективний allowlist skills агента змінюється для цієї сесії, OpenClaw
|
||||
оновлює знімок, щоб видимі skills залишалися узгодженими з поточним
|
||||
агентом.
|
||||
|
||||
## Віддалені macOS node (Linux gateway)
|
||||
## Віддалені вузли macOS (Linux gateway)
|
||||
|
||||
Якщо Gateway працює на Linux, але підключено **macOS node** **з дозволеним `system.run`** (безпека Exec approvals не встановлена в `deny`), OpenClaw може вважати Skills лише для macOS доступними, коли потрібні бінарні файли є на цій node. Агент має виконувати ці Skills через інструмент `exec` з `host=node`.
|
||||
Якщо Gateway запущено на Linux, але підключено **вузол macOS** **з дозволеним `system.run`** (параметр безпеки Exec approvals не встановлено в `deny`), OpenClaw може вважати допустимими skills лише для macOS, якщо потрібні бінарні файли присутні на цьому вузлі. Агент має виконувати такі skills через інструмент `exec` з `host=node`.
|
||||
|
||||
Це спирається на те, що node повідомляє про підтримку команд і на перевірку бінарних файлів через `system.run`. Якщо macOS node пізніше від’єднається, Skills залишаться видимими; виклики можуть не працювати, доки node знову не підключиться.
|
||||
Це спирається на те, що вузол повідомляє про підтримку команд, а також на перевірку бінарних файлів через `system.run`. Якщо вузол macOS пізніше переходить в офлайн, skills залишаються видимими; виклики можуть завершуватися помилкою, доки вузол знову не підключиться.
|
||||
|
||||
## Спостерігач Skills (автооновлення)
|
||||
## Watcher skills (автооновлення)
|
||||
|
||||
Типово OpenClaw спостерігає за папками Skills і оновлює знімок Skills, коли змінюються файли `SKILL.md`. Налаштовується в `skills.load`:
|
||||
За замовчуванням OpenClaw відстежує папки skills і оновлює знімок skills, коли змінюються файли `SKILL.md`. Це налаштовується в `skills.load`:
|
||||
|
||||
```json5
|
||||
{
|
||||
@ -341,12 +337,12 @@ Skills також можуть оновлюватися посеред сесі
|
||||
}
|
||||
```
|
||||
|
||||
## Вплив на токени (список Skills)
|
||||
## Вплив на токени (список skills)
|
||||
|
||||
Коли Skills доступні, OpenClaw ін’єктує компактний XML-список доступних Skills у system prompt (через `formatSkillsForPrompt` у `pi-coding-agent`). Вартість детермінована:
|
||||
Коли skills допустимі, OpenClaw ін’єктує компактний XML-список доступних skills у системний prompt (через `formatSkillsForPrompt` у `pi-coding-agent`). Вартість детермінована:
|
||||
|
||||
- **Базові накладні витрати (лише коли ≥1 Skill):** 195 символів.
|
||||
- **На кожну Skill:** 97 символів + довжина XML-екранованих значень `<name>`, `<description>` і `<location>`.
|
||||
- **Базові накладні витрати (лише коли ≥1 skill):** 195 символів.
|
||||
- **Для кожного skill:** 97 символів + довжина XML-екранованих значень `<name>`, `<description>` і `<location>`.
|
||||
|
||||
Формула (символи):
|
||||
|
||||
@ -356,21 +352,21 @@ total = 195 + Σ (97 + len(name_escaped) + len(description_escaped) + len(locati
|
||||
|
||||
Примітки:
|
||||
|
||||
- XML-екранування розширює `& < > " '` у сутності (`&`, `<` тощо), збільшуючи довжину.
|
||||
- Кількість токенів залежить від токенізатора моделі. Груба оцінка в стилі OpenAI — ~4 символи/токен, тобто **97 символів ≈ 24 токени** на Skill плюс фактична довжина ваших полів.
|
||||
- XML-екранування розширює `& < > " '` до сутностей (`&`, `<` тощо), збільшуючи довжину.
|
||||
- Кількість токенів залежить від tokenizer моделі. Груба оцінка в стилі OpenAI — приблизно 4 символи/токен, тож **97 символів ≈ 24 токени** на skill плюс фактична довжина ваших полів.
|
||||
|
||||
## Життєвий цикл керованих Skills
|
||||
## Життєвий цикл керованих skills
|
||||
|
||||
OpenClaw постачає базовий набір Skills як **bundled Skills** у складі
|
||||
встановлення (npm package або OpenClaw.app). `~/.openclaw/skills` існує для локальних
|
||||
перевизначень (наприклад, pinning/patching Skill без змін
|
||||
bundled-копії). Skills workspace належать користувачу й перевизначають обидва варіанти при конфліктах назв.
|
||||
OpenClaw постачається з базовим набором skills як **вбудовані skills** у складі
|
||||
інсталяції (npm package або OpenClaw.app). `~/.openclaw/skills` існує для локальних
|
||||
перевизначень (наприклад, щоб зафіксувати/пропатчити skill без зміни вбудованої
|
||||
копії). Skills робочого простору належать користувачу й перевизначають обидва варіанти при конфліктах назв.
|
||||
|
||||
## Довідник config
|
||||
|
||||
Повну схему config див. у [Skills config](/tools/skills-config).
|
||||
Див. [Skills config](/uk/tools/skills-config), щоб переглянути повну схему конфігурації.
|
||||
|
||||
## Шукаєте більше Skills?
|
||||
## Шукаєте більше skills?
|
||||
|
||||
Перегляньте [https://clawhub.ai](https://clawhub.ai).
|
||||
|
||||
@ -378,7 +374,7 @@ bundled-копії). Skills workspace належать користувачу й
|
||||
|
||||
## Пов’язане
|
||||
|
||||
- [Створення Skills](/tools/creating-skills) — створення власних Skills
|
||||
- [Skills Config](/tools/skills-config) — довідник конфігурації Skills
|
||||
- [Slash Commands](/tools/slash-commands) — усі доступні slash-команди
|
||||
- [Plugins](/tools/plugin) — огляд системи plugins
|
||||
- [Creating Skills](/uk/tools/creating-skills) — створення користувацьких skills
|
||||
- [Skills Config](/uk/tools/skills-config) — довідник із конфігурації skills
|
||||
- [Slash Commands](/uk/tools/slash-commands) — усі доступні slash commands
|
||||
- [Plugins](/uk/tools/plugin) — огляд системи plugin
|
||||
|
||||
Loading…
Reference in New Issue
Block a user