Skills
Майстерня Skills
Skill Workshop — це керований OpenClaw спосіб створення та оновлення Skills робочого простору. Агенти й оператори ніколи не записують SKILL.md безпосередньо цим способом — вони створюють пропозицію (чернетку в стані очікування з вмістом, прив’язкою до цілі, станом сканера, хешами та метаданими відкату), яка стає активною навичкою лише після застосування.
Skill Workshop записує лише Skills робочого простору. Він ніколи не змінює вбудовані, плагінні, ClawHub, позакореневі, керовані, персональні агентські або системні Skills.
Як це працює
- Спочатку пропозиція: згенерований вміст зберігається як
PROPOSAL.md, а неSKILL.md. - Застосування — єдиний спосіб запису активної версії: створення, оновлення та редагування ніколи не змінюють активні Skills.
- Область дії — робочий простір: створення спрямовується до кореня
skills/робочого простору; оновлювати можна лише доступні для запису Skills робочого простору. - Без перезаписування: створення завершується помилкою, якщо цільова навичка вже існує.
- Прив’язка до хешу: пропозиції оновлення прив’язуються до поточного хешу цілі й переходять у стан
stale, якщо активна навичка змінюється до застосування. - Контроль сканером: перед записом застосування повторно запускає сканер безпеки.
- Можливість відновлення: перед зміною активних файлів застосування записує метадані відкату.
- Узгоджені інтерфейси: чат, CLI та Gateway звертаються до одного сервісу.
Життєвий цикл
створення/оновлення -> очікуєредагування -> очікуєзастосування -> застосовановідхилення -> відхиленокарантин -> у карантинізміна цілі -> застарілоРедагувати, застосовувати, відхиляти або поміщати в карантин можна лише пропозицію зі станом pending.
Керування життєвим циклом
Gateway відстежує сукупне використання Skills у спільній базі даних стану. Раз на день він перевіряє Skills, створені та застосовані через Skill Workshop. Skills, які не використовувалися понад 30 днів, переходять у стан stale; через 90 днів вони переходять у стан archived і не включаються до нових знімків Skills агентів. Файли архівованих Skills на диску залишаються незмінними. Створені вручну Skills ніколи не підлягають такому керуванню; до керування життєвим циклом потрапляють лише Skills, створені з пропозицій Skill Workshop.
Закріплені Skills не проходять переходи життєвого циклу. Застаріла навичка повертається до стану active після її використання та наступного циклу перевірки. Архівовані Skills повертаються лише через явне відновлення:
Переходи життєвого циклу та відновлення застосовуються до нових сеансів; запущені сеанси зберігають поточний знімок Skills.
openclaw skills curator statusopenclaw skills curator pin <skill>openclaw skills curator unpin <skill>openclaw skills curator restore <skill>Усі команди куратора приймають --json. Команда стану також повідомляє детерміновано визначених кандидатів на перекриття лише як рекомендації; вона ніколи не об’єднує Skills і не викликає модель.
Чат
Попросіть агента створити потрібну навичку; він викличе skill_workshop і поверне ідентифікатор пропозиції.
Навчання на основі нещодавньої роботи
Використовуйте /learn, щоб перетворити поточну розмову або вказані джерела на одну пропозицію навички, сформовану відповідно до стандартів:
/learn/learn docs/runbook.md and https://example.com/guide; focus on recoveryЯкщо запит не вказано, /learn просить агента виокремити з поточної розмови придатний для повторного використання робочий процес. Якщо запит указано, агент розглядає шляхи, URL-адреси, вставлені нотатки та посилання на розмову як джерела, дотримуючись вимог до фокуса, області дії та назви. Він збирає джерела за допомогою наявних інструментів, а потім викликає skill_workshop з action: "create".
Отримана пропозиція залишається в стані pending; /learn ніколи не застосовує її. Перегляньте та застосуйте її через звичайний процес затвердження або за допомогою openclaw skills workshop.
Створення:
Створи навичку morning-catchup, яка виконує мою понеділкову процедуру опрацювання вхідних повідомлень.Оновлення наявної навички робочого простору:
Онови trip-planning, щоб перед бронюванням вона також перевіряла схеми місць.Послідовне доопрацювання пропозиції в стані очікування:
Покажи мені пропозицію morning-catchup.Відредагуй її, щоб вона також позначала все, що має позначку терміновості.Застосуй пропозицію morning-catchup.Ініційовані агентом дії apply, reject і quarantine типово показують запит на затвердження. У довірених середовищах установіть для skills.workshop.approvalPolicy значення "auto", щоб пропустити його.
У запиті зазначаються ідентифікатор пропозиції та цільова навичка, а також відображаються опис пропозиції, кількість допоміжних файлів і розмір основного вмісту. Запити на затвердження мають обмежений час, щоб завершитися до спрацювання засобу контролю інструментів агента. Якщо до завершення строку дії запиту рішення не надійде, дія життєвого циклу не виконується: пропозиція залишається в стані очікування без змін. Прийміть рішення пізніше в інтерфейсі Skill Workshop або виконайте openclaw skills workshop apply|reject|quarantine <proposal-id>. Агентам не слід циклічно повторювати дію життєвого циклу, строк якої минув.
CLI
# Створенняopenclaw skills workshop propose-create \ --name morning-catchup \ --description "Daily inbox catch-up: triage, archive, surface, draft, plan" \ --proposal ./PROPOSAL.md # Оновлення наявної навички робочого просторуopenclaw skills workshop propose-update trip-planning --proposal ./PROPOSAL.md # Перелік і переглядopenclaw skills workshop listopenclaw skills workshop inspect <proposal-id> # Редагування до затвердженняopenclaw skills workshop revise <proposal-id> --proposal ./PROPOSAL.md # Завершенняopenclaw skills workshop apply <proposal-id>openclaw skills workshop reject <proposal-id> --reason "Duplicate"openclaw skills workshop quarantine <proposal-id> --reason "Needs security review"Кожна підкоманда приймає --agent <id> (цільовий робочий простір; типово спочатку визначається з поточного робочого каталогу, а потім використовується стандартний агент) і --json (структурований вивід). propose-create, propose-update та revise також приймають --goal <text> і --evidence <text> для запису контексту пропозиції разом із --proposal.
Вміст пропозиції
Поки пропозиція перебуває в стані очікування, вона зберігається як PROPOSAL.md із метаданими frontmatter, призначеними лише для пропозиції:
---name: "morning-catchup"description: "Daily inbox catch-up: triage, archive, surface, draft, plan"status: proposalversion: "v1"date: "2026-05-30T00:00:00.000Z"---Під час застосування Skill Workshop записує активний SKILL.md і вилучає поля, призначені лише для пропозиції: status, версію пропозиції version і дату пропозиції date.
Допоміжні файли
Використовуйте --proposal-dir, коли запропонованій навичці потрібні файли поруч із PROPOSAL.md:
openclaw skills workshop propose-create \ --name weekly-update \ --description "Friday wrap-up: stats, highlights, next week's top three" \ --proposal-dir ./weekly-update-proposalКаталог має містити PROPOSAL.md. Допоміжні файли мають розташовуватися в assets/, examples/, references/, scripts/ або templates/. Skill Workshop сканує їх, обчислює хеші та зберігає разом із пропозицією, а поруч з активним SKILL.md записує лише під час застосування.
Відхиляються такі шляхи допоміжних файлів: абсолютні шляхи, приховані сегменти шляху, вихід за межі каталогу, шляхи, що перекриваються, виконувані файли, текст не в UTF-8, нульові байти та шляхи поза стандартними каталогами допоміжних файлів.
Інструмент агента
Модель використовує skill_workshop з однією обов’язковою дією action:
create | update | revise | list | inspect | apply | reject | quarantine.
Інші параметри застосовуються залежно від дії:
| Параметр | Використовується діями | Примітки |
|---|---|---|
name |
create, inspect, revise |
Обов’язковий для create; в інших випадках знаходить пропозицію в стані очікування за назвою |
description |
create, update, revise |
Не більше ніж 160 байтів |
skill_name |
update |
Назва або ключ наявної навички |
proposal_content |
create, update, revise |
Зберігається як PROPOSAL.md; обмежується skills.workshop.maxSkillBytes |
support_files |
create, update, revise |
Масив { path, content } |
goal, evidence |
create, update, revise |
Контекст у довільній текстовій формі |
proposal_id |
inspect, revise, apply, reject, quarantine |
Цільова пропозиція |
reason |
apply, reject, quarantine |
Необов’язковий |
query, status, limit |
list |
Фільтрація та поділ на сторінки; максимальне значення limit — 50, типове — 20 |
Агенти мають використовувати skill_workshop для роботи зі згенерованими Skills. Вони не повинні створювати або змінювати файли пропозицій за допомогою write, edit, exec, команд оболонки чи безпосередніх операцій із файловою системою.
Запропоновані Skills
OpenClaw виявляє довготривалі вказівки на кшталт «наступного разу», «запам’ятай» і реактивні виправлення після завершення інтерактивного ходу, зокрема невдалого. Під час наступного ходу агент пропонує зберегти останній виявлений робочий процес через skill_workshop; користувач вирішує, чи створювати пропозицію. Ця вбудована рекомендація сама по собі не створює й не змінює навичку. Натомість увімкніть skills.workshop.autonomous.enabled, щоб безпосередньо створювати пропозиції в стані очікування.
Затвердження та автономність
{ skills: { workshop: { autonomous: { enabled: false, }, allowSymlinkTargetWrites: false, approvalPolicy: "pending", maxPending: 50, maxSkillBytes: 40000, }, },}| Налаштування | Типове значення | Ефект |
|---|---|---|
autonomous.enabled |
false |
Безпосередньо створює пропозиції в стані очікування замість пропонування останнього виявленого робочого процесу під час наступного ходу. |
allowSymlinkTargetWrites |
false |
Дає змогу під час застосування записувати через символічні посилання Skills робочого простору, реальну ціль яких зазначено в skills.load.allowSymlinkTargets. |
approvalPolicy |
"pending" |
"pending" вимагає запиту на затвердження перед ініційованими агентом діями apply, reject або quarantine. "auto" пропускає запит, але агент усе одно має викликати дію. |
maxPending |
50 |
Обмежує кількість пропозицій у стані очікування та в карантині для кожного робочого простору (1–200). |
maxSkillBytes |
40000 |
Обмежує розмір основного вмісту пропозиції в байтах (1024–200000). |
Автономне збереження розпізнає майбутні правила (наприклад, «відтепер») і реактивні виправлення (наприклад, «це не те, про що я просив»). Воно групує нові вказівки за темами не більш ніж у три пропозиції за один хід, спрямовує збіги термінів до наявних доступних для запису Skills робочого простору та редагує власну пропозицію в стані очікування, коли інше виправлення стосується тієї самої навички.
Описи пропозицій завжди обмежуються 160 байтами незалежно від maxSkillBytes.
Методи Gateway
| Метод | Область дії |
|---|---|
skills.proposals.list |
operator.read |
skills.proposals.inspect |
operator.read |
skills.proposals.create |
operator.admin |
skills.proposals.update |
operator.admin |
skills.proposals.revise |
operator.admin |
skills.proposals.requestRevision |
operator.admin |
skills.proposals.apply |
operator.admin |
skills.proposals.reject |
operator.admin |
skills.proposals.quarantine |
operator.admin |
skills.curator.status |
operator.read |
skills.curator.pin |
operator.admin |
skills.curator.unpin |
operator.admin |
skills.curator.restore |
operator.admin |
requestRevision доступний лише через Gateway (без відповідника в CLI або інструментах агента): він
пересилає текстові інструкції щодо доопрацювання до сеансу чату відповідального агента,
замість безпосередньої заміни PROPOSAL.md, для інтерфейсів, які просять агента
доопрацювати пропозицію, а не надсилати буквально новий вміст.
Зберігання
<OPENCLAW_STATE_DIR>/skill-workshop/ proposals.json proposals/<proposal-id>/ proposal.json PROPOSAL.md rollback.json assets/ examples/ references/ scripts/ templates/Каталог стану за замовчуванням: ~/.openclaw.
proposal.json: канонічний запис пропозиції.proposals.json: індекс для швидкого перегляду списку, який можна перебудувати з каталогів пропозицій.PROPOSAL.md: пропозиція Skills, що очікує розгляду.rollback.json: метадані відновлення, записані перед застосуванням змін до робочих файлів.
Обмеження
| Обмеження | Значення |
|---|---|
| Опис | 160 байтів |
| Тіло пропозиції | skills.workshop.maxSkillBytes (типово 40 000; жорстка межа 1 МіБ) |
| Допоміжні файли | 64 на пропозицію |
| Розмір допоміжного файлу | 256 КіБ кожен, загалом 2 МіБ |
| Пропозиції на розгляді + у карантині | skills.workshop.maxPending на робочий простір (типово 50) |
Усунення несправностей
| Проблема | Розв’язання |
|---|---|
Skill proposal description is too large |
Скоротіть description до 160 байтів або менше. |
Skill proposal content is too large |
Скоротіть тіло пропозиції або збільште skills.workshop.maxSkillBytes. |
Target skill changed after proposal creation |
Оновіть пропозицію відповідно до поточної цільової Skills або створіть нову пропозицію. |
Proposal scan failed |
Перегляньте результати сканування, а потім доопрацюйте пропозицію або помістіть її в карантин. |
untrusted symlink target |
Налаштуйте skills.load.allowSymlinkTargets і вмикайте skills.workshop.allowSymlinkTargetWrites лише для навмисно спільних кореневих каталогів Skills. |
Support file paths must be under one of... |
Перемістіть допоміжні файли до assets/, examples/, references/, scripts/ або templates/. |
| Пропозиція не відображається у списку | Перевірте вибраний робочий простір --agent і OPENCLAW_STATE_DIR. |
Агент не може викликати skill_workshop |
Перевірте активну політику інструментів і режим запуску. coding містить цей інструмент; обмежувальні політики tools.allow мають явно містити його, а ізольовані запуски мають використовувати звичайний сеанс агента на стороні хоста або CLI. |
Діагностика політики інструментів
Коли автономне захоплення ввімкнено, openclaw doctor запускає перевірку
core/doctor/skill-workshop-tool-policy для агента за замовчуванням. Якщо політика
приховує skill_workshop, попередження називає перший конфігураційний рівень, який його виключає, і
точну зміну allow або alsoAllow, яку потрібно внести. Старіші інструкції можуть усе ще використовувати
openclaw plugins inspect skill-workshop; тепер ця команда пояснює, що Skill
Workshop вбудовано, і за потреби виводить ту саму підказку щодо політики.
Пов’язані матеріали
- Skills — порядок завантаження, пріоритет і видимість
- Створення Skills — основи написання
SKILL.mdвручну - Конфігурація Skills — повна схема
skills.workshop - CLI Skills — команди
openclaw skills